Pytorch 如何训练网络时调整学习率

 更新时间:2021年05月31日 09:00:23   作者:HDU_number1_ADC  
这篇文章主要介绍了Pytorch 如何训练网络时调整学习率的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

为了得到更好的网络,学习率通常是要调整的,即刚开始用较大的学习率来加快网络的训练,之后为了提高精确度,需要将学习率调低一点。

如图所示,步长(学习率)太大容易跨过最优解。

在这里插入图片描述

代码如下:

表示每20个epoch学习率调整为之前的10%

optimizer = optim.SGD(gan.parameters(), 
                                  lr=0.1,
                                  momentum=0.9,
                                  weight_decay=0.0005)
lr = optimizer.param_groups[0]['lr'] * (0.1 ** (epoch // 20))
for param_group in optimizer.param_groups:
    param_group['lr'] = lr
print(optimizer.param_groups[0]['lr'])

补充:Pytorch 在训练过程中实现学习率衰减

在网络的训练过程中,学习率是一个非常重要的超参数,它直接影响了网络的训练效果。

但过大的学习率将会导致网络无法达到局部最小点,使得训练结果震荡,准确率无法提升,而过小的学习率将会导致拟合速度过慢,浪费大量的时间和算力。

因此我们希望在训练之初能够有较大的学习率加快拟合的速率,之后降低学习率,使得网络能够更好的达到局部最小,提高网络的效率。

torch.optim.lr_scheduler.LambdaLR()

torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)

其中optimizer就是包装好的优化器, lr_lambda即为操作学习率的函数。

将每个参数组的学习速率设置为初始的lr乘以一个给定的函数。

当last_epoch=-1时,将初始lr设置为lr。

torch.optim.lr_scheduler.StepLR()

torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)

其中optimizer就是包装好的优化器,step_size (int) 为学习率衰减期,指几个epoch衰减一次。gamma为学习率衰减的乘积因子。 默认为0.1 。当last_epoch=-1时,将初始lr设置为lr。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 跟老齐学Python之使用Python操作数据库(1)

    跟老齐学Python之使用Python操作数据库(1)

    本文详细讲述了使用python操作数据库所需要了解的知识以及准备工作,十分的详尽,这里推荐给想学习python的小伙伴。
    2014-11-11
  • python读取Android permission文件

    python读取Android permission文件

    python解析json文件读取Android permission,同时可以学习到json的知识。
    2013-11-11
  • Python 切分数组实例解析

    Python 切分数组实例解析

    这篇文章主要介绍了Python 切分数组实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Django框架搭建的简易图书信息网站案例

    Django框架搭建的简易图书信息网站案例

    这篇文章主要介绍了Django框架搭建的简易图书信息网站案例,结合具体实例形式分析了基于Django框架实现图书信息管理网站的具体步骤、相关实现技巧与操作注意事项,需要的朋友可以参考下
    2019-05-05
  • pandas缺失值np.nan, np.isnan, None, pd.isnull, pd.isna

    pandas缺失值np.nan, np.isnan, None, pd.isnull,&n

    本文主要介绍了pandas缺失值np.nan, np.isnan, None, pd.isnull, pd.isna
    2024-04-04
  • python实现字母闪烁效果的示例代码

    python实现字母闪烁效果的示例代码

    本文主要介绍了python实现字母闪烁效果的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python实现脚本锁功能(同时只能执行一个脚本)

    Python实现脚本锁功能(同时只能执行一个脚本)

    这篇文章主要介绍了Python实现脚本锁功能(同时只能执行一个脚本),本文给大家分享了两种方法,大家可以根据个人所需选择适合自己的方法
    2017-05-05
  • Python构建简单线性回归模型

    Python构建简单线性回归模型

    这篇文章主要介绍了Python构建简单线性回归模型,线性回归表示发现函数使用线性组合表示输入变量。简单线性回归很容易理解,使用了基本的回归技术,一旦理解了这些基本概念,可以更好地学习其他类型的回归模型
    2022-08-08
  • 如何使用python自带IDLE的几种方法

    如何使用python自带IDLE的几种方法

    这篇文章主要介绍了如何使用python自带IDLE的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • python如何保证输入键入数字的方法

    python如何保证输入键入数字的方法

    今天小编就为大家分享一篇python如何保证输入键入数字的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论