Spec-Zone.ru › TensorFlow 2.9

tf.keras.optimizers.SGD

View source on GitHub

Оптимизатор градиентного спуска (с моментом).

Наследуется от: Optimizer

Показать псевдонимы

Совместимые псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.keras.optimizers.SGD

tf.keras.optimizers.SGD(
    learning_rate=0.01,
    momentum=0.0,
    nesterov=False,
    name='SGD',
    **kwargs
)

Правило обновления для параметра w с градиентом g когда momentum равно 0:

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
Args
learning_rate Значение с плавающей точкой, число или расписание, являющееся tf.keras.optimizers.schedules.LearningRateSchedule, или вызываемый объект, который не принимает аргументы и возвращает фактическое значение для использования. Скорость обучения. По умолчанию 0,01.
momentum Гиперпараметр типа float >= 0, который ускоряет градиентный спуск в соответствующем направлении и гасит колебания. По умолчанию 0, т. е. обычный градиентный спуск.
nesterov Логическое значение. Применять ли импульс Нестерова. По умолчанию False.
name Необязательный префикс имени для операций, созданных при применении градиентов. По умолчанию "SGD".
**kwargs Именованные аргументы. Допустимые аргументы: clipvalue, clipnorm, global_clipnorm. Если clipvalue (float) задано, градиент каждого веса ограничивается этим значением. Если clipnorm (float) задано, градиент каждого веса индивидуально ограничивается так, чтобы его норма не превышала это значение. Если global_clipnorm (float) задано, градиент всех весов ограничивается так, чтобы их глобальная норма не превышала это значение.

Использование:

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 et al., 2013.
Raises
ValueError в случае любого недопустимого аргумента.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/optimizers/SGD

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API