Spec-Zone.ru › TensorFlow 2.9

tf.keras.dtensor.experimental.optimizers.Adam

Оптимизаторы, специфичные для DTensor.

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

tf.keras.dtensor.experimental.optimizers.Adam(
    learning_rate=0.001,
    beta_1=0.9,
    beta_2=0.999,
    epsilon=1e-07,
    amsgrad=False,
    gradients_clip_option=None,
    ema_option=None,
    name='Adam',
    mesh=None
)

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

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

Оптимизация Adam — это метод стохастического градиентного спуска, основанный на адаптивном оценивании моментов первого и второго порядка.

Согласно Kingma et al., 2014, этот метод «вычислительно эффективен, имеет небольшие требования к памяти, инвариантен к диагональному масштабированию градиентов и хорошо подходит для задач, больших по размеру данных/параметров».

Аргументы
learning_rate Значение типа tf.Tensor, с плавающей точкой, расписание, являющееся tf.keras.optimizers.schedules.LearningRateSchedule, или вызываемая функция без аргументов, возвращающая фактическое используемое значение. Скорость обучения. По умолчанию 0,001.
beta_1 Числовое значение с плавающей точкой или постоянный тензор с плавающей точкой, или вызываемая функция без аргументов, возвращающая фактическое используемое значение. Скорость экспоненциального затухания для оценок моментов первого порядка. По умолчанию 0,9.
beta_2 Числовое значение с плавающей точкой или постоянный тензор с плавающей точкой, или вызываемая функция без аргументов, возвращающая фактическое используемое значение. Скорость экспоненциального затухания для оценок моментов второго порядка. По умолчанию 0,999.
epsilon Маленькая константа для обеспечения числовой устойчивости. Эта величина «epsilon hat» в статье Kingma и Ba (в формуле перед разделом 2.1), а не epsilon в алгоритме 1 статьи. По умолчанию 1e-7.
amsgrad Булево значение. Применять ли вариант AMSGrad этого алгоритма из статьи "On the Convergence of Adam and beyond". По умолчанию False.
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
  • Reddi et al., 2018 для amsgrad.

Примечания:

Значение 1e-7 по умолчанию для epsilon может быть не лучшим выбором в целом. Например, при обучении сети Inception на ImageNet текущим хорошим выбором является 1,0 или 0,1. Обратите внимание, что поскольку Adam использует формулу перед разделом 2.1 статьи Kingma и Ba, а не формулу в алгоритме 1, «epsilon», на которую здесь ссылаются, — это «epsilon hat» в статье.

Реализация этого алгоритма для разреженных данных (используется, когда градиент является объектом IndexedSlices, обычно из-за tf.gather или поиска встраивания в прямом проходе) применяет импульс к частям переменных, даже если они не использовались в прямом проходе (т. е. их градиент равен нулю). Затухание импульса (beta1) также применяется ко всему накопителю импульса. Это означает, что поведение в разреженных данных эквивалентно поведению в плотных данных (в отличие от некоторых реализаций импульса, которые игнорируют импульс, если часть переменной фактически не использовалась).

Атрибуты
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, initial_value=None
)

Создание переменной оптимизатора из переменной модели.

Создание переменной оптимизатора на основе информации о переменной модели. Например, в оптимизаторе SGD momentum для каждой переменной модели создается соответствующая переменная momentum той же формы и типа данных.

Аргументы
model_variable Соответствующая переменная модели для создаваемой переменной оптимизатора.
variable_name Префикс имени создаваемой переменной оптимизатора. Имя создаваемой переменной будет соответствовать шаблону {variable_name}/{model_variable.name}, например, momemtum/dense_1.
initial_value Начальное значение переменной оптимизатора. Если None, значение будет по умолчанию 0.
Возвращает
Переменная оптимизатора.

apply_gradients

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

apply_gradients(
    grads_and_vars
)

Применение градиентов к переменным.

Аргументы
grads_and_vars Список пар (градиент, переменная).
Возвращает
None
Исключения
TypeError Если grads_and_vars имеет неправильный формат.

build

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

build(
    var_list
)

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

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

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

compute_gradients

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

compute_gradients(
    loss, var_list, tape=None
)

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

Аргументы
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/dtensor/experimental/optimizers/Adam

Spec-Zone.ru

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