Keras官方中文文檔:優化器Optimizer
優化器optimizers
優化器是編譯Keras模型必要的兩個參數之一
from keras import optimizers model = Sequential() model.add(Dense(64, kernel_initializer=‘uniform‘, input_shape=(10,))) model.add(Activation(‘tanh‘)) model.add(Activation(‘softmax‘)) sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) model.compile(loss=‘mean_squared_error‘, optimizer=sgd)
可以在調用model.compile()
之前初始化一個優化器對象,然後傳入該函數(如上所示),也可以在調用model.compile()
時傳遞一個預定義優化器名。在後者情形下,優化器的參數將使用默認值。
# pass optimizer by name: default parameters will be used
model.compile(loss=‘mean_squared_error‘, optimizer=‘sgd‘)
所有優化器都可用的參數
參數clipnorm
和clipvalue
是所有優化器都可以使用的參數,用於對梯度進行裁剪.示例如下:
from keras import optimizers # All parameter gradients will be clipped to # a maximum norm of 1. sgd = optimizers.SGD(lr=0.01, clipnorm=1.)
from keras import optimizers
# All parameter gradients will be clipped to
# a maximum value of 0.5 and
# a minimum value of -0.5.
sgd = optimizers.SGD(lr=0.01, clipvalue=0.5)
SGD
keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)
隨機梯度下降法,支持動量參數,支持學習衰減率,支持Nesterov動量
參數
-
lr:大或等於0的浮點數,學習率
-
momentum:大或等於0的浮點數,動量參數
-
decay:大或等於0的浮點數,每次更新後的學習率衰減值
-
nesterov:布爾值,確定是否使用Nesterov動量
RMSprop
keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06)
除學習率可調整外,建議保持優化器的其他默認參數不變
該優化器通常是面對遞歸神經網絡時的一個良好選擇
參數
-
lr:大或等於0的浮點數,學習率
-
rho:大或等於0的浮點數
-
epsilon:大或等於0的小浮點數,防止除0錯誤
Adagrad
keras.optimizers.Adagrad(lr=0.01, epsilon=1e-06)
建議保持優化器的默認參數不變
Adagrad
-
lr:大或等於0的浮點數,學習率
-
epsilon:大或等於0的小浮點數,防止除0錯誤
Adadelta
keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-06)
建議保持優化器的默認參數不變
參數
-
lr:大或等於0的浮點數,學習率
-
rho:大或等於0的浮點數
-
epsilon:大或等於0的小浮點數,防止除0錯誤
參考文獻
- Adadelta - an adaptive learning rate method
Adam
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08)
該優化器的默認值來源於參考文獻
參數
-
lr:大或等於0的浮點數,學習率
-
beta_1/beta_2:浮點數, 0<beta<1,通常很接近1
-
epsilon:大或等於0的小浮點數,防止除0錯誤
參考文獻
- Adam - A Method for Stochastic Optimization
Adamax
keras.optimizers.Adamax(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08)
Adamax優化器來自於Adam的論文的Section7,該方法是基於無窮範數的Adam方法的變體。
默認參數由論文提供
參數
-
lr:大或等於0的浮點數,學習率
-
beta_1/beta_2:浮點數, 0<beta<1,通常很接近1
-
epsilon:大或等於0的小浮點數,防止除0錯誤
參考文獻
- Adam - A Method for Stochastic Optimization
Nadam
keras.optimizers.Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, schedule_decay=0.004)
Nesterov Adam optimizer: Adam本質上像是帶有動量項的RMSprop,Nadam就是帶有Nesterov 動量的Adam RMSprop
默認參數來自於論文,推薦不要對默認參數進行更改。
參數
-
lr:大或等於0的浮點數,學習率
-
beta_1/beta_2:浮點數, 0<beta<1,通常很接近1
-
epsilon:大或等於0的小浮點數,防止除0錯誤
參考文獻
-
Nadam report
-
On the importance of initialization and momentum in deep learning
TFOptimizer
keras.optimizers.TFOptimizer(optimizer)
TF優化器的包裝器
艾伯特(http://www.aibbt.com/)國內第一家人工智能門戶
Keras官方中文文檔:優化器Optimizer