梯度下降(带动量)优化器。
继承自:Optimizer
用法
tf.keras.optimizers.SGD(
learning_rate=0.01, momentum=0.0, nesterov=False, name='SGD', **kwargs
)
参数
-
learning_rate
Tensor
,浮点值,或作为tf.keras.optimizers.schedules.LearningRateSchedule
的计划,或不带参数并返回要使用的实际值的可调用对象。学习率。默认为 0.01。 -
momentum
float 超参数 >= 0,加速相关方向的梯度下降并抑制振荡。默认为 0,即普通梯度下降。 -
nesterov
布尔值。是否应用 Nesterov 动量。默认为False
。 -
name
应用渐变时创建的操作的可选名称前缀。默认为"SGD"
。 -
**kwargs
关键字参数。允许是"clipnorm"
或"clipvalue"
之一。"clipnorm"
(float) 按标准裁剪渐变;"clipvalue"
(float) 按值裁剪渐变。
抛出
-
ValueError
在任何无效论点的情况下。
当 momentum
为 0 时,使用梯度 g
更新参数 w
的规则:
w = w - learning_rate * g
momentum
大于 0 时更新规则:
velocity = momentum * velocity - learning_rate * g
w = w + velocity
当 nesterov=True
时,此规则变为:
velocity = momentum * velocity - learning_rate * g
w = w + momentum * velocity - learning_rate * g
用法:
opt = tf.keras.optimizers.SGD(learning_rate=0.1)
var = tf.Variable(1.0)
loss = lambda:(var ** 2)/2.0 # d(loss)/d(var1) = var1
step_count = opt.minimize(loss, [var]).numpy()
# Step is `- learning_rate * grad`
var.numpy()
0.9
opt = tf.keras.optimizers.SGD(learning_rate=0.1, momentum=0.9)
var = tf.Variable(1.0)
val0 = var.value()
loss = lambda:(var ** 2)/2.0 # d(loss)/d(var1) = var1
# First step is `- learning_rate * grad`
step_count = opt.minimize(loss, [var]).numpy()
val1 = var.value()
(val0 - val1).numpy()
0.1
# On later steps, step-size increases because of momentum
step_count = opt.minimize(loss, [var]).numpy()
val2 = var.value()
(val1 - val2).numpy()
0.18
参考:
- 对于
nesterov=True
,请参见 Sutskever 等人,2013 年。
相关用法
- Python tf.keras.optimizers.Optimizer.set_weights用法及代码示例
- Python tf.keras.optimizers.schedules.serialize用法及代码示例
- Python tf.keras.optimizers.Adam用法及代码示例
- Python tf.keras.optimizers.Adamax用法及代码示例
- Python tf.keras.optimizers.Optimizer用法及代码示例
- Python tf.keras.optimizers.schedules.ExponentialDecay用法及代码示例
- Python tf.keras.optimizers.schedules.PiecewiseConstantDecay用法及代码示例
- Python tf.keras.optimizers.Nadam用法及代码示例
- Python tf.keras.optimizers.RMSprop用法及代码示例
- Python tf.keras.optimizers.schedules.deserialize用法及代码示例
- Python tf.keras.optimizers.schedules.CosineDecay用法及代码示例
- Python tf.keras.optimizers.schedules.CosineDecayRestarts用法及代码示例
- Python tf.keras.optimizers.Optimizer.apply_gradients用法及代码示例
- Python tf.keras.optimizers.Ftrl用法及代码示例
- Python tf.keras.optimizers.Optimizer.get_weights用法及代码示例
- Python tf.keras.optimizers.schedules.PolynomialDecay用法及代码示例
- Python tf.keras.optimizers.serialize用法及代码示例
- Python tf.keras.optimizers.schedules.InverseTimeDecay用法及代码示例
- Python tf.keras.applications.inception_resnet_v2.preprocess_input用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.optimizers.SGD。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。