SigmoidCrossEntropyWithLogits

공개 클래스 SigmoidCrossEntropyWithLogits

공공 생성자

공개 방법

static <T는 Tnumber를 확장합니다. > 피연산자 <T>
sigmoidCrossEntropyWithLogits (범위 범위 , 피연산자 <T> 레이블, 피연산자 <T> 로지트)
logits 주어지면 시그모이드 교차 엔트로피를 계산합니다.

상속된 메서드

부울
같음 (개체 arg0)
마지막 수업<?>
getClass ()
정수
해시코드 ()
최종 무효
알림 ()
최종 무효
통지모두 ()
toString ()
최종 무효
대기 (long arg0, int arg1)
최종 무효
기다리세요 (긴 arg0)
최종 무효
기다리다 ()

공공 생성자

공개 SigmoidCrossEntropyWithLogits ()

공개 방법

공개 정적 피연산자 <T> sigmoidCrossEntropyWithLogits ( 범위 범위, 피연산자 <T> 레이블, 피연산자 <T> 로지트)

logits 주어지면 시그모이드 교차 엔트로피를 계산합니다.

각 클래스가 독립적이고 상호 배타적이지 않은 이산 분류 작업의 확률 오류를 측정합니다. 예를 들어, 사진에 코끼리와 개가 동시에 포함될 수 있는 다중 레이블 분류를 수행할 수 있습니다.

간결하게 하기 위해 x = logits , z = labels 로 가정합니다. 의사 코드의 로지스틱 손실은 다음과 같습니다.

 z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
  = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
  = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
  = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
  = (1 - z) * x + log(1 + exp(-x))
  = x - x * z + log(1 + exp(-x))
 

x < 0 의 경우 exp(-x) 의 오버플로를 방지하기 위해 위의 내용을 재구성합니다.

 x - x * z + log(1 + exp(-x))
  = log(exp(x)) - x * z + log(1 + exp(-x))
  = - x * z + log(1 + exp(x))
 

따라서 안정성을 보장하고 오버플로를 방지하기 위해 구현에서는 이와 동등한 공식을 사용합니다.

   max(x, 0) - x * z + log(1 + exp(-abs(x)))
 

로지트와 labels 유형과 모양이 동일해야 합니다.

매개변수
범위 TensorFlow 범위
라벨 라벨
로지트 float32 또는 float64 유형의 로지트
보고
  • 부품별 물류 손실.
던지기
IllegalArgumentException 로지트'와 라벨'의 모양이 동일하지 않은 경우