Python基于深度学习的手写数字识别

本文介绍了一个基于Python和深度学习的MNIST手写数字识别项目,使用CNN网络模型,包括特征提取、分类网络设计,训练方法及实验结果分析,实现了98%以上的识别准确率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.代码的功能和运行方法

代码可以实现任意数字0-9的识别,只需要将图片载入网络,或者用鼠标绘画,都可以预测其数字。
1.首先下载压缩包所有文件,安装pytorch,pytorch的安装教程可以在pytorch官网找到(https://pytorch.org/)。
2.然后打开编辑器(spyder或者visual studio code或者直接打开cmd进入python模式)
3.载入四个代码文件:cnn2.py网络结构;mnist.py整个训练和评估网络;main.py小应用主程序;MyMnistWindow.py程序框架,内部程序。
4.mnist.py中,两处root改为下载的mnist文件夹所在位置
5.MyMnistWindow.py中,第111行torch.load改为下载的mnist文件夹下minst_cnn_model.pth文件所在位置
6.通过编译器运行mnist.py文件,可以通过mnist训练集训练整个网络
7.通过编译器运行main.py文件,可以实现简单人机交互,手写数字,点击“识别”进行识别。
8.手写数字时尽量写在正中间。

2. 网络设计

2.1 CNN(特征提取网络+分类网络)
随着深度学习的迅猛发展,其应用也越来越广泛,特别是在视觉识别、语音识别和自然语言处理等很多领域都表现出色。卷积神经网络(Convolutional Neural Network,CNN)作为深度学习中应用最广泛的网络模型之一,也得到了越来越多的关注和研究。事实上,CNN作为一项经典的机器学习算法,早在20世纪80年代就已被提出并展开一定的研究。但是,在当时硬件运算能力有限、缺乏有效训练数据等因素的影响下,人们难以训练不产生过拟合情形下的高性能深度卷积神经网络模型。所以,当时CNN的一个经典应用场景就是用于识别银行支票上的手写数字,并且已实际应用。伴随着计算机硬件和大数据技术的不断进步,人们也尝试开发不同的方法来解决深度CNN训练中所遇到的困难,特别是Kizhesky 等专家提出了一种经典的CNN架构,论证了深度结构在特征提取问题上的潜力,并在图像识别任务上取得了重大突破,热起了深度结构研究的浪潮。而卷积神经网络作为一种已经存在的、有一定应用案例的深度结构,也重新回到人们的视野中,得以进一步研究和应用。
而本次实验就是基于CNN实现的。
2.1.1基本架构
卷积神经网络基本架构包括特征抽取器和分类器。特征抽取器通常由若干个卷积层和池化层叠加构成,卷积和池化过程不断将特征图缩小,同时会导致特征图数量的增多。特征抽取器后面一般连接分类器,通常由一个多层感知机构成。特别地,在最后一个特征抽取器后面,将所有的特征图展开并排列成一个向量得到特征向量,并作为后层分类器的输入。本次实验卷积层采用的是四层卷积,两层最大池化,卷积之后用批标准化加快收敛速度,用ReLU激活函数增加非线性,最后用全连接层输出分类得分。

2.1.2卷积层
卷积运算的基本操作是将卷积核与图像的对应区域进行卷积得到一个值,通过在图像上不断移动卷积核和来计算卷积值,进而完成对整幅图像的卷积运算。在卷积神经网络中,卷积层不仅涉及一般的图像卷积,还涉及深度和步长的概念。深度对应于同一个区域的神经元个数,即有几个卷积核对同一块区域进行卷积运算;步长对应于卷积核移动多少个像素,即前后距离的远近程度。
2.1.2.1局部感知
人对外界的认知一般可以归纳为从局部到全局的过程,而图像的像素空间联系也是局部间的相关性强,远距离的相关性弱。因此,卷积神经网络的每个神经元实际上只需关注图像局部的感知,对图像全局的感知可通过更高层综合局部信息来获得,这也说明了卷积神经网络部分连通的思想。类似于生物学中的视觉系统结构,视觉皮层的神经元用于局部接收信息,即这些神经元只响应某些特定区域的刺激,呈现出部分连通的特点。
2.1.2.2参数共享
局部感知过程假设每个神经元都对应100个参数,共106个神经元,则参数共有100×106个,依然是一个很大的数字。如果这106个神经元的100个参数相等,那么参数个数就减少为100,即每个神经元用同样的卷积核执行卷积操作,这将大大降低运算量。因不论隐层的神经元个数有多少,两层间的连接只要100个参数,这也说明了参数共享的意义。
2.1.2.3多核卷积
如果10×10维数的卷积核都相同,那么只能提取图像的一种特征,局限性很明显。可以考虑通过增加卷积核来提高特征类别,例如选择16个不同的卷积核用于学习16种特征。其中,应用卷积核到图像执行卷积操作,可得到图像的不同特征,统称为特征图(Feature Map),所以16个不同的卷积核就有16个特征图

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值