Spec-Zone.ru › TensorFlow 2.9

tf.keras.optimizers.experimental.Adadelta

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

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

tf.keras.optimizers.experimental.Adadelta(
    learning_rate=0.001,
    rho=0.95,
    epsilon=1e-07,
    clipnorm=None,
    clipvalue=None,
    global_clipnorm=None,
    use_ema=False,
    ema_momentum=0.99,
    ema_overwrite_frequency=None,
    jit_compile=True,
    name='Adadelta',
    **kwargs
)

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

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

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

Аргументы
learning_rate Начальное значение скорости обучения: либо число с плавающей точкой, либо экземпляр tf.keras.optimizers.schedules.LearningRateSchedule. По умолчанию 0.001. Обратите внимание, что Adadelta часто выигрывает от более высоких начальных значений скорости обучения по сравнению с другими оптимизаторами. Для соответствия точной форме в оригинальной статье используйте 1.0.
rho Скорость затухания, значение типа Tensor или число с плавающей точкой. По умолчанию 0.95.
epsilon Малое значение с плавающей точкой, используемое для поддержания числовой устойчивости. По умолчанию 1e-7.
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 Ключевые слова, используемые только для обратной совместимости.

Ссылка:

  • Zeiler, 2012
Атрибуты
iterations Количество шагов обучения, пройденных этим optimizer.

По умолчанию итерации будут увеличиваться на единицу каждый раз, когда вызывается apply_gradients().

learning_rate

Методы

add_variable

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

add_variable(
    shape, dtype=None, initializer='zeros', name=None
)

Создать переменную оптимизатора.

Аргументы
shape Список целых чисел, кортеж целых чисел или тензор 1-D типа int32. По умолчанию скаляр, если не указано.
dtype Тип DType переменной оптимизатора, который нужно создать. По умолчанию tf.keras.backend.floatx, если не указано.
initializer Строка или вызываемый объект. Экземпляр инициализатора.
name Имя создаваемой переменной оптимизатора.
Возвращает
Переменная оптимизатора в формате tf.Variable.

add_variable_from_reference

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

add_variable_from_reference(
    model_variable, variable_name, shape=None, initial_value=None
)

Создать переменную оптимизатора на основе переменной модели.

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

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

aggregate_gradients

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

aggregate_gradients(
    grads_and_vars
)

Объединение градиентов на всех устройствах.

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

Аргументы
grads_and_vars Список пар (градиент, переменная).
Возвращает
Список пар (градиент, переменная).

apply_gradients

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

apply_gradients(
    grads_and_vars, skip_gradients_aggregation=False
)

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

Аргументы
grads_and_vars Список пар (градиент, переменная).
skip_gradients_aggregation Если True, агрегация градиентов не будет выполняться внутри оптимизатора. Обычно этот аргумент устанавливается в True, когда вы пишете собственный код, агрегирующий градиенты вне оптимизатора.
Возвращает
None
Исключения
TypeError Если grads_and_vars имеет неправильный формат.
RuntimeError Если вызов произошёл в контексте кросс-репликации.

build

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

build(
    var_list
)

Инициализация переменных оптимизатора, таких как переменные импульса.

Этот метод должен быть реализован подклассами оптимизаторов, и подклассы оптимизаторов должны вызывать super().build(var_list).

Аргументы
var_list Список переменных модели, на которых нужно построить оптимизаторы. Например, оптимизатор SGD с импульсом будет хранить одну переменную импульса, соответствующую каждой переменной модели.

compute_gradients

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

compute_gradients(
    loss, var_list, tape=None
)

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

Аргументы
loss Tensor или вызываемый объект. Если вызываемый объект, то loss не должен принимать аргументы и возвращать значение для минимизации.
var_list список или кортеж объектов Variable для обновления, чтобы минимизировать loss.
tape (Необязательно) tf.GradientTape. Если loss предоставлен как вызываемый объект, то должна быть предоставлена лента, вычислившая loss .
Возвращаемое значение
Список пар (градиент, переменная). Переменная всегда присутствует, но градиент может быть None .

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

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

finalize_variable_values(
    var_list
)

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

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

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

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

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

@classmethod
from_config(
    config
)

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

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

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

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

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

get_config()

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

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

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

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

data-text="minimize" id="minimize">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

data-text="update_step" id="update_step">update_step

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

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

Spec-Zone.ru

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