• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-07) 21次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了Pytorch 如何训练网络时调整学习率的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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

代码如下:

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

 optimizer = optim.SGD(gan.parameters(), lr=0.1, momentum=0.9, <a style="color:transparent">来源gao($daima.com搞@代@#码网</a>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。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持gaodaima搞代码网

以上就是Pytorch 如何训练网络时调整学习率的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Pytorch 如何训练网络时调整学习率

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址