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列表生成器的循环技巧分享
Mar 06 Python
使用Python读写及压缩和解压缩文件的示例
Jul 08 Python
python利用lxml读写xml格式的文件
Aug 10 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
Linux 修改Python命令的方法示例
Dec 03 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
python占位符输入方式实例
May 27 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
pandas实现导出数据的四种方式
Dec 13 Python
Pytorch之扩充tensor的操作
Mar 04 Python
python flask框架快速入门
May 14 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
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
document.createElement()用法
2013/03/13 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
AngularJS内置指令
2015/02/04 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
Flexible.js可伸缩布局实现方法详解
2020/11/13 Javascript
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
2019年.net常见面试问题
2012/02/12 面试题
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
培训协议书范本
2014/04/22 职场文书
超市开店计划书
2014/04/26 职场文书
工会文体活动总结
2015/05/07 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python