tf.keras.optimizers.experimental.Nadam
Оптимизатор, реализующий алгоритм Nadam.
Наследуется от: Optimizer, Module
tf.keras.optimizers.experimental.Nadam(
learning_rate=0.001,
beta_1=0.9,
beta_2=0.999,
epsilon=1e-07,
clipnorm=None,
clipvalue=None,
global_clipnorm=None,
use_ema=False,
ema_momentum=0.99,
ema_overwrite_frequency=None,
jit_compile=True,
name='Nadam',
**kwargs
)
Подобно тому, как Adam представляет собой RMSprop с моментом, Nadam — это Adam с моментом Нестерова.
| Аргументы | |
|---|---|
learning_rate | Значение с плавающей точкой, расписание (объект tf.keras.optimizers.schedules.LearningRateSchedule), или вызываемая функция без аргументов, возвращающая фактическое значение. Скорость обучения. По умолчанию 0,001. |
beta_1 | Вещественное число или постоянный тензор с плавающей точкой, или вызываемая функция без аргументов, возвращающая фактическое значение. Экспоненциальная скорость затухания для оценок первого момента. По умолчанию 0,9. |
beta_2 | Вещественное число или постоянный тензор с плавающей точкой, или вызываемая функция без аргументов, возвращающая фактическое значение. Экспоненциальная скорость затухания для оценок второго момента. По умолчанию 0,999. |
epsilon | Малое постоянное значение для обеспечения числовой устойчивости. Эта величина ε — это «ε-шляпа» в статье Кингмы и Ба (в формуле перед разделом 2.1), а не ε в алгоритме 1 статьи. По умолчанию 1e-7. |
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 | Ключевые аргументы, используемые только для обеспечения обратной совместимости. |
Ссылка:
| Атрибуты | |
|---|---|
iterations | Количество шагов обучения, выполненных этим optimizer. По умолчанию итерации увеличиваются на единицу каждый раз, когда вызывается |
learning_rate | |
Методы
add_variable
add_variable(
shape, dtype=None, initializer='zeros', name=None
)
Создание переменной оптимизатора.
| Аргументы | |
|---|---|
shape | Список целых чисел, кортеж целых чисел или одномерный тензор типа 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 momentum для каждой переменной модели создается соответствующая переменная momentum той же формы и типа данных.
| Аргументы | |
|---|---|
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
)
Инициализация переменных оптимизатора.
Оптимизатор Nadam имеет 2 типа переменных: моменты и скорости.
| Аргументы | |
|---|---|
var_list | Список переменных модели, на которых будут созданы переменные Nadam. |
compute_gradients
compute_gradients(
loss, var_list, tape=None
)
Вычисление градиентов потери по обучаемым переменным.
| Аргументы | |
|---|---|
loss | Функция потерь или вызываемая функция. Если вызываемая функция, 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/Nadam