pytorch实现查看当前学习率


Posted in Python onJune 24, 2020

在pytorch训练过程中可以通过下面这一句代码来打印当前学习率

print(net.optimizer.state_dict()['param_groups'][0]['lr'])

补充知识:Pytorch:代码实现不同层设置不同的学习率,选择性学习某些层参数

1,如何动态调整学习率

在使用pytorch进行模型训练时,经常需要随着训练的进行逐渐降低学习率,在pytorch中给出了非常方面的方法:

假设我们定义了一个优化器:

import torch
import torch.nn as nn
optimizer = torch.optim(model.parameters(), lr = 0.01, momentum = 0.9)

该优化器的初始化学习为0.01,

如果我们学习每个"n" 个epoch把学习率降低为原来的0.9倍,则需要声明一个学习率调节器:

torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)

其中:

optimizer: 前面声明的优化器;

step_size: 每step_size个epoch学习率降低为原来的gamma倍,

last_epoch: 当前所处的epoch

例如:

# Assuming optimizer uses lr = 0.05 for all groups
 # lr = 0.05  if epoch < 30
 # lr = 0.005 if 30 <= epoch < 60
 # lr = 0.0005 if 60 <= epoch < 90
 # ...
 scheduler = StepLR(optimizer, step_size=30, gamma=0.1)
 for epoch in range(100):
  scheduler.step()
  train(...)
  validate(...)

另外其他常用的更新策略类似:

torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma, last_epoch=-1)

torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1)

torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10, verbose=False, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08)

torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)

2,如何选择性学习某些参数

对于我们现有的模型model,通过调整参数的requires_grad 属性控制该模型是否参与求导运算

for name, param in model.named_parameters():
 if param.requires_grad:
  print("requires_grad: True ", name)
 else:
  print("requires_grad: False ", name)

如果模型中包含多个子模块,可用通过

sub_block = model.children()

获取该模块,然后通过迭代索引的方式获取参数:

for name, param in sub_block.named_parameters()

以上这篇pytorch实现查看当前学习率就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的一些用法分享
Oct 07 Python
python中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
python3安装speech语音模块的方法
Dec 24 Python
python中比较两个列表的实例方法
Jul 04 Python
linux环境下安装python虚拟环境及注意事项
Jan 07 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 Python
pycharm导入源码的具体步骤
Aug 04 Python
python设置中文界面实例方法
Oct 27 Python
Python中Permission denied的解决方案
Apr 02 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 #Python
CentOS 7如何实现定时执行python脚本
Jun 24 #Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 #Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 #Python
基于pytorch中的Sequential用法说明
Jun 24 #Python
django haystack实现全文检索的示例代码
Jun 24 #Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 #Python
You might like
1.PHP简介
2006/10/09 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
JS的数组迭代方法
2015/02/05 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
python字典键值对的添加和遍历方法
2016/09/11 Python
Python简单的制作图片验证码实例
2017/05/31 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
python实现飞机大战微信小游戏
2020/03/21 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
企业为何需要商业计划书
2013/12/26 职场文书
二年级数学教学反思
2014/01/21 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
工作总结与自我评价
2014/09/18 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
各种货币符号快捷输入
2022/02/17 杂记