SigmoidCrossEntropyWithLogits

klasa publiczna SigmoidCrossEntropyWithLogits

Konstruktorzy publiczni

Metody publiczne

statyczny <T rozszerza numer T > Operand <T>
sigmoidCrossEntropyWithLogits (zakres zakresu , etykiety argumentów <T>, logity argumentów <T>)
Oblicza sigmoidalną entropię krzyżową przy danych logits .

Metody dziedziczone

Konstruktorzy publiczni

public SigmoidCrossEntropyWithLogits ()

Metody publiczne

public static Operand <T> sigmoidCrossEntropyWithLogits ( zakres zakresu , etykiety argumentów <T>, logity argumentów <T>)

Oblicza sigmoidalną entropię krzyżową przy danych logits .

Mierzy błąd prawdopodobieństwa w zadaniach klasyfikacji dyskretnej, w których każda klasa jest niezależna i nie wyklucza się wzajemnie. Można na przykład przeprowadzić klasyfikację wieloetykietową, w której obraz może zawierać jednocześnie słonia i psa.

Dla zwięzłości niech x = logits , z = labels . Strata logistyczna w pseudokodzie to

 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))
 

Dla x < 0 , aby uniknąć przepełnienia exp(-x) , przeformułujemy powyższy

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

Dlatego, aby zapewnić stabilność i uniknąć przepełnienia, implementacja wykorzystuje równoważną formułę

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

logity i labels muszą być tego samego rodzaju i kształtu.

Parametry
zakres Zakres TensorFlow
etykiety etykiety
logity logity typu float32 lub float64
Zwroty
  • straty logistyczne w zakresie komponentów.
Rzuca
Wyjątek IllegalArgument jeśli logity i etykiety nie mają tego samego kształtu