Spec-Zone.ru › TensorFlow

tf.keras.optimizers.Nadam

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

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

tf.keras.optimizers.Nadam(
    learning_rate=0.001,
    beta_1=0.9,
    beta_2=0.999,
    epsilon=1e-07,
    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='nadam',
    **kwargs
)

Подобно тому, как Adam по сути представляет собой RMSprop с импульсом, Nadam — это Adam с импульсом Нестерова.

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

Ссылка:

  • Dozat, 2015.
Атрибуты
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
)

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

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

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

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. Это главным образом полезно при обучении со смешанной точностью для предотвращения численного underflow.

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/Nadam

Spec-Zone.ru

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