keras中的優化算法

使用優化器
優化參數是keras模型編譯參數其中的一個:

model = Sequential()
model.add(Dense(20, 64, init='uniform'))
model.add(Activation('tanh'))
model.add(Activation('softmax'))

sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)

先建立網絡模型,使用SGD優化算法,學習率爲0.1,衰減項1e-6,動量0.9,使用nesterov最優梯度優化算法。模型編譯第一個參數使用平方誤差作爲損失函數,優化算法使用sgd。
基類

keras.optimizers.Optimizer(**kwargs)

所有的優化器都來自這個類,支持以下的關鍵字參數:

clipnorm: float >= 0.

注意:這是集成優化器的基類,並不是用來訓練模型的的實際的優化器。以下是幾種常見的優化算法。

SGD

keras.optimizers.SGD(lr=0.01, momentum=0., decay=0., nesterov=False)

參數:

  • lr: float >= 0. 學習率
  • momentum: float >= 0. 動量參數更新
  • decay: float >= 0. 每次迭代更新學習率衰減項
  • nesterov: boolean. 是否使用Nesterov 動量方法.布爾型

Adagrad

keras.optimizers.Adagrad(lr=0.01, epsilon=1e-6)

以上參數建議使用默認值。
參數:
- lr: float >= 0. 學習率
- epsilon: float >= 0.

Adadelta

keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-6)

參數:

  • lr: float >= 0. 學習率.一般選擇默認值
  • float >= 0.
  • epsilon: float >= 0. 模糊因子
    詳細請參考Matthew Zeiler:“Adadelta: an adaptive learning rate method”

RMSprop

keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-6)

參數:

  • lr: float >= 0.學習率
  • rho: float >= 0
  • epsilon: float >= 0.

Adam

keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8, kappa=1-1e-8)

Kingma and Lei Ba提出的Adam優化器 Adam: A Method For Stochastic Optimization.
這篇文章中會給出默認的參數值,這裏kappa替代原文中的lambda。
參數:

  • lr: float >= 0. 學習率
  • beta_1, beta_2: floats, 0 < beta < 1. 一般接近於1.
  • epsilon: float >= 0.
  • kappa: float 0 < kappa < 1. 原文中的Lambda .

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章