0
Voici mon code:tf.nn.sparse_softmax_cross_entropy_with_logits - erreur de type
import tensorflow as tf
with tf.Session() as sess:
y = tf.constant([0,0,1])
x = tf.constant([0,1,0])
r = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=x)
sess.run()
print(r.eval())
Il génère l'erreur suivante:
ValueError Traceback (most recent call last)
<ipython-input-10-28a8854a9457> in <module>()
4 y = tf.constant([0,0,1])
5 x = tf.constant([0,1,0])
----> 6 r = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=x)
7 sess.run()
8 print(r.eval())
~\AppData\Local\conda\conda\envs\tensorflow\lib\site-packages\tensorflow\python\ops\nn_ops.py in sparse_softmax_cross_entropy_with_logits(_sentinel, labels, logits, name)
1687 raise ValueError("Rank mismatch: Rank of labels (received %s) should "
1688 "equal rank of logits minus 1 (received %s)." %
-> 1689 (labels_static_shape.ndims, logits.get_shape().ndims))
1690 # Check if no reshapes are required.
1691 if logits.get_shape().ndims == 2:
ValueError: Rank mismatch: Rank of labels (received 1) should equal rank of logits minus 1 (received 1).
Quelqu'un pourrait-il me aider à comprendre cette erreur? C'est assez simple comment calculer softmax et calculer l'entropie croisée manuellement.
En outre, comment pourrais-je utiliser cette fonction, j'ai besoin d'alimenter en lots (2 matrice dim)?
MISE À JOUR
J'ai aussi essayé:
import tensorflow as tf
with tf.Session() as sess:
y = tf.constant([1])
x = tf.constant([0,1,0])
r = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=x)
sess.run()
print(r.eval())
et généré la même erreur
Vous ne savez pas, mais avez-vous essayé avec des tenseurs de rang 2? Softmax est généralement utilisé dans les problèmes multi-classe. –