ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:156.27KB ,
资源ID:18247482      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-18247482.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(人工神经网络1DOC.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

人工神经网络1DOC.docx

1、人工神经网络1DOC人工神经网络BP网络1.BP神经网络逼近函数步骤1:假设频率参数k=1,绘制要逼近的非线性函数的曲线。函数的曲线如图1所示k=1;p=-1:.05:8;t=1+sin(k*pi/4*p);plot(p,t)title(要逼近的非线性函数);xlabel(时间);ylabel(非线性函数);图1要逼近的非线性函数曲线步骤2:网络的建立应用newff()函数建立BP网络结构。隐层神经元数目n可以改变,暂设为n=3,输出层有一个神经元。选择隐层和输出层神经元传递函数分别为tansig函数和purelin函数,网络训练的算法采用Levenberg Marquardt算法trainl

2、m。n=3;net = newff(minmax(p),n,1,tansig purelin,trainlm);对于初始网络,可以应用sim()函数观察网络输出y1=sim(net,p);figure;plot(p,t,-,p,y1,:)title(未训练网络的输出结果);xlabel(时间);ylabel(仿真输出-原函数-);同时绘制网络输出曲线,并与原函数相比较,结果如图2所示。图2未训练网络的输出结果其中 “ ” 代表要逼近的非线性函数曲线;“” 代表未经训练的函数曲线;因为使用newff( )函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目

3、的,每次运行的结果也有时不同。步骤3:网络训练 应用train()函数对网络进行训练之前,需要预先设置网络训练参数。将训练时间设置为50,训练精度设置为0.01,其余参数使用缺省值。训练后得到的误差变化过程如图3所示。 图3net.trainParam.epochs=50; %网络训练步骤设置为50net.trainParam.goal=0.01;%网络训练精度设置为0.01net=train(net,p,t);%开始训练网络TRAINLM, Epoch 0/50, MSE 2.26463/0.01, Gradient 364.666/1e-010TRAINLM, Epoch 9/50, MS

4、E 0.0096751/0.01, Gradient 16.4769/1e-010TRAINLM, Performance goal met.从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度0.01。步骤4: 网络测试 对于训练好的网络进行仿真: y2=sim(net,p);figure;plot(p,t,-,p,y1,:,p,y2, -)title(训练后网络的输出结果);xlabel(时间);ylabel(仿真输出); 绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较, 比较出来的结果如图4所示。图4训练后网络的输出结果其中 “ ” 代

5、表要逼近的非线性函数曲线; “” 代表未经训练的函数曲线; “” 代表经过训练的函数曲线;从图中可以看出,得到的曲线和原始的非线性函数曲线很接近。这说明经过训练后,BP网络对非线性函数的逼近效果比较好。不同频率下的逼近效果改变非线性函数的频率和BP函数隐层神经元的数目,对于函数逼近的效果有一定的影响。网络非线性程度越高,对于BP网络的要求越高,则相同的网络逼近效果要差一些;隐层神经元的数目对于网络逼近效果也有一定影响,一般来说隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。 下面通过改变频率参数和非线性函数的隐层神经元数目来加以比较证明。(1)频率参数设为k=1,当隐层神经元数目分别取

6、n=3、n=6、n=8,时得到了训练后的网络输出结果如图5、6、7所示。图5 当n=3时训练后网络的输出结果图6 当n=6时训练后网络的输出结果图7当n=8时训练后网络的输出结果其中 “ ” 代表要逼近的非线性函数曲线; “” 代表未经训练的函数曲线; “” 代表经过训练的函数曲线; (2)频率参数设为k=2,当隐层神经元数目分别取n=3、n=6、n=8时,得到了训练后的网络输出结果如图8、9、10所示。图8当n=3时训练后网络的输出结果图9当n=6时训练后网络的输出结果图10当n=8时训练后网络的输出结果其中 “ ” 代表要逼近的非线性函数曲线; “” 代表未经训练的函数曲线; “” 代表经

7、过训练的函数曲线; (3)频率参数设为k=4,当隐层神经元数目分别取n=3、n=6、n=8时,得到了训练后的网络输出结果如图11、12、13所示。图11当n=3时训练后网络的输出结果图12当n=6时训练后网络的输出结果图13当n=8时训练后网络的输出结果其中 “ ” 代表要逼近的非线性函数曲线; “” 代表未经训练的函数曲线; “” 代表经过训练的函数曲线;结论通过上述仿真结果可知,当 k=1,n=3时;k=2,n=8时; k=4,n=8时;BP神经网络分别对函数取得了较好的逼近效果。由此可见,n取不同的值对函数逼近的效果有很大的影响。改变BP网络隐层神经元的数目,可以改变BP神经网络对于函数

8、的逼近效果。隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。1、或门的实现:1) net=newp(0 1;-2 2,1);P=0 0 1 1;0 1 0 1;T=0 1 1 1;net=init(net);Y1=sim(net,P)net.trainParam.epochs=25;net=train(net,P,T);Y=sim(net,P)输出结果:Y1 = 1 1 1 1Y = 0 1 1 1 Matlab中运行结果图2、与门的实现 1)net=newp(0 1;-2 2,1);P=0 0 1 1;0 1 0 1;T=0 0 0 1;net=init(net);Y1=sim(ne

9、t,P)net.trainParam.epochs=20;net=train(net,P,T);Y=sim(net,P)Y1 = 1 1 1 1Y = 0 0 0 1Matlab中运行结果图3、异或问题的实现 % Perceptrons_02% 用两层感知器实现异或% 第一层是随机层,即权重何偏差随机确定,以第一层的输出作为第二层的输入pr1=0 1;0 1; % 随机感知器输入的范围net1=newp(pr1,3);net1.inputweights1.initFcn=rands;net1.biases1.initFcn=rands; index=0;while index=0 net1=i

10、nit(net1); iw1=net1.IW1 b1=net1.b1 p1=0 0 1 1;0 1 0 1; a1,pr=sim(net1,p1); pr2=0 1;0 1;0 1; net2=newp(pr2,1); net2.trainParam.epochs=10; net2.trainParam.show=1; % p2=a1; %最好不要直接赋值,可能a2=sim(net2,p2)不能正常运行 p2=ones(size(a1); p2=p2.*a1; t2=0 1 1 0; net2,tr2=train(net2,p2,t2); epoch2=tr2.epoch perf2=tr2.

11、perf iw2=net2.IW1 b2=net2.b1 a2=sim(net2,p2) save Percept02 net1 net2 if a2=t2 index=1; endend输出结果:iw1 = -0.8379 -0.3614 0.7022 -0.2502 0.1241 0.7356b1 = 0.6954 -0.5815 -0.0898epoch2 = 0 1 2 3 4 5 6 7 8perf2 = 0.5000 0.7500 0.5000 0.7500 0.5000 1.0000 0.7500 0.5000 0iw2 = 2 2 1b2 = -3a2 = 0 1 1 04、使

12、用感知器将二维的四组输入矢量分成两类P=-0.5 -0.5 +0.3 -0.1 +0.2 0.0 +0.6 +0.8; -0.5 +0.5 -0.5 +1.0 +0.5 -0.9 +0.8 -0.6;T=1 1 0 1 1 0 1 0;plotpv(P,T);net=newp(-1 1;-1 1,1);watchon;cla;plotpv(P,T);linehandle=plotpc(net.IW1,net.b1);E=1;net=init(net);linehandle=plotpc(net.IW1,net.b1);while(sse (E)net,Y,E=adapt(net,P,T);li

13、nehandle=plotpc(net.IW1,net.b1,linehandle);drawnow;end;pausewatchoff;2、0-9数字的识别%建立样本库%输入源样本 1,2,3,4为不同字体数字clear allfor pcolum=0:39 p1=ones(30,30); %建立全为1的样本矩阵 m=strcat(E:MATLAB7work123sjwlnum,int2str(pcolum),.jpg); I=imread(m); %循环读入0-39个样本数字文件 I1=im2bw(I,0.3); %对输入图像进行二值化处理 采用全局阈值0.3 m,n=find(I1=0)

14、; 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

15、); %反色处理 for hh=1:30 p(hh-1)*30+1:(hh-1)*30+30,pcolum+1)=p1(hh,1:30); end %将处理的源样本输入供神经网络训练的样本 pcolum是样本数循环变量 switch pcolum case 0,10,20,30 t(pcolum+1)=0 %数字0 case1,11,21,31 t(pcolum+1)=1 %数字1 case2,12,22,32 t(pcolum+1)=2 %数字2 case3,13,23,33 t(pcolum+1)=3 %数字3 case4,14,24,34 t(pcolum+1)=4 %数字4 case5

16、,15,25,35 t(pcolum+1)=5 %数字5 case6,16,26,36 t(pcolum+1)=6 %数字6 case7,17,27,37 t(pcolum+1)=7 %数字7 case8,18,28,38 t(pcolum+1)=8 %数字8 case9,19,29,39 t(pcolum+1)=9 %数字9 end %建立与训练样本对应的输出值tendsave 51ET p t;%训练网络clear allload 51ET p t; %加载样本pr(1:900,1)=0;pr(1:900,2)=1;net=newff(pr,25 1,logsig purelin,trai

17、ngdx,learngdm); %创建BP网络net.trainParam.epochs=3000; %设置训练步数net.trainParam.goal=0.000000001; %设置训练目标net.trainParam.show=10; %设置训练显示格数net.trainParam.lr=0.05 %设置训练学习率net=train(net,p,t); %训练BP网络save ET51net net;%使用网络clear allm=input(请输入测试样本(E:MATLAB7work123sjwltry):); I=strcat(E:MATLAB7work123sjwltry,int

18、2str(m),.jpg);U=imread(I);imview(U); %通过键盘输入添加试验样本load ET51net net; %加载以训练好的BP神经网络p=zeros(900,1); %建立输入样本的空矩阵p1=ones(30,30); %建立临时存放样本的30*30的矩阵I1=im2bw(U,0.3); %对输入图像进行二值化处理 采用全局阈值0.3m,n=find(I1=0); rowmin=min(m);rowmax=max(m);colummin=min(n);colummax=max(n);I2=I1(rowmin:rowmax,colummin:colummax); %

19、截取是入图像中的数字部分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); %反色处理 for hh=1:30 p(hh-1)*30+1:(hh-1)*30+30,1)=p1(hh,1:30); end %将处理的源样本输入供神经网络训练的样本 x=sim(net,p); %测试网络x=round(x); %输出网络识别结果

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

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