CosineAnnealingWarmRestarts#
- class torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0, T_mult=1, eta_min=0.0, last_epoch=-1)[原始碼]#
使用餘弦退火排程設定每個引數組的學習率。
其中 設定為初始學習率, 是自上次重啟以來的 epoch 數,而 是 SGDR 中兩次熱重啟之間的 epoch 數。
當 時,設定為 。當重啟後 時,設定為 。
在 SGDR: Stochastic Gradient Descent with Warm Restarts 中有提出。
- 引數
示例
>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.05) >>> scheduler = torch.optim.lr_scheduler.CosineAnnealingWarmRestarts( ... optimizer, T_0=20 ... ) >>> for epoch in range(100): >>> train(...) >>> validate(...) >>> scheduler.step()
- load_state_dict(state_dict)[原始碼]#
載入排程器的狀態。
- 引數
state_dict (dict) – 排程器的狀態。應該是一個從呼叫
state_dict()返回的物件。
- step(epoch=None)[原始碼]#
Step 可以在每次 batch 更新後呼叫。
示例
>>> 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)