Spec-Zone.ru › TensorFlow 2.3

tf.keras.optimizers.Adadelta

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

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

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

Просмотр псевдонимов

Основные псевдонимы

tf.optimizers.Adadelta

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.keras.optimizers.Adadelta

tf.keras.optimizers.Adadelta(
    learning_rate=0.001, rho=0.95, epsilon=1e-07, name='Adadelta', **kwargs
)

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

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

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

Согласно разделу 4.3 («Эффективные скорости обучения»), вблизи завершения этапов обучения размеры шагов стремятся к 1, что фактически является высокой скоростью обучения, которая приведет к расхождению. Это происходит только вблизи конца обучения, так как градиенты и размеры шагов невелики, а постоянная epsilon в числителе и знаменателе доминирует над прошлыми градиентами и обновлениями параметров, которые сходятся к скорости обучения 1.

Согласно разделу 4.4 («Данные речи»), где большая нейронная сеть с 4 скрытыми слоями была обучена на корпусе данных на английском языке США, ADADELTA использовалась с 100 репликами сети. Использованная epsilon равна 1e-6 с rho=0.95, что сходилось быстрее, чем ADAGRAD, по следующей конструкции: def init(self, lr=1.0, rho=0.95, epsilon=1e-6, decay=., **kwargs):

Аргументы
learning_rate Значение скорости обучения, число с плавающей точкой или расписание, являющееся tf.keras.optimizers.schedules.LearningRateSchedule. Скорость обучения. Для соответствия точной форме в оригинальной статье используйте 1.0.
rho Скорость затухания или число с плавающей точкой.
epsilon Постоянная epsilon, используемая для лучшего обуславливания обновления градиента.
name Необязательное префиксное имя для операций, создаваемых при применении градиентов. По умолчанию "Adadelta".
**kwargs Именованные аргументы. Разрешено быть одним из "clipnorm" или "clipvalue". "clipnorm" (число с плавающей точкой) ограничивает градиенты по норме; "clipvalue" (число с плавающей точкой) ограничивает градиенты по значению.

Ссылка:

  • Zeiler, 2012
Args
name Непустая строка. Имя для аккумуляторов, созданных для оптимизатора.
**kwargs Именованные аргументы. Разрешено быть {clipnorm, clipvalue, lr, decay}. clipnorm — ограничение градиентов по норме; clipvalue — ограничение градиентов по значению, decay включено для обратной совместимости, чтобы разрешить обратное затухание скорости обучения. lr включено для обратной совместимости, рекомендуется использовать learning_rate вместо него.
Возможные ошибки
ValueError Если имя имеет неправильный формат.
Атрибуты
iterations Переменная. Количество шагов обучения, пройденных этим оптимизатором.
weights Возвращает переменные этого оптимизатора в порядке создания.

Методы

add_slot

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

add_slot(
    var, slot_name, initializer='zeros'
)

Добавить новую переменную хранилища для var.

add_weight

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

add_weight(
    name, shape, dtype=None, initializer='zeros', trainable=None,
    synchronization=tf.VariableSynchronization.AUTO,
    aggregation=tf.compat.v1.VariableAggregation.NONE
)

apply_gradients

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

apply_gradients(
    grads_and_vars, name=None, experimental_aggregate_gradients=True
)

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

Это вторая часть minimize(). Она возвращает Operation, который применяет градиенты.

Метод суммирует градиенты от всех реплик в случае наличия tf.distribute.Strategy по умолчанию. Вы можете сами агрегировать градиенты, передав experimental_aggregate_gradients=False.

Пример:

grads = tape.gradient(loss, vars)
grads = tf.distribute.get_replica_context().all_reduce('sum', grads)
# Processing aggregated gradients.
optimizer.apply_gradients(zip(grads, vars),
    experimental_aggregate_gradients=False)

Аргументы
grads_and_vars Список пар (градиент, переменная).
name Необязательное имя возвращаемой операции. По умолчанию, имя, переданное конструктору Optimizer.
experimental_aggregate_gradients Необходимо ли суммировать градиенты из разных реплик в случае наличия tf.distribute.Strategy. Если False, ответственность за агрегацию градиентов лежит на пользователе. По умолчанию True.
Возвращаемое значение
Operation для применения указанных градиентов. iterations будет автоматически увеличен на 1.
Возможные ошибки
TypeError Если grads_and_vars имеет неправильный формат.
ValueError Если ни одна из переменных не имеет градиентов.

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.

get_gradients

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

get_gradients(
    loss, params
)

Возвращает градиенты loss относительно params.

Аргументы
loss Тензор потерь.
params Список переменных.
Возвращаемое значение
Список тензоров градиентов.
Возможные ошибки
ValueError В случае, если какой-либо градиент не может быть вычислен (например, если функция градиента не реализована).

get_slot

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

get_slot(
    var, slot_name
)

get_slot_names

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

get_slot_names()

Список имён хранилищ этого оптимизатора.

get_updates

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

get_updates(
    loss, params
)

get_weights

Просмотр исходного кода

get_weights()

Возвращает текущие веса оптимизатора.

Веса оптимизатора — это его состояние (т. е. переменные). Эта функция возвращает значения весов, связанные с этим оптимизатором, в виде списка массивов NumPy. Первое значение всегда является количеством итераций оптимизатора, за которым следуют переменные состояния оптимизатора в порядке их создания. Возвращаемый список, в свою очередь, можно использовать для загрузки состояния в аналогично параметризованные оптимизаторы.

Например, оптимизатор RMSprop для этой простой модели возвращает список из трёх значений — количество итераций, а также среднеквадратичное значение ядра и смещения единственного слоя Dense:

opt = tf.keras.optimizers.RMSprop()
m = tf.keras.models.Sequential([tf.keras.layers.Dense(10)])
m.compile(opt, loss='mse')
data = np.arange(100).reshape(5, 20)
labels = np.zeros(5)
print('Training'); results = m.fit(data, labels)
Training ...
len(opt.get_weights())
3
Возвращаемое значение
Значения весов в виде списка массивов NumPy.

minimize

Просмотр исходного кода

minimize(
    loss, var_list, grad_loss=None, name=None
)

Минимизировать loss путём обновления var_list.

Этот метод просто вычисляет градиент с помощью tf.GradientTape и вызывает apply_gradients(). Если нужно обработать градиент перед применением, то следует вызвать tf.GradientTape и apply_gradients() явно, вместо использования этой функции.

Аргументы
loss Функция без аргументов, возвращающая значение для минимизации.
var_list Список или кортеж объектов Variable для обновления, чтобы минимизировать loss, или функция, возвращающая список или кортеж объектов Variable. Используйте функцию, когда список переменных был бы неполным до minimize, так как переменные создаются при первом вызове loss.
grad_loss Необязательно. Объект Tensor содержащий вычисленный градиент для loss.
name Необязательное имя для возвращаемой операции.
Возвращаемое значение
Операция Operation, которая обновляет переменные в var_list. Значение iterations автоматически увеличится на 1.
Исключения
ValueError Если некоторые переменные не являются объектами Variable.

set_weights

Просмотр исходного кода

set_weights(
    weights
)

Установить веса оптимизатора.

Веса оптимизатора — это его состояние (т. е. переменные). Эта функция принимает значения весов, связанные с этим оптимизатором, в виде списка массивов NumPy. Первое значение всегда является количеством итераций оптимизатора, за которым следуют переменные состояния оптимизатора в порядке их создания. Переданные значения используются для установки нового состояния оптимизатора.

Например, оптимизатор RMSprop для этой простой модели принимает список из трёх значений — количество итераций, а также среднеквадратичное значение ядра и смещения единственного слоя Dense:

opt = tf.keras.optimizers.RMSprop()
m = tf.keras.models.Sequential([tf.keras.layers.Dense(10)])
m.compile(opt, loss='mse')
data = np.arange(100).reshape(5, 20)
labels = np.zeros(5)
print('Training'); results = m.fit(data, labels)
Training ...
new_weights = [np.array(10), np.ones([20, 10]), np.zeros([10])]
opt.set_weights(new_weights)
opt.iterations
<tf.Variable 'RMSprop/iter:0' shape=() dtype=int64, numpy=10>
Аргументы
weights Значения весов в виде списка массивов NumPy.

variables

Просмотр исходного кода

variables()

Возвращает переменные этого оптимизатора в порядке их создания.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/keras/optimizers/Adadelta

Spec-Zone.ru

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