Shortcuts

余弦退火热重启

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

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

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

Tcur=TiT_{cur}=T_{i} 时,设置 ηt=ηmin\eta_t = \eta_{min}。 当 Tcur=0T_{cur}=0 重启后,设置 ηt=ηmax\eta_t=\eta_{max}

它是在 SGDR: 带热重启的随机梯度下降中提出的。

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

  • T_0 (int) – 第一次重启的迭代次数。

  • T_mult (int, 可选) – 一个因子,用于在重启后增加 TiT_{i}。默认值:1。

  • 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__ 中每个变量的条目,但不包括优化器。

step(epoch=None)[源代码]

步骤可以在每次批量更新后调用

示例

>>> scheduler = CosineAnnealingWarmRestarts(optimizer, T_0, T_mult)
>>> iters = len(dataloader)
>>> for epoch in range(20):
>>>     for i, sample in enumerate(dataloader):
>>>         inputs, labels = sample['inputs'], sample['labels']
>>>         optimizer.zero_grad()
>>>         outputs = net(inputs)
>>>         loss = criterion(outputs, labels)
>>>         loss.backward()
>>>         optimizer.step()
>>>         scheduler.step(epoch + i / iters)

此函数可以以交错方式调用。

示例

>>> scheduler = CosineAnnealingWarmRestarts(optimizer, T_0, T_mult)
>>> for epoch in range(20):
>>>     scheduler.step()
>>> scheduler.step(26)
>>> scheduler.step() # scheduler.step(27),而不是 scheduler(20)
优云智算