Spec-Zone.ru › TensorFlow 2.9

tf.keras.optimizers.legacy.SGD

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

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

Просмотр псевдонимов

Псевдонимы для миграции

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

tf.compat.v1.keras.optimizers.legacy.SGD

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

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

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.
Возбуждает
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/legacy/SGD

Spec-Zone.ru

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