快捷方式

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)[source][source]

當某個指標停止提升時,降低學習率。

一旦學習停滯,模型通常會受益於將學習率降低 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 模式下,在 'max' 模式中 dynamic_threshold = best * ( 1 + threshold ),或在 min 模式中 dynamic_threshold = best * ( 1 - threshold )。在 abs 模式下,在 max 模式中 dynamic_threshold = best + threshold,或在 min 模式中 dynamic_threshold = best - threshold。預設值:'rel'。

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

  • min_lr (float or list) – 一個標量或一個標量列表。所有引數組或每個引數組的學習率下限。預設值: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)
get_last_lr()[source]

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

返回型別

list[float]

get_lr()[source]

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

返回型別

list[float]

load_state_dict(state_dict)[source][source]

載入排程器的狀態。

step(metrics, epoch=None)[source][source]

執行一步。

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源