學習率衰減的實現方法

2021-10-23 13:08:49 字數 1280 閱讀 2215

optimizer =  sgd(learning_rate=

0.2)

for epoch in

range

(100):

# get loss

# change learning rate

optimizer.learning_rate =

0.2*

(100

-epoch)

/100

# update weights

lr_schedule = tf.keras.callbacks.learningratescheduler(

lambda epoch:1e-

6*10**

(epoch /20)

)optimizer = tf.keras.optimizers.sgd(lr=1e-

6)model.

compile

(loss=tf.losses.categoricalcrossentropy(from_logits=

true),

optimizer=optimizer,

metrics=

['accuracy'])

history = model.fit(train_db, epochs=

100, callbacks=

[lr_schedule]

)

# 如果loss在40個epoch後沒有提公升,學習率減半。

lr_callback = tf.keras.callbacks.reducelronplateau(monitor=

"loss"

,factor =

0.5, patience =

40)

monitor:被監測的物件

factor:每次減少學習率的因子,學習率將以lr=lr*factor的形式減少

patience:當patience個epoch過去而模型效能不提公升時,學習率減少的動作會被觸發

mode:『auto』,『min』,『max』之一,在min模式下,如果檢測值不再降低,則觸發學習率減少。在max模式下,當檢測值不再上公升則觸發學習率減少。

epsilon:閾值,用來確定是否進入檢測值的「平原區「

cooldown:學習率減少後,會經過cooldown個epoch才重新進行正常操作

min_lr:學習率的下限

參考

學習率衰減

在訓練深度神經網路時,通常會隨著訓練的進行降低學習率。這可以通過使用預定義的學習率計畫或自適應學習率方法來完成。學習率表 學習率時間表旨在根據預先定義的時間表降低學習率,從而在訓練過程中調整學習率。常見的學習率時間表包括基於時間的衰減,逐步衰減和指數衰減。什麼是學習率?使用隨機梯度下降演算法訓練深度...

pytorch實現學習率衰減

目錄exponentiallr 指數連續衰減 使用for迴圈來手動人工進行learning rate的衰減 model net lr 0.01 optimizer adam model.parameters lr lr lr list for epoch in range 100 if epoch ...

學習率衰減 Learning Rate Decay

以目前最主流的引數優化演算法gradient descent為例,為了讓梯度下降的效能更優,我們需要將學習率設定在乙個合適的範圍。具體來說,學習率其實就是演算法的步長,一步走多少決定了很多事情 步子大了,優化效率高,很可能一下越過最優解 相反,步子小了,優化效率低,很可能陷進乙個區域性最優解怎麼都走...