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多线程ctrl+c退出问题解决方案
Oct 23 Python
python计算时间差的方法
May 20 Python
python编写简单爬虫资料汇总
Mar 22 Python
Django中间件工作流程及写法实例代码
Feb 06 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
python pandas读取csv后,获取列标签的方法
Nov 12 Python
详解python:time模块用法
Mar 25 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
python_mask_array的用法
Feb 18 Python
在keras里面实现计算f1-score的代码
Jun 15 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
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
基于JQuery的日期联动实现代码
2011/02/24 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
动态统计当前输入内容的字节、字符数的实例详解
2017/10/27 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
js实现简单五子棋游戏
2020/05/28 Javascript
详解vue 组件
2020/06/11 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
Python Web框架Tornado运行和部署
2020/10/19 Python
Python paramiko模块的使用示例
2018/04/11 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
tensorboard显示空白的解决
2020/02/15 Python
Python socket处理client连接过程解析
2020/03/18 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
机电一体化毕业生求职信
2013/11/02 职场文书
答谢会策划方案
2014/05/12 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
python 爬取华为应用市场评论
2021/05/29 Python
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android