Shortcuts

CosineAnnealingLR

class torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1, verbose='deprecated')[源码]

使用余弦退火计划为每个参数组设置学习率,其中 ηmax\eta_{max} 设置为初始学习率, TcurT_{cur} 是从上次重启以来的轮数,在 SGDR 中:

ηt=ηmin+12(ηmaxηmin)(1+cos(TcurTmaxπ)),Tcur(2k+1)Tmax;ηt+1=ηt+12(ηmaxηmin)(1cos(1Tmaxπ)),Tcur=(2k+1)Tmax.\begin{aligned} \eta_t & = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min})\left(1 + \cos\left(\frac{T_{cur}}{T_{max}}\pi\right)\right), & T_{cur} \neq (2k+1)T_{max}; \\ \eta_{t+1} & = \eta_{t} + \frac{1}{2}(\eta_{max} - \eta_{min}) \left(1 - \cos\left(\frac{1}{T_{max}}\pi\right)\right), & T_{cur} = (2k+1)T_{max}. \end{aligned}

当 last_epoch=-1 时,将初始学习率设置为 lr。请注意,由于调度器是递归定义的,学习率可以通过其他操作符在此调度器外部同时修改。如果学习率仅由该调度器设置,则每个步骤的学习率变为:

ηt=ηmin+12(ηmaxηmin)(1+cos(TcurTmaxπ))\eta_t = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min})\left(1 + \cos\left(\frac{T_{cur}}{T_{max}}\pi\right)\right)

该方法在 SGDR: 带热重启的随机梯度下降中被提出。请注意,这仅实现了SGDR的余弦退火部分,并未实现重启功能。

Parameters
  • 优化器 (优化器) – 包装的优化器。

  • T_max (int) – 最大迭代次数。

  • eta_min (float) – 最小学习率。默认值:0。

  • last_epoch (int) – 最后一个epoch的索引。默认值:-1。

  • verbose (bool) –

    如果 True,则向标准输出打印每条更新消息。默认值:False

    自版本 2.2 起已弃用:verbose 已被弃用。请使用 get_last_lr() 来访问学习率。

get_last_lr()

返回当前调度器计算的最后一个学习率。

load_state_dict(state_dict)

加载调度器的状态。

Parameters

state_dict (字典) – 调度器状态。应该是从调用 state_dict() 返回的对象。

print_lr(is_verbose, group, lr, epoch=None)

显示当前的学习率。

state_dict()

返回调度器的状态为一个字典

它包含 self.__dict__ 中每个变量的条目,但不包括优化器。

优云智算