StopGradient

공개 최종 클래스 StopGradient

그라데이션 계산을 중지합니다.

그래프에서 실행될 때 이 작업은 입력 텐서를 있는 그대로 출력합니다.

경사도를 계산하기 위한 연산을 구축할 때 이 연산은 입력의 기여도를 고려하지 못하게 합니다. 일반적으로 그래디언트 생성기는 계산에 기여한 입력을 재귀적으로 찾아 특정 '손실'의 도함수를 계산하기 위해 그래프에 연산을 추가합니다. 그래프에 이 작업을 삽입하면 입력이 그래디언트 생성기에서 마스크됩니다. 경사도 계산에는 고려되지 않습니다.

이는 TensorFlow로 값을 계산하려고 하지만 값이 상수인 척해야 할 때마다 유용합니다. 예를 들어, 벡터 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
 
그러나 소프트맥스를 통해 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
 
다른 예는 다음과 같습니다.
  • M-단계가 E-단계 의 출력을 통한 역전파를 포함해서는 안 되는 EM 알고리즘입니다.
  • 에너지 함수를 차별화할 때 훈련이 모델에서 샘플을 생성한 그래프를 통해 역전파되어서는 안 되는 볼츠만 기계의 대조 발산 훈련입니다.
  • 적대적 예제 생성 프로세스를 통해 역전파가 발생하지 않는 적대적 훈련입니다.

공개 방법

출력 <T>
출력 ()
텐서의 기호 핸들을 반환합니다.
정적 <T> 정지 그래디언트 <T>
생성 ( 범위 범위 , 피연산자 <T> 입력)
새로운 StopGradient 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
출력 <T>
출력 ()

상속된 메서드

org.tensorflow.op.PrimitiveOp 클래스에서
최종 부울
같음 (객체 객체)
최종 정수
작업
op ()
기본 Operation 을 반환합니다.
최종 문자열
부울
같음 (개체 arg0)
마지막 수업<?>
getClass ()
정수
해시코드 ()
최종 무효
알림 ()
최종 무효
통지모두 ()
toString ()
최종 무효
대기 (long arg0, int arg1)
최종 무효
기다리세요 (긴 arg0)
최종 무효
기다리다 ()
org.tensorflow.Operand 에서
추상 출력 <T>
출력 ()
텐서의 기호 핸들을 반환합니다.

공개 방법

공개 출력 <T> asOutput ()

텐서의 기호 핸들을 반환합니다.

TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.

공개 정적 StopGradient <T> 생성 ( 범위 범위, 피연산자 <T> 입력)

새로운 StopGradient 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.

매개변수
범위 현재 범위
보고
  • StopGradient의 새 인스턴스

공개 출력 <T> 출력 ()