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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
Python3基础之输入和输出实例分析
Aug 18 Python
Python中实现两个字典(dict)合并的方法
Sep 23 Python
浅谈Python 中整型对象的存储问题
May 16 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
Jun 30 Python
Python制作动态字符图的实例
Jan 27 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
如何通过一篇文章了解Python中的生成器
Apr 02 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
构建简单的Webmail系统
2006/10/09 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
python解析html开发库pyquery使用方法
2014/02/07 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
python使用pymysql实现操作mysql
2016/09/13 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
python实现ip地址的包含关系判断
2020/02/07 Python
python标准库os库的函数介绍
2020/02/12 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
经典大学生求职信范文
2014/01/06 职场文书
铁路个人事迹材料
2014/01/30 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
就业协议书
2014/09/12 职场文书
退学证明范本3篇
2014/10/29 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
python分分钟绘制精美地图海报
2022/02/15 Python