使用 matplotlib 显示 MNIST 图像
Display MNIST image using matplotlib
我正在使用 tensorflow 导入一些 MNIST 输入数据。我遵循了本教程...https://www.tensorflow.org/get_started/mnist/beginners
我是这样导入的...
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
我希望能够显示训练集中的任何图像。我知道图像的位置是 mnist.train.images
,所以我尝试访问第一张图像并像这样显示它...
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')
我尝试将图像转换为 28 x 28 numpy 数组,因为我知道每个图像都是 28 x 28 像素。
但是,当我 运行 我得到的代码如下...
显然我做错了什么。当我打印出矩阵时,一切看起来都不错,但我认为我错误地重塑了它。
您正在将浮点数组 (as described in the docs) 转换为 uint8
,如果它们不是 1.0
,则将它们截断为 0。您应该将它们四舍五入或将它们用作浮点数或乘以 255。
我不确定,为什么你看不到白色背景,但我还是建议使用定义明确的灰度。
以下代码显示了从用于训练神经网络的 MNIST 数字数据库中显示的示例图像。它使用了来自 stackflow 的各种代码片段并避免了 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()
导致我需要显示 MNINST 图像的张量流神经网络位于:https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/mnist/mnist_deep.py
因为我只编程了 Python 两个小时,所以我可能犯了一些 newby 错误。欢迎指正。
这是使用 matplotlib 显示图像的完整代码
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)
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()
对于那些想与 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()
我正在使用 tensorflow 导入一些 MNIST 输入数据。我遵循了本教程...https://www.tensorflow.org/get_started/mnist/beginners
我是这样导入的...
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
我希望能够显示训练集中的任何图像。我知道图像的位置是 mnist.train.images
,所以我尝试访问第一张图像并像这样显示它...
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')
我尝试将图像转换为 28 x 28 numpy 数组,因为我知道每个图像都是 28 x 28 像素。
但是,当我 运行 我得到的代码如下...
显然我做错了什么。当我打印出矩阵时,一切看起来都不错,但我认为我错误地重塑了它。
您正在将浮点数组 (as described in the docs) 转换为 uint8
,如果它们不是 1.0
,则将它们截断为 0。您应该将它们四舍五入或将它们用作浮点数或乘以 255。
我不确定,为什么你看不到白色背景,但我还是建议使用定义明确的灰度。
以下代码显示了从用于训练神经网络的 MNIST 数字数据库中显示的示例图像。它使用了来自 stackflow 的各种代码片段并避免了 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()
导致我需要显示 MNINST 图像的张量流神经网络位于:https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/mnist/mnist_deep.py
因为我只编程了 Python 两个小时,所以我可能犯了一些 newby 错误。欢迎指正。
这是使用 matplotlib 显示图像的完整代码
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)
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()
对于那些想与 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()