大数据文摘出品
作者:蒋宝尚
小伙伴们大家好呀~~用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 structtrain_num=50000valid_num=10000test_num=10000with open(train_img_path,'rb') as f:struct.unpack('>4i',f.read(16))tmp_img=np.fromfile(f,dtype=np.uint8).reshape(-1,28*28)tr

本文介绍了如何使用Numpy读取和处理MNIST手写数据集,将其应用于神经网络训练。讲解了数据的二进制格式、数据预处理、模型训练、梯度计算和验证集的使用,最终达到了约90%的验证准确率。
最低0.47元/天 解锁文章
887

被折叠的 条评论
为什么被折叠?



