tf.keras.optimizers.RMSprop
| Просмотреть исходный код на GitHub |
Оптимизатор, реализующий алгоритм RMSprop.
Наследуется от: Optimizer
tf.keras.optimizers.RMSprop(
learning_rate=0.001, rho=0.9, momentum=0.0, epsilon=1e-07, centered=False,
name='RMSprop', **kwargs
)
Суть RMSprop заключается в следующем:
- Поддержание скользящего (с дисконтированием) среднего значения квадрата градиентов
- Деление градиента на квадратный корень этого среднего значения
Эта реализация RMSprop использует обычный момент, а не момент Нестерова.
Центрированная версия дополнительно поддерживает скользящее среднее значение градиентов и использует это среднее значение для оценки дисперсии.
| Аргументы | |
|---|---|
learning_rate | Значение типа float или расписание, которое является tf.keras.optimizers.schedules.LearningRateSchedule, или вызываемая функция без аргументов, возвращающая фактическое значение для использования. Скорость обучения. По умолчанию 0.001. |
rho | Коэффициент дисконтирования для истории/приходящего градиента. По умолчанию 0.9. |
momentum | Скаляр или скалярный Tensor. По умолчанию 0.0. |
epsilon | Маленькая константа для обеспечения числовой устойчивости. Эта epsilon — это «epsilon hat» в документе Kingma и Ba (в формуле перед разделом 2.1), а не epsilon в алгоритме 1 документа. По умолчанию 1e-7. |
centered | Булево значение. Если True, градиенты нормализуются по оцененной дисперсии градиента; если False, по неопределенному второму моменту. Установка этого значения в True может помочь при обучении, но немного дороже в вычислительном отношении и по памяти. По умолчанию False. |
name | Необязательное имя-префикс для операций, создаваемых при применении градиентов. По умолчанию "RMSprop". |
**kwargs | Аргументы ключевых слов. Разрешено быть одним из "clipnorm" или "clipvalue". "clipnorm" (float) ограничивает градиенты по норме; "clipvalue" (float) ограничивает градиенты по значению. |
Обратите внимание, что в плотной реализации этого алгоритма переменные и их соответствующие аккумуляторы (момент, скользящее среднее градиента, скользящее среднее квадрата градиента) будут обновляться даже если градиент равен нулю (т. е. аккумуляторы будут убывать, будет применяться момент). Разреженная реализация (используемая, когда градиент является объектом IndexedSlices , обычно из-за tf.gather или поиска вложения в прямом проходе) не будет обновлять срезы переменных или их аккумуляторов, если эти срезы не использовались в прямом проходе (и нет «постепенной» корректировки для учета этих пропущенных обновлений). Это приводит к более эффективным обновлениям для больших таблиц вложений (где большая часть срезов не используется в конкретном выполнении графа), но отличается от опубликованного алгоритма.
Использование:
opt = tf.keras.optimizers.RMSprop(learning_rate=0.1) var1 = tf.Variable(10.0) loss = lambda: (var1 ** 2) / 2.0 # d(loss) / d(var1) = var1 step_count = opt.minimize(loss, [var1]).numpy() var1.numpy() 9.683772
Ссылки:
© 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.4/api_docs/python/tf/keras/optimizers/RMSprop