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中操作字符串之replace()方法的使用
May 19 Python
Python实现二分查找算法实例
May 26 Python
python操作redis的方法
Jul 07 Python
python 循环while和for in简单实例
Aug 16 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
May 08 Python
Python使用MD5加密算法对字符串进行加密操作示例
Mar 30 Python
Python中判断输入是否为数字的实现代码
May 26 Python
python 获取一个值在某个区间的指定倍数的值方法
Nov 12 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
python自动生成model文件过程详解
Nov 02 Python
python中安装django模块的方法
Mar 12 Python
python办公自动化之excel的操作
May 23 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
php 常用类汇总 推荐收藏
2010/05/13 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
js 加载时自动调整图片大小
2008/05/28 Javascript
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
Vuex简单入门
2017/04/19 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
简单谈谈Python中的闭包
2016/11/30 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
2020/03/06 Python
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
化工操作工岗位职责
2014/04/29 职场文书
公务员检讨书
2014/11/01 职场文书
个人学习总结范文
2015/02/15 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
Java实现多线程聊天室
2021/06/26 Java/Android
Python中time标准库的使用教程
2022/04/13 Python