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之eval()函数危险性浅析
Jul 03 Python
python实现手机通讯录搜索功能
Feb 22 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
在Python中使用gRPC的方法示例
Aug 08 Python
总结python中pass的作用
Feb 27 Python
我就是这样学习Python中的列表
Jun 02 Python
Python转换时间的图文方法
Jul 01 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
Python程序慢的重要原因
Sep 04 Python
python IP地址转整数
Nov 20 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
May 25 Python
Python3中最常用的5种线程锁实例总结
Jul 07 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/01/22 PHP
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
js 金额文本框实现代码
2012/02/14 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
jQuery中$.extend()用法实例
2015/06/24 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
如何理解python中数字列表
2020/05/29 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
公关关系专员的自我评价分享
2013/11/20 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
网吧员工管理制度
2015/08/05 职场文书
Python time库的时间时钟处理
2021/05/02 Python
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
Vue h函数的使用详解
2022/02/18 Vue.js