Spec-Zone.ru › TensorFlow 2.9

tf.keras.optimizers.experimental.AdamW

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

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

tf.keras.optimizers.experimental.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,
    jit_compile=True,
    name='AdamW',
    **kwargs
)

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

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

Аргументы
learning_rate Значение с плавающей точкой типа tf.Tensor, график, который является tf.keras.optimizers.schedules.LearningRateSchedule, или вызываемый объект без аргументов, возвращающий фактическое значение для использования. Скорость обучения. По умолчанию 0.001.
weight_decay Значение с плавающей точкой типа tf.Tensor. Разложение весов. По умолчанию 0.004.
beta_1 Вещественное значение или постоянный тензор с плавающей точкой, или вызываемый объект без аргументов, возвращающий фактическое значение для использования. Скорость экспоненциального затухания для оценок моментов первого порядка. По умолчанию 0.9.
beta_2 Вещественное значение или постоянный тензор с плавающей точкой, или вызываемый объект без аргументов, возвращающий фактическое значение для использования. Скорость экспоненциального затухания для оценок моментов второго порядка. По умолчанию 0.999.
epsilon Маленькая константа для обеспечения числовой устойчивости. Эта ε — «ε шляпа» в статье Kingma и Ba (в формуле перед разделом 2.1), а не ε в Алгоритме 1 статьи. По умолчанию 1e-7.
amsgrad Булево значение. Применять ли вариацию AMSGrad этого алгоритма из статьи «О сходимости Adam и далее». По умолчанию False.
name Строка. Имя для использования в качестве имени весов накопителя импульса, созданных оптимизатором.
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(), это происходит автоматически после последней эпохи, и вам ничего делать не нужно.
jit_compile Булево, по умолчанию True. Если True, оптимизатор будет использовать компиляцию XLA. jit_compile не может быть True при обучении с помощью tf.distribute.experimental.ParameterServerStrategy. Кроме того, если устройство GPU не найдено, этот флаг будет проигнорирован.
**kwargs ключевые аргументы, используемые только для обратной совместимости.

Ссылка:

  • Loshchilov и др., 2019
  • Kingma и др., 2014 для adam
  • Reddi и др., 2018 для amsgrad.

Примечания:

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

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

Атрибуты
iterations Количество шагов обучения, которые выполнил этот optimizer.

По умолчанию, итерации будут увеличиваться на единицу каждый раз, когда вызывается apply_gradients().

learning_rate

Методы

add_variable

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

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

Создать переменную оптимизатора.

Аргументы
shape Список целых чисел, кортеж целых чисел или 1-мерный тензор типа int32. По умолчанию скаляр, если не указано иначе.
dtype Тип данных переменной оптимизатора, который будет создан. По умолчанию tf.keras.backend.floatx, если не указано иначе.
initializer Строка или вызываемый объект. Экземпляр инициализатора.
name Имя создаваемой переменной оптимизатора.
Возвращаемое значение
Переменная оптимизатора в формате tf.Variable.

add_variable_from_reference

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

add_variable_from_reference(
    model_variable, variable_name, shape=None, initial_value=None
)

Создать переменную оптимизатора на основе переменной модели.

Создать переменную оптимизатора на основе информации о переменной модели. Например, в оптимизаторе SGD импульс, для каждой переменной модели, создаётся соответствующая переменная импульса той же формы и типа данных.

Аргументы
model_variable tf.Variable. Соответствующая переменная модели для создаваемой переменной оптимизатора.
variable_name Строка. Префикс имени создаваемой переменной оптимизатора. Имя создаваемых переменных будет следовать шаблону {variable_name}/{model_variable.name}, например, momemtum/dense_1.
shape Список или кортеж, по умолчанию None. Форма создаваемой переменной оптимизатора. Если None, создаваемая переменная будет иметь ту же форму, что и model_variable.
initial_value Тензор или Python-объект, преобразуемый в тензор, по умолчанию None. Начальное значение переменной оптимизатора, если None, начальное значение будет равно 0.
Возвращаемое значение
Переменная оптимизатора.

aggregate_gradients

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

aggregate_gradients(
    grads_and_vars
)

Агрегировать градиенты на всех устройствах.

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

Аргументы
grads_and_vars Список пар (градиент, переменная).
Возвращаемое значение
Список пар (градиент, переменная).

apply_gradients

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

apply_gradients(
    grads_and_vars, skip_gradients_aggregation=False
)

Применить градиенты к переменным.

Аргументы
grads_and_vars Список пар (градиент, переменная).
skip_gradients_aggregation Если True, агрегация градиентов не будет выполнена внутри оптимизатора. Обычно этот аргумент устанавливается в True, когда вы пишете пользовательский код агрегирования градиентов вне оптимизатора.
Возвращаемое значение
None
Исключения
TypeError Если grads_and_vars имеет неправильный формат.
RuntimeError Если вызов происходит в контексте кросс-реплики.

build

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

build(
    var_list
)

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

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

Аргументы
var_list список переменных модели, на которых необходимо построить переменные AdamW.

compute_gradients

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

compute_gradients(
    loss, var_list, tape=None
)

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

Аргументы
loss Tensor или вызываемая функция. Если это вызываемая функция, то loss не должна принимать аргументы и возвращать значение, которое необходимо минимизировать.
var_list список или кортеж объектов Variable, которые необходимо обновить для минимизации loss.
tape (Необязательно) tf.GradientTape. Если loss предоставлен как Tensor, то лента, которая вычислила loss, должна быть предоставлена.
Возвращает
Список пар (градиент, переменная). Переменная всегда присутствует, но градиент может быть None .

finalize_variable_values

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

finalize_variable_values(
    var_list
)

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

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

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

from_config

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

@classmethod
from_config(
    config
)

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

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

Аргументы
config Словарь Python, обычно результат get_config.
Возвращает
Экземпляр оптимизатора.

get_config

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

get_config()

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

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

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

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

minimize

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

minimize(
    loss, var_list, tape=None
)

Минимизирует loss путем обновления var_list.

Этот метод просто вычисляет градиент с помощью tf.GradientTape и вызывает apply_gradients(). Если вы хотите обработать градиент перед применением, то вызовите tf.GradientTape и apply_gradients() явно вместо использования этой функции.

Аргументы
loss Tensor или вызываемая функция. Если это вызываемая функция, то loss не должна принимать аргументы и возвращать значение, которое нужно минимизировать.
var_list список или кортеж объектов Variable, которые необходимо обновить для минимизации loss.
tape (Необязательно) tf.GradientTape.
Возвращает
None

update_step

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

update_step(
    gradient, variable
)

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

© 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/versions/r2.9/api_docs/python/tf/keras/optimizers/experimental/AdamW

Spec-Zone.ru

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