Spec-Zone.ru › TensorFlow 2.4

tf.keras.optimizers.Adam

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

Оптимизатор, реализующий алгоритм Adam.

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

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

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

tf.optimizers.Adam

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

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

tf.compat.v1.keras.optimizers.Adam

tf.keras.optimizers.Adam(
    learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False,
    name='Adam', **kwargs
)

Оптимизация Adam — это метод стохастического градиентного спуска, основанный на адаптивной оценке моментов первого и второго порядка.

Согласно Kingma et al., 2014, метод «вычислительно эффективный, с небольшими требованиями к памяти, инвариантен к диагональному масштабированию градиентов и хорошо подходит для задач с большими данными/параметрами».

Аргументы
learning_rate Значение с плавающей точкой, или расписание, являющееся tf.keras.optimizers.schedules.LearningRateSchedule, или вызываемый объект без аргументов, возвращающий фактическое значение, которое нужно использовать. Скорость обучения. По умолчанию 0,001.
beta_1 Значение с плавающей точкой или постоянный тензор с плавающей точкой, или вызываемый объект без аргументов, возвращающий фактическое значение, которое нужно использовать. Экспоненциальная скорость затухания для оценок моментов первого порядка. По умолчанию 0,9.
beta_2 Значение с плавающей точкой или постоянный тензор с плавающей точкой, или вызываемый объект без аргументов, возвращающий фактическое значение, которое нужно использовать. Экспоненциальная скорость затухания для оценок моментов второго порядка. По умолчанию 0,999.
epsilon Небольшая константа для обеспечения числовой устойчивости. Эта величина epsilon — это «epsilon hat» в статье Kingma и Ba (в формуле перед разделом 2.1), а не epsilon в алгоритме 1 статьи. По умолчанию 1e-7.
amsgrad Булево значение. Применять ли вариант AMSGrad этого алгоритма из статьи «Об сходимости Adam и далее». По умолчанию False.
name Необязательное имя для операций, создаваемых при применении градиентов. По умолчанию "Adam".
**kwargs Дополнительные ключевые аргументы. Разрешается использовать "clipnorm" или "clipvalue". "clipnorm" (float) ограничивает градиенты по норме; "clipvalue" (float) ограничивает градиенты по значению.

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

opt = tf.keras.optimizers.Adam(learning_rate=0.1)
var1 = tf.Variable(10.0)
loss = lambda: (var1 ** 2)/2.0       # d(loss)/d(var1) == var1
step_count = opt.minimize(loss, [var1]).numpy()
# The first step is `-learning_rate*sign(grad)`
var1.numpy()
9.9

Ссылки:

  • Kingma et al., 2014
  • Reddi et al., 2018 для amsgrad.

Примечания:

Значение по умолчанию 1e-7 для epsilon может быть не лучшим выбором в общем случае. Например, при обучении сети Inception на ImageNet подходящим значением является 1,0 или 0,1. Обратите внимание, что поскольку Adam использует формулировку, предшествующую разделу 2.1 статьи Kingma и Ba, а не формулировку в алгоритме 1, «epsilon», на которую здесь ссылаются, — это «epsilon hat» в статье.

Реализация алгоритма в разреженном виде (используется, когда градиент является объектом IndexedSlices, обычно из-за tf.gather или поиска вложения в прямом проходе) применяет импульс к срезам переменных, даже если они не использовались в прямом проходе (то есть у них градиент равен нулю). Уменьшение импульса (beta1) также применяется ко всему накопителю импульса. Это означает, что поведение в разреженном случае эквивалентно поведению в плотной форме (в отличие от некоторых реализаций импульса, которые игнорируют импульс, если конкретный срез переменной не использовался).

Исключения
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/Adam

Spec-Zone.ru

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