Pytorch几种常用的学习率调整方式

前言:

由于在深度学习中, 优化器的学习率需要不断地调整,今天就来总结一下几种常用的学习率调整方法.

一. step

采用均匀降低的方式, 比如每次降低为原来的0.1倍.

lr = self.lr * (gamma ** (epoch // self.lr_step))
#self.lr: 初始学习率
#gamma:  每次衰减的倍数
#epoch: 当前的轮数
#self.lr_step: 学习率衰减间隔的epoch数

pytorch中的函数方法:
在这里插入图片描述

二. multistep

采用非均匀降低的策略, 非均匀主要指降低的step间隔不是均匀的.
pytorch中的函数方法:
在这里插入图片描述

三. poly策略
lr = self.lr * pow((1 - 1.0 * iter / maxiter), power)
# iter = epoch * iters_per_epoch + i
# maxiter = num_epochs * iters_per_epoch
# power用来控制学习率曲线的形状, power<1, 曲线凸起来,下降慢后快 ;power>1, 凹下去, 下降先快后慢
四. 余弦退火学习率调整(Cosine )

随着迭代次数的增加,余弦值首先缓慢下降吗然后加速下降, 再次缓慢下降.

lr = 0.5 * self.lr * (1 + math.cos(1.0 * iter / maxiter * math.pi))

pytorch中的函数方法如下:
在这里插入图片描述

五. SGDR调整(带重启的SGD算法)

在训练时,梯度下降算法可能陷入局部最小值,而不是全局最小值, 梯度下降算法可以通过突然提高学习率跳出局部最小值并找到通向全局最小值的路径.这种方式被成为带重启的随机梯度下降方法(stochastic gradient descent with restrats, SGDR).

pytorch中的函数方法如下:
在这里插入图片描述

最后:

还是感觉step均匀下降最好用, 虽说学习率不是连续变化, 但是简单实用. 在每个批次保存模型的时候最好也能够保存其相应的学习率参数, 以便于下次可以接着训练(防止训练过程因为意外而中断)

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值