Spec-Zone.ru › TensorFlow

tf.keras.optimizers.Adadelta

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

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

tf.keras.optimizers.Adadelta(
    learning_rate=0.001,
    rho=0.95,
    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='adadelta',
    **kwargs
)

Оптимизация Adadelta — это метод стохастического градиентного спуска, основанный на адаптивной скорости обучения для каждого измерения и предназначенный для устранения двух недостатков:

  • Постоянное снижение скорости обучения в процессе обучения.
  • Необходимость вручную выбирать глобальную скорость обучения.

Adadelta — это более устойчивая модификация Adagrad, которая адаптирует скорость обучения на основе скользящего окна обновлений градиента, а не накапливает все предыдущие градиенты. Благодаря этому Adadelta продолжает обучаться даже после большого количества обновлений. В отличие от Adagrad, в исходной версии Adadelta не требуется задавать начальную скорость обучения. В этой версии начальную скорость обучения можно задать, как и в большинстве других оптимизаторов Keras.

Аргументы
learning_rate Число с плавающей запятой, экземпляр keras.optimizers.schedules.LearningRateSchedule или вызываемый объект без аргументов, возвращающий используемое фактическое значение. Скорость обучения. По умолчанию — 0.001. Обратите внимание, что для Adadelta обычно полезны более высокие начальные значения скорости обучения по сравнению с другими оптимизаторами. Чтобы точно соответствовать исходной статье, используйте 1.0.
rho Значение с плавающей запятой. Скорость затухания. По умолчанию — 0.95.
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 шагов с использованием среднего значения градиентов, вычисленных с момента последнего обновления. Это называется «накоплением градиентов». Такой подход может быть полезен при очень маленьком размере пакета, поскольку позволяет уменьшить шум градиента на каждом шаге обновления.

Ссылка:

  • Zeiler, 2012
Атрибуты
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
)

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(
    grad, 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/Adadelta

Spec-Zone.ru

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