BP神经网络对09数字识别.docx
- 文档编号:26041853
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:8
- 大小:484.40KB
BP神经网络对09数字识别.docx
《BP神经网络对09数字识别.docx》由会员分享,可在线阅读,更多相关《BP神经网络对09数字识别.docx(8页珍藏版)》请在冰豆网上搜索。
BP神经网络对09数字识别
3.编程实现BP网络,并利用该程序实现数字(0-9)图片的识别。
解:
采用BP进展数字(0-9)图片的识别,并使用MATLAB编程实现。
BP算法原理:
输入学习样本,使用反向传播算法对网络的权值和偏差进展反复的调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。
1)算法步骤:
1.利用BP神经网络对阿拉伯数字进展识别前,应先对阿拉伯数字位图样本进展预处理,即先将256色位图转为灰度图,然后二值化,最后进展归一化处理,然后进展特征向量提取。
大小为20×20像素。
图像是二值图。
下一步建立神经网络,如图1所示。
2.建立BP网络,训练BP网络。
本设计采用40个训练样本训练BP网络。
训练流程如下:
3.训练完BP网络,就可以用数据进展识别。
识别流程图如下。
图3数字识别流程
2)matlab代码
%预处理
clearall;
forpcolum=0:
39
p1=ones(30,30);%建立全为1的样本矩阵
m=strcat(‘C:
\Users\91082\Desktop\yangben\num\’,int2str(pcolum),’.jpg’);
I=imread(m);%循环读入0-39个样本数字文件
[m,n]=find(I1==0);
rowmin=min(m);
rowmax=max(m);
colummin=min(n);
colummax=max(n);
I2=I1(rowmin:
rowmax,colummin:
colummax);%截取是入图像中的数字局部
rate=30/max(size(I2));
I3=imresize(I2,rate);%对输入文件变尺寸处理
[I,j]=size(I3);
row=round((30-i)/2);
colum=round((30-j)/2);
p1(row+1:
row+I,colum+1:
colum+j)=I3;%建立起30*30的矩阵
p1=-1*p1+ones(30,30);%反色处理
forhh=1:
30
p((hh-1)*30+1:
(hh-1)*30+30,pcolum+1)=p1(hh,1:
30);
end%将处理的源样本输入供神经网络训练的样本
%pcolum是样本数循环变量
switchpcolum
case{0,10,20,30}
t(pcolum+1)=0;%数字0
case{1,11,21,31}
t(pcolum+1)=1;%数字1
case{2,12,22,32}
t(pcolum+1)=2;%数字2
case{3,13,23,33}
t(pcolum+1)=3;%数字3
case{4,14,24,34}
t(pcolum+1)=4;%数字4
case{5,15,25,35}
t(pcolum+1)=5;%数字5
case{6,16,26,36}
t(pcolum+1)=6;%数字6
case{7,17,27,37}
t(pcolum+1)=7;%数字7
case{8,18,28,38}
t(pcolum+1)=8;%数字8
case{9,19,29,39}
t(pcolum+1)=9;%数字9
end%建立与训练样本对应的输出值t
end
save51ETpt;
%训练网络代码
clearall;
load51ETpt;%加载样本
pr(1:
900,1)=0;
pr(1:
900,2)=1;
net=newff(pr,[251],{'logsig''purelin'},'traingdx','learngdm');
%创建BP网络
net.trainParam.epochs=3000;%设置训练步数
net.trainParam.goal=0.005;%设置训练目标
net.trainParam.show=10;%设置训练显示格数
net.trainParam.lr=0.05;%设置训练学习率
net=train(net,p,t);%训练BP网络
saveET51netnet;
%识别0-9过程
clearall
form=0:
9
c=m;
%m=input('请输入测试样本(C:
\Users\91082\Desktop\yangben\try\):
');
I=strcat('C:
\Users\91082\Desktop\yangben\try\',int2str(m),'.jpg');
U=imread(I);
imtool(U);%通过键盘输入添加试验样本
loadET51netnet;%加载以训练好的BP神经网络
p=zeros(900,1);%建立输入样本的空矩阵
p1=ones(30,30);%建立临时存放样本的30*30的矩阵
[m,n]=find(I1==0);
rowmin=min(m);
rowmax=max(m);
colummin=min(n);
colummax=max(n);
I2=I1(rowmin:
rowmax,colummin:
colummax);%截取是入图像中的数字局部
rate=30/max(size(I2));
I3=imresize(I2,rate);%对输入文件变尺寸处理
[i,j]=size(I3);
row=round((30-i)/2);
colum=round((30-j)/2);
p1(row+1:
row+i,colum+1:
colum+j)=I3;%建立起30*30的矩阵
p1=-1*p1+ones(30,30);%反色处理
forhh=1:
30
p((hh-1)*30+1:
(hh-1)*30+30,1)=p1(hh,1:
30);
end%将处理的源样本输入供神经网络训练的样本
x=sim(net,p);%测试网络
x=round(x);%输出网络识别结果
fprintf('第%d图片是数字:
%d\n',c,x)
end
3)运行结果与分析
训练网络结果如如下图:
由图可知,训练70次就达到训练目标。
输入识别的0-9图片如下:
将上图10X测试图片进过识别程序,输出结果如下:
通过命令行结果可知,将测试图片与结果比拟,这十X图片全部识别成功。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BP 神经网络 09 数字 识别