马春杰杰博客
致力于深度学习经验分享!

Pytorch如何手动调整学习率或者自动动态调整学习率

最新目录

手动

举个例子:

自动

a. 有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和 余弦退火CosineAnnealing。
b. 自适应调整:自适应调整学习率 ReduceLROnPlateau。
c. 自定义调整:自定义调整学习率 LambdaLR。

1 等间隔调整学习率 StepLR

等间隔调整学习率,调整倍数为 gamma 倍,调整间隔为 step_size。间隔单位是step。需要注意的是, step 通常是指 epoch。

2 按需调整学习率 MultiStepLR

按设定的间隔调整学习率。这个方法适合后期调试使用,观察 loss 曲线,为每个实验定制学习率调整时机。

3 指数衰减调整学习率 ExponentialLR

按指数衰减调整学习率,调整公式: lr=lr∗gamma∗∗epoch

4 余弦退火调整学习率 CosineAnnealingLR

以余弦函数为周期,并在每个周期最大值时重新设置学习率。以初始学习率为最大学习率,以 2∗Tmax 为周期,在一个周期内先下降,后上升。

5 自适应调整学习率 ReduceLROnPlateau

当某指标不再变化(下降或升高),调整学习率,这是非常实用的学习率调整策略。
例如,当验证集的 loss 不再下降时,进行学习率调整;或者监测验证集的 accuracy,当accuracy 不再上升时,则调整学习率。

6 自定义调整学习率 LambdaLR

为不同参数组设定不同学习率调整策略。调整规则为

使用的时候先定义:

scheduler = torch.optim.lr_scheduler.CyclicLR(optimizer, base_momentum=0.5, step_size_up=1000, base_lr=1e-6, max_lr=5e-4)

然后在循环训练的时候,加入:

scheduler.step()

具体的例子可以参考这个:

pytorch学习(十三)—学习率调整策略_星月夜话-CSDN博客

 

赞(396) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Pytorch如何手动调整学习率或者自动动态调整学习率》
文章链接:https://www.machunjie.com/deeplearning/pytorch/1131.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 1

  1. #1

    介绍的很清晰,谢谢大佬,终于找到完整梳理这个知识的文章了! 😳

    esheep_bo9个月前 (08-16)回复

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

:smile: :sad: :arrow: :cool: :confused: :cry: :eek: :evil: :exclaim: :idea: :lol: :mad: :mrgreen: :neutral: :question: :razz: :redface: :rolleyes: :surprised: :wink: :biggrin: :twisted: