PolynomialDecay
類別keras.optimizers.schedules.PolynomialDecay(
initial_learning_rate,
decay_steps,
end_learning_rate=0.0001,
power=1.0,
cycle=False,
name="PolynomialDecay",
)
一個 LearningRateSchedule
類別,使用多項式衰減排程。
通常觀察到,單調遞減的學習率,其變化程度經過仔細選擇,會產生效能更佳的模型。此排程將多項式衰減函數應用於最佳化器步驟,給定提供的 initial_learning_rate
,以在給定的 decay_steps
內達到 end_learning_rate
。
它需要一個 step
值來計算衰減的學習率。您只需傳遞一個後端變數,在每個訓練步驟中遞增它即可。
此排程是一個單參數可呼叫物件,當傳遞目前最佳化器步驟時,會產生衰減的學習率。這對於在不同最佳化器函數調用之間更改學習率值非常有用。其計算方式為
def decayed_learning_rate(step):
step = min(step, decay_steps)
return ((initial_learning_rate - end_learning_rate) *
(1 - step / decay_steps) ^ (power)
) + end_learning_rate
如果 cycle
為 True,則會使用 decay_steps
的倍數,第一個大於 step
的倍數。
def decayed_learning_rate(step):
decay_steps = decay_steps * ceil(step / decay_steps)
return ((initial_learning_rate - end_learning_rate) *
(1 - step / decay_steps) ^ (power)
) + end_learning_rate
您可以將此排程直接傳遞到 keras.optimizers.Optimizer
作為學習率。範例
在 10000 個步驟中使用從 0.1 衰減到 0.01 的方式擬合模型
sqrt(即 power=0.5)
...
starter_learning_rate = 0.1
end_learning_rate = 0.01
decay_steps = 10000
learning_rate_fn = keras.optimizers.schedules.PolynomialDecay(
starter_learning_rate,
decay_steps,
end_learning_rate,
power=0.5)
model.compile(optimizer=keras.optimizers.SGD(
learning_rate=learning_rate_fn),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(data, labels, epochs=5)
學習率排程也可以使用 keras.optimizers.schedules.serialize
和 keras.optimizers.schedules.deserialize
進行序列化和反序列化。
引數
1.0
。"PolynomialDecay"
。返回
一個單參數可呼叫的學習率排程,它接受目前最佳化器步驟並輸出衰減的學習率,一個與 initial_learning_rate
相同類型的純量張量。