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实现的一个自动售饮料程序代码分享
Aug 25 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
Python中用于计算对数的log()方法
May 15 Python
简介Python的collections模块中defaultdict类型的用法
Jul 07 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
对pandas数据判断是否为NaN值的方法详解
Nov 06 Python
Python中new方法的详解
Jan 15 Python
Python创建或生成列表的操作方法
Jun 19 Python
python3实现猜数字游戏
Dec 07 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
python3读取autocad图形文件.py实例
Jun 05 Python
Python实现信息管理系统
Jun 05 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
Smarty局部缓存的几种方法简介
2014/06/17 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
设计顾问服务计划书
2014/05/04 职场文书
积极向上的团队口号
2014/06/06 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
财务稽核岗位职责
2015/04/13 职场文书
工作态度不好检讨书
2015/05/06 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
大学运动会加油稿
2015/07/22 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL