StopGradient

публичный финальный класс StopGradient

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

При выполнении в графе эта операция выводит входной тензор как есть.

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

Это полезно каждый раз, когда вы хотите вычислить значение с помощью 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-шага .
  • Обучение контрастной дивергенции машин Больцмана, где при дифференцировании энергетической функции обучение не должно распространяться обратно через граф, который генерировал выборки из модели.
  • Состязательное обучение, при котором в процессе генерации состязательных примеров не должно происходить обратного подтверждения.

Публичные методы

Выход <Т>
какВывод ()
Возвращает символический дескриптор тензора.
статический <T> StopGradient <T>
create (область действия , ввод операнда <T>)
Фабричный метод для создания класса, обертывающего новую операцию StopGradient.
Выход <Т>

Унаследованные методы

Публичные методы

публичный вывод <T> asOutput ()

Возвращает символический дескриптор тензора.

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

public static StopGradient <T> create (область действия , ввод операнда <T>)

Фабричный метод для создания класса, обертывающего новую операцию StopGradient.

Параметры
объем текущий объем
Возврат
  • новый экземпляр StopGradient

публичный вывод <T> вывод ()