SigmoidCrossEntropyWithLogits

공개 클래스 SigmoidCrossEntropyWithLogits

공공 생성자

공개 방법

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

상속된 메서드

공공 생성자

공개 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 로지트'와 라벨'의 모양이 동일하지 않은 경우