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出现segfault错误解决方法
Apr 16 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
python实现多线程行情抓取工具的方法
Feb 28 Python
Python3爬虫全国地址信息
Jan 05 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
详解python tcp编程
Aug 24 Python
容易被忽略的Python内置类型
Sep 03 Python
Python 可视化神器Plotly详解
Dec 26 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 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开发需要注意的安全问题
2010/09/01 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
PHP框架性能测试报告
2016/05/08 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
Use Word to Search for Files
2007/06/15 Javascript
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
Python json模块使用实例
2015/04/11 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
python书籍信息爬虫实例
2018/03/19 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
代码中finally中的代码会不会执行
2012/02/06 面试题
大学学年自我鉴定
2013/10/28 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
北京天坛导游词
2015/02/12 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS