神经网络实验报告-吐血推荐Word下载.doc

上传人:聆听****声音 文档编号:1143791 上传时间:2023-04-30 格式:DOC 页数:16 大小:153.50KB
下载 相关 举报
神经网络实验报告-吐血推荐Word下载.doc_第1页
第1页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第2页
第2页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第3页
第3页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第4页
第4页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第5页
第5页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第6页
第6页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第7页
第7页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第8页
第8页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第9页
第9页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第10页
第10页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第11页
第11页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第12页
第12页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第13页
第13页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第14页
第14页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第15页
第15页 / 共16页
神经网络实验报告-吐血推荐Word下载.doc_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

神经网络实验报告-吐血推荐Word下载.doc

《神经网络实验报告-吐血推荐Word下载.doc》由会员分享,可在线阅读,更多相关《神经网络实验报告-吐血推荐Word下载.doc(16页珍藏版)》请在冰点文库上搜索。

神经网络实验报告-吐血推荐Word下载.doc

V=(v1,v2,…….vj)

输入层

X0X

下面对误差和权值的调整过程进行推导

对于单样本的输入Xi则隐层的输出:

yi=f1(netj);

netj=(xi*vi)

输出层的输出:

O=f2(net);

net=(wi*yi)

变换函数:

f1=

f2=x;

当网络输出与期望输出不等时,存在输出误差E

E=(d-o)2;

计算各层的误差:

把误差分配到各层以调整各层的权值,所以,各层权值的调整量等于误差E对各权值的负偏导与学习率的乘积,计算得到对权值W和权值V的调整量如下:

将上面的式子展开到隐层得:

E=(d-o)2=[d-f2(net)]=[d-f2()]

将上式展开到输入层得:

E=(d-o)2=[d-f2(net)]=[d-f2(f1())]

调整权值的原则是使误差不断地减小,因此应使权值的调整量与误差的梯度下降成正比,即

Δwj=-

Δvj=-

计算得到对各权值的调整为:

Δwj=η*(d(1,p)-o(1,p))*y(1,i)

Δvj=*(d(1,p)-o(1,p))*w(1,i)*y(1,i)*(1-y(1,i))*x(1,p)

其中P为第P个样本:

四实验步骤

Step1初始化

对权值矩阵W、V赋随机数,将样本模式计数器p和训练次数计数器q置于1,误差E置0,学习率η设为0~1内的小数,网络训练后的精度Emin设为一个正的小数;

Step2输入训练样本对,计算各层输出用当前样本Xp、dp对向量数组X、d赋值,用下式计算Y和O中各分量

O=f2(netj);

Step3计算网络输出误差

设共有P对训练样本,网络对于不同的样本具有不同的误差2å

Step4计算各层误差信号:

各层的误差信号为误差E对各层权值的偏导

Step5调整各层权值

Δw=η*(d(1,p)-o(1,p))*y(1,i)

Δv=*(d(1,p)-o(1,p))*w(1,i)*y(1,i)*(1-y(1,i))*x(1,p)

Step6检查是否对所有样本完成一次轮训

若p<

P,计算器p=p+1,q=q+1,返回Step2,否则转到Step7

Step7检查网络总误差是否达到精度要求

当用ERME作为网络的总误差时,若满足ERME<

Emin,训练结束,否则E置0,p置1,返回Step2。

单样本训练:

每输入一个样本,都要回传误差并调整权值,会导致收敛速度过慢

批处理(Batch)训练:

根据总误差,计算各层的误差信号并调整权值,在样本数较多时,批训练比单样本训练时的收敛速度快

五实验结果

对于单本输入的网络程序如下:

functionlimoyan;

%建立以limoyan为文件名的m文件

clc;

clear;

x=[-4:

0.08:

4];

%产生样本

j=input('

j='

);

%输入隐结点的个数

n=input('

n='

%输入学习率

w=rand(1,j);

%对权值w赋较小的初值

w0=0.5;

%对权值w0赋较小的初值

v=rand(1,j);

%对权值V赋较小的初值

v1=rand(1,j);

%对权值V1赋较小的初值

x0=-1;

%对阈值x0赋初值

y0=-1;

%对阈值y0赋初值

err=zeros(1,101);

wucha=0;

erro=[];

Erme=0;

zong=[];

Emin=0.1;

d=zeros(1,101);

%以初值0赋给期望输出

form=1:

101

d(1,m)=1.1*(1.0-x(1,m)+2*x(1,m)*x(1,m))*exp(-x(1,m)*x(1,m)/2);

%以Hermit多项式产生期望输出

end;

o=zeros(1,101);

netj=zeros(1,j);

net=zeros(1,j);

y=zeros(1,j);

p=1;

q=1;

whileq<

30000%设定最大的迭代交数

forp=1:

101%计算隐层的输出

fori=1:

j

netj(1,i)=v(1,i)*x(1,p)+v1(1,i)*x0;

y(1,i)=1/(1+exp(-netj(1,i)));

end;

o(1,p)=w*y'

+y0*w0+0.01*randn(1,1);

%计算输出并给输出加上上定的扰动

wucha=1/2*(d(1,p)-o(1,p))*(d(1,p)-o(1,p));

%计算误差

err(1,p)=wucha;

erro=[erro,wucha];

form=1:

j;

%调整各层的权值

w0=w0-n*w0;

w(1,m)=w(1,m)+n*(d(1,p)-o(1,p))*y(1,m);

v(1,m)=v(1,m)+n*(d(1,p)-o(1,p))*w(1,m)*y(1,m)*(1-y(1,m))*x(1,p);

v1(1,m)=v1(1,m)+n*(d(1,p)-o(1,p))*w(1,m)*y(1,m)*(1-y(1,m))*x0;

q=q+1;

end;

Erme=0;

fort=1:

101;

Erme=Erme+err(1,t);

err=zeros(1,101);

Erme=sqrt(Erme/101);

zong=[zong,Erme];

ifErme<

Eminbreak;

%误差达到允许值时停止迭代

%输入结果

Erme

plot(x,d,'

-r'

holdon;

plot(x,o,'

-.b'

xlabel('

Hermit多项式曲线与所构建BP网络输出曲线'

q

figure

(2);

plot(zong);

误差的收敛曲线'

命令窗口的输出如下:

j=5

n=0.05

Erme=0.0996

q=19999

Hermit多项式曲线与所构建BP网络输出曲线:

误差的收敛曲线如下:

单样本训练的统计如下:

0.05

0.07

0.1

0.12

0.15

0.17

5

0.09360

0.08659

0.09784

0.09364

0.08725

0.09324

8

0.09921

0.08921

0.09458

0.09125

0.08457

0.09478

10

0.8925

0.08794

0.08527

0.09145

0.08412

0.09147

12

0.09258

0.08796

0.09158

0.07836

0.08397

对于批处理的情况:

在原程序的基础上改变中间的一段;

j=10

n=0.1

Erme=0.0997

q=15757

0.09906

0.09587

0.09457

0.09096

0.09914

0.09874

7

0.09105

0.09267

0.09547

0.08942

0.09128

0.09217

0.09527

0.08596

0.08925

0.08759

0.09154

0.08247

对于加入动量项的网络如下:

命令窗口的输出如下:

j=15

Erme=0.1000

q=6768

误差的收敛曲线如下

:

0.09657

0.09578

0.09654

0.098354

0.09824

0.09047

0.09658

0.09368

0.09342

0.09648

0.09427

0.09153

0.09257

0.09231

0.09426

0.08972

0.9215

0.09127

0.09238

0.09341

0.08931

六.问题回答

1.比较单样本训练和批处理训练的区别;

答:

单样本输入是每输入一个样本就调整一次权值,并计算误差的大小,而对于批处理来说,是等所有的样本都输入以后再调整权值.当样本较多的时候批处理能获得较快的收敛速度.

2.根据结果分析增加动量项后算法的变化

加入动量项后,就等于让权值的收敛方向向着一定的方向进行,由输出的数据可以看出这一点,对于相同的结点数,相同的学习率,加入动量项后,收速度即迭代次数明显的降低.

2改变不同参数的BP网络运行情况及结果,并给予相应的结果分析

改变不同参数,对网络运行情况的影响,可以概括为:

随着结点数的增多,收敛的概率和速度都会相应的有把增加.相应的误差会要小一点.但误差的大小除了取决于结点外,还主要决定于到达允许误差时的值,所以总误差的值有一定的随机性.对于改变网络的学习率,对来说小的学习率会使收敛更稳定一点,但是速度也会相对地慢一点,大的学习率在一定程度上能加快收敛的速度,但是稳定性要比小的学习率小的多,换句话说,大的学习率收敛的概率要小得多,很容易发散,所以说,随着学习的增大,迭代的次数会先减小后增大。

大到一定程度进,由于波动太大。

结果就不在收敛;

3思考:

输出层可以采用Sigmoid函数吗?

为什么?

答:

输出层可以采用的函数很多,从理论上说,一个函数都是可以应用的,但是如果采用Sigmoid函数的话,占用的内存要比用线性函数大的多,相对的运行的速度也要比用线性函数慢的多,而对于连续的函数的拟合,输出函数用线性函数就能很好的解决。

4试验中遇到的问题和解决方法

在开始的时候把问题想得太简单,在没有加阈值的情下编出了程序,运行后才发现,结点数很多,想明白后再阈值加上使程序显得混乱。

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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