在訓練的過程中降低學習率


隨着學習的進行,深度學習的學習速率逐步下降  為什么比  固定的學習速率 得到的結果更加准確?

如上圖所示,曲線代表損失值,小球一開始位於(1)處,假設學習速率設置為 △ v,那么根據梯度下降,損失值將在(1)  (2)之間來回移動,無法到達最小值(3)處。要想到達(3),只能降低學習速率。

keras中實現方法:
learning_rate_reduction = ReduceLROnPlateau(monitor = 'val_acc', patience = 3, verbose = 1, factor = 0. 5, min_lr = 0. 00001)
#並且作為callbacks進入generator,開始訓練
history = model.fit_generator(datagen.flow(X_train,Y_train, batch_size =batch_size),
                              epochs = epochs, validation_data = (X_val,Y_val),
                              verbose = 2, steps_per_epoch =X_train.shape[ 0] // batch_size
                              , callbacks =[learning_rate_reduction])

文檔:
ReduceLROnPlateau
keras.callbacks.ReduceLROnPlateau(monitor = 'val_loss', factor = 0. 1, patience = 10, verbose = 0, mode = 'auto', epsilon = 0. 0001, cooldown = 0, min_lr = 0)

當評價指標不在提升時,減少學習率。當學習停滯時,減少2倍或10倍的學習率常常能獲得較好的效果。該回調函數檢測指標的情況,如果在patience個epoch中看不到模型性能提升,則減少學習率

參數

  • monitor:被監測的量
  • factor:每次減少學習率的因子,學習率將以lr = lr*factor的形式被減少
  • patience:當patience個epoch過去而模型性能不提升時,學習率減少的動作會被觸發
  • mode:‘auto’,‘min’,‘max’之一,在min模式下,如果檢測值觸發學習率減少。在max模式下,當檢測值不再上升則觸發學習率減少。
  • epsilon:閾值,用來確定是否進入檢測值的“平原區”
  • cooldown:學習率減少后,會經過cooldown個epoch才重新進行正常操作
  • min_lr:學習率的下線
     














免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM