SigmoidCrossEntropyWithLogits

classe publique SigmoidCrossEntropyWithLogits

Constructeurs Publics

Méthodes publiques

statique <T étend TNumber > Opérande <T>
sigmoidCrossEntropyWithLogits ( Portée de la portée , étiquettes de l'opérande <T>, logits de l'opérande <T>)
Calcule l'entropie croisée sigmoïde à partir logits .

Méthodes héritées

Constructeurs Publics

public SigmoidCrossEntropyWithLogits ()

Méthodes publiques

public static Operand <T> sigmoidCrossEntropyWithLogits ( Portée de la portée, étiquettes de l'opérande <T>, logits de l'opérande <T>)

Calcule l'entropie croisée sigmoïde à partir logits .

Mesure l'erreur de probabilité dans les tâches de classification discrètes dans lesquelles chaque classe est indépendante et non mutuellement exclusive. Par exemple, on pourrait effectuer une classification multi-étiquettes où une image peut contenir à la fois un éléphant et un chien.

Par souci de concision, soit x = logits , z = labels . La perte logistique en pseudo-code est

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

Pour x < 0 , pour éviter un débordement dans exp(-x) , nous reformulons le

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

Par conséquent, pour garantir la stabilité et éviter les débordements, l'implémentation utilise cette formulation équivalente

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

les logits et labels doivent avoir le même type et la même forme.

Paramètres
portée La portée TensorFlow
Étiquettes les étiquettes
logites les logits de type float32 ou float64
Retour
  • les pertes logistiques par composants.
Jetés
Exception d'argument illégal si les logits et les étiquettes n'ont pas la même forme