webentwicklung-frage-antwort-db.com.de

Zeigen Sie das MNIST-Bild mit matplotlib an

Ich verwende Tensorflow, um einige MNIST-Eingabedaten zu importieren. Ich folgte diesem Tutorial ... https://www.tensorflow.org/get_started/mnist/beginners

Ich importiere sie als so ...

from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

Ich möchte in der Lage sein, eines der Bilder aus dem Trainingsset anzuzeigen. Ich weiß, dass der Ort der Bilder mnist.train.images ist, also versuche ich, auf die ersten Bilder zuzugreifen und sie so anzuzeigen ...

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')

Ich versuche, das Bild in ein 28 x 28-numpy-Array zu konvertieren, da ich weiß, dass jedes Bild 28 x 28 Pixel groß ist.

Wenn ich jedoch den Code starte, bekomme ich Folgendes ...

 enter image description here

Klar mache ich etwas falsch. Wenn ich die Matrix ausdrucken möchte, sieht alles gut aus, aber ich denke, ich ändere sie falsch.

6
Bolboa

Sie wandeln ein Array von Floats ( wie in den Dokumenten beschrieben) in uint8 um, wodurch sie auf 0 gekürzt werden, wenn sie nicht 1.0 sind. Sie sollten sie entweder runden oder als Floats verwenden oder mit 255 multiplizieren.

Ich bin nicht sicher, warum Sie den weißen Hintergrund nicht sehen, aber ich würde trotzdem vorschlagen, eine gut definierte Grauskala zu verwenden.

3
allo

Der folgende Code zeigt Beispielbilder aus der MNIST-Zifferndatenbank, die zum Training neuronaler Netzwerke verwendet werden. Es verwendet eine Vielzahl von Code-Teilen aus Stackflow und vermeidet 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()

Die Definition von "mnist" lautet: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/learn/python/learn/datasets/mnist.py

Das neuronale Tensorflow-Netzwerk, das mich dazu brachte, die MNINST-Bilder anzuzeigen, befindet sich unter: https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/mnist/mnist_deep.py

Da ich nur zwei Stunden lang Python programmiert habe, habe ich möglicherweise Fehler gemacht. Bitte zögern Sie nicht zu korrigieren.

10
wheresmypdp10

Hier ist der vollständige Code für die Anzeige von Bildern mit 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()
7
Vinh Trieu

Für alle, die es mit PIL machen wollen. 

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()
2
WhatAMesh