神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx
- 文档编号:22160418
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:17
- 大小:57.48KB
神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx
《神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx》由会员分享,可在线阅读,更多相关《神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
state'
sum(100*clock));
w=rand(1,l);
w0=0.5;
v=rand(1,l);
v0=rand(1,l);
y0=-1;
x0=-1;
forp=1:
Pmax
interrupt(p)=normrnd(0,0.1);
x(p)=8*(rand()-0.5);
d(p)=1.1*(1-x(p)+2*x(p)^2)*exp((-x(p)^2)/2);
end
while(q<
=Qmax)
forp=1:
y(p,:
)=logsig(v*x(p)+v0*x0);
o1(p)=w*y(p,:
)'
+y0*w0;
o(p)=o1(p)+interrupt(p);
ek=d(p)-o(p);
fori=1:
l
ej(i)=w(i)*(d(p)-o(p))*y(p,i)*(1-y(p,i));
end
wc=n*ek*y(p,:
);
w0c=n*ek*y0;
vc=n*ej*x(p);
v0c=n*ej*x0;
w=w+wc;
w0=w0+w0c;
v=v+vc;
v0=v0+v0c;
E(p)=d(p)-o(p);
end
s2=0;
s2=E(p)^2+s2;
e=(s2/Pmax)^0.5;
Erme=[Ermee];
ife<
=Emin
break;
q=q+1;
Erme;
q
x=linspace(-4,4);
100
plot(Erme);
xlabel('
误差的收敛曲线'
)
figure;
plot(x,d,'
-r'
holdon;
plot(x,o1,'
-.b'
Hermit多项式曲线与所构建BP网络输出曲线'
最好的一次运行结果:
学习率=0.01,隐节点数=5
q=
2500
2.批处理程序:
samnum=100;
testsamnum=101;
hiddenunitnum=5;
indim=1;
outdim=1;
sum(100*clock))
noisevar=0.1;
noise=noisevar*randn(1,samnum);
samin=8*rand(1,samnum)-4;
samoutnonoise=1.1*(1-samin+2*samin.^2).*exp(-samin.^2/2);
samout=samoutnonoise+noise;
testsamin=-4:
0.08:
4;
testsamout=1.1*(1-testsamin+2*testsamin.^2).*exp(-testsamin.^2/2);
figure
holdon
grid
plot(testsamin,testsamout,'
k--'
inputx'
ylabel('
outputy'
maxepochs=30000;
lr=0.003;
alpha=0.5;
e0=0.1;
w1=0.1*rand(hiddenunitnum,indim);
b1=0.1*rand(hiddenunitnum,1);
w2=0.1*rand(outdim,hiddenunitnum);
b2=0.1*rand(outdim,1);
w1ex=[w1b1];
w2ex=[w2b2];
dw1ex=zeros(hiddenunitnum,2);
dw2ex=zeros(1,hiddenunitnum+1);
saminex=[samin'
ones(samnum,1)]'
;
errhistory=[];
fori=1:
maxepochs
hiddenout=logsig(w1ex*saminex);
hiddenoutex=[hiddenout'
networkout=w2ex*hiddenoutex;
error=samout-networkout;
sse=(sumsqr(error)/samnum)^0.5;
errhistory=[errhistorysse];
ifsse<
e0
delta2=error;
delta1=w2'
*delta2.*hiddenout.*(1-hiddenout);
dw2ex=lr*delta2*hiddenoutex'
dw1ex=lr*delta1*saminex'
w1ex=w1ex+dw1ex;
w2ex=w2ex+dw2ex;
w2=w2ex(:
1:
hiddenunitnum);
i
w1=w1ex(:
1)
b1=w1ex(:
2)
w2
b2=w2ex(:
1+hiddenunitnum)
sse
testhiddenout=logsig(w1*testsamin+repmat(b1,1,testsamnum));
testnnout=w2*testhiddenout+repmat(b2,1,testsamnum);
plot(testsamin,testnnout);
[xx,num]=size(errhistory);
plot(1:
num,errhistory);
运行结果最好时,学习效率=0.005,隐节点数=5:
w1=
0.5816
2.5220
-3.9213
-1.8311
-1.4301
b1=
0.7763
5.0958
-1.9469
3.9640
0.8285
w2=
0.14202.97872.94582.5186-2.2577
b2=
-3.2267
sse=
0.1000
i=
2907
3.加入动量项的批处理程序:
只需将批处理程序中的
dw1ex=lr*delta1*saminex'
改为
dw2ex=lr*delta2*hiddenoutex'
+dw2ex*alpha;
dw1ex=lr*delta1*saminex'
+dw1ex*alpha;
运行结果最好时,学习效率=0.005,隐节点数=7:
1.2224
0.2118
2.2169
-2.4819
-1.1339
-2.8364
1.6276
0.1389
-0.4904
-4.4112
-5.1026
-0.3769
-1.1383
-1.0608
1.8665-1.1976-2.7362-2.7258-1.89905.19421.9903
-0.3951
5227
0.1000
表格1.单样本BP算法平均最小误差
学习效率
隐节点数
0.0001
0.001
0.003
0.005
0.01
0.1
3
0.3187
0.1600
0.1240
0.1140
0.1177
0.1305
5
0.3282
0.1020
0.1030
0.1100
7
0.2900
0.1060
0.1043
10
0.3000
0.1075
0.101
表格2.批处理BP算法平均最小误差
0.4023
0.1956
0.1200
0.1436
0.1489
NaN
0.4302
0.1024
0.1
0.4985
0.4752
0.1201
0.4714
0.4357
0.1073
0.1010
0.5642
表格3.加入动量项的批处理BP算法平均最小误差
0.2845
0.1289
0.1162
0.1165
0.1452
0.1899
0.1053
0.2984
0.1002
0.2235
0.1082
0.1023
三.问题回答
1.比较单样本训练和批处理训练的区别;
答:
单样本输入是每输入一个样本就调整一次权值,并计算误差的大小,而对于批处理来说,是等所有的样本都输入以后再调整权值.当样本较多的时候批处理能获得较快的收敛速度.
2.根据结果分析增加动量项后算法的变化
加入动量项后,就等于让权值的收敛方向向着一定的方向进行,由输出的数据可以看出这一点,对于相同的结点数,相同的学习率,加入动量项后,收速度即迭代次数明显的降低.
2改变不同参数的BP网络运行情况及结果,并给予相应的结果分析
改变不同参数,对网络运行情况的影响,可以概括为:
总误差的值有一定的随机性.对于改变网络的学习率,小的学习率会使收敛更稳定一点,但是速度也会相对地慢一点,大的学习率在一定程度上能加快收敛的速度,但是收敛的概率要小得多,很容易发散,所以说,随着学习的增大,迭代的次数会先减小后增大。
大到一定程度进,由于波动太大。
结果就不在收敛.
3思考:
输出层可以采用Sigmoid函数吗?
为什么?
答:
可以,但需要进行变换。
4试验中遇到的问题和解决方法
一开始不理解隐层,没有考虑隐节点个数的变化;
后来还不行,因为没加阈值;
后来还有很多错,比如矩阵的点乘,初始化·
·
最后终于还是被我搞定哈!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 神经网络 实验 报告 BP 网络 实现 Hermit 函数 逼近