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网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
Python实现全角半角字符互转的方法
Nov 28 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
Python解决走迷宫问题算法示例
Jul 27 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 Python
详解Python 函数参数的拆解
Sep 02 Python
python打包多类型文件的操作方法
Sep 21 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
Python3中的tuple函数知识点讲解
Jan 03 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&amp;mysql(三)
2006/10/09 PHP
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
python实现决策树分类算法
2017/12/21 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Python实现全排列的打印
2018/08/18 Python
对python:print打印时加u的含义详解
2018/12/15 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
python批量创建指定名称的文件夹
2019/03/21 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
python ftplib模块使用代码实例
2019/12/31 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
Keras loss函数剖析
2020/07/06 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
两年的个人工作自我评价
2014/01/10 职场文书
二手房买卖协议书
2014/04/10 职场文书
运动会稿件100字
2014/09/24 职场文书
合作协议书范本
2014/10/25 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书