Spec-Zone.ru › TensorFlow

tf.compat.v1.mixed_precision.MixedPrecisionLossScaleOptimizer

Оптимизатор, применяющий масштабирование потерь.

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

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

Псевдонимы для совместимости при миграции

Подробнее см. в руководстве по миграции.

tf.compat.v1.train.experimental.MixedPrecisionLossScaleOptimizer

tf.compat.v1.mixed_precision.MixedPrecisionLossScaleOptimizer(
    opt, loss_scale
)

Масштабирование потерь — это процесс, в котором значение потерь умножается на множитель, называемый масштабом потерь, а каждый градиент делится на тот же множитель. Псевдокод этого процесса:

loss = ...
loss *= loss_scale
grads = gradients(loss, vars)
grads /= loss_scale

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

Масштаб потерь может быть фиксированной константой, выбранной пользователем, или определяться динамически. Динамическое определение масштаба потерь удобно, поскольку его не нужно выбирать явно. Однако это снижает производительность.

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

Аргументы
use_locking Логическое значение. Если True, использовать блокировки для предотвращения одновременного обновления переменных.
name Непустая строка. Имя, используемое для аккумуляторов, создаваемых оптимизатором.
Вызывает исключения
ValueError Если имя имеет недопустимый формат.

Методы

apply_gradients

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

apply_gradients(
    grads_and_vars, global_step=None, name=None
)

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

Это вторая часть minimize(). Возвращает Operation, который условно применяет градиенты, если все значения градиентов конечны. В противном случае обновление не выполняется (и global_step не увеличивается).

Аргументы
grads_and_vars Список пар (градиент, переменная), возвращаемый compute_gradients().
global_step Необязательный Variable, значение которого увеличивается на единицу после обновления переменных.
name Необязательное имя возвращаемой операции. По умолчанию используется имя, переданное конструктору Optimizer.
Возвращает
Operation, который условно применяет указанные градиенты. Если global_step не равен None, эта операция также увеличивает global_step.
Вызывает исключения
RuntimeError Если вместо этого следует использовать _distributed_apply().

compute_gradients

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

compute_gradients(
    loss,
    var_list=None,
    gate_gradients=optimizer.Optimizer.GATE_OP,
    aggregation_method=None,
    colocate_gradients_with_ops=False,
    grad_loss=None
)

Вычисляет градиенты loss для переменных в var_list.

Это изменяет динамический диапазон вычисления градиентов за счёт увеличения значения loss. Затем значения градиентов уменьшаются обратно на величину, обратную масштабу потерь. Это полезно при обучении с пониженной точностью, когда небольшие значения градиентов иначе выходили бы за нижнюю границу представимого диапазона.

Аргументы
loss Тензор, содержащий значение, которое нужно минимизировать, или вызываемый объект без аргументов, возвращающий это значение. При включённом нетерпеливом выполнении должен быть передан вызываемый объект.
var_list Необязательный список или кортеж объектов tf.Variable, которые нужно обновить для минимизации loss. По умолчанию используется список переменных, собранных в графе под ключом GraphKeys.TRAINABLE_VARIABLES.
gate_gradients Способ управления вычислением градиентов. Может быть GATE_NONE, GATE_OP или GATE_GRAPH.
aggregation_method Задаёт метод объединения составляющих градиента. Допустимые значения определены в классе AggregationMethod.
colocate_gradients_with_ops Если True, попытаться разместить градиенты рядом с соответствующей операцией.
grad_loss Необязательно. Tensor, содержащий градиент, вычисленный для loss.
Возвращает
Список пар (градиент, переменная). Переменная присутствует всегда, но градиент может быть None.

get_name

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

get_name()

get_slot

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

get_slot(
    var, name
)

Возвращает слот с именем name, созданный для var оптимизатором.

Некоторые подклассы Optimizer используют дополнительные переменные. Например, Momentum и Adagrad используют переменные для накопления обновлений. Этот метод предоставляет доступ к таким объектам Variable, если они вам зачем-либо понадобятся.

Используйте get_slot_names(), чтобы получить список имён слотов, созданных Optimizer.

Аргументы
var Переменная, переданная в minimize() или apply_gradients().
name Строка.
Возвращает
Variable для слота, если он был создан; в противном случае — None.

get_slot_names

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

get_slot_names()

Возвращает список имён слотов, созданных Optimizer.

См. get_slot().

Возвращает
Список строк.

minimize

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

minimize(
    loss,
    global_step=None,
    var_list=None,
    gate_gradients=GATE_OP,
    aggregation_method=None,
    colocate_gradients_with_ops=False,
    name=None,
    grad_loss=None
)

Добавляет операции для минимизации loss путём обновления var_list.

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

Аргументы
loss Tensor, содержащее значение, которое нужно минимизировать.
global_step Необязательный Variable, значение которого увеличивается на единицу после обновления переменных.
var_list Необязательный список или кортеж объектов Variable, которые нужно обновить для минимизации loss. По умолчанию используется список переменных, собранных в графе под ключом GraphKeys.TRAINABLE_VARIABLES.
gate_gradients Способ управления вычислением градиентов. Может быть GATE_NONE, GATE_OP или GATE_GRAPH.
aggregation_method Задаёт метод объединения составляющих градиента. Допустимые значения определены в классе AggregationMethod.
colocate_gradients_with_ops Если True, попытаться разместить градиенты рядом с соответствующей операцией.
name Необязательное имя возвращаемой операции.
grad_loss Необязательно. Tensor, содержащий градиент, вычисленный для loss.
Возвращает
Операцию, которая обновляет переменные в var_list. Если global_step не равен None, эта операция также увеличивает global_step.
Вызывает исключения
ValueError Если некоторые переменные не являются объектами Variable.

совместимость с eager execution

При включённом нетерпеливом выполнении loss должна быть функцией Python без аргументов, вычисляющей минимизируемое значение. Минимизация (и вычисление градиентов) выполняется относительно элементов var_list, если он не равен None, либо относительно всех обучаемых переменных, созданных во время выполнения функции loss. Параметры gate_gradients, aggregation_method, colocate_gradients_with_ops и grad_loss игнорируются при включённом нетерпеливом выполнении.

variables

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

variables()

Возвращает переменные оптимизатора.

Переменные класса
GATE_GRAPH 2
GATE_NONE 0
GATE_OP 1

© 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/compat/v1/mixed_precision/MixedPrecisionLossScaleOptimizer

Spec-Zone.ru

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