梯度下降(帶動量)優化器。
繼承自: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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。