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。

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

相关文章

  • pygame实现简单五子棋游戏

    pygame实现简单五子棋游戏

    这篇文章主要为大家详细介绍了pygame实现简单五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下<BR>
    2022-01-01
  • python如何爬取动态网站

    python如何爬取动态网站

    在本篇内容里小编给各位分享了关于python如何爬取动态网站的相关知识点内容,有兴趣的朋友们可以参考下。
    2020-09-09
  • Python分支结构和循环结构示例代码

    Python分支结构和循环结构示例代码

    在Python中,分支结构通过if、elif和else关键字来实现条件判断,在使用if语句时,程序会根据条件表达式的真假执行相应的代码块,这篇文章主要介绍了Python分支结构和循环结构,需要的朋友可以参考下
    2024-03-03
  • 使用ITK-SNAP进行抠图操作并保存mask的实例

    使用ITK-SNAP进行抠图操作并保存mask的实例

    这篇文章主要介绍了使用ITK-SNAP进行抠图操作并保存mask的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Tensorflow实现神经网络拟合线性回归

    Tensorflow实现神经网络拟合线性回归

    这篇文章主要为大家详细介绍了Tensorflow实现神经网络拟合线性回归,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Python实现复杂对象转JSON的方法示例

    Python实现复杂对象转JSON的方法示例

    这篇文章主要介绍了Python实现复杂对象转JSON的方法,结合具体实例形式分析了Python针对json转换的相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • 浅谈对pytroch中torch.autograd.backward的思考

    浅谈对pytroch中torch.autograd.backward的思考

    这篇文章主要介绍了对pytroch中torch.autograd.backward的思考,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • python3图片转换二进制存入mysql

    python3图片转换二进制存入mysql

    MYSQL是支持把图片存入数据库的,也相应的有一个专门的字段BLOB (Binary Large Object),即较大的二进制对象字段,看下面代码
    2013-12-12
  • python3实现mysql导出excel的方法

    python3实现mysql导出excel的方法

    这篇文章主要介绍了python3实现mysql导出excel的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • python如何为list实现find方法

    python如何为list实现find方法

    这篇文章主要介绍了python如何为list实现find方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05

最新评论