Spec-Zone.ru › TensorFlow 1.15

tf.train.experimental.LossScale

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

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

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

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

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

tf.compat.v1.train.experimental.LossScale, `tf.compat.v2.train.experimental.LossScale`

tf.train.experimental.LossScale()

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

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

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

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

Методы

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/r1.15/api_docs/python/tf/train/experimental/LossScale

Spec-Zone.ru

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