神经网络-minist数据集

一、数据集介绍

MNIST是一个非常有名的手写体数字识别数据集,在很多资料中,这个数据集都会被用作深度学习的入门样例。
数据集下载网址:http://yann.lecun.com/exdb/mnist/

这里面包含7万张黑底白字手写数字图片,其中55000张为训练集,5000张为验证集,10000张为测试集。每张图片大小为 28x28 像素,图片中纯黑色的像素值为0,纯白色像素值为1。

二、数据集获取

1
2
3
from tensorflow.examples.tutorials.mnist import input_data

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

下载后会有以下四个文件,其中上面两个是测试集,下面两个是训练集。image表示图像,Lable是标签,也就是表示的数字。

三、数据集格式说明

3.1 数据分类

自动下载方式的数据集被分成如下图所示的三部分。这样的切分很重要,在机器学习模型设计时必须有一个单独的测试数据集不用于训练,而是用来评估这个模型的性能,从而更加容易把设计的模型推广到其他数据集上

3.2 数据展开

正如前面提到的一样,每一个MNIST数据单元有两部分组成:一张包含手写数字的图片和一个对应的标签。我们把这些图片设为”X”,把这些标签设为”Y”。训练数据集和测试数据集都包含X和Y,比如训练数据集的图片是 mnist.train.images ,训练数据集的标签是 mnist.train.labels。

  • mnist.train.images里面的每一张图片并不是28*28格式储存,而是采用一维784长度的向量,获取第一张图片代码为:mnist.train.images[0] 。
  • mnist.train.labels里面每一张图片的label是一维10长度的向量,只有对应数字的下表才会为1,比如当前图片是3,则label为:$[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]$

四、数据集图片显示

看不到图片的样子总是很难受,由于数据集和其他的图片不一样,不能直接查看,需要转换一下才能查看。下面使用python代码将minist转为jpg并显示。

1
2
3
4
5
6
7
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as plt # plt 用于显示图片

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

print(mnist.train.images[1])

通过print的输出结果可知,图片被保存成为了一个一维的784长度的数组,下面需要将其reshape成28*28的格式的数组,numpy库可以做到,但是这里直接使用tensorflow内部的reshape函数。

1
2
3
4
5
6
7
8
9
10
11
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as plt # plt 用于显示图片

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

aaa = tf.reshape(mnist.train.images[1],[28,28])

with tf.Session() as sess:
plt.imshow(sess.run(aaa))
plt.show()

输出结果如下图所示:

下面转换成bmp格式图片进行保存

1
2
3
4
5
6
7
8
9
10
11
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.image as mpimg # mpimg 用于读取图片

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

aaa = tf.reshape(mnist.train.images[1],[28,28])

with tf.Session() as sess:
image1 = sess.run(aaa)
mpimg.imsave("aaa.jpg",image1)

保存结果为:

五、mnist相关使用函数说明

  • mnist.train.images:读取图片,是一个二维数组,每张图片占一行(784个位置)
  • mnist.train.labels:读取标签,是一个二维数组,每张图片标签占一行(10个位置)
  • mnist.train.next_batch(size):批处理,可以一次性返回指定数量的图片和图片标签,使用方法:
    1
    batch_x, batch_y = mnist.train.next_batch(batch_size=batch_size)

六、参考文档

TensorFlow框架(3)之MNIST机器学习入门
Tensorflow学习之MNIST数据集

-------------本文结束感谢您的阅读-------------
0%