2017-10-19 3 views
1

Puisque le code source de tf.nn.softmax_cross_entropy_with_logits dans gen_nn_ops est caché, quelqu'un pourrait peut-être m'expliquer comment tensorflow calculer l'entropie croisée après Softmax. Je veux dire, après softmax il pourrait sortir 0 à cause de la précision qui donnera lieu à un problème de NaN avec entropie croisée. Est-ce que tensorflow utilise la méthode du clip quand softmax en lie la sortie?tensorflow softmax_cross_entropy code

Répondre

0

L'implémentation de tf.nn.softmax_cross_entropy_with_logits va en outre au code C++ natif, here est l'implémentation XLA. Les logits ne sont pas liés et 0 est possible quand l'un des logits est beaucoup plus grand que les autres. Exemple:

>>> session.run(tf.nn.softmax([10.0, 50.0, 100.0, 200.0])) 
array([ 0., 0., 0., 1.], dtype=float32) 

Si vous le souhaitez, vous pouvez couper les logits juste avant la softmax, mais il est pas recommandé, car il tue le gradient lorsque la sortie est grande. Une meilleure option consiste à utiliser batch normalization pour que les activations ressemblent plus à celles normalement distribuées.