梯度下降(帶動量)優化器。
繼承自:Optimizer
用法
tf.keras.optimizers.SGD(
learning_rate=0.01, momentum=0.0, nesterov=False, name='SGD', **kwargs
)參數
-
learning_rateTensor,浮點值,或作為tf.keras.optimizers.schedules.LearningRateSchedule的計劃,或不帶參數並返回要使用的實際值的可調用對象。學習率。默認為 0.01。 -
momentumfloat 超參數 >= 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
