Spec-Zone.ru › TensorFlow

tf.keras.optimizers.AdamW

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

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

tf.keras.optimizers.AdamW(
    learning_rate=0.001,
    weight_decay=0.004,
    beta_1=0.9,
    beta_2=0.999,
    epsilon=1e-07,
    amsgrad=False,
    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='adamw',
    **kwargs
)

Оптимизация AdamW — это метод стохастического градиентного спуска, основанный на адаптивном оценивании моментов первого и второго порядка с добавлением метода для распада весов, как описано в статье «Регуляризация распада весов с развязкой» авторами Loshchilov, Hutter et al., 2019.

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

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

Ссылки:

  • Loshchilov et al., 2019
  • Kingma et al., 2014 для adam
  • Reddi et al., 2018 для amsgrad.
Атрибуты
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.

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

build

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

build(
    var_list
)

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

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

Args
var_list список переменных модели для построения переменных Adam.

exclude_from_weight_decay

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

exclude_from_weight_decay(
    var_list=None, var_names=None
)

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

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

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

finalize_variable_values

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

finalize_variable_values(
    var_list
)

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

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

Args
var_list список переменных модели.

from_config

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

@classmethod
from_config(
    config, custom_objects=None
)

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

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

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

get_config

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

get_config()

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

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

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

Returns
Словарь 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/AdamW

Spec-Zone.ru

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