[neural-network] Quelle est la différence entre sparse_softmax_cross_entropy_with_logits et softmax_cross_entropy_with_logits?



Answers

Je voudrais juste ajouter 2 choses à la réponse acceptée que vous pouvez également trouver dans la documentation TF.

Premier:

tf.nn.softmax_cross_entropy_with_logits

NOTE: Bien que les classes soient mutuellement exclusives, leurs probabilités ne doivent pas l'être. Tout ce qui est requis est que chaque rangée d'étiquettes soit une distribution de probabilité valide. Si ce n'est pas le cas, le calcul du gradient sera incorrect.

Seconde:

tf.nn.sparse_softmax_cross_entropy_with_logits

NOTE: Pour cette opération, la probabilité d'une étiquette donnée est considérée comme exclusive. C'est-à-dire que les classes souples ne sont pas autorisées et que le vecteur des étiquettes doit fournir un seul index spécifique pour la classe vraie pour chaque ligne de logits (chaque entrée de minibatch).

Question

Je suis récemment tombé sur tf.nn.sparse_softmax_cross_entropy_with_logits et je ne peux pas comprendre quelle est la différence par rapport à tf.nn.softmax_cross_entropy_with_logits .

La seule différence est-elle que les vecteurs de formation doivent être codés à chaud lors de l'utilisation de sparse_softmax_cross_entropy_with_logits ?

En lisant l'API, je n'ai trouvé aucune autre différence par rapport à softmax_cross_entropy_with_logits . Mais pourquoi avons-nous besoin de la fonction supplémentaire alors?

Est-ce que softmax_cross_entropy_with_logits ne devrait pas produire les mêmes résultats que sparse_softmax_cross_entropy_with_logits , s'il est fourni avec des données / vecteurs d'entraînement codés à chaud?




Related