卷积神经网络应用--手写数字识别

本文介绍了如何使用Java实现基于卷积神经网络的手写数字识别程序,涉及卷积层、池化层、ReLU激活函数、全连接层和反向传播算法。通过卷积提取图像特征,池化层减少计算量,ReLU增加非线性,全连接层进行分类,反向传播优化权重,以提高识别准确率。
摘要由CSDN通过智能技术生成

  • 设计内容及要求

用IDEA设计一个基于Java的手写数字识别程序,要求能识别0~9之间的数字。

  • 设计思想

对图片的信息进行处理,首先想到的就是卷积神经网络。

我选用了残差网络,由卷积层、池化层、全连接层组成,并用反向传播算法争取让损失函数降到最小,以此提高准确率。

  • 设计原理

3.1 卷积层

我们知道,图像是由一个一个像素点组成的,要做图像处理,首先考虑的就是对像素点的处理。我们把像素点的颜色深度称为灰度值,把对像素点的处理转为对灰度值的处理。

如图3.1所示,一个常规的x是方方正正的,计算机很容易识别出来,但人们日常手写时,难免会有局部加粗,一定角度倾斜等情况,这时候就需要用到卷积神经网络。

图3.1

我们像图3.2那样提取出x的特征

图3.2

把这三个特征图像转为灰度值矩阵

       

图3.3

图3.3中这三个灰度值矩阵称为特征提取器(过滤器)filter。假设要提取某一个特征,只需要将该过滤器与原图像的灰度值矩阵相卷积(这里设步长为1),若得到了一个全1矩阵,则说明原图像匹配该特征。

 

图3.4

再将卷积后的矩阵平均后放入结果矩阵中

     

图3.5

挨个卷积,得到如图3.6所示结果

图3.6

易知,过滤器不同,即可提取出不同的特征

比如垂直边缘检测时,常用矩阵  1  0  -1  来提取特征,如图3.7

1  0  -1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值