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 et al., 2014, этот метод «вычислительно эффективен, требует мало памяти, инвариантен к диагональному масштабированию градиентов и хорошо подходит для задач, больших по объёму данных/параметров».

Аргументы
learning_rate Вещественное число, экземпляр keras.optimizers.schedules.LearningRateSchedule или вызываемая функция без аргументов, возвращающая фактическое значение. Скорость обучения. По умолчанию 0.001.
beta_1 Вещественное число или константа тензор float, или вызываемая функция без аргументов, возвращающая фактическое значение. Скорость экспоненциального убывания для оценок моментов первого порядка. По умолчанию 0.9.
beta_2 Вещественное число или константа тензор float, или вызываемая функция без аргументов, возвращающая фактическое значение. Скорость экспоненциального убывания для оценок моментов второго порядка. По умолчанию 0.999.
epsilon Небольшая константа для обеспечения числовой устойчивости. Этот параметр epsilon — это «epsilon hat» в работе Kingma и Ba (в формуле перед разделом 2.1), а не epsilon в алгоритме 1 этой статьи. По умолчанию 1e-7.
amsgrad Булево значение. Применять ли вариант AMSGrad этого алгоритма из статьи «О сходимости Adam и далее». По умолчанию 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 должна быть списком тензоров градиентов с соответствием 1:1 к списку переменных, с которыми оптимизатор был построен.

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 типа переменных: моменты, скорости и скорость_hat (устанавливается только при применении amsgrad).

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

exclude_from_weight_decay

Просмотр исходного кода

exclude_from_weight_decay(
    var_list=None, var_names=None
)

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

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

Аргументы
var_list Список переменных, которые нужно исключить из распада весов.
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