人工神经网络设计作业.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
人工神经网络设计作业 一、利用感知机神经网络完成真值表中的操作 设有一个M-P模型神经元有两个输入P1和P2,其输出为a,让其完成下列的真值表功能: P1 0 0 1 1 P2 0 1 0 1 a 0 1 1 1 1、具体的程序及其说明如下: clc P=[0 0 1 1;0 1 0 1];T=[0 1 1 1];%提供两组输入一组输出的训练集 C=[-2 3 -2 3];%设置坐标轴的范围 plotpv(P,T,C)%绘制样本点的坐标 pause; [R,Q]=size(P);%R个输入 [S,Q]=size(T);%S个输出 [W,B]=rands(S,R);%随机获得权值 plotpc(W,B)%绘制出初始的决策线 pause; A=hardlim(netsum(W*P,B));%计算感知器神经元的输出 E=T-A; SSE=sumsqr(E);%计算初始决策线的误差 for epoch=1:100 if(SSE==0)%若误差为零,画出决策线,并停止训练 plot(W,B,r-) disp(训练成功); break end [dW,dB]=learnp(P,A,T)%感知器的学习 W=W+dW;%修正权值 B=B+dB;%调整偏差 plotpc(W,B); %绘制决策线 pause; a=epoch(1); hold on A=hardlim(netsum(W*P,B));%计算感知器神经元输出 E=T-A;%计算误差 SSE=sumsqr(E); end A %输出最后的训练结果 a %输出训练次数 2、具体的训练过程如图所示: 3、训练结果: 训练结束后我们可知道A=[0 1 1 1],训练次数a=4次。 二、利用BP网络逼近一个非线性函数 1、函数选择为指数衰减函数,隐层采用对数正切S型,输出层采用线性型,具体的程序及其说明如下: clc n=5;%隐层神经元的个数 lr=0.1;%学习率 mc=0.9;%动量因子 p=0:0.05:3; t=2*exp(-2.*p); [r,l]=size(p);%r输入层的维数 [s,l]=size(t);%s输出层的维数 w1=0.2*rand(n,r);%隐层的权值 deltaw1=zeros(n,r); B1=0.2*rand(n,1);%隐层的偏移量 deltaB1=zeros(n,1); w2=0.2*rand(s,n);%输出层权值 deltaw2=zeros(s,n); B2=0.2*rand(s,1);%输出层的偏移量 deltaB2=zeros(s,1); A1=tansig(w1*p,B1); A2=purelin(w2*A1,B2); plot(p,t,r+,p,A2,b:); xlabel(输入样本p);ylabel(输出样本t); axis([0 3 -1 2]) title([样本点和未经训练的曲线]); legend(样本点); pause; epoch=1;sse=1; for epoch=1:10000 %最大训练圈数为1000 w1=w1+deltaw1;%权值及其偏移量的调整 B1=B1+deltaB1; w2=w2+deltaw2; B2=B2+deltaB2; [A1,A2]=simuff(p,w1,B1,tansig,w2,B2,purelin); E=t-A2; sse(epoch)=sumsqr(E);%计算误差 if(sse(epoch)==0.001)%达到期望误差退出逼近 break end D2=deltalin(A2,E); D1=deltatan(A1,D2,w2); [deltaw2,deltaB2]=learnbpm(A1,D2,lr,mc,deltaw2,deltaB2); [deltaw1,deltaB1]=learnbpm(p,D1,lr,mc,deltaw1,deltaB1); if(sse(epoch)=0.001) break end end; epoch plot(p,t,r+,p,A2,b:); xlabel(输入样本p);ylabel(输出样本t); title([训练,num2str(epoch),次后的曲线]); legend(样本点); axis([0 3 -1 2]) pause FF=1:epoch; plot(FF,sse(FF),r-); xlabel(训练次数);ylabel(误差); title([SSE误差曲线]); pause; %泛化能力

文档评论(0)

ea238982 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档