上QQ阅读APP看书,第一时间看更新
1.4.1 MNIST数据集
MNIST数据集(Mixed National Institute of Standards and Technology Database,手写数字识别数据集)是由卷积神经网络之父Yann LeCun所收集的,其数据量不会太大,而且是单色的图像,很适合深度学习的初学者用来练习建立模型、训练、预测。
MNIST数据集共有训练数据60 000项、测试数据10 000项。MNIST数据集中的每一项数据都由image(数字图像)和label(真实的数字)所组成。
Keras已经提供了现成的函数dataset_mnist(),可以帮助我们下载并读取数据。第一次执行dataset_mnist(),程序会检查用户目录下是否已经有MNIST数据集文件,如果还没有,就会自动下载文件。MNIST数据文件下载后会存储在用户个人文件夹中。以Windows为例,因为笔者的用户名称是Daniel,所以下载后的数据集文件会存在目录C:\Users\Daniel\Documents\.keras\datasets中,文件名为mnist.npz。如果在线下载太慢,可以通过离线下载方式将文件下载后存放在此目录。mnist.npz数据集包含以下四个文件。
- train-images-idx3-ubyte.gz:训练集图像。
- train-labels-idx1-ubtyte.gz:训练集标签。
- t10k-images-idx3-ubyte.gz:测试集图像。
- t10k-labels-idx1-ubyte.gz:测试集标签。
我们将MNIST数据集读入R语言中,分别查看这4个数据集的维度大小。
> # 读入MNIST数据集 > library(keras) > c(c(x_train_image, y_train_label), c(x_test_image, y_test_label)) %<-% dataset_mnist() > # 查看数据集维度 > cat('train_data=',dim(x_train_image)) train_data= 60000 28 28 > cat('test_data=',dim(x_test_image)) test_data= 10000 28 28 > cat('y_train_label:',dim(y_train_label)) y_train_label: 60000 > cat('y_test_label:',dim(y_test_label)) y_test_label: 10000
从以上执行结果可知,四个数据集大小分别如下。
- x_train_image:60 000张28×28像素的训练数据图像。
- x_test_image:10 000张28×28像素的测试数据图像。
- y_train_label:60 000个训练数字0~9标签。
- y_test_label:10 000个测试数字0~9标签。
运行以下命令,绘制x_train_image数据集的前9张图像,标题用y_train_label对应的数字标签显示。结果如图1-4所示。
> # 显示MNIST数据的image和label > par(mfrow=c(3,3)) > par(mar=c(0, 0, 1.5, 0), xaxs='i', yaxs='i') > for(i in 1:9){ + plot(as.raster(x_train_image[i,,],max = 255)) + title(main = paste0('label=', y_train_label[i])) + } > par(mfrow=c(1,1))
从图1-4可知,x_train_image训练集的第1个数字图像是5,数据标签为5。
图1-4 显示MNIST数据的image和label