斋藤康毅 陆宇杰 《深度学习入门 基于Python的理论与实现》
matplotlib==3.6.2
numpy==1.23.4
tensorflow==2.10.0(只作为导入mnist数据集使用)
只通过Python和numpy库,从数学推Lenet5中的全连接层,卷积层,激活函数,优化函数.搭建Lenet5卷积神经网络,在手写字符识别上应用.
在lecun论文的基础上,使用了softmax和cross-entropy损失函数,使用BN进行数据标准化,Adam优化器进行更快的梯度迭代方向,
使用Img2Col其作用就是将卷积通过矩阵乘法来计算,从而能在计算过程中将需要计算的特征子矩阵存放在连续的内存中,
有利于一次将所需要计算的数据直接按照需要的格式取出进行计算,这样便减少了内存访问的次数,从而减小了计算的整体时间使浮点数运算更快.
tensorflow 只作为导入mnist数据集,Lecun论文中采用3232的输入图片不同,mnist采用2828的图片作为输入;Lecun采用55的卷积核,
本代码采用33的卷积核.
进行10轮迭代的训练,训练完毕后可以将参数进行保存,可以达到98%的准确率的识别.