Spec-Zone.ru › TensorFlow 2.9

tf.keras.dtensor.experimental.optimizers.RMSprop

Оптимизаторы, специфичные для DTensor.

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

tf.keras.dtensor.experimental.optimizers.RMSprop(
    learning_rate=0.001,
    rho=0.9,
    momentum=0.0,
    epsilon=1e-07,
    centered=False,
    gradients_clip_option=None,
    ema_option=None,
    jit_compile=False,
    name='RMSprop',
    mesh=None
)

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

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

Суть 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, initial_value=None
)

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

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

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

apply_gradients

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

apply_gradients(
    grads_and_vars
)

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

Аргументы
grads_and_vars Список пар (градиент, переменная).
Возвращает
None
Исключения
TypeError Если grads_and_vars имеет неправильный формат.

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 предоставлен как Tensor, лента, вычислившая loss, должна быть предоставлена.
Возвращает
Список пар (градиент, переменная). Переменная всегда присутствует, но градиент может быть None.

finalize_variable_values

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

finalize_variable_values(
    var_list
)

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

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

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

from_config

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

@classmethod
from_config(
    config
)

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

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

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

get_config

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

get_config()

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

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

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

Возвращаемое значение
Словарь Python.

minimize

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

minimize(
    loss, var_list, tape=None
)

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

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

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

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/dtensor/experimental/optimizers/RMSprop

Spec-Zone.ru

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