Spec-Zone.ru › TensorFlow 2.4

tf.mixed_precision.experimental.LossScale

Базовый класс для всех масштабов потерь TF1.

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

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

tf.train.experimental.LossScale

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

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.mixed_precision.LossScale, tf.compat.v1.mixed_precision.experimental.LossScale, tf.compat.v1.train.experimental.LossScale

tf.mixed_precision.experimental.LossScale()
Предупреждение: Этот класс устарел и будет недоступен в пространстве имен TF 2 начиная с TensorFlow 2.5. В TensorFlow 2.5 этот класс будет доступен только как tf.compat.v1.mixed_precision.LossScale. Кроме того, в версии 2.5 вы больше не сможете передавать LossScale в tf.keras.mixed_precision.Policy. Все функциональные возможности этого класса объединены в tf.keras.mixed_precision.LossScaleOptimizer, поэтому этот класс больше не нужен.

Это абстрактный базовый класс, поэтому вы не можете создать его напрямую. Вместо этого используйте один из его конкретных подклассов:

  • tf.compat.v1.mixed_precision.DynamicLossScale
  • tf.compat.v1.mixed_precision.FixedLossScale

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

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

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

Экземпляры этого класса представляют собой масштаб потерь. Вызов экземпляров этого класса возвращает масштаб потерь как скалярный тензор float32, а метод update() обновляет масштаб потерь в зависимости от значений градиентов. Оптимизаторы используют экземпляры этого класса для масштабирования потерь и градиентов.

В большинстве функций, принимающих LossScale, вы также можете передать целое число (например,

8) для создания FixedLossScale или строку "dynamic" для создания динамического масштаба потерь.

Методы

from_config

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

@classmethod
from_config(
    config
)

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

get_config

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

@abc.abstractmethod
get_config()

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

update

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

@abc.abstractmethod
update(
    grads
)

Обновляет значение масштаба потерь.

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

В режиме eager эта функция непосредственно обновляет масштаб потерь, поэтому вызов __call__ вернет обновлённый масштаб потерь. В режиме графа это возвращает операцию, которая при вычислении обновляет масштаб потерь.

Эта функция также возвращает should_apply_gradients логическое значение. Если False, градиенты не должны применяться к переменным на данном шаге, поскольку были обнаружены бесконечные градиенты, и масштаб потерь был обновлён для уменьшения вероятности обнаружения бесконечных градиентов на следующем шаге. Некоторые классы масштаба потерь всегда будут возвращать True, поскольку они не могут корректировать себя в ответ на бесконечные градиенты.

При использовании DistributionStrategy эта функция может вызываться только в контексте кросс-репликации.

Аргументы
grads Вложенная структура не масштабированных градиентов, каждый из которых является градиентом потерь по отношению к весу. Градиенты должны быть предварительно разделены на масштаб потерь, прежде чем передаваться в эту функцию. Принимаются градиенты 'None', которые игнорируются.
Возвращаемое значение
update_op В режиме eager, None. В режиме графа, операция для обновления масштаба потерь.
should_apply_gradients Либо булево значение, либо скалярный булевый тензор. Если False, вызывающий код должен пропустить применение grads к переменным на этом шаге.

__call__

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

@abc.abstractmethod
__call__()

Возвращает текущий масштаб потерь как скалярный float32 тензор.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/mixed_precision/experimental/LossScale

Spec-Zone.ru

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