4.12 BP神经网络完成手写数字识别
一小节我们将要自己搭建一个BP神经网络来完成手写数字识别的功能,我们使用到的训练集是sklearn中自带的手写数字数据集。首先我们先看一下数据集,如代码4-2所示。
代码4-2:手写数字数据集介绍
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_96_1.jpg?sign=1739476147-FCTVMvzuPfFYHLCzSTZYj4NcVNmHKBoB-0-72d3b31259b63c23d325f5c1a0cbb3b4)
运行结果如下:
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_96_2.jpg?sign=1739476147-eHtQPZNgh8LJLQZlEx7k5GOBWdBbUa3D-0-d8ea486830bf20aaf640aa820d87c5ea)
观察代码4-2所示程序的输出,我们可以发现这个数据集中每个数据的图片是一张8×8的图片,分别对应数字0~9。所以我们可以考虑构建一个输入层为64个神经元的神经网络,64个神经元对应于图片中的64个像素点。假设我们设置一层隐藏层,隐藏层有100个神经元。最后设置一个输出层,我们会把标签转变为独热编码(One-Hot)的格式,数字0~9一共10个状态,所以输出层我们可以设置10个神经元。数字识别网络的结构如图4.26所示。
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_97_1.jpg?sign=1739476147-hcDGqJuz2QkR8jACPZ7jdKoZYS4LMTcJ-0-3dbd267d44719ec7397dfa8ee814607a)
图4.26 数字识别网络的结构
BP神经网络完成手写数字识别的代码如代码4-3所示。
代码4-3:BP神经网络完成手写数字识别
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_97_2.jpg?sign=1739476147-nz43JoKYx3zSDgALcdUu8QsLAzTsf7VA-0-6d9f3dbdfde062d3eaaf3f83d06f8d09)
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_98_1.jpg?sign=1739476147-HICBQa4PtTpDv77mXm9VSIiDSTINdnpn-0-a9f1e7b535c9f4e402bd6b9070edd499)
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_99_1.jpg?sign=1739476147-visYBRJIhs7uZEjsRZ8FegRgTFnvI8op-0-28503850adf18bb6d0d103a124c1cf2c)
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_100_1.jpg?sign=1739476147-DULSwIrTU8awBbuk7wdrg2rtUcQHefjD-0-422b808337e29e474db092e9ab72759c)
运行结果如下:
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_100_2.jpg?sign=1739476147-2ol0nlgo14nwDBpXJmEHUj5QwbecF8Ud-0-0184a6a02b878d520b9923e673b7b9de)
![](https://epubservercos.yuewen.com/3560BA/20637463908664506/epubprivate/OEBPS/Images/41193_101_1.jpg?sign=1739476147-l6XAHrweI9imbOuShW1o7iEqy6Wg0lB5-0-4c36ea87064df2be96f8f9dca89fba7e)