評價此頁

SWALR#

class torch.optim.swa_utils.SWALR(optimizer, swa_lr, anneal_epochs=10, anneal_strategy='cos', last_epoch=-1)[原始碼]#

將每個引數組的學習率退火到一個固定值。

此學習率排程器旨在與隨機權重平均 (SWA) 方法一起使用(參見 torch.optim.swa_utils.AveragedModel)。

引數
  • optimizer (torch.optim.Optimizer) – 被包裝的最佳化器

  • swa_lrs (floatlist) – 所有引數組的總學習率值,或為每個組單獨設定。

  • annealing_epochs (int) – 退火階段的 epoch 數量(預設:10)

  • annealing_strategy (str) – “cos” 或 “linear”;指定退火策略:“cos” 表示餘弦退火,“linear” 表示線性退火(預設:“cos”)

  • last_epoch (int) – 最後一個 epoch 的索引(預設:-1)

可以在訓練後期將 SWALR 排程器與其他排程器結合使用,以切換到恆定的學習率,如下例所示。

示例

>>> loader, optimizer, model = ...
>>> lr_lambda = lambda epoch: 0.9
>>> scheduler = torch.optim.lr_scheduler.MultiplicativeLR(optimizer,
>>>        lr_lambda=lr_lambda)
>>> swa_scheduler = torch.optim.swa_utils.SWALR(optimizer,
>>>        anneal_strategy="linear", anneal_epochs=20, swa_lr=0.05)
>>> swa_start = 160
>>> for i in range(300):
>>>      for input, target in loader:
>>>          optimizer.zero_grad()
>>>          loss_fn(model(input), target).backward()
>>>          optimizer.step()
>>>      if i > swa_start:
>>>          swa_scheduler.step()
>>>      else:
>>>          scheduler.step()
get_last_lr()[原始碼]#

返回當前排程器計算的最後一個學習率。

返回型別

list[float]

get_lr()[原始碼]#

獲取學習率。

load_state_dict(state_dict)[原始碼]#

載入排程器的狀態。

引數

state_dict (dict) – 排程器狀態。應為呼叫 state_dict() 返回的物件。

state_dict()[原始碼]#

返回排程器狀態,作為一個 dict

它包含 self.__dict__ 中除最佳化器之外的所有變數的條目。

返回型別

dict[str, Any]

step(epoch=None)[原始碼]#

執行一步。