Tensorflow中MNIST数据集的可视化
Tensorflow中MNIST数据集的可视化
在学习Tensorflow深度学习的过程中首先学习的例子就是MNIST数据集,但是在tf中观察他就是一个纯数组.不能给人直观的理解,所以我想将这些数据抓换成图片输出看一下
代码的最终效果
代码分析
导入需要用到的包
#coding=utf-8
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data #用于加载MNIST数据集
import matplotlib.pyplot as plt #用来在ipython中打印图像
import matplotlib.image as mpimg #读取图片
from PIL import Image #用来生成和处理图片
import os #删除中间过程产生的文件
下载和生成数据集
mnist = input_data.read_data_sets("MNIST_data/",one_hot=True)
找到one_hot对应的值
由于one_hot编码只有一个对位位置的值被置为1其他都是0说以找到为1的值就返回
def one_hotshow(lable):
for i in range(10):
if lable[i]==1:
return i
生成图像和打印数据
def savimage(mnistdata):
image1 = mnistdata.reshape([28,28])#首先把一维的数据还原回28*28大小的矩阵
im= Image.new("1", (28, 28))#生成一个28*28大小的新的图片,第一个参数为图片的形式,1代表是黑白图片,后面这个元祖代表图片的大小
for i in range(28):#遍历图片把图片修改每个点像素的值
for j in range(28):
im.putpixel((j,i),(255*image1[i,j],))#MNIST数据集合应该修图片的像素值预处理过,都是小于1的数值所以这里我们把原来的值乘以最大值255
im.save('num1.jpg')#由于在ipython中PIL不能直接输出所以我们先存下然后再输出
lena = mpimg.imread('num1.jpg')
plt.imshow(lena) # 显示图片
plt.axis('off')# 不显示坐标
plt.show()#图片显示
os.remove('num1.jpg')#打印出图片后就删除保存下的文件
调用函数
def testMNist(index):
print one_hotshow(mnist.train.labels[index]) #输出图片对应的数字标签值
image1 =mnist.train.images[index]#获取mnist数据集数据
savimage(image1)
主函数
打印出前100张MNIST对应的图片
for i in range(100):
testMNist(i)