pytorch实现查看当前学习率

作者:Mr.Jcak 时间:2022-05-29 06:02:04 

在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()

来源:https://blog.csdn.net/weixin_38314865/article/details/103938504

标签:pytorch,学习率
0
投稿

猜你喜欢

  • CentOS 5.5使用yum来安装LAMP(php运行环境)

    2023-11-14 12:15:52
  • Go处理json数据方法详解(Marshal,UnMarshal)

    2024-02-06 11:47:24
  • 关于golang 字符串 int uint int64 uint64 互转问题

    2023-07-13 17:52:44
  • python标准日志模块logging的使用方法

    2022-10-29 19:08:16
  • Win10下配置VScode远程开发ssh-remote(免密登录)

    2022-07-17 23:01:13
  • Springboot Mybatis-Plus数据库单元测试实战(三种方式)

    2024-01-24 19:39:28
  • 用python完成一个分布式事务TCC

    2022-12-02 02:14:05
  • Vue.js仿Metronic高级表格(二)数据渲染

    2024-04-10 10:32:45
  • Oracle 数据库启动过程的三阶段、停库四种模式详解

    2024-01-16 04:05:25
  • 通用分页存储过程

    2007-11-28 13:08:00
  • 如何利用pyinstaller打包Python程序为exe可执行文件

    2023-11-08 08:01:39
  • JavaScript 数组的 uniq 方法

    2007-12-07 18:28:00
  • vbScript on error resume next容错使用心得

    2010-06-26 19:28:00
  • python用WxPython库实现无边框窗体和透明窗体实现方法详解

    2021-09-04 18:48:45
  • 详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据

    2021-12-21 04:06:14
  • js自定义快捷,IE,FF有良好的支持

    2007-08-25 17:34:00
  • 用户体验至上的网页设计秘笈

    2007-09-07 10:16:00
  • django之常用命令详解

    2023-02-04 07:25:19
  • 如何控制弹出一个NTLM验证窗口?

    2009-12-16 19:01:00
  • Python max函数中key的用法及原理解析

    2022-09-09 04:00:24
  • asp之家 网络编程 m.aspxhome.com