数据集
Last updated
Last updated
MNIST提供两组数据,分别是training set和testing set. 作者在这一节中没有使用testing set,并且将training set进一步分成用于训练神经网络的数据和用于验证神经网络的数据。
网上提供的直接通过tensorflow下载数据的方法,试了都是各种报错。
书上没有直接使用tensorflow的接口下载数据,而是先下载好数据的压缩包link。代码读取压缩包并解压出数据。
gzip: 文件压缩与解压缩 pickle: 用于python特有的类型和python的数据类型间进行转换 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
从数据集文件解压
读出数据
数据分为三个tuple:tuple(训练数据)、tuple(验证数据)、tuple(测试数据) 每个tuple又分成2个np.array:(array(样本特征inputs), array(样本标签results)) 样本特征inputs是m个数组,每个数组代表一个样本:inputs = [x1,x2, ..., xn] 每一样本xi是包含784个元素的向量:xi = [xi1, xi2, ..., xi784] 向量中的每个元素都是[0,1]的任意实数:xij in [0,1] 向量特征outputs是包含m个元素的向量:outputs = [y1,y2,...,ym] 向量是的每个元素是[0,9]的整数数值:yi in [0,9]
将数据转换为算法需要的格式 训练数据: 转换后的训练数据为一个list。 list中包含m个元组:[tuple(),tuple(), ... ,tuple()] 每个元组中包含一个样本和它对应的标签: 样本是指原始数据为行量,这里对它做了转置,成了一个列向量,或者说是784*1的矩阵:
样本标签是指将yi向量化,并且也是列向量,或者说是10*1的矩阵。例如yi=5转化为:
验证数据: 转换后的验证数据为一个list。 list中包含m个元组:[tuple(),tuple(), ... ,tuple()] 每个元组中包含一个样本和它对应的标签yi: 的格式与训练数据的相同。 yi则是仍然后原始数据的yi 测试数据: 在这一章中暂时不需要使用测试数据。 也可以先把测试数据准备好了。 转换的目标格式和验证数据相同。
来源
数量
名称
作用
MNIST training set
50000
训练数据集
训练神经网络
MNIST training set
10000
验证数据集
验证神经网络
MNIST testing set
10000
测试数据集
本章未使用