keras 優化器optimizers

優化器(optimizers)

優化器是編譯 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)

我們可以在將優化器傳遞給 model.compile() 之前初始化,正如上面代碼所示,或者你可以直接通過名字調用。在後面的例子中,默認的優化器參數將會被使用。

# pass optimizer by name: default parameters will be used
model.compile(loss='mean_squared_error', optimizer='sgd')

基類(base class)

keras.optimizers.Optimizer(**kwargs)

所有的優化器都繼承自該類,支持下面的參數:

  • clipnorm: float >= 0

這是用來構建優化器的基類,不是實際可以用作訓練的優化器。


SGD

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

參數:

  • lr: float >= 0. 學習率 Learning rate
  • momentum: float >= 0. 參數更新動量 parameter updates momentum
  • decay: float >= 0. 學習率每次更新的下降率 Learning rate decay over each update
  • nesterov: boolean. 是否應用 Nesterov 動量 whether to apply Nesterov momentum

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. 默認設置
  • rho: float >= 0.
  • epsilon: float >= 0. Fuzz factor

refer to Adadelta: an adaptive learning rate method" by Matthew Zeiler.


RMSprop

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

建議使用默認設置
參數:

  • lr: float >= 0. 默認設置
  • rho: float >= 0.
  • epsilon: float >= 0. Fuzz factor

Adam

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

Adam 優化器由 Kingma 和 Lei Ba 在 Adam: A method for stochastic optimization。默認參數是文章中建議的。參數 lambda 在此處改做 kappa。
參數:

  • lr: float >= 0. Learning rate.
  • beta_1, beta_2: floats, 0 < beta < 1. Generally close to 1.
  • epsilon: float >= 0. Fuzz factor.
  • kappa: float 0 < kappa < 1. Lambda parameter in the original paper.


來自鏈接:https://www.jianshu.com/p/4f1469745598
 

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