- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)