Keras 3 API 文件 / 優化器 (Optimizers) / 學習率排程 API / 餘弦退火重啟 (CosineDecayRestarts)

餘弦退火重啟 (CosineDecayRestarts)

[原始碼]

CosineDecayRestarts 類別

keras.optimizers.schedules.CosineDecayRestarts(
    initial_learning_rate,
    first_decay_steps,
    t_mul=2.0,
    m_mul=1.0,
    alpha=0.0,
    name="SGDRDecay",
)

一個 LearningRateSchedule,使用帶有重啟的餘弦退火排程。

請參閱 Loshchilov & Hutter, ICLR2016, SGDR:帶有暖啟動的隨機梯度下降法 (Stochastic Gradient Descent with Warm Restarts)。

在訓練模型時,隨著訓練進度降低學習率通常很有用。此排程將帶有重啟的餘弦退火函數應用於優化器步驟,並給定提供的初始學習率。它需要一個 step 值來計算衰減後的學習率。您可以直接傳遞一個後端變數,該變數會在每個訓練步驟中遞增。

此排程是一個單參數可調用物件,當傳遞目前的優化器步驟時,會產生衰減後的學習率。這對於在優化器函數的不同調用之間更改學習率值非常有用。

學習率乘數首先在 first_decay_steps 步驟中從 1 衰減到 alpha。然後,執行暖啟動。每次新的暖啟動運行的步數是之前的 t_mul 倍,且初始學習率是新學習率的 m_mul 倍。

範例

first_decay_steps = 1000
lr_decayed_fn = (
    keras.optimizers.schedules.CosineDecayRestarts(
        initial_learning_rate,
        first_decay_steps))

您可以將此排程直接傳遞到 keras.optimizers.Optimizer 中作為學習率。學習率排程也可以使用 keras.optimizers.schedules.serializekeras.optimizers.schedules.deserialize 進行序列化和反序列化。

參數

  • initial_learning_rate:一個 Python 浮點數。初始學習率。
  • first_decay_steps:一個 Python 整數。衰減的步數。
  • t_mul:一個 Python 浮點數。用於推導第 i 個週期的迭代次數。
  • m_mul:一個 Python 浮點數。用於推導第 i 個週期的初始學習率。
  • alpha:一個 Python 浮點數。最小學習率值,為 initial_learning_rate 的一部分比例。
  • name:字串。操作的選用名稱。預設為 "SGDRDecay"

回傳值

一個單參數可調用學習率排程,它接受目前的優化器步驟並輸出衰減後的學習率,這是一個與 initial_learning_rate 類型相同的純量張量。