CosineAnnealingWarmRestarts¶
- class torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0, T_mult=1, eta_min=0.0, last_epoch=-1, verbose='deprecated')[source][source]¶
使用 cosine annealing schedule(餘弦退火排程)來設定每個參數群組的學習率。
設定為初始學習率(initial lr), 是自上次重新啟動(restart)以來的 epoch 數,而 是 SGDR 中兩個 warm restarts 之間的 epoch 數。
當 時,設定 。當重新啟動後 時,設定 。
已在 SGDR: Stochastic Gradient Descent with Warm Restarts 中提出。
- 參數
optimizer (Optimizer) – 包裝的優化器。
T_0 (int) – 直到第一次重新啟動的迭代次數。
T_mult (int, optional) – 在重新啟動後增加的因子。預設值:1。
eta_min (float, optional) – 最小學習率。預設值:0。
last_epoch (int, optional) – 最後一個 epoch 的索引。預設值:-1。
如果
True
,則為每次更新將訊息列印到 stdout。預設值:False
。Deprecated since version 2.2:
verbose
已棄用。請使用get_last_lr()
訪問學習率。
- 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)[原始碼][原始碼]¶
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)