Spec-Zone.ru › TensorFlow 2.9

tf.keras.optimizers.experimental.Adamax

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

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

tf.keras.optimizers.experimental.Adamax(
    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='Adamax',
    **kwargs
)

Adamax, являющийся вариантом Adam, основанный на бесконечной норме, представляет собой метод оптимизации первого порядка, основанный на градиентах. Благодаря способности изменять скорость обучения в зависимости от характеристик данных, он подходит для обучения временных процессов, например, речевых данных с динамически изменяющимися условиями шума. Значения по умолчанию соответствуют значениям, представленным в статье (см. ссылки ниже).

Инициализация:

m = 0  # Initialize initial 1st moment vector
u = 0  # Initialize the exponentially weighted infinity norm
t = 0  # Initialize timestep

Правило обновления параметра w с градиентом g описано в конце раздела 7.1 статьи (см. раздел с ссылками):

t += 1
m = beta1 * m + (1 - beta) * g
u = max(beta2 * u, abs(g))
current_lr = learning_rate / (1 - beta1 ** t)
w = w - current_lr * m / (u + epsilon)
Аргументы
learning_rate A tf.Tensor, значение с плавающей точкой, расписание, являющееся tf.keras.optimizers.schedules.LearningRateSchedule, или вызываемый объект, который не принимает аргументы и возвращает фактическое используемое значение. Скорость обучения. По умолчанию 0,001.
beta_1 Вещественное значение или постоянный тензор с плавающей точкой. Экспоненциальная скорость затухания для оценок первого момента.
beta_2 Вещественное значение или постоянный тензор с плавающей точкой. Экспоненциальная скорость затухания для экспоненциально взвешенной бесконечной нормы.
epsilon Малая константа для обеспечения числовой устойчивости.
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 только ключевые аргументы, используемые только для обеспечения обратной совместимости.

Ссылка:

  • Kingma et al., 2014
Атрибуты
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
)

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

Оптимизатор Adamax имеет 2 типа переменных: моменты (обозначены как m), экспоненциально взвешенная бесконечная норма (обозначены как u).

Аргументы
var_list список переменных модели, для которых нужно построить переменные Adamax.

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 или вызываемый объект. Если вызываемый объект, то он не должен принимать аргументы и возвращать значение для минимизации.
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/Adamax

Spec-Zone.ru

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