pytorch中调整学习率的lr_scheduler机制
pytorch中调整学习率的lr_scheduler机制
</h1><div class="clear"></div><div class="postBody">
有的时候需要我们通过一定机制来调整学习率,这个时候可以借助于torch.optim.lr_scheduler类来进行调整;一般地有下面两种调整策略:(通过两个例子来展示一下)
两种机制:LambdaLR机制和StepLR机制;
(1)LambdaLR机制:
optimizer_G = torch.optim.Adam([{'params' : optimizer_G.parameters() , 'initial_lr' : train_opt.lr}] , lr = train_opt.lr , betas = (train_opt.betal , 0.999))
lambda_G = lambda epoch : 0.5 ** (epoch // 30)
schduler_G = torch.optim.lr_scheduler.LambdaLR(optimizer_G.parameters() , lambda_G , last_epoch = 29);
scheduler.step()
lr = schduler.get_lr()[0]; //这里记得加一个[0]的索引!
for param_group in optimizer_G.param_groups():
param_group['lr'] = lr
解释:last_epoch是开始的前一个epoch的索引值,这里为29表示从epoch = 30开始(其中scheduler类中的epoch从last_epoch + 1开始,每次step操作epoch加1),学习率调整为lr * (0.5 ** (epoch // 30));另外注意的是:定义optimizer_G类时,需要写成上述那种形式,不要写成以前常见的“optimizer_G = torch.optim.Adam(params = optimizer_G.parameters()...)”,要像这里一样写成字典形式;否则lr_scheduler类会报“没有initial_lr的错误”
(2)StepLR机制:
schduler_G = torch.optim.lr_scheduler.StepLR(optimizer_G.parameters() , step_size = 30 , gamma = 0.1 , last_epoch = 29)
其他的和上面类似,这里的调整策略如下:
<div id="blog_post_info">
关注 - 9
粉丝 - 115
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/zf-blog/p/11242712.html" class="p_n_p_prefix">« </a> 上一篇: <a href="https://www.cnblogs.com/zf-blog/p/11242712.html" title="发布于 2019-07-25 10:37">pix2pix&Cycle GAN&pix2pix HD</a>
<br>
<a href="https://www.cnblogs.com/zf-blog/p/11360557.html" class="p_n_p_prefix">» </a> 下一篇: <a href="https://www.cnblogs.com/zf-blog/p/11360557.html" title="发布于 2019-08-15 21:06">pytorch 中Dataloader中的collate_fn参数</a>
pytorch中调整学习率的lr_scheduler机制相关推荐
- pytorch中调整学习率: torch.optim.lr_scheduler
文章翻译自:https://pytorch.org/docs/stable/optim.html torch.optim.lr_scheduler 中提供了基于多种epoch数目调整学习率的方法. t ...
- Pytorch中的学习率调整lr_scheduler,ReduceLROnPlateau
Pytorch中的学习率调整:lr_scheduler,ReduceLROnPlateau torch.optim.lr_scheduler:该方法中提供了多种基于epoch训练次数进行学习率调整的方 ...
- Pytorch中的学习率调整方法
在梯度下降更新参数的时,我们往往需要定义一个学习率来控制参数更新的步幅大小,常用的学习率有0.01.0.001以及0.0001等,学习率越大则参数更新越大.一般来说,我们希望在训练初期学习率大一些,使 ...
- pytorch 动态调整学习率,学习率自动下降,根据loss下降
0 为什么引入学习率衰减? 我们都知道几乎所有的神经网络采取的是梯度下降法来对模型进行最优化,其中标准的权重更新公式: W+=α∗gradient W+=\alpha * \text { gradie ...
- pytorch中的学习率与优化器【lr_scheduler与optimizer】
pytorch中优化器的使用流程大致为: for input, target in dataset:optimizer.zero_grad()output = model(input)loss = l ...
- caffe中的学习率的衰减机制
根据 caffe/src/caffe/proto/caffe.proto 里面的文件,可以看到它有以下几种学习率的衰减速机制: 1. fixed: 在训练过程中,学习率不变: 2. step: ...
- pytorch 动态调整学习率 重点
深度炼丹如同炖排骨一般,需要先大火全局加热,紧接着中火炖出营养,最后转小火收汁. 本文给出炼丹中的 "火候控制器"-- 学习率的几种调节方法,框架基于 pytorch 1. 自定义 ...
- Lesson 15.2 学习率调度在PyTorch中的实现方法
Lesson 15.2 学习率调度在PyTorch中的实现方法 学习率调度作为模型优化的重要方法,也集成在了PyTorch的optim模块中.我们可以通过下述代码将学习率调度模块进行导入. fro ...
- asp文本框输入控制是5的倍数_DL知识拾贝(Pytorch)(五):如何调整学习率
知识导图 学习率对于深度学习是一个重要的超参数,它控制着基于损失梯度调整神经网络权值的速度,大多数优化算法(SGD.RMSprop.Adam)对其都有所涉及.学习率过下,收敛的太慢,网络学习的也太慢: ...
最新文章
- redis3.2.3安装部署实战
- jquery之仿京东菜单
- v-charts修改点击图例事件,legendselectchanged
- 如何在windows下使用linux命令
- 锻炼产品架构思维的4个维度
- 函数声明优先级高于变量赋值
- 分解质因数(包括证明的详解)
- [生活日记] 社会真的这么乱?尼姑也行骗,道德何在
- Java前后端的JSON传输一(前后端JSON格式转换)
- 国民体质测定标准计算机应用软件,体测标准计算器
- python_jpype1 调用java代码
- Django3.0入门教程【四】:Django常用命令
- 大学计算机教程王梦倩,【经验共享】中国矿业大学资源学院辅导员王梦倩
- WinRAR压缩软件安装步骤
- CentOS 7下限制ip访问
- 干货满满的 GopherChina2021 北京大会 PPT is coming
- MYSQL inserOrUpdate三种写法
- Vue报错:implicitly has an ‘any‘ type解决方法
- spring4 搭建开发环境
- SQL Server AlwaysOn读写分离配置