快捷方式

CosineAnnealingLR

torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0.0, last_epoch=-1)[原始碼][原始碼]

使用餘弦退火排程設定每個引數組的學習率。

ηmax\eta_{max} 設定為初始學習率,將 TcurT_{cur} 設定為自 SGDR 中上次重啟以來的 epoch 數。

ηt=ηmin+12(ηmaxηmin)(1+cos(TcurTmaxπ)),Tcur(2k+1)Tmax;ηt+1=ηt+12(ηmaxηmin)(1cos(1Tmaxπ)),Tcur=(2k+1)Tmax.\begin{aligned} \eta_t & = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min})\left(1 + \cos\left(\frac{T_{cur}}{T_{max}}\pi\right)\right), & T_{cur} \neq (2k+1)T_{max}; \\ \eta_{t+1} & = \eta_{t} + \frac{1}{2}(\eta_{max} - \eta_{min}) \left(1 - \cos\left(\frac{1}{T_{max}}\pi\right)\right), & T_{cur} = (2k+1)T_{max}. \end{aligned}

當 last_epoch=-1 時,將初始學習率設定為 lr。請注意,由於排程器是遞迴定義的,學習率可以同時被此排程器之外的其他運算子修改。如果學習率僅由此排程器設定,則每一步的學習率變為

ηt=ηmin+12(ηmaxηmin)(1+cos(TcurTmaxπ))\eta_t = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min})\left(1 + \cos\left(\frac{T_{cur}}{T_{max}}\pi\right)\right)

這在 SGDR: Stochastic Gradient Descent with Warm Restarts 中被提出。請注意,這僅實現了 SGDR 的餘弦退火部分,而不包括重啟。

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

  • T_max (int) – 最大迭代次數。

  • eta_min (float) – 最小學習率。預設值: 0。

  • last_epoch (int) – 上一個 epoch 的索引。預設值: -1。

get_last_lr()[原始碼]

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

返回型別

list[float]

get_lr()[原始碼][原始碼]

檢索每個引數組的學習率。

load_state_dict(state_dict)[原始碼]

載入排程器的狀態。

引數

state_dict (dict) – 排程器的狀態。應該是一個透過呼叫 state_dict() 返回的物件。

state_dict()[source]

將排程器的狀態作為 dict 返回。

它包含 self.__dict__ 中除最佳化器以外的每個變數的條目。

step(epoch=None)[source]

執行一個步進(step)。

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

獲取適合初學者和高階開發者的深度教程

檢視教程

資源

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

檢視資源