Usage of optimizers

优化器是编译Keras模型所需的两个参数之一:

from keras import optimizers

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()之前实例化优化器,如上例所示,也可以按其名称进行调用. 在后一种情况下,将使用优化程序的默认参数.

# pass optimizer by name: default parameters will be used
model.compile(loss='mean_squared_error', optimizer='sgd')

Parameters common to all Keras optimizers

参数clipnormclipvalue可以与所有优化器一起使用以控制梯度裁剪:

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)

[source]

SGD

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

随机梯度下降优化器.

包括对动量,学习率衰减和内斯特罗夫动量的支持.

Arguments

  • learning_rate :float> =0.学习率.
  • 动量 :浮点数> =0.该参数可在相关方向上加速SGD并抑制振荡.
  • nesterov :布尔值. 是否应用内斯特罗夫动力.

[source]

RMSprop

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

RMSProp优化器.

建议将此优化器的参数保留为默认值(学习速率除外,该速率可以自由调整).

Arguments

  • learning_rate :float> =0.学习率.
  • rho :float> = 0.

References


[source]

Adagrad

keras.optimizers.Adagrad(learning_rate=0.01)

Adagrad优化器.

Adagrad是一种优化器,具有特定于参数的学习率,相对于训练期间更新参数的频率进行调整. 参数接收的更新越多,学习率越小.

建议将此优化器的参数保留为默认值.

Arguments

  • learning_rate :float> =0.初始学习率.

References


[source]

Adadelta

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

Adadelta优化器.

Adadelta是Adagrad的更强大的扩展,它基于渐变更新的移动窗口来调整学习率,而不是累积所有过去的渐变. 这样,即使已完成许多更新,Adadelta仍可继续学习. 与Adagrad相比,在原始版本的Adadelta中,您无需设置初始学习率. 在此版本中,可以像大多数其他Keras优化器一样设置初始学习率和衰减因子.

建议将此优化器的参数保留为默认值.

Arguments

  • learning_rate :float> =0.初始学习速率,默认为1.建议将其保留为默认值.
  • rho :float> =0.Adadelta衰减因子,对应于每个时间步长要保留的梯度分数.

References


[source]

Adam

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

亚当优化器.

默认参数遵循原始论文中提供的参数.

Arguments

  • learning_rate :float> =0.学习率.
  • beta_1 :float,0 <beta <1.通常接近1.
  • beta_2 :float,0 <beta <1.通常接近1.
  • amsgrad :布尔值. 是否从论文"论亚当与超越的融合"中应用该算法的AMSGrad变体.

References


[source]

Adamax

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

来自Adam Paper第7节的Adamax优化器.

它是基于无穷范数的Adam的变体. 默认参数遵循本文提供的参数.

Arguments

  • learning_rate :float> =0.学习率.
  • beta_1 :float,0 <beta <1.通常接近1.
  • beta_2 :float,0 <beta <1.通常接近1.

References


[source]

Nadam

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

Nesterov Adam优化器.

就像亚当本质上是具有动量的RMSprop,纳丹是内斯特罗夫动量的RMSprop.

默认参数遵循本文提供的参数. 建议将此优化器的参数保留为默认值.

Arguments

  • learning_rate :float> =0.学习率.
  • beta_1 :float,0 <beta <1.通常接近1.
  • beta_2 :float,0 <beta <1.通常接近1.

References