it-swarm.com.de

Warum zeigt plt.imshow () das Bild nicht an?

Ich bin ein Neuling für Keras, und als ich versuchte, mein erstes Keras-Programm auf meinem Linux auszuführen, ging etwas nicht so, wie ich es wünsche ... Hier ist mein Python-Code:

import numpy as np
np.random.seed(123)
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras.datasets import mnist
(X_train,y_train),(X_test,y_test) = mnist.load_data()
print X_train.shape
from matplotlib import pyplot as plt
plt.imshow(X_train[0])

Der letzte Satz zeigt nichts an. Ich habe diese Codes ohne Änderung aus einem Tutorial kopiert. Und mit dem Backend von Matplotlib auf meinem Computer stimmt nichts. Ich habe das durch den folgenden Code getestet.

import matplotlib.pyplot as plt

data = [[0, 0.25], [0.5, 0.75]]

fig, ax = plt.subplots()
im = ax.imshow(data, cmap=plt.get_cmap('hot'), interpolation='nearest',
               vmin=0, vmax=1)
fig.colorbar(im)
plt.show()

Und dann habe ich so ein Bild bekommen:  enter image description here


Außerdem kann ich X_train [0] drucken lassen und es scheint nichts auszusetzen.
Was könnte der Grund dafür sein? Warum zeigte die Funktion imshow () in meinem ersten Code nichts an?

18
Yu Gu

Die Lösung war so einfach wie das Hinzufügen von plt.show() am Ende des Code-Snippets:

import numpy as np
np.random.seed(123)
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras.datasets import mnist
(X_train,y_train),(X_test,y_test) = mnist.load_data()
print X_train.shape
from matplotlib import pyplot as plt
plt.imshow(X_train[0])
plt.show()
57
Marcin Możejko

Sie denken, dass plt.imshow ein Bild genauso wie plt.show für Sie druckt? Eigentlich nicht, plt.imshow zeigt kein Bild, dieses Kommando beendet einfach das Bild, anstatt es zu drucken. Wenn Sie sie ausdrucken möchten, müssen Sie Folgendes hinzufügen: plt.show, um dieses Bild für Sie anzuzeigen. 

8
adaxi

plt.imgshow zeigt das Bild auf den Achsen an. Wenn Sie jedoch mehrere Bilder anzeigen möchten, verwenden Sie show(), um die Abbildung zu beenden. Das nächste Beispiel zeigt zwei Figuren:

import numpy as np
from keras.datasets import mnist
(X_train,y_train),(X_test,y_test) = mnist.load_data()
from matplotlib import pyplot as plt
plt.imshow(X_train[0])
plt.show()
plt.imshow(X_train[1])
plt.show()

Wenn Sie in Google Colab die Methode show() aus dem vorherigen Beispiel auskommentieren, wird nur ein einzelnes Bild angezeigt (das spätere mit X_train[1] verbundene Bild).

Hier ist der Inhalt aus der Hilfe:

plt.show(*args, **kw)
        Display a figure.
        When running in ipython with its pylab mode, display all
        figures and return to the ipython Prompt.

        In non-interactive mode, display all figures and block until
        the figures have been closed; in interactive mode it has no
        effect unless figures were created prior to a change from
        non-interactive to interactive mode (not recommended).  In
        that case it displays the figures but does not block.

        A single experimental keyword argument, *block*, may be
        set to True or False to override the blocking behavior
        described above.



plt.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, Origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, hold=None, data=None, **kwargs)
        Display an image on the axes.

Parameters
----------
X : array_like, shape (n, m) or (n, m, 3) or (n, m, 4)
    Display the image in `X` to current axes.  `X` may be an
    array or a PIL image. If `X` is an array, it
    can have the following shapes and types:

    - MxN -- values to be mapped (float or int)
    - MxNx3 -- RGB (float or uint8)
    - MxNx4 -- RGBA (float or uint8)

    The value for each component of MxNx3 and MxNx4 float arrays
    should be in the range 0.0 to 1.0. MxN arrays are mapped
    to colors based on the `norm` (mapping scalar to scalar)
    and the `cmap` (mapping the normed scalar to a color).
0
prosti