Spec-Zone.ru › TensorFlow 2.4

tf.keras.optimizers.SGD

Просмотреть исходный код на GitHub

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

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

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

Основные псевдонимы

tf.optimizers.SGD

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

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

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

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

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.
Возбуждения
ValueError в случае любого некорректного аргумента.

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

Spec-Zone.ru

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