評價此頁

ReduceLROnPlateau#

class torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08)[原始碼]#

當指標停止改進時,降低學習率。

模型通常受益於在學習停滯後將學習率降低 2-10 倍。此排程器讀取一個指標量,如果在“patience”個 epoch 內沒有看到改進,則學習率會降低。

引數
  • optimizer (Optimizer) – 包裝的最佳化器。

  • mode (str) – minmax 之一。在 min 模式下,當監控的量停止減少時,學習率會降低;在 max 模式下,當監控的量停止增加時,學習率會降低。預設為 ‘min’。

  • factor (float) – 學習率將降低的因子。 new_lr = lr * factor。預設為 0.1。

  • patience (int) – 在學習率降低之前,允許無改進的 epoch 數量。例如,考慮無耐心 (patience = 0) 的情況。在第一個 epoch 中,建立一個基線,並且由於沒有先前的基線,它始終被認為是好的。在第二個 epoch 中,如果效能比基線差,則被認為是不可容忍的 epoch。由於不可容忍 epoch 的計數 (1) 大於耐心級別 (0),因此在 epoch 結束時學習率會降低。從第三個 epoch 開始,如果效能比基線差,學習率將繼續在每個 epoch 結束時降低。如果效能提高或保持不變,則不調整學習率。預設為 10。

  • threshold (float) – 用於測量新最優值的閾值,以便只關注顯著的變化。預設為 1e-4。

  • threshold_mode (str) – relabs 之一。在 rel 模式下,dynamic_threshold = best * ( 1 + threshold )(在 ‘max’ 模式下)或 best * ( 1 - threshold )(在 min 模式下)。在 abs 模式下,dynamic_threshold = best + threshold(在 max 模式下)或 best - threshold(在 min 模式下)。預設為 ‘rel’。

  • cooldown (int) – 學習率降低後恢復正常操作前等待的 epoch 數量。預設為 0。

  • min_lr (floatlist) – 一個標量或一個標量列表。所有引數組或每個組的學習率的下界。預設為 0。

  • eps (float) – 應用於學習率的最小衰減。如果新舊學習率之間的差值小於 eps,則忽略更新。預設為 1e-8。

示例

>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
>>> scheduler = ReduceLROnPlateau(optimizer, "min")
>>> for epoch in range(10):
>>>     train(...)
>>>     val_loss = validate(...)
>>> # Note that step should be called after validate()
>>>     scheduler.step(val_loss)
../_images/ReduceLROnPlateau.png
get_last_lr()[原始碼]#

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

返回型別

list[float]

get_lr()[原始碼]#

使用排程器的鏈式形式計算學習率。

返回型別

list[float]

load_state_dict(state_dict)[原始碼]#

載入排程器的狀態。

state_dict()[原始碼]#

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

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

返回型別

dict[str, Any]

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

執行一步。