SigmoidCrossEntropyWithLogits

classe pubblica SigmoidCrossEntropyWithLogits

Costruttori pubblici

Metodi pubblici

statico <T estende TNumero > Operando <T>
sigmoidCrossEntropyWithLogits ( ambito ambito , etichette operando <T>, logit operando <T>)
Calcola l'entropia incrociata del sigmoide dati logits .

Metodi ereditati

Costruttori pubblici

pubblico SigmoidCrossEntropyWithLogits ()

Metodi pubblici

operando statico pubblico <T> sigmoidCrossEntropyWithLogits ( ambito ambito , etichette operando <T>, logit operando <T>)

Calcola l'entropia incrociata del sigmoide dati logits .

Misura l'errore di probabilità nei compiti di classificazione discreta in cui ciascuna classe è indipendente e non si esclude a vicenda. Ad esempio, è possibile eseguire una classificazione multietichetta in cui un'immagine può contenere contemporaneamente sia un elefante che un cane.

Per brevità, sia x = logits , z = labels . La perdita logistica nello pseudo-codice lo è

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

Per x < 0 , per evitare overflow in exp(-x) , riformuliamo quanto sopra

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

Pertanto, per garantire stabilità ed evitare overflow, l'implementazione utilizza questa formulazione equivalente

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

logit ed labels devono avere lo stesso tipo e forma.

Parametri
ambito L'ambito TensorFlow
etichette le etichette
logits i logit di tipo float32 o float64
Ritorni
  • le perdite logistiche in termini di componenti.
Lancia
IllegalArgumentException se logits ed etichette non hanno la stessa forma