BP网络的MATLAB实现案例一.docx

上传人:b****8 文档编号:9849262 上传时间:2023-05-21 格式:DOCX 页数:12 大小:235.48KB
下载 相关 举报
BP网络的MATLAB实现案例一.docx_第1页
第1页 / 共12页
BP网络的MATLAB实现案例一.docx_第2页
第2页 / 共12页
BP网络的MATLAB实现案例一.docx_第3页
第3页 / 共12页
BP网络的MATLAB实现案例一.docx_第4页
第4页 / 共12页
BP网络的MATLAB实现案例一.docx_第5页
第5页 / 共12页
BP网络的MATLAB实现案例一.docx_第6页
第6页 / 共12页
BP网络的MATLAB实现案例一.docx_第7页
第7页 / 共12页
BP网络的MATLAB实现案例一.docx_第8页
第8页 / 共12页
BP网络的MATLAB实现案例一.docx_第9页
第9页 / 共12页
BP网络的MATLAB实现案例一.docx_第10页
第10页 / 共12页
BP网络的MATLAB实现案例一.docx_第11页
第11页 / 共12页
BP网络的MATLAB实现案例一.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

BP网络的MATLAB实现案例一.docx

《BP网络的MATLAB实现案例一.docx》由会员分享,可在线阅读,更多相关《BP网络的MATLAB实现案例一.docx(12页珍藏版)》请在冰点文库上搜索。

BP网络的MATLAB实现案例一.docx

BP网络的MATLAB实现案例一

目录

1.引言1

2.BP神经网络1

2.1.BP神经网络模型1

2.2BP神经网络的设计方法2

3.用MATLAB神经网络工具箱进行BP网络设计2

4.BP网络设计实例3

4.1问题描述3

4.2使用MATLAB进行函数逼近仿真实验4

5.结论10

参考文献:

10

BP网络的MATLAB实现

摘要:

本文介绍了BP神经网络及利用MATLAB神经网络工具箱构造BP网络的方法,阐述了构造神经网络的基本步骤,给出了具体应用实例,构造了一个典型的三层结构的神经网络,实现了具有函数逼近功能的BP网络设计。

关键词:

BP神经网络MATLAB仿真函数逼近

1.引言

误差反向传播网络(BackPropagationNet-work,简称BP网络)是目前人工神经网络模式中最具代表性,应用最广泛的一种模型,具有自学习、自组织、自适应和很强的非线性映射能力,可以以任意精度逼近任何连续函数。

近年来,为了解决BP网络收敛速度慢,训练时间长等不足,提出了很多改进算法,然而,在针对实际问题的BP网络建模过程中,选择多少层网络,每层多少个神经元节点,选择何种传递函数等,均无可行的理论指导,只能通过大量的实验计算获得。

MATLAB中的神经网络工具箱(NeuralNetworkToolbox,简称NNbox),为解决这一问题提供了便利的条件,神经网络工具箱功能十分完善,提供了各种MATLAB函数,包括神经网络的建立、初始化、训练和仿真等函数,以及各种改进训练算法函数,用户可以很方便地进行神经网络的设计和仿真,也可以在MATLAB源文件的基础上进行适当修改,形成自己的工具包满足实际需求。

2.BP神经网络

2.1.BP神经网络模型

从结构上讲,BP网络是一种分层型网络,由输入层。

隐含层和输出层组成。

层与层之间采用全互连方式,同一层的单元之间则不存在相互连接。

隐层可以有一个或多个。

1989年,RobertHecht-Nielson证明了一个三层的BP网络可以完成任意的n维到m维的映射。

隐层中的神经元均采用S型转换函数。

输出层的神经元可以采用S型函数,此时输出被限制在一个很小的范围内,也可采用线性变换函数,此时网络输出则可以在一个很大的范围内变化。

如下图所示,为一个典型的三层神经网络结构,其具有一个隐层。

从图中可以看出,在BP网络中有有两种信号在流通:

一种是工作信号(用实线表示),它是施加输入信号后向前传播直到在输出端产生实际输出的信号,是输入和权值的函数。

另一种是误差信号(用虚线表示),网络实际输出与期望输出间的差值即为误差,它由输出端开始逐层向后传播。

BP网络的学习过程由前向计算过程和误差反向传播过程组成,在前向计算过程中,输入量从输入层经隐层逐层计算,并穿向输出层,每层神经元的状态只影响下一层神经元的状态。

如输出层不能得到期望的输出,则转入误差反向传播过程,误差信号沿原来的连接通路返回,逐次调整网络各层的权值和阈值,直至到达输入层,再重复前向计算,这两个过程依次反复进行,不断调整各层的权值和阈值,使得网络误差最小或达到人们所期望的要求时,学习过程结束。

 

2.2BP神经网络的设计方法

BP神经网络的设计主要包含输入层、隐含层、输出层节点数和各个层之间的传输函数这几个方面的设计。

1、输入层和输出层的设计:

输入层和输出层节点数是由具体应用要求决定的。

输入层的节点数也就是我们要训练的样本维数,输出节点数也是由我们具体问题来确定。

2、隐含层节点数的设计:

隐含层节点数影响着神经网络的性能。

隐含层节点数还与输入层和输出层的节点数多少都有着直接的联系。

如何选择隐含层的节点数是一个比较复杂的问题,隐含层的节点数太多会导致学习时间过长;而隐含层节点数太少,则容错性差,识别未经学习样本能力低,往往需要我们多次的训练或者以前的经验来判定隐含层的节点数。

根据以前的经验我们可以参照下面的公式进行设定:

,n是隐层节点数;ni是输入层节点数;no是输出层节点数;a为1—10之间的常数。

根据实际的需要来确定a的值。

3.用MATLAB神经网络工具箱进行BP网络设计

MATLAB作为国际公认最优秀的数学应用软件,它集数值分析、矩阵分析、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,它相继推出的工具箱为各领域的研究提供了有力的工具,借助于它们,我们可以直观、方便地进行分析、计算及仿真工作。

神经网络工具箱是MATLAB以神经网络为基础,包含着大量BP网络的作用函数和算法函数,为BP网络的仿真研究提供了便利的工具。

对于BP网络的实现,其提供了四个基本函数:

newff,init,train和sim,它们分别对应四个基本步骤,及新建、初始化、训练和仿真。

1)新建

要实现一个BP网络的训练和仿真,首先需要创建一个BP网络,函数newff可以完成此项操作。

调用格式为net=newff([],[],{},’’),其中第一个参数是一个R×2的矩阵以定义R个输入向量的最小值和最大值;第二个参数是一个设定每层神经元个数的数组;第三个参数是包含每层用到的传递函数名称的细胞数组;最后一个参数是用到的训练函数的名称。

确定了这些参数,也即建立了一个我们所要求的BP网络。

2)初始化

调用格式为net=init(net),初始化是对连接权值和阈值进行初始化。

Newff函数在建立网络对象的同时,自动调用初始化函数,根据缺省的参数对网络的连接权值和阈值进行初始化。

使用函数Init可以对网络进行自定义的初始化。

分别选择初始化函数的参数,可对各层连接权值和阈值进行不同的初始化。

3)训练

初始化后的网络即可用于训练,即将网络的输入和输出反复作用于网络,不断调整权值和阈值,以使网络误差达到期望值。

使用train函数惊醒训练,调用格式为[net,tr]=train(NET,p,t),其中p和t分别为输入输出矩阵,NET为由newff定义的网络,net为修正后的网络,tr为训练的记录(训练步数epochs和性能perf)。

Train根据在newff函数中确定训练函数来训练,还用图形显示网络误差随学习次数的变化情况。

4)仿真

在MATLAB中神经网络的仿真使用函数sim()来实现的。

函数sim的调用格式为y=sim(net,p)。

其中y为网络输出;net为神经网络对象;p为输入向量或矩阵,如果p为向量,则为单点仿真;p为矩阵,则为多点仿真。

5)基本图形函数

Plot是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的,在使用此函数之前,必须首先定义好曲线上每一点的x及y坐标。

常用的plot命令格式有如下几种:

(1)plot(x)当x为一向量时,以其元素为纵坐标,其序号为横坐标绘制曲线。

(2)plot(x,y)以x元素为横坐标值,y元素为纵坐标值绘制曲线。

(3)plot(x,y1,x,y2,……)以公共的x元素为横坐标值,以y1,y2…..为纵坐标绘制多条曲线。

4.BP网络设计实例

4.1问题描述

建立一个只有一个隐层的BP网络,来逼近一个函数,其隐层的神经元个数为6,隐层和输出层的转移函数分别为双曲正切S函数和线性函数,训练函数为trainlm。

输入向量为p=-1:

.1:

1,目标向量为t=p.^2。

4.2使用MATLAB进行函数逼近仿真实验

在MATLAB中输入语句:

P=-1:

.1:

1;t=p.^2

可得到期望输出为

t=

Columns1through8

1.00000.81000.64000.49000.36000.25000.16000.0900

Columns9through16

0.04000.010000.01000.04000.09000.16000.2500

Columns17through21

0.36000.49000.64000.81001.0000

输入语句

Plot(p,t,’r+’)可得到期望输出的图形显示为:

1.建立网络

net=newff([-11],[61],{'tansig','purelin'},'trainlm');

2.初始化

采用默认的初始化参数对网络进行初始化,即

net=init(net);

y=sim(net,p)

可得到仿真输出为:

y=

Columns1through11

-1.1081-1.0808-1.1060-1.2742-1.7483-2.2214-2.3836-2.3809-2.2765-2.1655-2.1218

Columns12through21

-2.0959-2.0459-1.9899-1.9262-1.7091-1.1158-0.5223-0.3029-0.2289-0.1446

Plot(p,y)可知此时的仿真输出图像为:

Plot(p,t,’r’,p,y)%期望输出与训练之前的仿真输出进行对比,结果如下:

由图示可知,训练之前的网络并不能够很好逼近目标值

3网络的训练

训练函数的参数设置如下:

Net.trainparam.show=10;

%系统每50步显示一次训练误差的变化曲线

Net.trainparam.epochs=100;

%设置系统的最大训练循环次数

Net.trainparam.goal=0.0001;

%设置目标误差

Net.trainparam.lr=0.01;

%设置学习率

[net,tr]=train(net,p,t);

TRAINLM,Epoch0/100,MSE5.10509/0.0001,Gradient87.3605/1e-010

TRAINLM,Epoch5/100,MSE9.89827e-005/0.0001,Gradient0.165569/1e-010

TRAINLM,Performancegoalmet.

并且产生训练图如下所示:

由图示可知,当训练进行到第五步时,误差达到目标误差,训练停止,此时的网络误差为9.89827×10-5。

Y1=sim(net,p)

此时仿真输出结果和图形分别为:

y1=

Columns1through8

0.98620.79460.63250.48560.35700.25040.16540.0965

Columns9through16

0.04460.01700.00980.01940.04650.09580.16790.2559

Columns17through21

0.36060.48700.63590.80410.9850

Plot(p,t,’r+’,p,y1)%将训练后的网络与期望值进行比较,其中‘+’表示期望值,平滑曲线表示训练后的网络,结果如下图所示:

从图中可以明显看出网络训练后对输入的逼近程度。

下面再输入一组数据,对网络进行测试:

MATLAB语句如下:

al=[-0.3-0.100.10.3];

%测试数据向量

bl=sim(net,al);

仿真结果

bll=al.^2;

%期望输出

bl=

0.08920.01700.00810.01590.0977

plot(al,bll,’r+’,al,bl)

从图中可以看出,训练后的BP网络能够很好地逼近给定的目标函数。

5.结论

MATLAB神经网络工具箱功能十分完善,它提供了各种函数,包括网络的建立、初始化、训练和仿真等函数,用户只要根据需要调用相关函数,就能方便地进行神经网络的设计与仿真,从而避免了编写复杂而庞大的算法程序的困扰,有助于提高神经网络设计的效率。

参考文献:

[1]巨军让,卓戎.BP神经网络在MATLAB上的方便实现[J].新疆石油学院学报,1999,11

(2):

42.

[2]石云.BP神经网络的MATLAB实现[J].湘南学院学报,2010,31(5):

86-88+111.

[3]兰雪梅,朱健,黄承明,董德存.BP网络的MATLAB实现[J].研究与设计,2003,19

(1):

6-8.

[4]杜华英.基于车型识别的BP算法MATLAB实现[J].计算机与现代化,2012(5):

20-22.

[5]张圣楠,郭文义,肖力墉.基于MATLAB的BP神经网络的设计与训练[J].内蒙古科技与经济,2005(17):

95-98.

[6]郭利辉,周雅.基于MATLAB神经网络工具箱的BP网络设计[J].信息技术与信息化,2009(3):

20-22.

 

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

当前位置:首页 > 初中教育 > 语文

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

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