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 используется обычный momentum, а не momentum Нестерова.

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

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

Ссылка:

  • Хинтон, 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