神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx

上传人:b****7 文档编号:22160418 上传时间:2023-02-02 格式:DOCX 页数:17 大小:57.48KB
下载 相关 举报
神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx_第1页
第1页 / 共17页
神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx_第2页
第2页 / 共17页
神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx_第3页
第3页 / 共17页
神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx_第4页
第4页 / 共17页
神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx

《神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx》由会员分享,可在线阅读,更多相关《神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

神经网络实验报告BP网络实现对Hermit函数逼近Word文件下载.docx

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试验中遇到的问题和解决方法

一开始不理解隐层,没有考虑隐节点个数的变化;

后来还不行,因为没加阈值;

后来还有很多错,比如矩阵的点乘,初始化·

·

最后终于还是被我搞定哈!

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

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1