余弦退火重启 ¶
- class torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0, T_mult=1, eta_min=0.0, last_epoch=- 1)[source][source]¶
使用余弦退火计划设置每个参数组的学习率。
设置为初始学习率, 是上次重启以来的 epoch 数, 是 SGDR 中两次预热重启之间的 epoch 数:
当 时,设置 。重启后 之后,设置 。
已在 SGDR(随机梯度下降带预热重启)中提出。
- 参数:
优化器(Optimizer)- 包装的优化器。
T_0(整数)- 第一次重启前的迭代次数。
T_mult(int,可选)- 在重启后增加 的系数。默认:1。
eta_min(float,可选)- 最小学习率。默认:0。
last_epoch(int,可选)- 最后一个 epoch 的索引。默认:-1。
- load_state_dict(state_dict)[source]¶
加载调度器的状态。
- 参数:
state_dict (dict) – 调度器状态。应为调用
state_dict()
返回的对象。
- step(epoch=None)[source][source]¶
步骤可以在每次批量更新后调用。
示例
>>> 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), instead of scheduler(20)