J'utilise tensorflow pour importer des données d'entrée MNIST. J'ai suivi ce tutoriel ... https://www.tensorflow.org/get_started/mnist/beginners
Je les importe comme si ...
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
Je souhaite pouvoir afficher n’importe laquelle des images du kit d’entraînement. Je sais que l'emplacement des images est mnist.train.images
, alors j'essaie d'accéder aux premières images et de les afficher comme suit ...
with tf.Session() as sess:
#access first image
first_image = mnist.train.images[0]
first_image = np.array(first_image, dtype='uint8')
pixels = first_image.reshape((28, 28))
plt.imshow(pixels, cmap='gray')
Je tente de convertir l’image en un tableau numpy de 28 sur 28 car je sais que chaque image mesure 28 sur 28 pixels.
Cependant, lorsque je lance le code, tout ce que je reçois est le suivant ...
Clairement, je fais quelque chose de mal. Lorsque j'imprime la matrice, tout semble bien paraître, mais je pense que je la reformule de manière incorrecte.
Vous convertissez un tableau de flottants ( comme décrit dans la documentation ) en uint8
, ce qui les tronque à 0 s'ils ne sont pas 1.0
. Vous devriez soit les entourer, soit les utiliser comme flotteurs, soit multiplier par 255.
Je ne suis pas sûr pourquoi vous ne voyez pas le fond blanc, mais je suggérerais de toute façon d'utiliser une échelle de gris bien définie.
Le code suivant montre des exemples d'images affichées dans la base de données de chiffres MNIST utilisée pour la formation de réseaux de neurones. Il utilise une variété de codes autour de stackflow et évite les pil.
# Tested with Python 3.5.2 with tensorflow and matplotlib installed.
from matplotlib import pyplot as plt
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot = True)
def gen_image(arr):
two_d = (np.reshape(arr, (28, 28)) * 255).astype(np.uint8)
plt.imshow(two_d, interpolation='nearest')
return plt
# Get a batch of two random images and show in a pop-up window.
batch_xs, batch_ys = mnist.test.next_batch(2)
gen_image(batch_xs[0]).show()
gen_image(batch_xs[1]).show()
La définition de mnist se trouve à: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/learn/python/learn/datasets/mnist.py
Le réseau neuronal tensorflow qui m'a amené à afficher les images MNINST se trouve à l'adresse: https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/mnist/mnist_deep.py
Comme je n’ai programmé Python que pendant deux heures, j’ai peut-être commis de nouvelles erreurs. S'il vous plaît n'hésitez pas à corriger.
Voici le code complet pour afficher une image en utilisant matplotlib
first_image = mnist.test.images[0]
first_image = np.array(first_image, dtype='float')
pixels = first_image.reshape((28, 28))
plt.imshow(pixels, cmap='gray')
plt.show()
Pour ceux d'entre vous qui veulent le faire avec PIL.Image:
import numpy as np
import PIL.Image as pil
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('mnist')
testImage = (np.array(mnist.test.images[0], dtype='float')).reshape(28,28)
img = pil.fromarray(np.uint8(testImage * 255) , 'L')
img.show()