Spec-Zone.ru › TensorFlow

tf.stop_gradient

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

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

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

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

tf.compat.v1.stop_gradient

tf.stop_gradient(
    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 Тензор.
name Имя операции (необязательно).
Возвращаемое значение
Тензор. Имеет тот же тип, что и 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/stop_gradient

Spec-Zone.ru

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