Spec-Zone.ru › TensorFlow

tf.keras.mixed_precision.LossScaleOptimizer

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

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

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

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

tf.keras.optimizers.LossScaleOptimizer

tf.keras.mixed_precision.LossScaleOptimizer(
    inner_optimizer,
    initial_scale=(2.0 ** 15),
    dynamic_growth_steps=2000,
    **kwargs
)

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

Используется в руководстве
  • Смешанная точность

Масштабирование потерь — это техника предотвращения потери точности из-за подпорогового значения в промежуточных градиентах при использовании float16. Для предотвращения потери точности, потеря умножается (или «масштабируется») на определённый множитель, называемый «масштабом потерь», что приводит к масштабированию промежуточных градиентов на масштаб потерь. Конечные градиенты делятся (или «рассмасштабиваются») на масштаб потерь, чтобы вернуть их к исходному значению.

LossScaleOptimizer оборачивает другой оптимизатор и применяет к нему динамическое масштабирование потерь. Этот масштаб потерь динамически обновляется со временем следующим образом:

  • На любом шаге обучения, если встречается бесконечный градиент, масштаб потерь уменьшается вдвое, и шаг обучения пропускается.
  • Если dynamic_growth_steps произошли с момента последнего обновления масштаба потерь, и не произошло бесконечных градиентов, масштаб потерь удваивается.
Аргументы
inner_optimizer Экземпляр keras.optimizers.Optimizer для обертывания.
initial_scale Вещественное число. Начальный масштаб потерь. Этот масштаб будет обновляться во время обучения. Рекомендуется, чтобы это было очень большое число, так как масштаб потерь, который слишком велик, уменьшается гораздо быстрее, чем масштаб потерь, который слишком мал, увеличивается.
dynamic_growth_steps Целое число. Как часто обновлять масштаб вверх. После каждых dynamic_growth_steps шагов с конечными градиентами масштаб потерь удваивается.
name Строка. Имя для использования для весов аккумуляторов моментума, созданных оптимизатором.
weight_decay Вещественное число. Если задано, применяется распад весов.
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() это происходит автоматически после последней эпохи, и вам ничего делать не нужно.
loss_scale_factor Вещественное число или None. Если вещественное число, множитель масштабирования умножается на потерю перед вычислением градиентов, а обратное значение множителя масштабирования умножается на градиенты перед обновлением переменных. Это полезно для предотвращения потери точности при обучении со смешанной точностью. В качестве альтернативы, keras.optimizers.LossScaleOptimizer автоматически установит множитель масштабирования потерь.
gradient_accumulation_steps Целое число или None. Если целое число, переменные модели и оптимизатора не будут обновляться на каждом шаге; вместо этого они будут обновляться каждые gradient_accumulation_steps шаги, используя среднее значение градиентов с момента последнего обновления. Это известно как «накопление градиента». Это может быть полезно, когда ваш размер пакета очень мал, чтобы уменьшить шум градиента на каждом шаге обновления.
Атрибуты
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 должен быть списком тензоров градиента с 1:1 соответствием списку переменных, с которыми был создан оптимизатор.

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
)

check_finite

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

check_finite(
    grads
)

exclude_from_weight_decay

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

exclude_from_weight_decay(
    var_list=None, var_names=None
)

Исключить переменные из расчёта weight decay.

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

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

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
)

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

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

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/mixed_precision/LossScaleOptimizer

Spec-Zone.ru

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