共计 1548 个字符,预计需要花费 4 分钟才能阅读完成。
MNIST 数据集介绍
MNIST 数据集官网:http://yann.lecun.com/exdb/mnist/
MNIST 数据库是非常经典的一个数据集,就像你学编程起初写一个“Hello Word”的程序一样,学 Deep Learning 你就会写识别 MNIST 数据集的 Model。
MNIST 数据集是由 0〜9 手写数字图片和数字标签所组成的,由 60000 个训练样本和 10000 个测试样本组成,每个样本都是一张 28 * 28 像素的灰度手写数字图片。如下图所示。
MNIST 数据库一共有四个文件案,分别为
1. train-images-idx3-ubyte.gz:训练集图片(9912422 字节),55000 张训练集,5000 张验证集
2. train-labels-idx1-ubyte.gz:训练集图片对应的标签(28881 字节),
3. t10k-images-idx3-ubyte .gz:测试集图片(1648877 字节),10000 张图片
4. t10k-labels-idx1-ubyte.gz:测试集图片对应的标签(4542 字节)
图片是指 0〜9 手写数字图片,而标签则是对应该图片之实际数字。
MNIST 数据集下载及可视化
TensorFlow 提供了一个库可以对 MNIST 数据集进行下载和解压。具体的是使用 TensorFlow 中 input_data.py 脚本来读取数据及标签,使用这种方式时,可以不用事先下载好数据集,它会自动下载并存放到你指定的位置。具体程序如下所示:
#!/usr/bin/env python | |
# -*- coding:utf-8 -*- | |
import tensorflow as tf | |
from tensorflow.examples.tutorials.mnist import input_data | |
import matplotlib.pyplot as plt | |
# MNIST_data 指的是存放数据的文件夹路径,one_hot=True 为采用 one_hot 的编码方式编码标签 | |
mnist = input_data.read_data_sets('../datasets/MNIST_data/', one_hot=True) | |
# load data | |
train_X = mnist.train.images | |
train_Y = mnist.train.labels | |
print(train_X.shape, train_Y.shape) # 输出训练集样本和标签的大小 | |
# 查看数据,例如训练集中第一个样本的内容和标签 | |
print(train_X[0]) # 是一个包含 784 个元素且值在 [0,1] 之间的向量 | |
print(train_Y[0]) | |
# 可视化样本,下面是输出了训练集中前 4 个样本 | |
fig, ax = plt.subplots(nrows=2, ncols=2, sharex='all', sharey='all') | |
ax = ax.flatten() | |
for i in range(4): | |
img = train_X[i].reshape(28, 28) | |
# ax[i].imshow(img,cmap='Greys') | |
ax[i].imshow(img) | |
ax[0].set_xticks([]) | |
ax[0].set_yticks([]) | |
plt.tight_layout() | |
plt.show() |
运行结果为:
输出训练样本和标签的大小 | |
(55000, 784) (55000, 10) | |
查看第一个样本的数据(数据很多,做了部分省略):[0. 0. 0. 0.3803922 0.37647063 0.3019608 | |
0.46274513 0.2392157 0. 0. 0. 0.] | |
print("查看第一个样本的标签"):[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.] |
训练集中前 4 个样本图片显示:
计算机视觉联盟 报道 | 公众号 CVLianMeng
正文完