4.12 BP神经网络完成手写数字识别
一小节我们将要自己搭建一个BP神经网络来完成手写数字识别的功能,我们使用到的训练集是sklearn中自带的手写数字数据集。首先我们先看一下数据集,如代码4-2所示。
代码4-2:手写数字数据集介绍

运行结果如下:

观察代码4-2所示程序的输出,我们可以发现这个数据集中每个数据的图片是一张8×8的图片,分别对应数字0~9。所以我们可以考虑构建一个输入层为64个神经元的神经网络,64个神经元对应于图片中的64个像素点。假设我们设置一层隐藏层,隐藏层有100个神经元。最后设置一个输出层,我们会把标签转变为独热编码(One-Hot)的格式,数字0~9一共10个状态,所以输出层我们可以设置10个神经元。数字识别网络的结构如图4.26所示。

图4.26 数字识别网络的结构
BP神经网络完成手写数字识别的代码如代码4-3所示。
代码4-3:BP神经网络完成手写数字识别




运行结果如下:

