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

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博客

 

如果你对这篇文章有什么疑问或建议,欢迎下面留言提出,我看到会立刻回复!

打赏
未经允许不得转载:马春杰杰 » Pytorch如何手动调整学习率或者自动动态调整学习率
蝴蝶PT招人啦

留个评论吧~ 抢沙发 评论前登陆可免验证码!

私密评论
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址(选填,便于回访^_^)

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

支付宝扫一扫打赏

微信扫一扫打赏

切换注册

登录

忘记密码 ?

切换登录

注册