Spec-Zone.ru › TensorFlow

tf.compat.v1.mixed_precision.LossScale

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

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

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

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

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

tf.compat.v1.mixed_precision.LossScale()

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

  • 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 типа bool. Если значение равно False, градиенты не следует применять к переменным на этом шаге, поскольку были обнаружены не конечные градиенты, а масштаб потерь был обновлен, чтобы снизить вероятность обнаружения не конечных градиентов на следующем шаге. Некоторые классы масштабирования потерь всегда возвращают True, поскольку не могут адаптироваться к не конечным градиентам.

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

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

__call__

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

@abc.abstractmethod
__call__()

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

© 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/LossScale

Spec-Zone.ru

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