2016-11-24 1 views
0

Je cours l'échantillon MNIST handwritten numbers tutorial.Appliquer une entrée à la session tensorflow et obtenir la sortie

Comment puis-je activer la session avec le premier test image MNIST et nous espérons obtenir le résultat attendu?

Quand je fais cela:

print(sess.run(tf.convert_to_tensor(mnist.test.images[0]))) 

je reçois un tenseur 784 long avec des poids (devinettes):

... 
... 
... 
0.94901967 0.99607849 0.99607849 0.20392159 0.   0.   0. 
0.   0.   0.   0.   0.   0.   0. 
0.   0.   0.   0.   0.   0.   0. 
0.   0.   0.   0.   0.   0. 
0.47450984 0.99607849 0.99607849 0.8588236 0.15686275 0.   0. 
0.   0.   0.   0.   0.   0.   0. 
0.   0.   0.   0.   0.   0.   0. 
0.   0.   0.   0.   0.   0.   0. 
0.47450984 0.99607849 0.81176478 0.07058824 0.   0.   0. 
0.   0.   0.   0.   0.   0.   0. 
0.   0.   0.   0.   0.   0.   0. 
0.   0.   0.   0.   0.   0.   0. 
0.   0.   0.   0.   0.   0.   0. 
0.   0.   0.   0.   0.   0.   0. 
... 
... 
... 

Mon résultat attendu serait 7 dans ce format:

[ 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.] 

Répondre

2

Eh bien, les images (mnist.train.images) sont 784 = 28 x 28 vecteurs dimensionnels. Ce que vous cherchez sont des étiquettes (mnist.test.labels), qui sont en effet 10 -dimensionnelle:

In [29]: mnist.test.labels[0] 
Out[29]: array([ 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]) 

Par ailleurs, ces tableaux ne sont que des réseaux réguliers de numpy, vous n'avez pas besoin d'utiliser la session tf pour les imprimer.

+0

Oh, je reçois cela, mais comment puis-je calculer une étiquette à partir d'une entrée (tableau 784)? Sans accéder à l'étiquette. Comme, dis-je ai écrit un chiffre, scanné et voulu détecter quel numéro il est. –

+1

Eh bien, vous formez un modèle (par exemple celui décrit dans un tutoriel), puis calculez sa sortie sur une entrée donnée, par ex. 'print (sess.run (y, feed_dict = {x: mnist.test.images [10:20]}))' ' – sygi

+0

Bien, merci. Y at-il peut-être un shortcode pour exécuter une seule entrée - 'sess.run (y, feed_dict = {x: mnist.test.images [0: 1]})' –

0

Je pense que vous cherchez les prévisions, Wich ont été stockés à y dans cette phase:

y = tf.matmul(x, W) + b 

Ils sont des probabilités (grâce à SOFTMAX) et vous devez prendre le meilleur pour obtenir la réponse prévue:

tf.argmax(y, 1) 

Dans votre cas, cela devrait vous donner la prédiction pour la première image:

tf.argmax(y[0],1) 
+0

Que ferais-je si j'avais une nouvelle image de numéro manuscrit et que je voulais détecter quel numéro il s'agissait? –