Spec-Zone.ru › TensorFlow

tf.keras.optimizers.RMSprop

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

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

tf.keras.optimizers.RMSprop(
    learning_rate=0.001,
    rho=0.9,
    momentum=0.0,
    epsilon=1e-07,
    centered=False,
    weight_decay=None,
    clipnorm=None,
    clipvalue=None,
    global_clipnorm=None,
    use_ema=False,
    ema_momentum=0.99,
    ema_overwrite_frequency=None,
    loss_scale_factor=None,
    gradient_accumulation_steps=None,
    name='rmsprop',
    **kwargs
)

Используется в ноутбуках

Используется в руководстве Используется в учебных пособиях
  • Смешанная точность
  • Пользовательский цикл обучения с Keras и MultiWorkerMirroredStrategy
  • Перенос обучения и дообучение
  • Загрузка данных NumPy
  • Классификация CIFAR-10 с XLA

Суть RMSprop заключается в следующем:

  • Поддержание скользящего (с дисконтированием) среднего квадрата градиентов
  • Деление градиента на квадратный корень из этого среднего

Эта реализация RMSprop использует обычный момент, а не момент Нестерова.

Центрированная версия дополнительно поддерживает скользящее среднее градиентов и использует это среднее для оценки дисперсии.

Аргументы
learning_rate Вещественное число, экземпляр keras.optimizers.schedules.LearningRateSchedule или вызываемый объект, который не принимает аргументов и возвращает фактическое значение для использования. Скорость обучения. По умолчанию 0.001.
rho Вещественное число, по умолчанию 0,9. Коэффициент дисконтирования для старых градиентов.
momentum Вещественное число, по умолчанию 0,0. Если не равно 0,0, оптимизатор отслеживает значение момента с коэффициентом затухания, равным 1 - momentum.
epsilon Малая константа для обеспечения числовой устойчивости. Этот epsilon — это «epsilon hat» в документе Kingma и Ba (в формуле непосредственно перед разделом 2.1), а не epsilon в алгоритме 1 документа. По умолчанию 1e-7.
centered Булево значение. Если True, градиенты нормализуются с использованием оценки дисперсии градиента; если False, с помощью нецентрированной второй моментной оценки. Установка этого значения в True может помочь в обучении, но несколько дороже с точки зрения вычислений и памяти. По умолчанию False.
name Строка. Имя для использования весов аккумуляторов импульса, созданных оптимизатором.
weight_decay Вещественное число. Если задано, применяется затухание весов.
clipnorm Вещественное число. Если задано, градиент каждого веса индивидуально ограничивается значением, не превышающим это значение.
clipvalue Вещественное число. Если задано, градиент каждого веса ограничивается значением, не превышающим это значение.
global_clipnorm Вещественное число. Если задано, градиент всех весов ограничивается значением, не превышающим это глобальное значение.
use_ema Булево значение, по умолчанию False. Если True, применяется экспоненциальное скользящее среднее (EMA). EMA заключается в вычислении экспоненциального скользящего среднего весов модели (поскольку значения весов изменяются после каждой итерации обучения), и периодическом перезаписи весов их скользящим средним.
ema_momentum Вещественное число, по умолчанию 0.99. Используется только если use_ema=True. Это импульс, используемый для вычисления скользящего среднего весов модели: 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() это происходит автоматически после последней эпохи, и вам ничего делать не нужно.
loss_scale_factor Вещественное число или None. Если вещественное число, масштабный множитель умножается на потерю перед вычислением градиентов, а обратный масштабный множитель умножается на градиенты перед обновлением переменных. Полезно для предотвращения утечки информации при обучении со смешанной точностью. В качестве альтернативы, keras.optimizers.LossScaleOptimizer автоматически установит масштабный множитель потерь.
gradient_accumulation_steps Целое число или None. Если целое число, переменные модели и оптимизатора не обновляются на каждом шаге; вместо этого они обновляются каждые gradient_accumulation_steps шаги, используя среднее значение градиентов с момента последнего обновления. Это известно как «накопление градиента». Это может быть полезно, когда размер пакета очень мал, чтобы уменьшить шум градиента на каждом шаге обновления.

Пример:

opt = keras.optimizers.RMSprop(learning_rate=0.1)
var1 = keras.backend.Variable(10.0)
loss = lambda: (var1 ** 2) / 2.0  # d(loss) / d(var1) = var1
opt.minimize(loss, [var1])
var1
9.683772

Ссылка:

  • Hinton, 2012
Атрибуты
learning_rate
variables

Методы

add_variable

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

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

add_variable_from_reference

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

add_variable_from_reference(
    reference_variable, name=None, initializer='zeros'
)

Добавить переменную со значениями нулей, используя форму и тип переменной-ссылки.

apply

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

apply(
    grads, trainable_variables=None
)

Обновить обучаемые переменные в соответствии с предоставленными значениями градиентов.

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

trainable_variables может быть предоставлен при первом вызове для построения оптимизатора.

apply_gradients

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

apply_gradients(
    grads_and_vars
)

assign

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

assign(
    variable, value
)

Присвоить значение переменной.

Это следует использовать в оптимизаторах вместо variable.assign(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или переменной оптимизатора; она может быть переменной, специфичной для бэкенда, или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, которое нужно добавить к переменной.

assign_add

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

assign_add(
    variable, value
)

Добавить значение к переменной.

Это следует использовать в оптимизаторах вместо variable.assign_add(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или переменной оптимизатора; она может быть переменной, специфичной для бэкенда, или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, которое нужно добавить к переменной.

assign_sub

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

assign_sub(
    variable, value
)

Вычесть значение из переменной.

Это следует использовать в оптимизаторах вместо variable.assign_sub(value), чтобы поддержать оптимизации, специфичные для бэкенда. Обратите внимание, что переменная может быть переменной модели или переменной оптимизатора; она может быть переменной, родной для бэкенда, или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, которое нужно добавить к переменной.

build

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

build(
    var_list
)

exclude_from_weight_decay

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

exclude_from_weight_decay(
    var_list=None, var_names=None
)

Исключить переменные из распада весов.

Этот метод должен быть вызван перед вызовом метода build оптимизатора. Вы можете установить конкретные переменные для исключения или задать список строк в качестве ключевых слов, если любое из них появляется в имени переменной, то переменная исключается.

Аргументы
var_list Список переменных Variable, которые нужно исключить из распада весов.
var_names Список строк. Если любая строка в var_names появляется в имени переменной модели, то эта переменная модели исключается из распада весов. Например, var_names=['bias'] исключает все переменные смещения из распада весов.

finalize_variable_values

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

finalize_variable_values(
    var_list
)

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

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

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

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.

load_own_variables

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

load_own_variables(
    store
)

Установить состояние этого объекта оптимизатора.

save_own_variables

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

save_own_variables(
    store
)

Получить состояние этого объекта оптимизатора.

scale_loss

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

scale_loss(
    loss
)

Масштабировать потерю перед вычислением градиентов.

Масштабирует потерю перед вычислением градиентов в train_step. Это в первую очередь полезно во время обучения с использованием смешанной точности, чтобы предотвратить числовое подтекание.

set_weights

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

set_weights(
    weights
)

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

stateless_apply

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

stateless_apply(
    optimizer_variables, grads, trainable_variables
)

update_step

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

update_step(
    gradient, variable, learning_rate
)

Обновить шаг, учитывая градиент и связанную переменную модели.

© 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/api_docs/python/tf/keras/optimizers/RMSprop

Spec-Zone.ru

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