数据集
Last updated
Last updated
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() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
从数据集文件解压
读出数据
数据分为三个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 测试数据: 在这一章中暂时不需要使用测试数据。 也可以先把测试数据准备好了。 转换的目标格式和验证数据相同。