Spec-Zone.ru › TensorFlow

tf.raw_ops.StopGradient

Останавливает вычисление градиента.

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

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

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

tf.compat.v1.raw_ops.StopGradient

tf.raw_ops.StopGradient(
    input, name=None
)

При выполнении в графе эта операция возвращает входной тензор без изменений.

При создании операций для вычисления градиентов эта операция не позволяет учитывать вклад входных данных. Обычно генератор градиентов добавляет в граф операции для вычисления производных заданной «функции потерь», рекурсивно находя входные данные, участвовавшие в её вычислении. Если вставить эту операцию в граф, входные данные будут скрыты от генератора градиентов. Они не будут учитываться при вычислении градиентов.

Это полезно, когда нужно вычислить значение с помощью TensorFlow, но при этом считать, что оно является константой. Например, функцию softmax для вектора x можно записать так:

def softmax(x):
  numerator = tf.exp(x)
  denominator = tf.reduce_sum(numerator)
  return numerator / denominator

Однако при больших значениях x это может привести к переполнению. Более устойчивый вариант — вычесть максимальное значение x из каждого элемента.

def stable_softmax(x):
  z = x - tf.reduce_max(x)
  numerator = tf.exp(z)
  denominator = tf.reduce_sum(numerator)
  return numerator / denominator

Однако при обратном распространении через softmax к x мы не хотим распространять градиент через вычисление tf.reduce_max(x) (если максимальные значения не уникальны, градиент может пойти к неверному входному значению) и хотим считать его константой. Поэтому это следует записать так:

def stable_softmax(x):
  z = x - tf.stop_gradient(tf.reduce_max(x))
  numerator = tf.exp(z)
  denominator = tf.reduce_sum(numerator)
  return numerator / denominator

Другие примеры:

  • Алгоритм EM, в котором M-шаг не должен включать обратное распространение через выход E-шага.
  • Обучение машин Больцмана с помощью контрастивной дивергенции: при дифференцировании функции энергии обучение не должно распространять градиент через граф, породивший выборки модели.
  • Состязательное обучение, при котором обратное распространение не должно выполняться через процесс генерации состязательного примера.
Аргументы
input Tensor.
name Имя операции (необязательно).
Возвращает
Tensor. Имеет тот же тип, что и input.

© 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/raw_ops/StopGradient

Spec-Zone.ru

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