大数据文摘出品
作者:蒋宝尚
小伙伴们大家好呀~~用Numpy搭建神经网络,我们已经来到第三期了。第一期文摘菌教大家如何用Numpy搭建一个简单的神经网络,完成了前馈部分。第二期为大家带来了梯度下降相关的知识点。
这一期,教大家如何读取数据集,以及将数据集用于神经网络的训练,和上两期一样,这次依然用Numpy实现。在开始代码之前,文摘菌先带大家看看今天我们使用的数据集。
数据集介绍
数据集采用著名的MNIST的手写数据集。根据官网介绍,这个数据集有70000个样本,包括60000个训练样本,10000个测试样本。
数据集下载下来之后,文件分为4个部分,分别是:训练集图片、训练集标签、测试集图片、测试集标签。这些数据以二进制的格式储存。
其中,训练集图片文件的前16个字节是储存了图片的个数,行数以及列数等。训练集标签文件前8个字节储存了图片标签的个数等。测试集的两个文件同理。
文摘菌下载好的文件存储地址
读取数据
train_img_path=r'C:\Users\Dell\MNIST\train-images.idx3-ubyte'
train_lab_path=r'C:\Users\Dell\MNIST\train-labels.idx1-ubyte'
test_img_path=r'C:\Users\Dell\MNIST\t10k-images.idx3-ubyte'
test_lab_path=r'C:\Users\Dell\MNIST\t10k-labels.idx1-ubyte'
根据文件在本地解压后的储存地址,生成四个地址,上面代码中‘r’是转义字符,因为\在Python中有特殊的用法,所以需用转义字符明确文件地址。
为了让后面的模型表现更好,我们将训练集拆分,拆成50000个训练集和10000个验证集。
注:验证集
import struct
train_num=50000
valid_num=10000
test_num=10000
with open(train_img_path,'rb') as f:
struct.unpack('>4i',f.read(16))
tmp_img=np.fromfile(f,dtype=np.