数据集

数据集说明

MNIST提供两组数据,分别是training set和testing set. 作者在这一节中没有使用testing set,并且将training set进一步分成用于训练神经网络的数据和用于验证神经网络的数据。

来源

数量

名称

作用

MNIST training set

50000

训练数据集

训练神经网络

MNIST training set

10000

验证数据集

验证神经网络

MNIST testing set

10000

测试数据集

本章未使用

什么是验证数据集

下载数据集

网上提供的直接通过tensorflow下载数据的方法,试了都是各种报错。

书上没有直接使用tensorflow的接口下载数据,而是先下载好数据的压缩包link。代码读取压缩包并解压出数据。

相关代码

gzip: 文件压缩与解压缩 pickle: 用于python特有的类型和python的数据类型间进行转换 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

  1. 从数据集文件解压

    f = gzip.open('mnist.pkl.gz', 'rb')
  2. 读出数据

    pickle.load(f,encoding='bytes')
  3. 将数据转换为算法需要的格式 训练数据: 转换后的训练数据为一个list。 list中包含m个元组:[tuple(),tuple(), ... ,tuple()] 每个元组中包含一个样本xiTx_i^T和它对应的标签yi\vec y_i(xiT,yi)(x_i^T, \vec y_i) 样本xiTx_i^T是指原始数据为行量,这里对它做了转置,成了一个列向量,或者说是784*1的矩阵:

    xiT=[[xi1][xi2][xi784]]x_i^T = \begin{bmatrix} [x_{i1}] \\ [x_{i2}] \\ \cdots \\ [x_{i784}] \end{bmatrix}

    样本标签yi\vec y_i是指将yi向量化,并且也是列向量,或者说是10*1的矩阵。例如yi=5转化为:

    yi=[[0][0][0][0][0][1][0][0][0][0]]\vec y_i = \begin{bmatrix} [0] \\ [0] \\ [0] \\ [0] \\ [0] \\ [1] \\ [0] \\ [0] \\ [0] \\ [0] \\ \end{bmatrix}

    验证数据: 转换后的验证数据为一个list。 list中包含m个元组:[tuple(),tuple(), ... ,tuple()] 每个元组中包含一个样本xiTx_i^T和它对应的标签yi:(xiT,yi)(x_i^T, y_i) xiTx_i^T的格式与训练数据的xiTx_i^T相同。 yi则是仍然后原始数据的yi 测试数据: 在这一章中暂时不需要使用测试数据。 也可以先把测试数据准备好了。 转换的目标格式和验证数据相同。

Last updated