余弦退火重启学习率¶
- class torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0, T_mult=1, eta_min=0.0, last_epoch=-1, verbose='deprecated')[source]¶
使用余弦退火调度设置每个参数组的学习率。
设置为初始学习率, 是自上次重启以来经过的 epoch 数,而 是 SGDR 中两次重启之间经过的 epoch 数。
当 时,设置 。当 重启后,设置 。
该方法在SGDR: Stochastic Gradient Descent with Warm Restarts中被提出。
- 参数
- load_state_dict(state_dict)¶
加载调度程序的状态。
- 参数
state_dict (dict) – 调度程序状态。应为
state_dict()
调用返回的对象。
- print_lr(is_verbose, group, lr, epoch=None)¶
显示当前学习率。
自版本 2.4 起已弃用:
print_lr()
已弃用。请使用get_last_lr()
来访问学习率。
- step(epoch=None)[source]¶
可以在每次批次更新后调用 Step。
示例
>>> 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)