重庆网站设计找重庆最佳科技,重庆妇科医院推荐,商丘网站建设略奥网,网站建设报销属于什么会计科目深度学习基础知识 学习率调度器的用法解析 1、自定义学习率调度器**#xff1a;**torch.optim.lr_scheduler.LambdaLR2、正儿八经的模型搭建流程以及学习率调度器的使用设置 1、自定义学习率调度器**#xff1a;**torch.optim.lr_scheduler.LambdaLR 实验代码#xff1a;
i… 深度学习基础知识 学习率调度器的用法解析 1、自定义学习率调度器****torch.optim.lr_scheduler.LambdaLR2、正儿八经的模型搭建流程以及学习率调度器的使用设置 1、自定义学习率调度器****torch.optim.lr_scheduler.LambdaLR 实验代码
import torch
import torch.nn as nndef lr_lambda(x):return x*2netnn.Sequential(nn.Conv2d(3,16,3,1,1))optimizertorch.optim.SGD(net.parameters(),lr0.01,momentum0.9)lr_schedulertorch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambdalr_lambda)for _ in range(10):optimizer.step()lr_scheduler.step()print(optimizer.param_groups[0][lr])打印结果 分析数据变化如下图所示
2、正儿八经的模型搭建流程以及学习率调度器的使用设置 代码
import torch
import torch.nn as nn
import numpy as npdef create_lr_scheduler(optimizer,num_step:int,epochs:int,warmupTrue,warmup_epochs1,warmup_factor1e-3):assert num_step0 and epochs0if warmup is False:warmup_epochs0def f(x):根据step数,返回一个学习率倍率因子注意在训练开始之前,pytorch会提前调用一次create_lr_scheduler.step()方法if warmup is True and x (warmup_epochs * num_step):alphafloat(x) / (warmup_epochs * num_step)# warmup过程中学习率因子(learning rate factor)warmup_factor ----- 1return warmup_factor * (1-alpha) alphaelse:# warmup后学习率因子(learning rate factor)warmup_factor ----- 0return (1-(x - warmup_epochs * num_step) / (epochs-warmup_epochs * num_step)) ** 0.9return torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambdaf)netnn.Sequential(nn.Conv2d(3,16,1,1))
optimizertorch.optim.SGD(net.parameters(),lr0.01,momentum0.9)lr_schedulercreate_lr_scheduler(optimizeroptimizer,num_step5,epochs20,warmupTrue)image(np.random.rand(1,3,64,64)).astype(np.float32)
image_tensortorch.tensor(image.copy(),dtypetorch.float32)
print(image.dtype)for epoch in range(20):net.train()predictnet(image_tensor)optimizer.zero_grad()optimizer.step()lr_scheduler.step()print(optimizer.param_groups[0][lr]) # 打印学习率变化情况