MNIST多图显示--Python练习

在学习TensorFlow框架时,提到用MNIST手写数字数据库进行练习,为了更直观看下里面的数据到底长啥样,用OpenCV(cv2)中的imshow函数来进行显示。

默认已经安装: numpy、tensorflow、cv2

1--首先是根据Tensorflow官网的方法获得数据库:

1 from tensorflow.examples.tutorials.mnist import input_data
2 mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

现在mnist对象已经拥有MNIST数据库的训练集和测试集。

2--进行单张显示比较容易,如下代码:

 

1 import cv2
2 # display one database image
3 im = mnist.test.images[0].reshape(28, 28)
4 cv2.imshow("demo", im)
5 cv2.waitKey(0)
6 cv2.destroyAllWindows()

 

显示结果为:

3--单张显示太单调(图像大小28x28),可以尝试多张网格排列显示。

  • 起先考虑从数据库中取出100张,然后根据取出顺序确定在哪行哪列,最后合成大图,但根据顺序直接确定该图像位置有点困难
  • 换个思路:先确定网格位置,再从数据库中选取一张插入,似乎简单了许多

 代码如下:

import cv2
import numpy as np

#per row 10 patches, per col 10 patches
BigIm = np.zeros((280, 280))
index = 0
for i in range(10):
    for j in range(10):
        temp = mnist.train.images[index].reshape(28, 28)
        BigIm[28*i:28*(i+1), 28*j:28*(j+1)] = temp
        index += 1

cv2.imshow("demo", BigIm)
cv2.waitKey(0)

结果如下:

 看了数据库的样子,接下来可以愉快地进行深度学习了~

posted @ 2017-11-08 19:59  niokit  阅读(2552)  评论(0编辑  收藏  举报