Spec-Zone.ru › TensorFlow

tf.keras.optimizers.Adafactor

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

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

tf.keras.optimizers.Adafactor(
    learning_rate=0.001,
    beta_2_decay=-0.8,
    epsilon_1=1e-30,
    epsilon_2=0.001,
    clip_threshold=1.0,
    relative_step=True,
    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='adafactor',
    **kwargs
)

Adafactor обычно используется в задачах NLP и имеет преимущество в экономии памяти, так как сохраняет только частичную информацию о предыдущих градиентах.

Настройка по умолчанию основана на оригинальной статье (см. ссылку). Когда градиенты имеют размерность > 2, оптимизатор Adafactor удаляет последние 2 измерения в своих переменных-аккумуляторах отдельно.

Аргументы
learning_rate Число с плавающей точкой, экземпляр keras.optimizers.schedules.LearningRateSchedule или вызываемая функция без аргументов, возвращающая фактическое значение для использования. Скорость обучения. По умолчанию 0.001.
beta_2_decay Число с плавающей точкой, по умолчанию -0.8. Скорость затухания beta_2.
epsilon_1 Число с плавающей точкой, по умолчанию 1e-30. Небольшое смещение, чтобы уберечь знаменатель от 0.
epsilon_2 Число с плавающей точкой, по умолчанию 1e-3. Небольшое смещение, чтобы избежать слишком малой скорости обучения со временем.
clip_threshold Число с плавающей точкой, по умолчанию 1.0. Порог ограничения. Это часть алгоритма Adafactor, независимо от clipnorm, clipvalue и global_clipnorm.
relative_step Логическое значение, по умолчанию True. Если learning_rate является константой и relative_step=True, скорость обучения будет корректироваться на основе текущих итераций. Это - стандартное затухание скорости обучения в Adafactor.
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 шаги, используя среднее значение градиентов с момента последнего обновления. Это известно как "накопление градиентов". Это может быть полезно, когда размер вашей партии очень мал, чтобы уменьшить шум градиента на каждом шаге обновления.

Ссылка:

  • Shazeer, Noam et al., 2018.
Атрибуты
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 должна быть списком тензоров градиента с 1:1 соответствием списку переменных, с которыми был построен оптимизатор.

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
)

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

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

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

data-text="exclude_from_weight_decay" id="exclude_from_weight_decay" tabindex="-1">exclude_from_weight_decay

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

exclude_from_weight_decay(
    var_list=None, var_names=None
)

Исключить переменные из расчёта weight decay.

Этот метод необходимо вызвать перед вызовом метода build оптимизатора. Вы можете указать конкретные переменные для исключения или список строк-ключевых слов. Если какое-либо из этих слов присутствует в имени переменной, то переменная исключается.

Аргументы
var_list Список Variable, которые исключить из расчёта weight decay.
var_names Список строк. Если любая строка из var_names встречается в имени переменной модели, то эта переменная исключается из расчёта weight decay. Например, var_names=['bias'] исключает все переменные смещения (bias) из расчёта weight decay.

data-text="finalize_variable_values" id="finalize_variable_values" tabindex="-1">finalize_variable_values

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

finalize_variable_values(
    var_list
)

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

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

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

data-text="from_config" id="from_config" tabindex="-1">from_config

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

@classmethod
from_config(
    config, custom_objects=None
)

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

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

Аргументы
config Словарь Python, обычно результат вызова метода get_config.
custom_objects Словарь Python, сопоставляющий имена дополнительным пользовательским объектам Python, необходимым для повторного создания этого оптимизатора.
Возвращаемое значение
Экземпляр оптимизатора.

data-text="get_config" id="get_config" tabindex="-1">get_config

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

get_config()

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

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

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

Возвращаемое значение
Словарь Python.

data-text="load_own_variables" id="load_own_variables" tabindex="-1">load_own_variables

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

load_own_variables(
    store
)

Устанавливает состояние этого объекта оптимизатора.

data-text="save_own_variables" id="save_own_variables" tabindex="-1">save_own_variables

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

save_own_variables(
    store
)

Получает состояние этого объекта оптимизатора.

data-text="scale_loss" id="scale_loss" tabindex="-1">scale_loss

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

scale_loss(
    loss
)

Масштабирует функцию потерь перед вычислением градиентов.

Масштабирует функцию потерь перед вычислением градиентов в train_step. Это в первую очередь полезно при обучении с использованием смешанной точности, чтобы предотвратить численный подтек.

data-text="set_weights" id="set_weights" tabindex="-1">set_weights

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

set_weights(
    weights
)

Устанавливает веса оптимизатора.

data-text="stateless_apply" id="stateless_apply" tabindex="-1">stateless_apply

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

stateless_apply(
    optimizer_variables, grads, trainable_variables
)

data-text="update_step" id="update_step" tabindex="-1">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/Adafactor

Spec-Zone.ru

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