BP神经网络对09数字识别.docx

上传人:b****6 文档编号:13413341 上传时间:2023-06-14 格式:DOCX 页数:8 大小:484.40KB
下载 相关 举报
BP神经网络对09数字识别.docx_第1页
第1页 / 共8页
BP神经网络对09数字识别.docx_第2页
第2页 / 共8页
BP神经网络对09数字识别.docx_第3页
第3页 / 共8页
BP神经网络对09数字识别.docx_第4页
第4页 / 共8页
BP神经网络对09数字识别.docx_第5页
第5页 / 共8页
BP神经网络对09数字识别.docx_第6页
第6页 / 共8页
BP神经网络对09数字识别.docx_第7页
第7页 / 共8页
BP神经网络对09数字识别.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

BP神经网络对09数字识别.docx

《BP神经网络对09数字识别.docx》由会员分享,可在线阅读,更多相关《BP神经网络对09数字识别.docx(8页珍藏版)》请在冰点文库上搜索。

BP神经网络对09数字识别.docx

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图片全部识别成功。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2