MNIST数据集是机器学习领域中非常经典的一个数据集,由60000个训练样本和10000个测试样本组成,每个样本都是一张28*28像素的灰度手写数字图片。
直接下载下来的数据是无法通过解压或者应用程序打开的,因为这些文件不是任何标准的图像格式而是以字节的形式进行存储的,所以必须编写程序来打开它。
使用TensorFlow中input_data.py脚本来读取数据及标签,使用这种方式时,可以不用事先下载好数据集,它会自动下载并存放到你指定的位置。
fromtensorflow.examples.tutorials.mnistimportinput_dataimportmatplotlib.pyplotaspltmnist=input_data.read_data_sets('MNIST_data',one_hot=True)#MNIST_data指的是存放数据的文件夹路径,one_hot=True为采用one_hot的编码方式编码标签#loaddatatrain_X=mnist.train.images#训练集样本validation_X=mnist.validation.images#验证集样本test_X=mnist.test.images#测试集样本#labelstrain_Y=mnist.train.labels#训练集标签validation_Y=mnist.validation.labels#验证集标签test_Y=mnist.test.labels#测试集标签print(train_X.shape,train_Y.shape)#输出训练集样本和标签的大小#查看数据,例如训练集中第一个样本的内容和标签print(train_X[0])#是一个包含784个元素且值在[0,1]之间的向量print(train_Y[0])#可视化样本,下面是输出了训练集中前20个样本fig,ax=plt.subplots(nrows=4,ncols=5,sharex='all',sharey='all')ax=ax.flatten()foriinrange(20):img=train_X[i].reshape(28,28)ax[i].imshow(img,cmap='Greys')ax[0].set_xticks([])ax[0].set_yticks([])plt.tight_layout()plt.show()输出为
(55000,784)(55000,10)#训练集样本和标签的大小第一个样本的内容输出较多,省略[0.0.0.0.0.0.0.1.0.0.]#第一个样本的标签,one-hot编码,只有对应位置的值是1,其余都是0