tf.keras.optimizers.Adamax
Оптимизатор, реализующий алгоритм Adamax.
Наследует: Optimizer
tf.keras.optimizers.Adamax(
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='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 | Число с плавающей точкой, экземпляр keras.optimizers.schedules.LearningRateSchedule или вызываемый объект без аргументов, возвращающий фактическое используемое значение. Скорость обучения. Значение по умолчанию — 0.001. |
beta_1 | Значение с плавающей точкой или константный тензор с плавающей точкой. Коэффициент экспоненциального затухания для оценок первого момента. |
beta_2 | Значение с плавающей точкой или константный тензор с плавающей точкой. Коэффициент экспоненциального затухания для экспоненциально взвешенной бесконечной нормы. |
epsilon | Небольшая константа для численной устойчивости. 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 шагов с использованием среднего значения градиентов, накопленных с момента последнего обновления. Это называется «накоплением градиентов». Такой подход может быть полезен при очень малом размере пакета, поскольку он снижает шум градиента на каждом шаге обновления. |
Ссылка:
| Атрибуты | |
|---|---|
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
)
Инициализирует переменные оптимизатора.
Оптимизатор Adamax использует два типа переменных: импульсы (обозначаются как m) и экспоненциально взвешенную бесконечную норму (обозначается как u).
| Аргументы | |
|---|---|
var_list | Список переменных модели, на основе которых создаются переменные Adamax. |
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. Это особенно полезно при обучении со смешанной точностью для предотвращения численного антипереполнения.
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/Adamax