- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字识别主要算法.doc
BP神经网络识别手写数字
图像的预处理
对手写数字图像样本灰度化处理,二值化处理,归一化调整等预处理。其中二值化处理利用greythresh函数得到图像的全局阈值,然后使用im2bw将灰度图像转换为二值图像。
Ibw = im2bw(I1,greythresh(I1));
--Ibw为二值化图像的存储矩阵。
bw2 = edu_imgcrop(Ibw);
%找到图像边界
[y2temp x2temp] = size(bw);
x1=1;
y1=1;
x2=x2temp;
y2=y2temp;
% 找左边空白
cntB=1;
while (sum(bw(:,cntB))==y2temp)
x1=x1+1;
cntB=cntB+1;
end
% 左边
cntB=1;
while (sum(bw(cntB,:))==x2temp)
y1=y1+1;
cntB=cntB+1;
end
% 上边
cntB=x2temp;
while (sum(bw(:,cntB))==y2temp)
x2=x2-1;
cntB=cntB-1;
end
% 下边
cntB=y2temp;
while (sum(bw(cntB,:))==x2temp)
y2=y2-1;
cntB=cntB-1;
end
bw2=imcrop(bw,[x1,y1,(x2-x1),(y2-y1)]);
--对图像进行裁剪,使边框完全贴近字符。
归一化处理将图片归一化为28×28像素点阵图。
特征提取
将经过预处理的后的数字图像中提取最能体现这个字符特点的特征向量,然后提取出训练样本中的特征向量带入BP网络中就可以对网络进行训练。可以采用逐像素特征提取方法提取数字样本的特征向量。归一化后的图像形成一个的布尔矩阵,依次取每列的元素转化为784×1的列矩阵,及数字字符的特征向量。还可以对每幅单个手写体图像进行边缘裁剪后,将裁减后的二值图像转换成5*7即35维的特征向量,转换过程如下:
bw_7050=imresize(bw2,[70,50]);
for cnt=1:7
for cnt2=1:5
Atemp=sum(bw_7050(((cnt*10-9):(cnt*10)),((cnt2*10-9):(cnt2*10))));%10*10box
lett((cnt-1)*5+cnt2)=sum(Atemp);
end
end
lett=((100-lett)/100);
lett=lett;
3.BP神经网络
BP神经网络是一个典型的多层神经网络,它包含了输入层,隐藏层和输出层,隐层可以有一层或多层,每层上的神经元称为节点或单元,它们由可修定的权值(w)互连,除了连接输入单元,每个单元还连接一个偏置(b)。
3.1 输入层神经元个数的确定
将数字图像的特征向量作为神经网络的输入,所以神经网络的输入层神经元个数等于特征向量的维数,即28×28=784个输入神经元。要识别10个数字,所以输出选择为10×1的矩阵,即输出节点数为10,输入为0时,第一个神经元为1,其他为0,;输入数字为1时,第二个神经元为1,其他为0;以此类推。
3.2 隐含层数和神经元个数的确定
隐含层数越多,神经网络的学习速度越慢,所以选3层神经网络。隐含层神经元的个数是根据网络收敛性能的好坏来确定的,在总结大量网络结构的基础上,得到经验公式:s=,其中,n为输入层神经元个数,m为输出层神经元个数,可得隐含层神经元个数为15。
3.3 BP神经网络构造
BP算法由两部分组成:信息的正向传递与误差的反向传播。在正向传递中,输入信息从输入层经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层没有得到期望的输出则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反向修改各层神经元的权值直到达到期望目标。
BP算法属于有监督的学习算法:根据训练样本和期望输出设置合适的权值,不断调整网络连接的权值,使误差达到实际的要求。
网络结构初始化:(784,15,10),innum=784,midnum=15,outnum=10;
权值初始化:
w1=rands(midnum,innum);····· 输入层到隐含层
b1=rands(midnum,1);
W2=rands(midnum,outnum);·······隐含层到输出层
b2=rands(outnum,1);
输出函数:
网络预测输出:y(x)=input_train(:,i)
隐含层输出:y’=
输出层的输出:
梯度下降算法
反向传播学习规则是基于梯度下降算法的,梯度下降算法
文档评论(0)