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

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

公式

CosineAnnealingLR(余弦退火调整学习率)
其中:
nt:当前学习率。
nmin:学习率最小值。
nmax:学习率最大值。
Tcur:当前epoch。
Tmax:最大epoch。

; 解释

CosineAnnealingLR(余弦退火调整学习率)
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单调变化;

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

若小于总epoch,则学习率在每两个T_max间隔内完成一次从nmax到nmin,再从nmin到nmax的变化,直至总epoch结束。

CosineAnnealingLR(余弦退火调整学习率)
对于另一个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如下:

CosineAnnealingLR(余弦退火调整学习率)
T_mult=2如下:
CosineAnnealingLR(余弦退火调整学习率)

Original: https://blog.csdn.net/m0_46324847/article/details/126367249
Author: DEDSEC_Roger
Title: CosineAnnealingLR(余弦退火调整学习率)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/715880/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球