在编译一个Keras模型时,优化器是2个参数之一(另外一个是损失函数)。看如下代码:
model = Sequential() model.add(Dense(64, init='uniform', input_dim=10)) 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)
这个例子中是在调用compile之前实例化了一个优化器。我们也可以通过传递名字的方式调用默认的优化器。代码如下:
# passoptimizer by name: default parameters will be used model.compile(loss='mean_squared_error', optimizer='sgd')
keras.optimizers.Optimizer(**kwargs)
所有的优化器都继承自上面这个带有keyword参数的类。当然基类是不能用来训练模型的。
keras.optimizers.SGD(lr=0.01, momentum=0., decay=0., nesterov=False)
参数:
keras.optimizers.Adagrad(lr=0.01, epsilon=1e-6)
参数:
keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-6)
参数:
keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-6)
参数:
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8)
参数:
参考资料: