Spec-Zone.ru › TensorFlow 2.9

tf.keras.optimizers.experimental.RMSprop

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

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

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

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

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

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

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

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

Использование:

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
Атрибуты
iterations Количество шагов обучения, которые выполнил этот optimizer.

По умолчанию итерации увеличиваются на единицу каждый раз, когда вызывается apply_gradients().

learning_rate

Методы

add_variable

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

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

Создать переменную оптимизатора.

Аргументы
shape Список целых чисел, кортеж целых чисел или одномерный тензор типа int32. По умолчанию скаляр, если не указано.
dtype Тип данных переменной оптимизатора, который нужно создать. По умолчанию tf.keras.backend.floatx, если не указано.
initializer Строка или вызываемый объект. Экземпляр инициализатора.
name Имя переменной оптимизатора, которую нужно создать.
Возвращаемое значение
Переменная оптимизатора в формате tf.Variable.

add_variable_from_reference

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

add_variable_from_reference(
    model_variable, variable_name, shape=None, initial_value=None
)

Создать переменную оптимизатора из переменной модели.

Создать переменную оптимизатора на основе информации о переменной модели. Например, в оптимизаторе SGD момент, для каждой переменной модели создается соответствующая переменная момента той же формы и типа данных.

Аргументы
model_variable tf.Variable. Соответствующая переменная модели переменной оптимизатора, которую нужно создать.
variable_name Строка. Префикс имени переменной оптимизатора, который нужно создать. Имя создаваемых переменных будет следовать шаблону {variable_name}/{model_variable.name}, например, momemtum/dense_1.
shape Список или кортеж, по умолчанию None. Форма создаваемой переменной оптимизатора. Если None, создаваемая переменная будет иметь ту же форму, что и model_variable.
initial_value Тензор или Python-объект, преобразуемый в тензор, по умолчанию None. Начальное значение переменной оптимизатора, если None, начальное значение будет по умолчанию 0.
Возвращаемое значение
Переменная оптимизатора.

aggregate_gradients

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

aggregate_gradients(
    grads_and_vars
)

Агрегировать градиенты на всех устройствах.

По умолчанию мы будем выполнять reduce_sum градиентов по всем устройствам. Пользователи могут реализовать свою логику агрегирования, переопределив этот метод.

Аргументы
grads_and_vars Список пар (градиент, переменная).
Возвращаемое значение
Список пар (градиент, переменная).

apply_gradients

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

apply_gradients(
    grads_and_vars, skip_gradients_aggregation=False
)

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

Аргументы
grads_and_vars Список пар (градиент, переменная).
skip_gradients_aggregation Если True, агрегация градиентов не будет выполняться внутри оптимизатора. Обычно этот аргумент устанавливается в True, когда вы пишете пользовательский код агрегирования градиентов вне оптимизатора.
Возвращаемое значение
None
Исключения
TypeError Если grads_and_vars имеет неправильный формат.
RuntimeError Если вызов происходит в контексте кросс-репликации.

build

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

build(
    var_list
)

Инициализировать переменные оптимизатора, такие как переменные момента.

Этот метод должен быть реализован подклассами оптимизаторов, и подклассы оптимизаторов должны вызвать super().build(var_list).

Аргументы
var_list Список переменных модели, на которых нужно построить оптимизаторы. Например, оптимизатор SGD с импульсом будет хранить одну переменную импульса, соответствующую каждой переменной модели.

compute_gradients

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

compute_gradients(
    loss, var_list, tape=None
)

Вычислить градиенты потерь по обучению переменным.

Аргументы
loss Tensor или вызываемый объект. Если вызываемый объект, loss не должен принимать аргументы и возвращать значение для минимизации.
var_list список или кортеж объектов Variable для обновления, чтобы минимизировать loss.
tape (Необязательно) tf.GradientTape. Если loss предоставлен как вызываемый объект, должна быть предоставлена лента, вычислившая loss .
Возвращает
Список пар (градиент, переменная). Переменная всегда присутствует, но градиент может быть None.

data-text="finalize_variable_values" id="finalize_variable_values">finalize_variable_values

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

finalize_variable_values(
    var_list
)

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

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

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

data-text="from_config" id="from_config">from_config

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

@classmethod
from_config(
    config
)

Создаёт оптимизатор из его конфигурации.

Этот метод является обратным к get_config, способный создать тот же оптимизатор из словаря конфигурации.

Аргументы
config Словарь Python, обычно результат get_config.
Возвращает
Экземпляр оптимизатора.

data-text="get_config" id="get_config">get_config

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

get_config()

Возвращает конфигурацию оптимизатора.

Конфигурация оптимизатора — это словарь Python (сериализуемый), содержащий конфигурацию оптимизатора. Из этой конфигурации можно позже создать тот же оптимизатор (без сохранённого состояния).

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

Возвращает
Словарь Python.

data-text="minimize" id="minimize">minimize

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

minimize(
    loss, var_list, tape=None
)

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

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

Аргументы
loss Tensor или вызываемый объект. Если вызываемый объект, loss не должен принимать аргументы и возвращать значение для минимизации.
var_list список или кортеж объектов Variable для обновления, чтобы минимизировать loss.
tape (Необязательно) tf.GradientTape.
Возвращает
None

data-text="update_step" id="update_step">update_step

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

update_step(
    gradient, variable
)

Шаг обновления, учитывая градиент и соответствующую переменную модели.

© 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/versions/r2.9/api_docs/python/tf/keras/optimizers/experimental/RMSprop

Spec-Zone.ru

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