pytorch的学习率都在torch.optim.lr_scheduler里面
使用方式基本一致,都需要和optimizer配合使用。说一下几个常用的。
StepLR
StepLR, 顾名思义,每隔多少个step,就乘以gamma衰减一次
使用方式scheduler = StepLR(optimizer, step_size = 30, gamma = 0.1, last_epoch = -1, verbose=False)
上面这个就表示每隔30个step就使得学习率变成之前的0.1倍。last_epoch表明这个更新LR的策略结束的位置,设置-1就是一直到最后。verbose意思是是否在更新lr时打印log,默认False。由于last_epoch和verbose都是可以设置的,后续就不写出来了。
当每一个epoch运行完之后记得使用scheduler.step()
MultiStepLR
与之类似的是MultiStepLR,如果你不想以固定的step更新LR,你可以自己手动设置一堆更新的节点,必须是递增的。
scheduler = MultiStepLR(optimizer, milestones=[30, 60, 120], gamma=0.1)
以上这个方式就表明在30,60和120的时候会更新lr。
ExponentialLR
与之类似的还有ExponentialLR,也是通过gamma系数变化,只是他只能每个epoch变化。
scheduler = ExponentialLR(optimizer, gamma) 相当于简化版的StepLR。
LinearLR
如果不希望

本文详细介绍了PyTorch中几种常用的学习率调度器,包括StepLR、MultiStepLR、ExponentialLR、LinearLR、CosineAnnealingLR、CyclicLR和ReduceOnPlateau。这些调度器用于在训练过程中动态调整学习率,以优化模型性能。例如,StepLR每隔一定步数将学习率乘以一个衰减因子;MultiStepLR允许自定义多个学习率更新的里程碑;CosineAnnealingLR则实现学习率的周期性变化。ReduceOnPlateau则根据损失值是否停滞来动态调整学习率,提供更灵活的策略。
最低0.47元/天 解锁文章
9万+

被折叠的 条评论
为什么被折叠?



