Spec-Zone.ru › TensorFlow 2.3

tf.keras.optimizers.RMSprop

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

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

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

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

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

tf.optimizers.RMSprop

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

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

tf.compat.v1.keras.optimizers.RMSprop

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 Значение с плавающей точкой, или расписание, которое является tf.keras.optimizers.schedules.LearningRateSchedule, или функция, которая не принимает аргументов и возвращает фактическое используемое значение. Скорость обучения. По умолчанию 0.001.
rho Коэффициент дисконтирования для истории/следующего градиента. По умолчанию 0.9.
momentum Скаляр или скалярный Tensor. По умолчанию 0.0.
epsilon Маленькая константа для обеспечения числовой устойчивости. Эта ε — "ε шляпа" в статье Кингмы и Ба (в формуле перед разделом 2.1), а не ε в алгоритме 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

Ссылка:

  • Хинтон, 2012
Аргументы
learning_rate Значение с плавающей точкой, или расписание, которое является tf.keras.optimizers.schedules.LearningRateSchedule, или функция, которая не принимает аргументов и возвращает фактическое используемое значение. Скорость обучения. По умолчанию 0.001.
rho Коэффициент дисконтирования для истории/следующего градиента. По умолчанию 0.9.
momentum Скаляр или скалярный Tensor. По умолчанию 0.0.
epsilon Маленькая константа для обеспечения числовой устойчивости. Эта ε — "ε шляпа" в статье Кингмы и Ба (в формуле перед разделом 2.1), а не ε в алгоритме 1 статьи. По умолчанию 1e-7.
centered Булево. Если True, градиенты нормализуются с помощью оценки дисперсии градиента; если False, с помощью нецентрированного второго момента. Установка этого значения в True может помочь в обучении, но несколько дороже в вычислительном отношении и по потреблению памяти. По умолчанию False.
name Необязательное префиксное имя для операций, созданных при применении градиентов. По умолчанию "RMSprop".
**kwargs Дополнительные аргументы. Допускается {clipnorm, clipvalue, lr, decay}. clipnorm - обрезка градиентов по норме; clipvalue - обрезка градиентов по значению; decay - включено для обратной совместимости, чтобы разрешить обратное временное затухание скорости обучения. lr включено для обратной совместимости, рекомендуется использовать learning_rate вместо этого.
Атрибуты
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(). Она возвращает операцию, применяющую градиенты.

Метод суммирует градиенты со всех реплик при наличии 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.
Возвращает
Операция, применяющая указанные градиенты. Счетчик 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 Необязательное имя для возвращаемой операции.
Возвращает
Операция, которая обновляет переменные в 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/RMSprop

Spec-Zone.ru

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