添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
model = Sequential() model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,))) 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(loss='mean_squared_error', optimizer='sgd')

Keras 优化器的公共参数

参数 clipnormclipvalue 能在所有的优化器中使用,用于控制梯度裁剪(Gradient Clipping):

from keras import optimizers
# 所有参数梯度将被裁剪,让其 l2 范数最大为 1:g * 1 / max(1, l2_norm)
sgd = optimizers.SGD(lr=0.01, clipnorm=1.)
from keras import optimizers
# 所有参数 d 梯度将被裁剪到数值范围内:
# 最大值 0.5
# 最小值 -0.5
sgd = optimizers.SGD(lr=0.01, clipvalue=0.5)

[source]

keras.optimizers.SGD(learning_rate=0.01, momentum=0.0, nesterov=False)

随机梯度下降优化器。

包含扩展功能的支持:

  • 动量(momentum)优化,
  • 学习率衰减(每次参数更新后)
  • Nestrov 动量 (NAG) 优化
  • learning_rate: float >= 0. 学习率。
  • momentum: float >= 0. 参数,用于加速 SGD 在相关方向上前进,并抑制震荡。
  • nesterov: boolean. 是否使用 Nesterov 动量。
  • [source]

    RMSprop

    keras.optimizers.RMSprop(learning_rate=0.001, rho=0.9)
    

    RMSProp 优化器。

    建议使用优化器的默认参数 (除了学习率,它可以被自由调节)

    这个优化器通常是训练循环神经网络 RNN 的不错选择。

  • learning_rate: float >= 0. 学习率。
  • rho: float >= 0. RMSProp 梯度平方的移动均值的衰减率。
  • rmsprop: Divide the gradient by a running average of its recent magnitude
  • [source]

    Adagrad

    keras.optimizers.Adagrad(learning_rate=0.01)
    

    Adagrad 优化器。

    Adagrad 是一种具有特定参数学习率的优化器,它根据参数在训练期间的更新频率进行自适应调整。参数接收的更新越多,更新越小。

    建议使用优化器的默认参数。

  • learning_rate: float >= 0. 学习率。
  • Adaptive Subgradient Methods for Online Learning and Stochastic Optimization
  • [source]

    Adadelta

    keras.optimizers.Adadelta(learning_rate=1.0, rho=0.95)
    

    Adadelta 优化器。

    Adadelta 是 Adagrad 的一个具有更强鲁棒性的的扩展版本,它不是累积所有过去的梯度,而是根据渐变更新的移动窗口调整学习速率。 这样,即使进行了许多更新,Adadelta 仍在继续学习。 与 Adagrad 相比,在 Adadelta 的原始版本中,您无需设置初始学习率。 在此版本中,与大多数其他 Keras 优化器一样,可以设置初始学习速率和衰减因子。

    建议使用优化器的默认参数。

  • learning_rate: float >= 0. 初始学习率,默认为 1。建议保留默认值。
  • rho: float >= 0. Adadelta 梯度平方移动均值的衰减率。
  • Adadelta - an adaptive learning rate method
  • [source]

    keras.optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, amsgrad=False)
    

    Adam 优化器。

    默认参数遵循原论文中提供的值。

  • learning_rate: float >= 0. 学习率。
  • beta_1: float, 0 < beta < 1. 通常接近于 1。
  • beta_2: float, 0 < beta < 1. 通常接近于 1。
  • amsgrad: boolean. 是否应用此算法的 AMSGrad 变种,来自论文 "On the Convergence of Adam and Beyond"。
  • Adam - A Method for Stochastic Optimization
  • On the Convergence of Adam and Beyond
  • [source]

    Adamax

    keras.optimizers.Adamax(learning_rate=0.002, beta_1=0.9, beta_2=0.999)
    

    Adamax 优化器,来自 Adam 论文的第七小节.

    它是Adam算法基于无穷范数(infinity norm)的变种。 默认参数遵循论文中提供的值。

  • learning_rate: float >= 0. 学习率。
  • beta_1: floats, 0 < beta < 1. 通常接近于 1。
  • beta_2: floats, 0 < beta < 1. 通常接近于 1。
  • Adam - A Method for Stochastic Optimization
  • [source]

    Nadam

    keras.optimizers.Nadam(learning_rate=0.002, beta_1=0.9, beta_2=0.999)
    

    Nesterov 版本 Adam 优化器。

    正像 Adam 本质上是 RMSProp 与动量 momentum 的结合, Nadam 是采用 Nesterov momentum 版本的 Adam 优化器。

    默认参数遵循论文中提供的值。 建议使用优化器的默认参数。

  • learning_rate: float >= 0. 学习率。
  • beta_1: floats, 0 < beta < 1. 通常接近于 1。
  • beta_2: floats, 0 < beta < 1. 通常接近于 1。
  • Nadam report
  • On the importance of initialization and momentum in deep learning
  •