Spec-Zone.ru › TensorFlow

tf.keras.optimizers.Lion

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

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

tf.keras.optimizers.Lion(
    learning_rate=0.001,
    beta_1=0.9,
    beta_2=0.99,
    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='lion',
    **kwargs
)

Оптимизатор Lion — это метод стохастического градиентного спуска, который использует оператор sign для контроля величины обновления, в отличие от других адаптивных оптимизаторов, таких как Adam, которые полагаются на моменты второго порядка. Это делает Lion более экономичным по памяти, поскольку он отслеживает только импульс. Согласно авторам (см. ссылку), его преимущество перед Adam растёт с размером пакета. Поскольку обновление Lion производится с помощью операции sign, что приводит к большей норме, подходящая скорость обучения для Lion обычно в 3-10 раз меньше, чем для AdamW. В свою очередь, распад весов для Lion должен быть в 3-10 раз больше, чем для AdamW, чтобы сохранить аналогичную силу (lr * wd).

Аргументы
learning_rate Вещественное число, экземпляр keras.optimizers.schedules.LearningRateSchedule или вызываемый объект, не принимающий аргументов и возвращающий фактическое значение для использования. Скорость обучения. По умолчанию 0.001.
beta_1 Вещественное значение или константный тензор с плавающей точкой, или вызываемый объект, не принимающий аргументов и возвращающий фактическое значение для использования. Скорость комбинирования текущего градиента и оценки первого момента. По умолчанию 0.9.
beta_2 Вещественное значение или константный тензор с плавающей точкой, или вызываемый объект, не принимающий аргументов и возвращающий фактическое значение для использования. Экспоненциальная скорость затухания для оценки первого момента. По умолчанию 0.99.
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 шаги, используя среднее значение градиентов с момента последнего обновления. Это известно как «накопление градиента». Это может быть полезно, когда размер пакета очень мал, для уменьшения шума градиента на каждом шаге обновления.

Ссылки:

  • Chen et al., 2023
  • Реализация авторов
Атрибуты
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
)

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

Оптимизатор Lion имеет одну переменную momentums.

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

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

Spec-Zone.ru

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