使用优化器
优化参数是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 .