Spec-Zone.ru › TensorFlow

tf.keras.optimizers.Adam

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

Наследует: Optimizer

tf.keras.optimizers.Adam(
    learning_rate=0.001,
    beta_1=0.9,
    beta_2=0.999,
    epsilon=1e-07,
    amsgrad=False,
    weight_decay=None,
    clipnorm=None,
    clipvalue=None,
    global_clipnorm=None,
    use_ema=False,
    ema_momentum=0.99,
    ema_overwrite_frequency=None,
    loss_scale_factor=None,
    gradient_accumulation_steps=None,
    name='adam',
    **kwargs
)

Используется в блокнотах

Используется в руководствах Используется в учебных материалах
  • Повышение производительности с помощью tf.function
  • Контрольные точки обучения
  • Эффективное использование TensorFlow 2
  • Оценщики
  • Переход на раннюю остановку обучения
  • CycleGAN
  • Распределенное обучение с Keras
  • Основы регрессии: прогнозирование расхода топлива
  • Загрузка данных CSV
  • Пользовательское обучение с tf.distribute.Strategy

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

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

Аргументы
learning_rate Число с плавающей запятой, экземпляр keras.optimizers.schedules.LearningRateSchedule или вызываемый объект без аргументов, возвращающий фактическое используемое значение. Скорость обучения. По умолчанию — 0.001.
beta_1 Значение с плавающей запятой, константный тензор с плавающей запятой или вызываемый объект без аргументов, возвращающий фактическое используемое значение. Коэффициент экспоненциального затухания для оценок первого момента. По умолчанию — 0.9.
beta_2 Значение с плавающей запятой, константный тензор с плавающей запятой или вызываемый объект без аргументов, возвращающий фактическое используемое значение. Коэффициент экспоненциального затухания для оценок второго момента. По умолчанию — 0.999.
epsilon Небольшая константа для численной устойчивости. Это эпсилон «epsilon hat» из статьи Kingma и Ba (в формуле непосредственно перед разделом 2.1), а не эпсилон из алгоритма 1 этой статьи. По умолчанию — 1e-7.
amsgrad Логическое значение. Следует ли применять вариант алгоритма AMSGrad из статьи «On the Convergence of Adam and beyond». По умолчанию — False.
name Строка. Имя для весов аккумулятора момента, создаваемых оптимизатором.
weight_decay Число с плавающей запятой. Если задано, применяется затухание весов.
clipnorm Число с плавающей запятой. Если задано, градиент каждого веса обрезается отдельно так, чтобы его норма не превышала это значение.
clipvalue Число с плавающей запятой. Если задано, градиент каждого веса обрезается так, чтобы не превышать это значение.
global_clipnorm Число с плавающей запятой. Если задано, градиенты всех весов обрезаются так, чтобы их глобальная норма не превышала это значение.
use_ema Логическое значение; по умолчанию — False. Если задано True, применяется экспоненциальное скользящее среднее (EMA). При EMA вычисляется экспоненциальное скользящее среднее весов модели (значения весов меняются после каждого пакета обучения), а затем веса периодически заменяются их скользящим средним.
ema_momentum Число с плавающей запятой; по умолчанию — 0.99. Используется только при use_ema=True. Это коэффициент момента, применяемый при вычислении EMA весов модели: new_average = ema_momentum * old_average + (1 - ema_momentum) * current_variable_value.
ema_overwrite_frequency Целое число или None; по умолчанию — None. Используется только при use_ema=True. Через каждые ema_overwrite_frequency шагов итерации переменная модели заменяется ее скользящим средним. Если задано None, оптимизатор не заменяет переменные модели в ходе обучения, и в конце обучения необходимо явно заменить переменные, вызвав optimizer.finalize_variable_values() (обновляет переменные модели на месте). При использовании встроенного цикла обучения fit() это происходит автоматически после последней эпохи, поэтому ничего делать не нужно.
loss_scale_factor Число с плавающей запятой или None. Если задано число с плавающей запятой, коэффициент масштабирования умножается на функцию потерь перед вычислением градиентов, а градиенты перед обновлением переменных умножаются на обратное значение коэффициента. Полезно для предотвращения потери точности при вычислениях с пониженной точностью. В качестве альтернативы keras.optimizers.LossScaleOptimizer автоматически задаст коэффициент масштабирования функции потерь.
gradient_accumulation_steps Целое число или None. Если задано целое число, переменные модели и оптимизатора обновляются не на каждом шаге, а через каждые gradient_accumulation_steps шагов с использованием среднего значения градиентов, вычисленных с момента последнего обновления. Это называется «накоплением градиентов». Такой подход может быть полезен при очень малом размере пакета, поскольку позволяет уменьшить шум градиентов на каждом шаге обновления.
Атрибуты
learning_rate
variables

Методы

add_variable

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

add_variable(
    shape,
    initializer='zeros',
    dtype=None,
    aggregation='mean',
    name=None
)

add_variable_from_reference

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

add_variable_from_reference(
    reference_variable, name=None, initializer='zeros'
)

Добавляет переменную, заполненную нулями, с формой и типом данных эталонной переменной.

apply

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

apply(
    grads, trainable_variables=None
)

Обновляет обучаемые переменные в соответствии с заданными значениями градиентов.

grads должен быть списком тензоров градиентов, соответствующих один к одному списку переменных, с которыми был создан оптимизатор.

trainable_variables можно передать при первом вызове для создания оптимизатора.

apply_gradients

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

apply_gradients(
    grads_and_vars
)

assign

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

assign(
    variable, value
)

Присваивает переменной значение.

В оптимизаторах этот метод следует использовать вместо variable.assign(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или оптимизатора; она может быть собственной переменной бэкенда или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, добавляемое к переменной.

assign_add

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

assign_add(
    variable, value
)

Добавляет значение к переменной.

В оптимизаторах этот метод следует использовать вместо variable.assign_add(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или оптимизатора; она может быть собственной переменной бэкенда или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, добавляемое к переменной.

assign_sub

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

assign_sub(
    variable, value
)

Вычитает значение из переменной.

В оптимизаторах этот метод следует использовать вместо variable.assign_sub(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или оптимизатора; она может быть собственной переменной бэкенда или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, добавляемое к переменной.

build

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

build(
    var_list
)

Инициализирует переменные оптимизатора.

У оптимизатора Adam есть 3 типа переменных: моменты, скорости и velocity_hat (задается только при применении amsgrad).

Аргументы
var_list Список переменных модели, на основе которых создаются переменные Adam.

exclude_from_weight_decay

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

exclude_from_weight_decay(
    var_list=None, var_names=None
)

Исключает переменные из затухания весов.

Этот метод необходимо вызвать до вызова метода оптимизатора build. Можно указать переменные для исключения либо задать список строк в качестве ключевых слов: если любое из них встречается в имени переменной, она исключается.

Аргументы
var_list Список Variable для исключения из затухания весов.
var_names Список строк. Если любая строка из var_names встречается в имени переменной модели, эта переменная модели исключается из затухания весов. Например, var_names=['bias'] исключает из затухания весов все переменные смещения.

finalize_variable_values

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

finalize_variable_values(
    var_list
)

Задает окончательные значения обучаемых переменных модели.

Иногда перед завершением обновления переменных требуется выполнить дополнительные действия, например заменить переменные модели их средними значениями.

Аргументы
var_list Список переменных модели.

from_config

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

@classmethod
from_config(
    config, custom_objects=None
)

Создает оптимизатор на основе его конфигурации.

Этот метод является обратным по отношению к get_config и позволяет создать такой же оптимизатор из словаря конфигурации.

Аргументы
config Словарь Python, обычно являющийся результатом вызова get_config.
custom_objects Словарь Python, сопоставляющий имена с дополнительными объектами Python, определенными пользователем и необходимыми для повторного создания этого оптимизатора.
Возвращает
Экземпляр оптимизатора.

get_config

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

get_config()

Возвращает конфигурацию оптимизатора.

Конфигурация оптимизатора — это сериализуемый словарь Python, содержащий настройки оптимизатора. Позднее по этой конфигурации можно повторно создать тот же оптимизатор (без сохраненного состояния).

Подкласс оптимизатора должен переопределить этот метод, чтобы включить другие гиперпараметры.

Возвращает
Словарь Python.

load_own_variables

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

load_own_variables(
    store
)

Задает состояние этого объекта оптимизатора.

save_own_variables

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

save_own_variables(
    store
)

Получает состояние этого объекта оптимизатора.

scale_loss

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

scale_loss(
    loss
)

Масштабирует функцию потерь перед вычислением градиентов.

Масштабирует функцию потерь перед вычислением градиентов в train_step. Это особенно полезно при обучении со смешанной точностью для предотвращения численного переполнения вниз.

set_weights

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

set_weights(
    weights
)

Задает веса оптимизатора.

stateless_apply

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

stateless_apply(
    optimizer_variables, grads, trainable_variables
)

update_step

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

update_step(
    gradient, variable, learning_rate
)

Обновляет шаг с учетом градиента и соответствующей переменной модели.

© 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/api_docs/python/tf/keras/optimizers/Adam

Spec-Zone.ru

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