机器学习包括两部份内容,一部分是如何构建模型,另外一部分就是如何训练模型。训练模型就是经过挑选最佳的优化器去训练出最优的模型。 Keras包含了不少优化方法。好比最经常使用的随机梯度降低法(SGD),还有Adagrad、Adadelta、RMSprop、Adam等。下面经过具体的代码介绍一下优化器的使用方法。最重要的就是SGD,其余的优化器有兴趣的能够自行了解一下。算法
在编译一个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) 参数: lr :float>=0,学习速率 momentum :float>=0 参数更新的动量 decay : float>=0 每次更新后学习速率的衰减量 nesterov :Boolean 是否使用Nesterov动量项
keras.optimizers.Adagrad(lr=0.01, epsilon=1e-6) 参数: lr : float>=0,学习速率 epsilon :float>=0
keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-6) 参数: lr :float>=0,学习速率 rho : float>=0 epsilon :float>=0 模糊因子
keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-6) 参数: lr:float>=0,学习速率 rho : float>=0 epsilon : float>=0 模糊因子
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8) 参数: lr : float>=0,学习速率 beta_1, beta_2:floats, 0 < beta < 1 一般都是接近于1 epsilon :float>=0 模糊因子