CosineAnnealingLR(余弦退火调整学习率)

这是一种学习率的调整方式

公式

在这里插入图片描述
其中:
nt:当前学习率。
nmin:学习率最小值。
nmax:学习率最大值。
Tcur:当前epoch。
Tmax:最大epoch。

解释

在这里插入图片描述
cos(x)函数在[0, pi]的值域为[-1, 1],变化率为:先缓慢下降,然后快速下降,最后缓慢下降。这是可以利用的性质。
(1+cos(x))/2值域为[0, 1],乘以(nmax-nmin),再加上nmin,值域为[nmin, nmax]。

PyTorch API及其解释

torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1, verbose=False)

optimizer:该学习率调整器作用于的优化器,在初始化optimizer时就设定了初始学习率,同时也是最大学习率。
T_max:最大迭代次数。
eta_min:最小学习率。
last_epoch:最后一个epoch的index,默认值为-1。如果是训练了很多个epoch后中断了,继续训练,这个值就设置为加载模型的epoch,-1表示总是从头开始训练。
verbose:若为true,每次更新时会打印一些信息。

设置T_max的作用:
若等于总epoch,则学习率从nmax到nmin单调变化;
在这里插入图片描述

若小于总epoch,则学习率在每两个T_max间隔内完成一次从nmax到nmin,再从nmin到nmax的变化,直至总epoch结束。
在这里插入图片描述
对于另一个API:

torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0, T_mult=1, eta_min=0, last_epoch=-1, verbose=False)

最大不同在于,每个间隔内完成一次从nmax到nmin的变化,然后就从nmax重启(restart),不会有缓慢上升的过程。
optimizer、eta_min、last_epoch、verbose:同上。
T_0:第一次restart所需的epoch次数,
T_mult:第一次restart后,下一次restart所需epoch,为上一次epoch的几倍,若为1则每次间隔都不变。
T_mult=1如下:
在这里插入图片描述
T_mult=2如下:
在这里插入图片描述

  • 33
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值