pytorch实现查看当前学习率

在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实现查看当前学习率就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • pytorch 实现模型不同层设置不同的学习率方式

    在目标检测的模型训练中, 我们通常都会有一个特征提取网络backbone, 例如YOLO使用的darknet SSD使用的VGG-16. 为了达到比较好的训练效果, 往往会加载预训练的backbone模型参数, 然后在此基础上训练检测网络, 并对backbone进行微调, 这时候就需要为backbone设置一个较小的lr. class net(torch.nn.Module): def __init__(self): super(net, self).__init__() # backbone

  • 在pytorch中动态调整优化器的学习率方式

    在深度学习中,经常需要动态调整学习率,以达到更好地训练效果,本文纪录在pytorch中的实现方法,其优化器实例为SGD优化器,其他如Adam优化器同样适用. 一般来说,在以SGD优化器作为基本优化器,然后根据epoch实现学习率指数下降,代码如下: step = [10,20,30,40] base_lr = 1e-4 sgd_opt = torch.optim.SGD(model.parameters(), lr=base_lr, nesterov=True, momentum=0.9) de

  • pytorch实现查看当前学习率

    在pytorch训练过程中可以通过下面这一句代码来打印当前学习率 print(net.optimizer.state_dict()['param_groups'][0]['lr']) 补充知识:Pytorch:代码实现不同层设置不同的学习率,选择性学习某些层参数 1,如何动态调整学习率 在使用pytorch进行模型训练时,经常需要随着训练的进行逐渐降低学习率,在pytorch中给出了非常方面的方法: 假设我们定义了一个优化器: import torch import torch.nn as nn

  • 在pytorch中查看可训练参数的例子

    pytorch中我们有时候可能需要设定某些变量是参与训练的,这时候就需要查看哪些是可训练参数,以确定这些设置是成功的. pytorch中model.parameters()函数定义如下: def parameters(self): r"""Returns an iterator over module parameters. This is typically passed to an optimizer. Yields: Parameter: module paramete

  • pytorch 实现查看网络中的参数

    可以通过model.state_dict()或者model.named_parameters()函数查看现在的全部可训练参数(包括通过继承得到的父类中的参数) 可示例代码如下: params = list(model.named_parameters()) (name, param) = params[28] print(name) print(param.grad) print('-------------------------------------------------') (name

  • pytorch 如何查看数据类型和大小

    问题描述: 查看tensor数据大小时使用了data.shape(),报错: TypeError: 'torch.Size' object is not callable 或 TypeError: 'tuple' object is not callable. 解决方法: 查看数据类型:data.dtype 查看数据大小:data.shape 补充:pytorch tensor比较大小 数据类型要注意 如下 a = torch.tensor([[0, 0], [0, 0]]) print(a>=

  • Pytorch 如何查看、释放已关闭程序占用的GPU资源

    看代码吧~ import torch print(torch.cuda.current_device()) print(torch.cuda.device_count()) print(torch.cuda.get_device_name()) print(torch.cuda.is_available()) 打开terminal输入nvidia-smi可以看到当前各个显卡及用户使用状况,如下图所示,使用kill -9 pid(需替换成具体的编号)即可杀掉占用资源的程序,杀完后结果如下图所示,可

  • Pytorch中的学习率衰减及其用法详解

    Pytorch 学习率衰减及其用法 学习率衰减是一个非常有效的炼丹技巧之一,在神经网络的训练过程中,当accuracy出现震荡或loss不再下降时,进行适当的学习率衰减是一个行之有效的手段,很多时候能明显提高accuracy. Pytorch中有两种学习率调整(衰减)方法: 使用库函数进行调整: 手动调整. 1. 使用库函数进行调整: Pytorch学习率调整策略通过 torch.optim.lr_sheduler 接口实现.pytorch提供的学习率调整策略分为三大类,分别是: (1)有序调整

  • PyTorch的Debug指南

    一.ipdb 介绍 很多初学 python 的同学会使用 print 或 log 调试程序,但是这只在小规模的程序下调试很方便,更好的调试应该是在一边运行的时候一边检查里面的变量和方法. 感兴趣的可以去了解 pycharm 的 debug 模式,功能也很强大,能够满足一般的需求,这里不多做赘述,我们这里介绍一个更适用于 pytorch 的一个灵活的 pdb 交互式调试工具. Pdb 是一个交互式的调试工具,集成与 Python 标准库中,它能让你根据需求跳转到任意的 Python 代码断点.查看

  • linux或windows环境下pytorch的安装与检查验证(解决runtimeerror问题)

    1.pytorch官网下载对应安装文件 https://pytorch.org/ 在getstarted处选择对应版本 方法一:直接使用对应的安装指令进行安装 但是其实这样比较容易断或者出现runtimeout的error.解决办法:使用pip先进行源的查找,在开始下载后停掉,然后找到屏幕上打印出来的链接,手动下载whl 然后手动安装. 方法二:选择相应版本的whl进行离线下载 找到下载链接 进行whl文件的下载然后安装 pytorch从链接安装指定版本 pip3 install whl pip

  • Pytorch 使用不同版本的cuda的方法步骤

    由于课题的原因,笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验.在运行和学习网络上的 Pytorch 应用代码的过程中,不少项目会标注作者在运行和实验时所使用的 Pytorch 和 cuda 版本信息.由于 Pytorch 和 cuda 版本的更新较快,可能出现程序的编译和运行需要之前版本的 Pytorch 和 cuda 进行运行环境支持的情况.比如笔者遇到的某个项目中编写了 CUDAExtension 拓展,而其中使用的 cuda 接口函数在新版本的 cuda 中做了修改,使得

  • 整理Python中常用的conda命令操作

    1 conda介绍 conda是一个python的包管理器,用来管理.安装.更新python的包和相关的依赖.另外,conda可以为特定任务创建独立的环境,每个环境中可以只安装需要用到的包和依赖,还可以将环境导出成yml文件,然后别人可以通过你导出的yml文件可以创建一样的环境. 1.1 查看版本 conda -V #或 conda info 1.2 更新到当前版本 conda update conda 1.3 查看某个命令帮助文档 conda [command] --help 例如conda

随机推荐