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 | Ключевые слова, используемые только для обратной совместимости. |
Ссылка:
| Атрибуты | |
|---|---|
iterations | Количество шагов обучения, пройденных этим optimizer. По умолчанию итерации будут увеличиваться на единицу каждый раз, когда вызывается |
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