计算机MATLAB神经网络工具箱课件

上传人:re****.1 文档编号:569707339 上传时间:2024-07-30 格式:PPT 页数:295 大小:1.67MB
返回 下载 相关 举报
计算机MATLAB神经网络工具箱课件_第1页
第1页 / 共295页
计算机MATLAB神经网络工具箱课件_第2页
第2页 / 共295页
计算机MATLAB神经网络工具箱课件_第3页
第3页 / 共295页
计算机MATLAB神经网络工具箱课件_第4页
第4页 / 共295页
计算机MATLAB神经网络工具箱课件_第5页
第5页 / 共295页
点击查看更多>>
资源描述

《计算机MATLAB神经网络工具箱课件》由会员分享,可在线阅读,更多相关《计算机MATLAB神经网络工具箱课件(295页珍藏版)》请在金锄头文库上搜索。

1、计算机计算机MATLAB神经网络神经网络工具箱工具箱1 MATLAB1 MATLAB神经网络工具箱函数神经网络工具箱函数2 MATLAB2 MATLAB神经网络工具箱的图形用户界面神经网络工具箱的图形用户界面3 3 基于基于SimulinkSimulink的神经网络模块的神经网络模块4 4 神经网络在系统预测和故障诊断中的应用神经网络在系统预测和故障诊断中的应用1计算机MATLAB神经网络工具箱本章将介绍MATLAB神经网络工具箱的应用。在MATLAB神经网络工具箱中提供了丰富的演示实例,用MATLAB语言构造了典型神经网络的激活函数,编写了各种网络设计与训练的子程序,网络的设计者可以根据自己

2、的需要去调用工具箱中有关神经网络的设计训练程序,使自己能够从繁琐的编程中解脱出来。2计算机MATLAB神经网络工具箱MATLAB神经网络工具箱提供了许多进行神经网络设计和分析的工具函数,这些函数的MATLAB实现,使得设计者对所选定网络进行计算的过程,转变为对函数的调用和参数的选择,这给用户带来了极大的方便,即使不了解算法的本质,也可以直接应用功能丰富的函数来实现自己的目的。有关这些工具函数的使用可以通过help命令得到,本章将对这些函数的功能、调用格式,以及使用方法做详细的介绍。1MATLAB神经网络工具箱函数3计算机MATLAB神经网络工具箱随着MATLAB软件的版本提高,其对应的神经网络

3、工具箱的内容越来越丰富,它包括了很多现有的神经网络的新成果,涉及的网络模型有,感知机网络、线性神经网络、BP神经网络、径向基神经网络、自组织神经网络、学习向量量化神经网络、Elman神经网络、Hopfield神经网络、自适应滤波和控制系统网络等。4计算机MATLAB神经网络工具箱1.1 神经网络工具箱中的通用函数神经网络工具箱中的通用函数MATLAB神经网络工具箱中提供的函数主要分为两大部分。一部分函数是通用的,这些函数几乎可以用于所有类型的神经网络,如神经网络的初始化函数init()、训练函数train()和仿真函数sim()等;另一部分函数则是特别针对某一种类型的神经网络的,如对感知机神经

4、网络进行建立的函数simup()等。表2-1列出了一些通用函数的名称和基本功能。5计算机MATLAB神经网络工具箱表2-1神经网络的通用函数和功能函数名函数名功功 能能init()初始化一个神经网络initlay()层-层结构神经网络的初始化函数initwb()神经网络某一层的权值和偏值初始化函数initzero()将权值设置为零的初始化函数train()神经网络训练函数adapt()神经网络自适应训练函数sim()神经网络仿真函数dotprod()权值点积函数normprod() 规范点积权值函数netsum()输入求和函数netprod()网络输入的积函数concur()结构一致函数6计算

5、机MATLAB神经网络工具箱1. 初始化神经网络函数初始化神经网络函数init( )利用初始化神经网络函数init()可以对一个已存在的神经网络进行初始化修正,该网络的权值和偏值是按照网络初始化函数来进行修正的。其调用格式为:net=init(NET)7计算机MATLAB神经网络工具箱2. 神经网络某一层的初始化函数神经网络某一层的初始化函数initlay( )初始化函数initlay()特别适用于层-层结构神经网络的初始化,该网络的权值和偏值是按照网络初始化函数来进行修正的。其调用格式为:net=initlay(NET)8计算机MATLAB神经网络工具箱3. 神经网络某一层的权值和偏值初始化

6、函数神经网络某一层的权值和偏值初始化函数initwb( )利用初始化函数initwb()可以对一个已存在的神经网络的NET某一层i的权值和偏值进行初始化修正,该网络对每层的权值和偏值是按照设定的每层的初始化函数来进行修正的。其调用格式为:net=initwb(NET,i)9计算机MATLAB神经网络工具箱4. 神经网络训练函数神经网络训练函数train( )利用train()函数可以训练一个神经网络。网络训练函数是一种通用的学习函数,训练函数重复地把一组输入向量应用到一个网络上,每次都更新网络,直到达到了某种准则。停止准则可能是最大的学习步数、最小的误差梯度或者是误差目标等,调用格式为:net

7、,tr,Y,E,Xf,Af=train(NET,X,T,Xi,Ai)10计算机MATLAB神经网络工具箱5. 网络自适应训练函数网络自适应训练函数adapt( )另一种通用的训练函数是自适应函数adapt()。自适应函数在每一个输入时间阶段更新网络时仿真网络,而这在进行下一个输入的仿真前完成,其调用格式为:net,Y,E,Xf,Af,tr=adapt(NET,X,T,Xi,Ai)11计算机MATLAB神经网络工具箱6. 网络仿真函数网络仿真函数sim( )神经网络一旦训练完成,网络的权值和偏值就已经确定了。于是就可以使用它来解决实际问题了。利用sim()函数可以仿真一个神经网络的性能。其调用格

8、式为:Y,Xf,Af,E,perf=sim(net,X,Xi,Ai,T)或Y,Xf,Af,E,perf=sim(net,QTs,Xi,Ai)12计算机MATLAB神经网络工具箱7. 权值点积函数权值点积函数dotprod( )网络输入向量与权值的点积可得到加权输入。函数dotprod()的调用格式为:Z=dotprod(W,X)8. 网络输入的和函数网络输入的和函数netsum( )网络输入的和函数是通过某一层的加权输入和偏值相加作为该层的输入。调用格式:Z=netprod(Z1,Z2,)13计算机MATLAB神经网络工具箱9. 网络输入的积函数网络输入的积函数netprod( )网络输入的积

9、函数是通过某一层的加权输入和偏值相乘作为该层的输入。调用格式:Z=netprod(Z1,Z2,)10. 结构一致函数结构一致函数concur( )函数concur()的作用在于使得本来不一致的权值向量和偏值向量的结构一致,以便于进行相加或相乘运算,其调用格式为:Z=concur(b,q)。14计算机MATLAB神经网络工具箱例例2-1 利用netsum()函数和netprod()函数,对两个加权输入向量Z1和Z2进行相加和相乘。解解 MATLAB的程序如下。Z1=124;341;Z2=-122;-5-61;b=0;-1;q=3;Z=concur(b,q)X1=netsum(Z1,Z2),X2=

10、netprod(Z1,Z2)%计算向量的和与积结果显示:Z=000-1-1-1X1=046-2-22X2=-148-15-24115计算机MATLAB神经网络工具箱1.2 感知机神经网络工具箱函数感知机神经网络工具箱函数MATLAB神经网络工具箱中提供了大量的与感知机相关的的函数。在MATLAB工作空间的命令行键入“helppercept”,便可得到与感知机(Perceptron)相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-2列出了这些函数的名称和基本功能。16计算机MATLAB神经网络工具箱表2-2感知机网络的重要函数和功能函数名函数名功功 能能mae()平均绝对误差

11、性能函数hardlim()硬限幅传输函数hardlims()对称硬限幅传输函数plotpv()在坐标图上绘出样本点plotpc()在已绘制的图上加分类线initp()对感知机神经网络进行初始化trainp()训练感知机神经网络的权值和偏值trainpn()训练标准化感知机的权值和偏值simup()对感知机神经网络进行仿真learnp()感知机的学习函数learnpn()标准化感知机的学习函数newp()生成一个感知机17计算机MATLAB神经网络工具箱1平均绝对误差性能函数mae()感知机网络学习规则为调整网络的权值和偏值,使网络的平均绝对误差和性能最小。平均绝对误差性能函数的调用格式为:pe

12、rf=mae(E,w,pp)18计算机MATLAB神经网络工具箱2硬限幅传输函数hardlim()硬限幅传输函数hardlim()通过计算网络的输入得到该层的输出。如果网络的输入达到门限,则硬限幅传输函数的输出为1,否则为0。这表明神经元可用来作出判断或分类。其调用格式为:a=hardlim(N)或a=hardlim(Z,b)a=hardlim(P)19计算机MATLAB神经网络工具箱返回的元素a是1还是0,取决于网络输入矩阵中的元素是大于等于0还是小于0;函数hardlim(P)包含传输函数的特性名并返回问题中的特性,如下的特性可从任何传输函数中获得:(1)delta与传输函数相关的delt

13、a函数;(2)init传输函数的标准初始化函数;(3)name传输函数的全称;(4)output包含有传输函数最小、最大值的二元矢量。例利用以下命令可得图2-1。N=-5:0.1:5;a=hardlim(N);plot(N,a)图2-1硬限幅传输函数曲线20计算机MATLAB神经网络工具箱3对称硬限幅传输函数hardlims()对称硬限幅传输函数hardlims()通过计算网络的输入得到该层的输出。如果网络的输入达到门限,则硬限幅传输函数的输出为1,否则为-1。例w=eye(3);b=-0.5*ones(3,1);X=10;01;11;a=hardlims(w*X,b)结果显示:a=1-1-1

14、11121计算机MATLAB神经网络工具箱例例2-2 建立一个感知机网络,使其能够完成“或”的功能。解解为了完成“或”函数,建立一个两输入、单输出的一个单层感知机网络。设输入向量为:X=0011;0101,目标向量为:T=0111。激活函数取硬限幅传输函数。 根据感知机学习算法的计算步骤,利用MATLAB的神经网络工具箱的有关函数编写的程序如下。ex2_222计算机MATLAB神经网络工具箱结果显示:epoch=3Wij=1.50281.7095y=011123计算机MATLAB神经网络工具箱4.绘制样本点的函数plotpv()利用plotpv()函数可在坐标图中绘出已知给出的样本点及其类别,

15、不同的类别使用了不同的符号。其调用格式为:plotpv(X,T) 如果T只含一元矢量,目标0的输入矢量画为“o”;目标1的输入矢量画为“+”;如果T含二元矢量,则输入矢量对应如下:00用“o”;01用“+”;10用“*”;11用“”。例24计算机MATLAB神经网络工具箱X=-0.5,-0.5,0.3,-0.1,0.2,0.0,0.6,0.8;-0.5,0.5,-0.5,1.0,0.5,-0.9,0.8,-0.6;T=11011010;plotpv(X,T) 对样本不同的类别使用了不同的符号,如图2-2所示。图2-2样本的分类25计算机MATLAB神经网络工具箱5.在存在的图上画感知机的分类线

16、函数plotpc() 硬特性神经元将输入空间用一条直线(如果神经元有两个输入),或用一个平面(如果神经元有三个输入),或用一个超平面(如果神经元有三个以上输入)分成两个区域。plotpc(w,b)对含权矩阵w和偏差矢量b的硬特性神经元的两个或三个输入画一个分类线。这一函数返回分类线的句柄以便以后调用。plotpc(w,b,h)包含从前的一次调用中返回的句柄,它在画新分类线之前,删除旧线。26计算机MATLAB神经网络工具箱6.感知机神经网络的初始化函数initp()利用initp()函数可建立一个单层(一个输入层和一个输出层)感知机神经网络。其调用格式为:W,b=initp(R,S)或W,b=

17、initp(X,T)27计算机MATLAB神经网络工具箱例利用以下命令,可得图1-54。X=0011;0101;T=0111;W,b=initp(X,T);plotpv(X,T);plotpc(W,b);使用plotpc()函数可以在已绘制的图上加上感知机分类线(MATLAB6.1及以下版本利用此命令不能产生分类线),如图2-3所示。由图可见经过初始化后的网络对输入样本还不能正确进行分类。图2-3输入样本加网络初始分类线28计算机MATLAB神经网络工具箱7用感知机准则训练感知机的函数trainp() 经过初始化建立的感知机,还必须经过训练才能够实际应用。通过训练以决定网络的权值和偏值。对于感

18、知机,其训练过程为:对于给定的输入向量,计算网络的实际输出,并与相应的目标向量进行比较,得到误差,然后根据相应的学习规则调整权值和偏值。重新计算网络在新的权值和偏值作用下的输出,重复上述的权值和偏值的调整过程,直到网络的输出与期望的目标向量相等或者训练次数达到预定的最大次数时才停止训练,之所以要设定最大训练次数,是因为对于有些问题,使用感知机神经网络时是不能解决的,这正是感知机的缺点。29计算机MATLAB神经网络工具箱训练感知机神经网络trainp()函数的调用格式为:W,B,epochs,errors=trainp(w,b,X,T,tp)30计算机MATLAB神经网络工具箱例例2-4 利用

19、trainp()函数训练一个感知机网络,并用训练后的网络对输入样本进行分类。解解程序如下。ex2_4例利用以上程序,可得如图2-4所示的样本及分类线。 用标准化感知机准则训练感知机的函数trainpn()的用法同函数trainp(),即使输入矢量的长度不同,使用标准化感知机准则也使得学习过程收敛很快。图2-4样本加分类线31计算机MATLAB神经网络工具箱8.感知机神经网络的仿真函数simup()神经网络一旦训练完成,网络的权值和偏值就已经确定了。于是就可以使用它来解决实际问题了。感知机由一系列硬特性神经元组成,运行速度很快,对简单的分类很有用。利用simup()函数可以测试一个感知机神经网络

20、的性能。其调用格式为:Y=simup(X,w,b)32计算机MATLAB神经网络工具箱例例2-5 利用trainp()函数训练一个感知机网络,使其能够完成“或”的功能。解解根据神经网络工具箱函数编写的程序如下。ex2_5执行以上程序可得如下结果以及图2-5至图2-8。y=0111 由以上结果和图2-7可知,训练后的网络已具有“或”的功能,且可对输入样本进行正确分类33计算机MATLAB神经网络工具箱图2-5输入样本的分类图2-6输入样本加网络初始分类线图2-7输入样本加网络训练后的分类线图2-8误差曲线34计算机MATLAB神经网络工具箱例例2-6 利用trainp()函数训练一个感知机网络,

21、使其能够对三个输入进行分类。解解 根据神经网络工具箱函数编写的程序如下。ex2_6执行以上程序可得如下结果以及图2-9至图2-12。y=0100110135计算机MATLAB神经网络工具箱图2-9输入样本的分类图2-10输入样本加网络初始分类线图2-11输入样本加网络训练后的分类线图2-12误差曲线36计算机MATLAB神经网络工具箱例例2-7 利用trainp()函数训练一个感知机网络,使其能够将输入分为4类。解解 根据神经网络工具箱函数编写的程序如下。ex2-737计算机MATLAB神经网络工具箱执行以上程序可得如下结果以及图2-13和图2-14。y=1110011100000001111

22、1图2-13输入样本加网络训练后的分类线图2-14误差曲线38计算机MATLAB神经网络工具箱9感知机学习函数learnp()感知机神经网络学习规则为调整网络的权值和偏值使网络平均绝对误差性能最小,以便对网络输入矢量正确分类。感知机的学习规则只能训练单层网络,函数调用格式为:dW,db=learnp(X,E)39计算机MATLAB神经网络工具箱例例2-8 利用learnp()函数训练建立一个感知机网络,使其能够完成“或”的功能。解解 根据神经网络工具箱函数编写的程序如下。ex2_840计算机MATLAB神经网络工具箱结果显示:epoch=5W=1.36261.7590y=011141计算机MA

23、TLAB神经网络工具箱10标准化感知机学习函数learnpn()感知机学习规则在调整网络的权值和偏值时利用下式从上式可以看出,输入向量X越大,则权值的变化w就越大。当存在奇异样本(即该样本向量同其它所有的样本向量比较起来,特别得大或者特别得小)时,利用以上规则训练时间大为加长。因为其它样本则需花很多时间才能同奇异样本所对应的权值变化相匹配。为了消除学习训练时间对奇异样本的敏感性,提出了一种改进的感知机学习规则,也成为标准化感知机学习规则,标准化感知机学习规则试图使奇异样本和其它样本对权值的变化值的影响均衡,它可通过下式实现42计算机MATLAB神经网络工具箱标准化感知机的学习函数为learnp

24、n(),其调用格式为:dW,db=learnpn(X,E)相应于标准化感知机学习规则的训练函数为trainpn(),其调用格式为:W,B,epochs,errors=trainpn(w,b,X,T,tp)43计算机MATLAB神经网络工具箱例例2-9 利用trainpn()函数训练建立一个感知机网络,观察奇异输入样本对训练结果的影响。解解根据神经网络工具箱函数编写的程序如下。ex2_944计算机MATLAB神经网络工具箱执行以上程序可得如下结果以及图2-15和图2-16。y=11001图2-15输入样本加网络训练后的分类线图2-16误差曲线 由图2-16可见利用函数trainpn(),网络训练

25、只需要2步,如果利用函数trainp(),网络训练需要经过60多步。45计算机MATLAB神经网络工具箱例例2-10利用trainpn()函数训练建立一个感知机网络,对“异或”问题进行分类。解解单层感知机不能解决像逻辑“异或”一类的线性不可分的输入向量的分类问题,解决这一问题的方案,是可以设计一个两层的网络,即含有输入层,隐含层和输出层的结构。设输入向量为:X=0011;0101,目标向量为:T=0110。根据神经网络工具箱函数编写的程序ex2_10.m如下。%ex2_10.m执行以上程序可得如下结果以及图2-17和图2-18。y=011046计算机MATLAB神经网络工具箱由图2-18可见网

26、络训练只需要4步。需要指出的是,由于隐含层的权值和偏值是随机给定的而且不可调整,故隐含层的输出也是随机的,这样网络有可能有解,也有可能无解,如果网络找不到解,可再次运行网络,以重新初始化隐含层的权值和偏值。如果采用单层网络,对以上问题永远也找不到正确的分类方案。47计算机MATLAB神经网络工具箱11.建立感知机神经网络函数newp()利用newp()函数可建立一个感知机神经网络。其调用格式为:net=newp(Xr,S,Tf,Lf)例建立一个两输入且样本点取值在-1,1之间,而网络只有单个神经元的感知机神经网络,可利用以下命令net=newp(-11;-11,1);48计算机MATLAB神经

27、网络工具箱使用plotpc()函数可以在已绘制的图上加上感知机分类线。让它返回得到的分类线的句柄,以便在下一次再绘制分类线时能够将原来的删除。例handle=plotpc(net.iw1,net.b1);式中net.iw1用来计算网络net的权值,net.b1用来计算网络net的偏值。49计算机MATLAB神经网络工具箱例例2-11 利用newp()和train()函数建立并训练一个感知机网络,使其同样能够完成“或”的功能。解解 根据神经网络工具箱函数编写的程序如下。ex2_11 执行结果y=011150计算机MATLAB神经网络工具箱例例2-12 利用train()函数训练一个感知机网络,并

28、选择10个点对其进行测试。解解 根据神经网络工具箱函数编写的程序ex2_12.m如下。ex2_12.m运行以上命令可得如图2-20和图2-21所示的训练过程误差曲线和测试结果。由图可见网络训练只需5步,就能够将它们正确分类,这说明了设计的网络是正确的。51计算机MATLAB神经网络工具箱1.3 线性神经网络工具箱函数线性神经网络工具箱函数MATLAB神经网络工具箱中提供了大量的与线性网络相关的的工具箱函数。在MATLAB工作空间的命令行键入“helplinnet”,便可得到与线性网络相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-3列出了这些函数的名称和基本功能。52计算机

29、MATLAB神经网络工具箱表2-3线性网络的重要函数和功能函数名函数名功功 能能sse()误差平方和性能函数purelin()线性传输函数initlin()线性线性神经的初始化函数solvelin()设计一个线性神经网络simulin()对线性神经网络进行仿真maxlinlr()计算线性层的最大学习速率learnwh()Widrow-hoff的学习函数trainwh()对线性神经网络进行离线训练adaptwh()对线性神经网络进行在线自适应训练newlind()设计一个线性层newlin()新建一个线性层53计算机MATLAB神经网络工具箱1误差平方和性能函数sse()线性网络学习规则为调整网

30、络的权值和偏值使网络误差平方和性能最小。误差平方和性能函数的调用格式为:perf=sse(E,w,pp)54计算机MATLAB神经网络工具箱2.线性传输函数purelin()神经元最简单的传输函数是简单地从神经元输入到输出的线性传输函数,输出仅仅被神经元所附加的偏差所修正。线性传输函数常用于Widriw-Hoff或BP准则来训练的神经网络中,该函数调用格式为:a=purelin(N)或a=purelin(Z,b)a=purelin(P)55计算机MATLAB神经网络工具箱函数purelin(P)包含传输函数的特性名并返回问题中的特性,如下的特性可从任何传输函数中获得:(1)delta与传输函数

31、相关的delta函数;(2)init传输函数的标准初始化函数;(3)name传输函数的全称;(4)output包含有传输函数最小、最大值的二元矢量。例利用以下命令可得图2-22。n=-5:0.1:5;b=0;a=purelin(n,b);plot(n,a)图2-22线性传输函数56计算机MATLAB神经网络工具箱3.线性神经网络的初始化函数initlin()利用initlin()函数可建立一个单层(一个输入层和一个输出层)线性神经网络。其调用格式为:W,b=initlin(R,S)或W,b=initlin(X,T)例X=0011;0101;T=0111;W,b=initlin(X,T);57计

32、算机MATLAB神经网络工具箱4.设计一个线性神经网络函数solvelin()同大多数其它神经网络不同的是,只要已知线性神经网络的输入向量和目标向量,就可以直接对其进行设计。使用函数solvelin()设计的线性神经网络,可以不经过训练,直接找出网络的权值和偏值,使得网络的误差的平方和最小。该函数的调用格式为:W,b=solvelin(X,T)58计算机MATLAB神经网络工具箱5.线性神经网络的仿真函数simulin()利用函数solvelin()建立的线性神经网络的权值和偏值就已经根据网络的输入向量和目标向量训练好了。simulin()函数可以测试一个线性神经网络的性能。其调用格式为:Y=

33、simulin(X,w,b)59计算机MATLAB神经网络工具箱例例2-13 利用solvelin()函数建立一个线性网络,并对其进行测试。X=123;T=2.04.15.9;%给定训练集和目标值W,b=solvelin(X,T);y=simulin(X,W,b)结果显示:y=2.05004.00005.950060计算机MATLAB神经网络工具箱6.计算线性层的最大学习速率函数maxlinlr()函数maxlinlr()用于计算用Widrow-Hoff准则训练的线性网络的最大稳定学习速率。其调用格式为:lr=maxlinlr(X)或lr=maxlinlr(X,b)例利用以下命令可计算出用Wi

34、drow-Hoff准则训练的线性神经元层所用的学习率上限。X=12-47;0.13106;lr=maxlinlr(X)结果显示:lr=0.006961计算机MATLAB神经网络工具箱7线性神经网络学习函数learnwh()线性网络采用Widrow-Hoff学习规则,Widrow-Hoff学习规则只能训练单层的线性神经网络,但这并不影响单层线性神经网络的应用,因为对每一个多层线性神经网络而言,都可以设计出一个性能完全相当的单层线性神经网络。当利用函数solvelin()设计的线性神经网络不能调整网络的权值和偏值使网络误差平方和性能最小时,可以应用函数learnwh()和函数trainwh()来调

35、整网络的权值和偏值。函数learnwh()的调用格式为:dW,db=learnwh(X,E,lr)62计算机MATLAB神经网络工具箱8线性神经网络的训练函数trainwh()函数trainwh()可利用Widrow-Hoff学习规则对线性层的权值进行训练,利用输入矢量,计算该层输出矢量,然后根据产生的误差矢量调整该层的权值和偏差。调用格式为:W,B,epochs,errors=trainwh(w,b,X,T,tp)63计算机MATLAB神经网络工具箱9.线性神经网络自适应训练函数adaptwh()函数adaptwh()可以利用Widrow-Hoff学习规则对线性层的权值进行自适应调节,在每一

36、步迭代过程中,修改自适应线性网络层的权值、偏差和输出矢量,从而学习并适应环境的变化。其调用格式为:Y,E,W,B=adaptwh(w,b,X,T,lr)64计算机MATLAB神经网络工具箱10.设计一个线性层函数newlind()利用函数newlind()设计出的线性网络已经训练好,可直接使用,该函数调用格式为:net=newlind(X,T)65计算机MATLAB神经网络工具箱例例2-14 利用newlind()函数建立一个线性网络,并对其进行测试。解解 MATLAB程序ex2_14.m如下。%ex2_14.mX=123;T=2.04.15.9;%给定训练集和目标值net=newlind(X

37、,T);y=sim(net,X)执行结果:y=2.05004.00005.950066计算机MATLAB神经网络工具箱11.新建一个线性层函数newlin()利用函数newlin()设计的线性网络,还需训练,该函数调用格式为:net=newlin(Xr,S,Id,lr)例建立一个线性网络。可利用以下命令X=123;S=1;net=newlin(minmax(X),S);67计算机MATLAB神经网络工具箱执行结果可得图2-23和图2-24。图2-23系统输入输出曲线图2-24网络预测输出与系统输出和误差例例2-15利用线性网络进行系统辨识。解MATLAB程序如下:ex2_1568计算机MATL

38、AB神经网络工具箱执行结果可得图2-25和图2-26。图2-25网络待预测的目标信号图2-26网络预测输出与目标值例例2-16利用线性网络进行自适应预测。解方法一:MATLAB程序如下:ex2_16_169计算机MATLAB神经网络工具箱执行结果可得图2-27和图2-28。图2-27网络待预测的目标信号图2-28网络预测输出与误差方法二:MATLAB程序如下:ex2_16_270计算机MATLAB神经网络工具箱执行结果可得图2-29和图2-30。图2-29网络待预测的目标信号图2-30网络预测输出目标信号与误差例例2-17利用线性网络预测一个时变信号序列。解MATLAB程序如下:ex2_177

39、1计算机MATLAB神经网络工具箱1.4 BP神经网络工具箱函数神经网络工具箱函数MATLAB神经网络工具箱中提供了大量的进行BP网络分析和设计的工具箱函数。在MATLAB工作空间的命令行键入“helpbackprop”,便可得到与BP神经网络相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-4列出了这些函数的名称和基本功能。72计算机MATLAB神经网络工具箱表2-4BP网络的重要函数和功能函数名函数名功功 能能tansig()双曲正切S型(tan-sigmoid)传输函数purelin()线性(Purelin)传输函数logsig()对数S型(log-sigmoid)传输

40、函数deltatan()Tansig神经元的delta函数deltalin()Purelin神经元的delta函数deltalog()Logsig神经元的delta函数learnbp()BP学习规则learnbpm()含动量规则的快速BP学习规则learnlm()Levenberg-Marguardt学习规则initff()对BP神经网络进行初始化trainbp()利用BP算法训练前向网络trainbpx()利用快速BP算法训练前向网络trainlm()利用Levenberg-Marguardt规则训练前向网络73计算机MATLAB神经网络工具箱函数名函数名功功 能能simuff()BP神经网

41、络进行仿真newff()生成一个前馈BP网络newfftd()生成一个前馈输入延时BP网络newcf()生成一个前向层叠BP网络nwlog()对Logsig神经元产生Nguyen-Midrow随机数sse()误差平方和性能函数sumsqr()计算误差平方和errsurf()计算误差曲面plotes()绘制误差曲面图plotep()在误差曲面图上绘制权值和偏值的位置ploterr()绘制误差平方和对训练次数的曲线barerr()绘制误差的直方图74计算机MATLAB神经网络工具箱1均方误差性能函数均方误差性能函数mse( ) BP神经网络学习规则为调整网络的权值和偏值,使网络的均方误差和性能最小

42、。均方误差性能函数的调用格式为:perf=mse(E,w,pp)75计算机MATLAB神经网络工具箱2.双曲正切S型(Sigmoid)传输函数tansig()双曲正切Sigmoid函数把神经元的输入范围从(-,+)映射到(-1,+1),它是可导函数,适用于BP训练的神经元,函数调用格式为:a=tansig(N)或a=tansig(Z,b)tansig(P)76计算机MATLAB神经网络工具箱函数tansig(P)包含传输函数的特性名并返回问题中的特性,如下的特性可从任何传输函数中获得:(1)delta与传输函数相关的delta函数;(2)init传输函数的标准初始化函数;(3)name传输函数

43、的全称;(4)output包含有传输函数最小、最大值的二元矢量。例利用以下命令可得图2-31。n=-5:0.1:5;b=0;a=tansig(n,b);plot(n,a)图2-31双曲正切曲线77计算机MATLAB神经网络工具箱 如果BP网络的最后一层是Sigmoid型神经元,那么整个网络的输出就被限制在一个较小的范围内;如果BP网络的最后一层是Purelin型线性神经元,那么整个网络的输出可以取任意值。78计算机MATLAB神经网络工具箱3. 正切正切S型(型(Tansig)神经元的求导函数)神经元的求导函数dtansig( )函数dtansig()为Tansig神经元的导函数,它根据Y=1

44、-X2的函数来计算,其调用格式为:dY_dX=dtansig(X,Y)Logsig和Purelin神经元的导函数dlogsig()和dpurelin()的用法同上。但它们分别根据Y=X*(1-X)和Y=1的函数来计算。例利用以下MATLAB命令X=0.10.80.7;Y=tansig(x),dY_dX=dtansig(X,Y)结果显示:Y=0.09970.66400.6044dY_dX=0.99010.55910.634779计算机MATLAB神经网络工具箱4.正切S型(Tansig)神经元的求导函数deltatan()反向传播误差算法(BP)是利用误差平方和对网络各层输入的导数来调整其权值和

45、偏值的,从而降低误差平方和。从网络误差矢量中可推导出输出层的误差导数或(delta)矢量,隐含层的矢量的导出,这种矢量的反向传播正是BP算法的由来。函数调用格式为:dy=deltatan(y)或dy=deltatan(y,e)dy=deltatan(y,d2,w2)Logsig和Purelin神经元的delta函数deltalog()和deltalin()的用法同上。80计算机MATLAB神经网络工具箱5.BP学习规则函数learnbp()BP神经网络学习规则为调整网络的权值和偏值使网络误差的平方和为最小。这是通过在最速下降方向上不断地调整网络的权值和偏值来达到的。计算网络输出层的误差矢量导数

46、,然后反馈回网络,直到每个隐含层的误差导数(称为delta)都达到。这可由函数deltatan()、deltalin()和deltalog()计算。根据BP准则,每一层的权值矩阵w利用本层的向量和输入向量x来更新,即w(i,j)=(i)x(j)。函数调用格式为dW,dB=learnbp(X,delta,lr)81计算机MATLAB神经网络工具箱6.含动量规则的BP学习规则函数learnbpm()为了提高BP算法的学习速度并增加算法的可靠性,在BP学习算法中引进了动量因子,它使权值的变化等于上次权值的变化与这次由BP准则引起的变化之和,这样可将动量加到BP学习中,上一次权值变化的影响可由动量常数

47、来调整。动量法降低了网络对于误差曲面局部细节的敏感性,有效地抑制网络陷于局部极小。而自适应学习率,也可以使训练时间大大缩短。当动量常数为0时,说明权值的变化仅由梯度决定。82计算机MATLAB神经网络工具箱当动量常数为0时,说明权值的变化仅由梯度决定。当动量常数为1时,说明新的权值变化仅等于上次权值变化,而忽略掉梯度项,其数学表达式为w(i,j)=Dw(i,j)+(1-D)(i)x(j)。函数调用格式为dW,dB=learnbpm(X,delta,lr,D,dw,db)83计算机MATLAB神经网络工具箱7.Levenberg-Marguardt学习规则函数learnlm()函数learnlm

48、( )采用了Levenberg-Marguardt优化方法,从而使得学习时间更短。其缺点是,对于复杂的问题,该方法需要很大的存储空间。LM方法更新参数(如权值和偏值)的数学表达式为w=(JTJ+I)-1JTe。随着的增大,LM方法中的JTJ项变得无关紧要,因而学习过程由-1JTe决定,即梯度下降法。函数调用格式为dW,dB=learnlm(X,delta)84计算机MATLAB神经网络工具箱例例2-18利用三层BP神经网络训练加权系数。两组3输入为12;-11;13,希望的输出均为1,1。隐含层的激活函数取S型传输函数,输出层的激活函数取线性传输函数。解解 根据BP学习算法的计算步骤,利用MA

49、TLAB的神经网络工具箱的有关函数编写的程序如下。ex2_18结果显示:Ok=1.00680.99710.97581.017885计算机MATLAB神经网络工具箱8.BP神经网络初始化函数initff()在设计一个BP网络时,只要已知网络的输入向量的取值范围、各层的神经元个数及传输函数,就可以利用初始化函数initff()对BP网络进行初始化。函数initff()可最多对三层神经网络进行初始化,而得到每层的权值和偏值。其调用格式为:W,b=initff(Xr,S,Tf)或 W1,b1,W2,b2=initff (Xr,S1,Tf1,S2,Tf2)W1,b1,W2,b2,W3,b3=initff

50、 (Xr,S1,Tf1, S2,Tf2,S3,Tf3)86计算机MATLAB神经网络工具箱例如设计一个隐含层有8个神经元,传输函数为tansig,输出层有5个神经元,传输函数为purelin的两层BP神经网络可利用以下命令。X=sin(0:100);cos(0:100*2);W1,b1,W2,b2=initff(X,8,tansig,5,purelin)87计算机MATLAB神经网络工具箱9.利用BP算法训练前向网络函数trainbp()BP神经网络学习规则为调整网络的权值和偏值使网络误差的平方和为最小。这是通过在最速下降方向上不断地调整网络的权值和偏值来达到的。函数调用格式为:W,B,te,

51、tr=trainbp(w,b,Tf,X,T,tp)或W1,B1,W2,B2,te,tr=trainbp(w1,b1,Tf1,w2,b2,Tf2,X,T,tp)W1,B1,W2,B2,W3,B3,te,tr=trainbp(w1,b1,Tf1,w2,b2,Tf2,w3,b3,Tf3,X,T,tp)88计算机MATLAB神经网络工具箱10.利用快速BP算法训练前向网络函数trainbpx()使用动量因子时,BP算法可找到更好的解,而自适应学习率,也可以使训练时间大大缩短。函数调用格式为:W,B,te,tr=trainbpx(w,b,Tf,X,T,tp)或W1,B1,W2,B2,te,tr=trai

52、nbpx(w1,b1,Tf1,w2,b2,Tf2,X,T,tp);W1,B1,W2,B2,W3,B3,te,tr=trainbpx(w1,b1,Tf1,w2,b2,Tf2,w3,b3,Tf3,X,T,tp)89计算机MATLAB神经网络工具箱11. 利用Levenberg-Marguardt规则训练前向网络函数trainlm()函数trainbp()和trainbpx()都是基于梯度下降的训练算法,而函数trainblm()是建立在一种优化方法基础上的训练算法。其调用格式为:W,B,te,tr=trainlm(w,b,Tf,X,T,tp)或W1,B1,W2,B2,te,tr=trainlm(w

53、1,b1,Tf1,w2,b2,Tf2,X,T,tp)W1,B1,W2,B2,W3,B3,te,tr=trainlm(w1,b1,Tf1,w2,b2,Tf2,w3,b3,Tf3,X,T,tp)90计算机MATLAB神经网络工具箱 函数trainlm()的训练速度最快,但它需要更大的存储空间,trainbpx()的训练速度次之,trainbp()最慢。91计算机MATLAB神经网络工具箱12.BP神经网络仿真函数simuff()BP神经网络由一系列网络层组成,每一层都从前一层得到输入数据,simuff()函数可仿真最多三层前向网络。其调用格式为:y=simuff(X,W,b,Tf,)或y1,y2=

54、simuff(X,w1,b1,Tf1,w2,b2,Tf2)y1,y2,y3=simuff(X,w1,b1,Tf1,w2,b2,Tf2,w3,b3,Tf3,)式中X为的输入向量;w,wi为权值矩阵;b,bi为偏值;Tf,Tfi为传输函数。92计算机MATLAB神经网络工具箱例例2-19利用两层BP神经网络完成函数逼近。隐含层的激活函数取S型传输函数,输出层的激活函数取线性传输函数。解解 (1)根据神经网络工具箱函数trainbp()编写的程序如下。ex2_19_1利用以上程序可得图2-32和如下结果。y2=0.988793计算机MATLAB神经网络工具箱利用以上程序可得如下结果。y2=1.002

55、6(2)根据神经网络工具箱函数trainbpx()编写的程序如下。ex2_19_2(3)根据神经网络工具箱函数trainlm()编写的程序如下。ex2_19_3结果显示:y2=0.998794计算机MATLAB神经网络工具箱13.建立网络函数newff()利用newff()函数可建立一个感知机神经网络。其调用格式为:net=newff(Xr,S1S2.SNl,TF1TF2.TFNl,BTF,BLF,PF)95计算机MATLAB神经网络工具箱例例2-20利用newff()函数建立一个非线性函数的BP网络逼近正弦函数。解解 MATLAB程序ex2_20.m如下。ex2_20.m 未经训练的网络输出

56、与目标值(正弦函数)的比较,如图2-33所示。网络的权值和偏值是随机的,所以未将训练的网络输出效果很差,而且每次运行结果也不一样。图2-33未训练的网络输出与目标值96计算机MATLAB神经网络工具箱14. 建立网络函数建立网络函数newfftd( )利用newfftd()函数可生成一个前馈输入延时BP网络。其调用格式为:net=newfftd(Xr,ID,S1S2.SNl,TF1TF2.TFNl,BTF,BLF,PF)式中,ID为延迟输入向量;其他参数定义同函数newff()。97计算机MATLAB神经网络工具箱例例2-21利用两层BP神经网络训练加权系数。两组3输入为12;-11;13,希

57、望的输出均为1,1。隐含层的激活函数取S型传输函数,输出层的激活函数取线性传输函数。解解 根据神经网络工具箱函数编写的程序如下。ex2_21结果显示:Y=1.00001.00001.00001.000098计算机MATLAB神经网络工具箱15.计算误差曲面函数errsurf()利用误差曲面函数可以计算单输入神经元误差的平方和。其调用格式为:Es=errsurf(X,T,W,b,Tf)99计算机MATLAB神经网络工具箱16.绘制误差曲面图函数plotes()利用函数plotes()可绘制误差曲面图。其调用格式为:plotes(W,b,Es,v)式中W为权值矩阵;b为的偏值向量;Es为误差曲面;

58、v为期望的视角,默认为-37.530。例利用以下命令,可得图2-34。X=32;T=0.40.8;W=-4:0.4:4;b=W;Es=errsurf(X,T,W,b,logsig);plotes(W,b,Es,6030)图2-34误差曲面图100计算机MATLAB神经网络工具箱17.在误差曲面图上绘制权值和偏值的位置函数plotep()函数plotep()在已由函数plotes()产生的误差性能表面图上画出单输入网络权值w与偏差b所对应的误差e的位置,该函数调用格式为:h=plotep(W,b,e)101计算机MATLAB神经网络工具箱例利用以下命令,可得图2-35。X=32;T=0.40.8

59、;W=-4:0.4:4;b=W;Es=errsurf(X,T,W,b,logsig);plotes(W,b,Es,6030)W=-2;b=0;e=sumsqr(T-simuff(X,W,b,logsig);plotep(W,b,e)图2-35权值和偏值在误差曲面图上的位置102计算机MATLAB神经网络工具箱18.绘制误差平方和对训练次数的曲线函数ploterr()函数ploterr(e)绘制误差e的行矢量对训练次数的曲线,纵轴为对数形式。总的训练次数比误差e的长度要小1。误差e中的第一个元素是训练前(次数为0)的初始网络误差。函数ploterr(e,g)绘制误差e的行矢量并用水平点线来标志误

60、差g。19绘制误差的直方图函数barerr() 函数barerr(e)绘制每对输入/目标矢量误差e平方和的直方图。103计算机MATLAB神经网络工具箱例例2-22设计一个三层BP神经网络,并训练它来识别0,1,2,9,A,F,这16个十六进制已经被数字成像系统数字化了,其结果是对应每个数字有一个53的布尔量网络。例如0用111;101;101;101;111表示;1用010;010;010;010;010表示;2用111;001;010;100;111表示,等等。如图2-36所示。图2-3616个十六进制对应的53的布尔量网络104计算机MATLAB神经网络工具箱解将这16个含15个布尔量网

61、络元素的输入向量定义成一个1516维的输入矩阵X,X中每一列的15个元素对应一个数字量按列展开的布尔量网络元素,例如X中第一列的15个元素1;1;1;1;0;1;1;0;1;1;0;1;1;1;1表示0。目标向量也被定义成一个416维的目标矩阵T,其每一列的4个元素对应一个数字量,这16个数字量用其所对应的十 六 进 制 值 表 示 。 例 如 用 0;0;0;0表 示 0; 用0;0;0;1表示1;用0;0;1;0表示2,等等。 105计算机MATLAB神经网络工具箱 为了识别这些以53布尔量网络表示的十六进制数,所设计的网络需要有16个输入,在输出层需要有4个神经元来识别它,隐含层(对应于

62、MATLAB工具箱中的第一层)设计了9个神经元。激活函数选择log-Sigmoid型传输函数,因为它的输出范围(0到1)正好适合在学习后输出布尔值。由于十六进制数的表示有时会受到噪声的污染,使布尔量网络元素发生变化,为了能排除噪声的干扰,顺利地识别16个十六进制数,必须设计高性能的神经网络。 106计算机MATLAB神经网络工具箱方法一:ex2_22_1结果显示:y=0.00000.00000.00000.00000.99991.00000.99991.00000.00020.00001.00001.00000.00010.02361.00001.00000.00081.00000.00001

63、.00000.00001.00000.00000.99971.00000.99950.99851.00001.00000.99641.00001.0000107计算机MATLAB神经网络工具箱方法二:ex2_22_2结果显示:y4=0.00000.00000.00040.00001.00001.00001.00001.00000.00010.00110.99920.99940.00040.00001.00000.99990.00100.99930.00401.00000.00000.99990.00001.00001.00001.00001.00001.00001.00000.99971.00

64、001.0000108计算机MATLAB神经网络工具箱1.5径向基神经网络工具箱函数径向基神经网络工具箱函数MATLAB神经网络工具箱中提供了大量的与径向基网络相关的的工具箱函数。在MATLAB工作空间的命令行键入“helpradbasis”,便可得到与径向基神经网络相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-5列出了这些函数的名称和基本功能。109计算机MATLAB神经网络工具箱表2-5径向基网络的重要函数和功能函数名函数名功功 能能dist()计算向量间的距离函数radbas()径向基传输函数solverb()设计一个径向基神经网络solverbe()设计一个精确径

65、向基神经网络simurb()径向基神经网络仿真函数newrb()新建一个径向基神经网络newrbe()新建一个严格的径向基神经网络newgrnn()新建一个广义回归径向基神经网络ind2vec()将数据索引向量变换成向量组vec2ind()将向量组变换成数据索引向量newpnn()新建一个概率径向基神经网络110计算机MATLAB神经网络工具箱1.计算矢量间的距离函数dist()大多数神经元网络的输入可通过表达式N=w*X+b来计算,其中w,b分别为权矢量和偏差矢量。但有一些神经元的输入可由函数dist()来计算,dist()函数是一个欧氏(Euclidean)距离权值函数,它对输入进行加权,

66、得到被加权的输入。一般两个向量x和y之间的 欧 氏 (Euclidean) 距 离 D定 义 为 : D=sun(x-y).2).0.5。函数dist()调用格式为:D=dist(W,X)或D=dist(pos)111计算机MATLAB神经网络工具箱D=disk(pos)函数也可以作为一个阶层距离函数,用于查找某一层神经网络中的所有神经元之间的欧氏距离,函数也返回一个距离矩阵。例如w=rand(4,3);X=rand(3,1);d=dist(w,X)结果显示:d=0.72690.70350.87410.7699112计算机MATLAB神经网络工具箱2.径向基传输函数radbas()径向基函数神

67、经元的传输函数为radbas(),RBF网络的输入同前面介绍的神经网络的表达式有所不同。其网络输入为权值向量W与输入向量X之间的向量距离乘以偏值b,即d=radbas(dist(W,X)*b)。函数调用格式为:a=radbas(N)或a=radbas(Z,b)radbas(P)113计算机MATLAB神经网络工具箱函数radbas(P)包含传输函数的特性名并返回问题中的特性,如下的特性可丛任何传输函数中获得:(1)delta与传输函数相关的delta函数;(2)init传输函数的标准初始化函数;(3)name传输函数的全称;(4)output包含有传输函数最小、最大值的二元矢量。例利用以下命令

68、可得图2-37。n=-5:0.1:5;a=radbas(n);plot(n,a)图2-37径向基传输函数114计算机MATLAB神经网络工具箱3.设计一个径向基网络函数solverb()径向基网络由一个径向基神经元隐含层和一个线性神经元输出层组成的两层神经网络,径向基网络不仅能较好地拟合任意不连续的函数,而且能用快速的设计来代替训练。利用函数solverb()设计的径向基神经网络,因在建立网络时预先设置了目标参数,故它同时也完成了网络的训练,可以不经过训练,直接使用。该函数的调用格式为:W1,b1,W2,b2,nr,dr=solverb(X,T,dp)115计算机MATLAB神经网络工具箱4.

69、设计一个精确径向基网络函数solverbe()函数solverbe()产生一个与输入向量X一样多的隐含层径向基神经网络,因而网络对设计的输入/目标向量集误差为0,该函数的调用格式为:W1,b1,W2,b2=solverbe(X,T,sc)116计算机MATLAB神经网络工具箱5.径向基网络仿真函数simurb()径向基网络设计和训练好以后便可对网络进行仿真,其调用格式为:y=simurb(X,W1,b1,W2,b2)117计算机MATLAB神经网络工具箱例例2-23利用径向基网络完成函数逼近。解解 根据神经网络函数编写的程序如下。ex2_23利用以上程序可得图2-38和如下结果。y=0.997

70、7 本例采用径向基函数网络来完成函数逼近任务,将结果同BP网络以及改进BP算法的前向网络的训练结果做比较后,发现径向基函数网络所用的时间最短。图2-38训练后的输出与目标值118计算机MATLAB神经网络工具箱6.新建一个径向基网络函数newrb()调用格式为:net=newrb(X,T,goal,spread)例建立一个径向基网络,可利用以下命令X=123;T=2.04.15.9;net=newrb(X,T);y=sim(net,X)结果显示:y=2.00004.10005.9000119计算机MATLAB神经网络工具箱7. 新建一个严格的径向基网络函数新建一个严格的径向基网络函数newrb

71、e( ) 利用函数newrbe()可以新建一个严格的径向基神经网络,调用格式为:net=newrbe(X,T,SPREAD)例建立一个径向基网络,可利用以下命令X=123;T=2.04.15.9;net=newrbe(X,T);y=sim(net,X)结果显示:y=2.00004.10005.9000120计算机MATLAB神经网络工具箱8. 新建一个广义回归径向基网络函数新建一个广义回归径向基网络函数newgrnn( )广义回归径向基网络GRNN是径向基网络的一种变化形式,由于训练速度快,非线性映射能力强,因此经常用于函数逼近,利用函数newgrnn()可以新建一个广义回归径向基神经网络,调

72、用格式为:net=newgrnn(X,T,SPREAD)121计算机MATLAB神经网络工具箱 利用函数newgrnn()新建的广义回归径向基神经网络,也可以不经过训练,直接使用。例建立一个广义回归径向基网络,可利用以下命令X=123;T=2.04.15.9;net=newgrnn(X,T,0.1);y=sim(net,X)结果显示:y=2.00004.10005.9000122计算机MATLAB神经网络工具箱9. 将数据索引向量变换成向量组函数将数据索引向量变换成向量组函数ind2vec( ) 函数ind2vec()的调用格式为:vec=ind2vec(ind)式中,ind为n维数据索引行向

73、量;vec为m行n列的稀疏矩阵,每列只有一个1,矩阵的行数m等于向量ind中所有分量的最大值,矩阵中的第i个列向量,除了由ind中第i个分量的值指定的位置为1外,其余元素为0。123计算机MATLAB神经网络工具箱例ind=1323;vec=ind2vec(ind)结果显示:vec=(1,1)1(3,2)1(2,3)1(3,4)1可以看出,结果应该为一个34的矩阵,其中(x,y)是与数据索引行向量中各元素的值和位置相对应的,仅位于x行y列的元素为1,其余元素均为0。124计算机MATLAB神经网络工具箱10. 将向量组变换成数据索引向量函数将向量组变换成数据索引向量函数vec2ind ( )

74、函数vec2ind()与函数ind2vec()互为逆变化。函数vec2ind()的调用格式为:ind=vec2ind(vec)例ind=1323;vec=ind2vec(ind);ind=vec2ind(vec)结果显示:ind=1323125计算机MATLAB神经网络工具箱11. 新建一个概率径向基网络函数新建一个概率径向基网络函数newpnn( )概率径向基网络PNN也是径向基网络的一种变化形式,它具有结构简单、训练速度快等特点,应用范围非常广泛,特别适合于模式分类问题的解决。在模式分类中,它的优势在于可以利用线性学习算法来完成以往非线性算法所做的工作,同时又可以保持非线性算法高精度的特点

75、,利用函数newpnn()可以新建一个概率径向基神经网络,调用格式为:net=newpnn(X,T,SPREAD)126计算机MATLAB神经网络工具箱例建立一个概率径向基网络,可利用以下命令X=1234567;Tc=1232231;plotvec(X,Tc);T=ind2vec(Tc);net=newpnn(X,T);Y=sim(net,X)Yc=vec2ind(Y)127计算机MATLAB神经网络工具箱结果显示:Y=(1,1)1(2,2)1(3,3)1(2,4)1(2,5)1(3,6)1(1,7)1Yc=232231128计算机MATLAB神经网络工具箱执行结果可得图2-39和图2-40。

76、图2-39径向基传输函数及其加权和图2-40仿真结果及原始样本分布例例2-24利用径向基网络实现函数逼近。ex2_24129计算机MATLAB神经网络工具箱 利用函数newrb()建立的径向基网络,能够在给定的误差目标范围内找到能解决问题的最小的网络。但并不等于径向基网络就可以取代其它前馈网络。这是因为径向基网络很可能需要比BP网络多得多的隐含层神经网络元来完成工作。BP网络使用sigmoid()函数,这样的神经元有很大的输入可见区域。而径向基网络使用的径向基函数,输入空间区域很小。这就导致了在实际需要的输入空间较大时,需要很多的径向基神经元。130计算机MATLAB神经网络工具箱1.6自组织

77、神经网络工具箱函数自组织神经网络工具箱函数 自组织神经网络是神经网络领域中最吸引人的话题之一。这种结构的网络能够从输入信息中找出规律,以及关系,并且根据这些规律来相应地调整均衡网络,使得以后的输出与之相适应。自组织竞争神经网络能够识别成组的相似向量,常用于进行模式分类。自组织特征映射神经网络不但能够像自组织竞争神经网络一样学习输入的分布情况,而且可以学习进行训练神经网络的拓扑结构。在MATLAB神经网络工具箱中,自组织网络被分为自组织竞争网络和自组织特征映射神经网络两种。在MATLAB工作空间的命令行键入“helpselforg”,便可得到与自组织网络相关的函数,进一步利用help命令又能得到

78、相关函数的详细介绍。表2-6列出了这些函数名称和基本功能。131计算机MATLAB神经网络工具箱表1-8竞争学习网络的重要函数和功能函数名功能compet()竞争传输函数nngenc()产生一定类别的样本向量nbdist()用矢量距离表示的领域矩阵nbgrid()用栅格距离表示的领域矩阵nbman()用Manhattan距离表示的领域矩阵plotsm()绘制竞争网络的权值矢量initc()初始化竞争神经网络trainc()训练竞争神经网络simuc()仿真竞争神经网络newc()建立一个竞争神经网络initsm()初始化自组织特征映射网络learnk()Kohonen权值学习规则函数learn

79、is()Instar权值学习规则函数learnos()Outstar权值学习规则函数表2-6自组织神经网络的重要函数和功能132计算机MATLAB神经网络工具箱learnh()Hebb权值学习规则函数learnhd()衰减的Hebb权值学习规则函数learnsom()自组织特征映射权值学习规则函数plotsom()绘制自组织特征映射网络的权值矢量trainsm()利用Kohonen规则训练自组织特征映射网络simusm()仿真自组织特征映射网络newsom()创建一个自组织特征映射神经网络dist()欧氏距离权值函数mandist()Manhattan距离权值函数linkdist()Link距

80、离权值函数midpoit()中点权值初始化函数negdist()对输入矢量进行加权计算netsum()计算网络输入矢量和表2-5竞争学习网络的重要函数和功能(续)133计算机MATLAB神经网络工具箱1.竞争传输函数compet()函数compet()将神经网络输入进行转换,使网络输入最大的神经元输出为1,而其余的神经元输出为0。函数compet()调用格式为:Y=compet(X)或Y=compet(Z,b)134计算机MATLAB神经网络工具箱结果显示:y=(3,1)1很明显,输出向量y在网络输入向量X中的最大元素0.6处输出为1。此处y是以稀疏矩阵的形式返回的,这种形式很有效,因为只须存

81、储元素为1的位置。用函数full()可以看它的非稀疏形式。例如利用以下命令可查看y的全部内容。X=0;0.2;0.6;0.1;y=compet(X);full(y)结果显示:ans=0010135计算机MATLAB神经网络工具箱2.产生一定类别的样本向量函数nngenc()函数nngenc()调用格式为:X=nngenc(C,clusters,points,std_dev)136计算机MATLAB神经网络工具箱例指定类中心范围为01,类别数目为5,每一类别有10个样本点,每一类的样本点的标准差为0.05。则可利用以下命令,C=01;01;clusters=5;points=10;std_dev

82、=0.05;X=nngenc(C,clusters,points,std_dev);plot(X(1,:),X(2,:),+r)图2-41显示了这些输入样本点的分布情况。这些随机产生的样本向量分成了五类。图2-41输入样本向量的分布137计算机MATLAB神经网络工具箱3.用矢量距离表示的邻域矩阵函数nbdist()自组织网络中的神经元可以按照任何方式排列,这种排列可以用表示同一层神经元间距离的邻域来描述。函数调用格式为:m=nbdist(d)m=nbdist(d1,d2,d5)138计算机MATLAB神经网络工具箱d=nbdist(2,3)结果显示:m=0121121011112102111

83、12012111101211210139计算机MATLAB神经网络工具箱4.用栅格距离表示的邻域矩阵函数nbgrid()两神经元的栅格距离是指在神经元坐标相减后的矢量中,其元素幅值的最大值。函数调用格式为:m=nbgrid(d1)或m=nbgrid(d1,d2,d5)nbgrid()函数可用于每层最多有5维,最多有5层的网络,一般而言维数越少,收敛越快。用法同函数nbdist()。例如利用函数nbgrid()可产生一个23(6个神经元)的二维网络形邻域。m=nbgrid(2,3)140计算机MATLAB神经网络工具箱5.用Manhattan距离表示的邻域矩阵函数nbman()两神经元的Manh

84、attan距离是指在神经元坐标相减后的矢量中,其元素绝对值之和。函数调用格式为:m=nbman(d1)或m=nbman(d1,d2,d5)141计算机MATLAB神经网络工具箱6.绘制竞争网络的权值矢量函数plotsm()函数plotsm(W,M)用于绘制自组织竞争网络的权值图,在每个神经元的权矢量(行)相应的坐标处画一点,表示相邻神经元权值的点,根据邻阵M用实线连接起来。即如果M(i,j)小于等于1,则将神经元i和j用线连接起来,调用格式为:plotsm(W,M,nd)142计算机MATLAB神经网络工具箱例对两组输入为12个神经元,随机产生权值。利用以下命令,可得图2-42所示该层的权值图

85、。W=rands(12,2);M=nbman(3,4);plotsm(W,M)图2-42输入样本向量的分布143计算机MATLAB神经网络工具箱7.初始化竞争层函数initc()函数调用格式为:w=initc(X,S)144计算机MATLAB神经网络工具箱例如,网络有2个输入,变化范围分别在-3,3和0,6,竞争层有5个神经元,利用函数initc()初始化竞争层权值。X=-33;06;w=initc(X,5)结果显示:w=0303030303145计算机MATLAB神经网络工具箱8.训练竞争层函数trainc()函数trainc()训练竞争层,对一组输入矢量分类,它从一组输入矢量中随机选取一个

86、矢量,然后找出输入最大的神经元,并按Kohonen准则修改权值,从而训练竞争层网络。函数调用格式为:W,b=trainc(w,X,tp)146计算机MATLAB神经网络工具箱例如对于一个三维标准化的二元输入矢量组,现以每10步显示一次,最大训练步数为500步,学习率为0.1,训练一个竞争层有三个神经元的竞争网络。X=0.58270.6496-0.7798;0.81270.76030.6260;w=initc(X,3);w,b=trainc(w,X,105000.1)结果显示:w=-0.77980.62600.58460.81120.63100.7749147计算机MATLAB神经网络工具箱 输

87、出结果表示,神经元1的权矢量(权矩阵的第一行)学会了第三个输入矢量。神经元2的权矢量在第一个和第二个输入矢量之间,这些矢量靠得非常近,所以网络“决定”把它们分为一类,即把它们分给同一个神经元。神经元3在这个短期训练过程中,没有靠近任何一个输入矢量而赢得权竞争,因而它什么也未学会,变成所谓的“死”神经元。与第一个或第二个输入矢量相似的新矢量的出现将导致神经元1输出一个1,与第三个输入矢量相似的新矢量将导致神经元2输出1。148计算机MATLAB神经网络工具箱9.竞争网络仿真simuc()一个竞争层包含一层神经元,在任何给定时间,只有网络输入最大的神经元输出为1,其他的神经元为0。由于竞争层的任何

88、一个输出向量中仅含唯一的非零值,因此该函数返回值是一个稀疏矩阵。函数调用格式为:Y=simuc(X,w)149计算机MATLAB神经网络工具箱例例2-25利用函数trainc()训练一个输入向量分布在一个二维空间,其变化范围分别为01和01,用来区分5种模式的竞争神经网络,并对其进行训练和仿真。ex2_25150计算机MATLAB神经网络工具箱利用以上程序可得图2-43和如下结果。y=(3,1)1 从图2-43可见,网络经过训练以后,权值得到了调整,调整后的权值分布在各个类的中心位置上。对于需要分类的模式矢量0;0.2,将其输入到训练好的网络中,网络就可以对其分类。分类结果指出了第(3,1)个

89、神经元发生了响应,它反映了这个输入所属的类别。图2-43训练后网络权值的分布151计算机MATLAB神经网络工具箱10.建立竞争网络函数newc()利用newc()函数可建立一个竞争层。其调用格式为:net=newc(Xr,S,lr)152计算机MATLAB神经网络工具箱例例2-26利用newc()函数建立一个基本竞争型的神经网络,训练后对以下向量进行分类。ex2_26.m结果显示:y=(1,1)1(2,2)1(1,3)1(2,4)1yc=1212可见,网络将输入向量分为两类:一类为比较小的点,如(0.1;0.2)和(0.1;0.1),另一类为比较大的点,如(0.8;0.9)和(0.9;0.8

90、)。153计算机MATLAB神经网络工具箱例例2-27利用newc()函数建立一个输入向量分布在一个二维空间,其变化范围分别为01和01,用来区分5种模式的基本竞争型神经网络,并对其进行训练和仿真。ex2_27154计算机MATLAB神经网络工具箱利用以上程序可得图2-44和如下结果。y=(4,1)1图2-44训练后网络权值的分布 从图2-44可见,网络经过训练以后,权值得到了调整,调整后的权值分布在各个类的中心位置上。对于需要分类的模式矢量0.6;0.8,将其输入到训练好的网络中,网络就可以对其分类。分类结果指出了第(4,1)个神经元发生了响应,它反映了这个输入所属的类别。155计算机MAT

91、LAB神经网络工具箱11.初始化自组织特征映射网络函数initsm()函数initsm()用于对自组织特征映射网络的权值进行初始化,因为自组织特征映射网络不需要偏值,函数调用格式为:w=initsm(X,S)156计算机MATLAB神经网络工具箱12.Konohen权值学习函数learnk()函数learnk()根据Konohen相关准则计算网络层的权值变化矩阵,其学习通过调整神经元的权值等于当前输入。使神经元存储输入,用于以后的识别,即w(i,j)=(x(j)-w(i,j)。函数调用格式为:dW,NLS=learnk(W,X,Z,N,A,T,E,gW,gA,D,LP,LS)157计算机MAT

92、LAB神经网络工具箱例在给定随机输入矩阵P,输出矩阵A,权值矩阵w和学习速率LP后,可根据以下命令来计算其网络层的权变化矩阵。X=rand(3,2);A=rand(3,2);w=rand(3,3);lp.lr=0.5;dw=learnk(w,X,A,lp,)结果显示:dw=0.44630.44740.4207-0.17710.57220.3211-0.0387-0.3100-0.0416158计算机MATLAB神经网络工具箱13.Instar权值学习函数learnis()函数learnis()根据Instar相关准则计算网络层的权值变化矩阵,其学习用一个正比于神经网络的学习速率来调整权值,学习

93、一个新的矢量使之等于当前输入。这样任何使Instar层引起高输出的变化,都会导致网络根据当前的输入向量学习这种变化。最终相同的输入使网络有明显不同的输出,即w(i,j)=y(i)(x(j)-w(i,j)。函数调用格式为:dW,NLS=learnis(W,X,Z,N,A,T,E,gW,gA,D,LP,LS)该函数的用法和各个参数的定义同函数learnk()。159计算机MATLAB神经网络工具箱例w=eye(3);b=-0.5*ones(3,1);X=10;01;11;A=hardlim(w*X,b);lp.lr=0.5;dw=learnis(w,X,A,lp,)结果显示:dw=000.5000

94、000.50000.50000.50000160计算机MATLAB神经网络工具箱14.Outstar权值学习函数learnos()函数learnos()根据Outstar相关准则计算网络层的权值变化矩阵,Outstar网络层的权可以看做是与网络层的输入矢量一样多的长期存储器。通常,Outstar层是线性的,允许输入权值按线性层学习输入矢量。因此,存储在输入权值中的矢量可通过激活该输入而得到,即w(i,j)=(y(i)-w(i,j)/x(j)。函数调用格式为:dW,NLS=learnos(W,X,Z,N,A,T,E,gW,gA,D,LP,LS)该函数的用法和各个参数的定义同函数learnk()。

95、161计算机MATLAB神经网络工具箱例X=rand(3,2);A=rand(3,2);w=rand(3,3);lp.lr=0.5;dw=learnos(w,X,A,lp,)结果显示:dw=-0.05090.0496-0.20440.07060.24070.12630.18580.18440.3651162计算机MATLAB神经网络工具箱15.Hebb权值学习规则函数learnh()Hebb在1943年首次提出了神经元学习规则,他认为两个神经元之间的连接权值的强度与所连接的两个神经元的活化水平成正比。也就是说,如果一个神经元的输入值大,那么其输出值也大,而且输入和神经元之间的权值也相应增大。其

96、原理可表示为:w(i,j)=*y(i)*x(j)。由此可看出,第j个输入和第i个神经元之间的权值的变化量同输入x(j)和输出y(i)的乘积成正比。函数调用格式为:dW,NLS=learnh(W,X,Z,N,A,T,E,gW,gA,D,LP,LS)该函数的用法和各个参数的定义同函数learnk()。163计算机MATLAB神经网络工具箱例X=rand(3,2);A=rand(3,2);w=rand(3,3);lp.lr=0.5;dw=learnh(w,X,A,lp,)结果显示:dw=0.27530.29980.27300.14070.14340.14380.20210.22890.1966164

97、计算机MATLAB神经网络工具箱16.衰减的Hebb权值学习规则函数learnhd()原始的Hebb学习规则对权值矩阵的取值未做任何限制,因而学习后权值可取任意值。为了克服这一弊病,在Hebb学习规则的基础上增加一个衰减项,即w(i,j)=*y(i)*x(j)-dr*w(i,j)。衰减项的加入能够增加网络学习的“记忆”功能,并且能有效地对权值加以限制,衰减系数dr的取值应该在0,1之间。当dr取为0时,就变成原始的Hebb学习规则,网络学习不具备“记忆”功能;当dr取为1时,网络学习结束后权值取值很小,不过网络能“记忆”前几个循环中学习的内容。165计算机MATLAB神经网络工具箱这种改进算法

98、可利用衰减的Hebb权值学习规则函数learnhd()来实现。函数调用格式为:dW,NLS=learnhd(W,X,Z,N,A,T,E,gW,gA,D,LP,LS)式中LP为学习参数,它包括学习速率LP.lr和衰减系数LP.dr,缺省时学习速率为0.01,衰减系数为0.01;该函数的用法和其余参数的定义同函数learnk()。166计算机MATLAB神经网络工具箱例w=eye(3);b=-0.5*ones(3,1);X=10;01;11;A=hardlim(w*X,b);lp.lr=0.5;lp.dr=0.05;dw=learnhd(w,X,A,lp,)结果显示:dw=0.450000.500

99、000.45000.50000.50000.50000.9500 在MATLAB工作空间的命令行键入“helpassoclr”,便可得到与4种关联学习算法(Hebb学习规则、Konohen学习规则、Instar学习规则和Outstar学习规则)相关的函数,进一步利用help命令又能得到相关函数的详细介绍。167计算机MATLAB神经网络工具箱17.自组织特征映射权值学习函数learnsom()函数learnosom()是根据所给出的学习参数LP开始的,其正常状态学习速率LP.order_lr默认值为0.9,正常状态学习步数LP.order_steps默认值为1000,调整状态学习速率LP.tu

100、ne_lr默认值为0.02,调整状态邻域距离LP.tune_nd默认值为1。在网络处于正常状态和调整状态时,学习速率和邻域尺寸都得到更新。函数调用格式为:dW,NLS=learnsom(W,X,Z,N,A,T,E,gW,gA,D,LP,LS)该函数的用法和其余参数的定义同函数learnk()。168计算机MATLAB神经网络工具箱例X=rand(2,1);A=rand(4,1);w=rand(4,2);pos=hextop(2,2);D=linkdist(pos);lp.order_lr=0.9;lp.order_steps=1000;lp.tune_lr=0.02;lp.tune_nd=1;

101、dW=learnsom(w,X,A,D,lp,)结果显示:dW=-0.9046-0.3596-0.37410.0777-1.12490.6372-0.49790.0382169计算机MATLAB神经网络工具箱18.绘制自组织特征映射网络的权值矢量函数plotsom()函数plotsom(W,m)用于绘制自组织映射网络的权值图,在每个神经元的权矢量(行)相应的坐标处画一点,表示相邻神经元权值的点,根据邻阵m用实线连接起来。即如果M(i,j)小于等于1,则将神经元i和j用线连接起来,调用格式为:plotsom(W,m)式中W为权值矩阵;m为网络邻域。170计算机MATLAB神经网络工具箱例对两组输

102、入为12个神经元,随机产生权值。利用以下命令,可得图2-45所示的权值图。W=rands(12,2);m=nbman(3,4);plotsom(W,m)图2-45输入样本向量的分布171计算机MATLAB神经网络工具箱19.利用Kononen规则训练自组织特征映射网络函数trainsm()对自组织特征映射网络的权值初始化后,便可应用函数trainsm()对网络进行训练,自组织特征映射网络由一层一维或多维的神经元构成。任何时候,只有网络输入最大的神经元输出为1,相邻的神经元输出为0.5,其余所有神经元输出为0,函数调用格式为:W=trainsm(w,m,X,tp)172计算机MATLAB神经网络

103、工具箱例创建一个具有100个元素的输入向量,构造一个排列在33栅格上由9个神经元组成的自组织特征映射网络。可利用以下命令,返回新的权值矩阵如图2-46所示。X=rand(2,100);w=initsm(X,9);m=nbman(3,3);W=trainsm(w,m,X,20,400)图2-46权值矩阵173计算机MATLAB神经网络工具箱20.自组织特征映射网络仿真simusm()自组织特征映射网络由分布在一维或多维空间的神经元组成,在任何给定时间,只有网络输入最大的神经元输出为1,与获胜神经元相邻的神经元输出为0.5,其余神经元输出为0。函数调用格式为:Y=simusm(X,w,m,n)例w

104、=initsm(02;-55,4);m=nbman(1,1);Y=simusm(2;4,w,m)结果显示:Y=(1,1)1174计算机MATLAB神经网络工具箱例例2-28建立一个具有30个神经元的二维自组织特征映射神经网络来对1000个二维随机输入向量分类。并对其进行训练和仿真。ex2_28175计算机MATLAB神经网络工具箱利用以上程序可得如下结果以及图2-47和图2-48。y=(21,1)0.5000(26,1)0.5000(27,1)1.0000(28,1)0.5000图2-471000个二维样本向量的分布图2-48训练后网络权值的分布176计算机MATLAB神经网络工具箱21.创建

105、一个自组织特征映射网络函数newsom()利用newsom()函数可建立一个自组织特征映网络。其调用格式为:net=newsom(Xr,d1,d2,di)177计算机MATLAB神经网络工具箱例建立一个输入向量分布在一个二维空间,其变化范围分别为02和01,网络结构为35(15个神经元)的二维自组织特征映射神经网络,可利用命令net=newsom(02;01,35);plotsom(net.layers1.positions) 执行结果如图2-49所示。图2-49二维自组织特征映射神经网络178计算机MATLAB神经网络工具箱例例2-29建立一个具有30个神经元的二维自组织特征映射神经网络来对

106、1000个二维随机输入向量分类。并对其进行训练和仿真。ex2_29利用以上程序可得如下结果以及图2-50至图2-53。y=(24,1)1179计算机MATLAB神经网络工具箱图2-501000个二维样本向量的分布 图2-51初始权值的分布图2-52训练10步时的权值分布图2-53训练100步时的权值分布180计算机MATLAB神经网络工具箱 图2-50中显示了这些二维随机向量的分布情况;图2-51中显示初始权值的分布情况;图2-52中显示了训练次数为10时的权值分布情况;图2-53中显示了训练次数为100时的权值分布情况。由图可知神经元经过10步以后,神经元就已经自组织地分布了,每个神经元就开

107、始能够区分输入空间中不同区域。随着训练步数的增加,神经元的权值分布更加合理,但当步数达到一定数目以后,这种改变就非常不明显了。如70步与100步。181计算机MATLAB神经网络工具箱22.欧氏距离权值函数dist()大多数神经元网络的输入可通过表达式N=w*X+b来计算,其中w,b分别为权矢量和偏差矢量。但有一些神经元的输入可由函数dist()来计算,dist()函数是一个欧氏(Euclidean)距离权值函数,它对输入进行加权,得到被加权的输入。一般两个向量x和y之间的 欧 氏 (Euclidean) 距 离 D定 义 为 : D=sun(x-y).2).0.5。函数dist()调用格式为

108、:D=dist(W,X)或D=dist(pos)182计算机MATLAB神经网络工具箱例如任意给定输入和权值,利用dist()函数计算欧氏距离。w=123;X=1;2.1;0.9;d=dist(w,X)结果显示:d=2.1024183计算机MATLAB神经网络工具箱23.Manhattan距离权值函数mandist()mandist()函数是一个Manhattan距离权值函数,它对输入进行加权,得到被加权的输入。一般两个向量x和y之间的Manhattan距离d定义为d=sum(abs(x-y)。其调用格式为:d=mandist(w,X)d=mandist(pos)例任意给定输入和权值,利用ma

109、ndist()函数计算Manhattan距离。w=rand(4,3);X=rand(3,1);d=mandist(w,X)184计算机MATLAB神经网络工具箱24.link距离权值函数linkdisk()linkdisk()函数是一个阶层距离函数,用于查找某一层神经网络中的所有神经元之间的Link距离,函数也返回一个距离矩阵。其调用格式为:d=linkdisk(Pos) 例如分布在三维空间里的10个神经元任意定义一个矩阵矩阵,可以利用linkdisk()函数查找其距离。185计算机MATLAB神经网络工具箱Pos=rand(3,10);d=linkdist(Pos)结果显示:d=011111

110、2211101111111111012122111110111111112101111111111011212121110111212111101111111211011111111110186计算机MATLAB神经网络工具箱25.中点权值初始化函数midpoint()如果竞争层和自组织网络的初始权值选择在输入空间的中间区,利用该函数初始化权值会更加有效。该函数调用格式为:w=midpoint(S,Xr)Xr=01;-22;w=midpoint(3,Xr)结果显示:w=0.500000.500000.50000187计算机MATLAB神经网络工具箱26.对输入矢量进行加权函数negdist()

111、函数negdist()调用格式为d=negdist(w,X)例w=rand(4,3);X=rand(3,1);Z=negdist(w,X)结果显示:Z=-0.9578-1.1555-0.3348-0.4025188计算机MATLAB神经网络工具箱1.7 学习向量量化学习向量量化(LVQ)神经网络工具箱函数神经网络工具箱函数 学习向量量化(LVQ)神经网络是在监督状态下对竞争层进行训练的一种学习算法。LVQ神经网络一般有两层,第一层是竞争层,第二层是将竞争层的分类结果传递到用户定义的目标分类上。竞争层自动学习对输入向量进行分类。但是,竞争层进行的分类只与输入向量之间的距离有关。如果两个输入向量非

112、常近,那么竞争层就很有可能将它们归到一类。LVQ神经网络还可以通过学习,将输入向量中与目标向量相近的分离出来。MATLAB神经网络工具箱中提供了大量的与LVQ神经网络相关的的工具箱函数。189计算机MATLAB神经网络工具箱在MATLAB工作空间的命令行键入“helplvq”,便可得到与LVQ神经网络相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-779列出了这些函数的名称和基本功能。表2-7LVQ的重要函数和功能函数名功能initlvq()初始化LVQ神经网络trainlvq()训练LVQ神经网络simulvq()仿真LVQ神经网络newlvq()建立一个LVQ神经网络函

113、数learnlvq()LVQ神经网络学习函数plotvec()用不同的颜色画矢量函数190计算机MATLAB神经网络工具箱1LVQ神经网络的初始化函数initlvq()利用initlvq()函数可建立一个两层(一个竞争层和一个输出层)LVQ神经网络。其调用格式为:W1,W2=initlvq(X,S1,S2)或W1,W2=initlvq(X,S1,T)191计算机MATLAB神经网络工具箱2LVQ神经网络的训练函数trainlvq()一个LVQ神经网络由一个竞争层和一个线性输出层组成,竞争层的神经元将输入矢量分成组,然后由线性输出层组合到期望的类别中。任何时候,只有一个线性输出神经元具有非零输出

114、1,这样如果网络有5个输出神经元,则它能把输入矢量分成5类,训练LVQ神经网络的函数trainlvq()调用格式为:W1,W2=trainlvq(w1,w2,X,T,tp)192计算机MATLAB神经网络工具箱3.LVQ神经网络的仿真函数simulvq()调用格式为:y1,y2=simulvq(X,w1,w2)193计算机MATLAB神经网络工具箱例例2-30设计一个学习向量量化网络,根据目标,将输入向量进行模式分类。解一个LVQ网络由一个隐含竞争层和一个输出层组成,竞争层的神经元将输入向量分成组,然后由线性输出层组合到期望的类别中。任何时候,只有一个线性输出神经元具有非零输出1,这样如果网络

115、有3个输出神经元,则它就能把输入向量分成3类。Ex2_30194计算机MATLAB神经网络工具箱利用以上程序可得图2-54和图2-55及如下结果。y2=(1,1)1y=1yy=10图2-55输入向量及训练后的权值分布图2-54输入向量分布195计算机MATLAB神经网络工具箱 结果y2是用稀疏矩阵形式(1行第1列的元素为1)表示的,它表明第一个神经元有输出,即输入向量X1属于1类,与事实相吻合。学习向量量化网络能够对任意输入向量进行分类,不管它们是不是线性可分的,这一点比感知机神经网络要优越得多。但其需要注意在竞争层必须要有足够多的神经元,是使得每一个类有足够多的竞争神经元。196计算机MAT

116、LAB神经网络工具箱4.建立一个向量量化神经网络函数newlvq()利 用 newlvq( ) 函 数 可 建 立 一 个 向 量 量 化(LVQ)神经网络,其调用格式为:net=newlvq(Xr,S1,Pc,Lr,Lf)197计算机MATLAB神经网络工具箱例建立一个隐含层有4个神经元,在第二层的权值中,有60%的列第一行的值为1,40%的列第二行的值为1,即60%的列属于第一类,40%的列属于第二类,学习速率为0.1的个向量量化神经网络。X=rand(1,400)*2;rand(1,400);net=newlvq(minmax(X),4,0.60.4,0.1);w=net.iw1结果显示

117、:w=1.00500.50031.00500.50031.00500.50031.00500.5003198计算机MATLAB神经网络工具箱5LVQ神经网络学习函数learnlvq()对LVQ网络进行初始化后,即可对其进行学习。LVQ网 络 的 学 习 规 则 是 从 Kohonen学 习 规 则(learnk)发展而来的。在LVQ网络中,竞争层的目标向量T1可由网络的目标向量T和线性层的权值w1得到,即T1=w1*T。函数调用格式为:dw1=learnlvq(w1,X,y1,T1,lr)199计算机MATLAB神经网络工具箱6用不同的颜色画矢量函数plotvec()函数plotvec(X,x

118、,m)包含一个列矢量矩阵X,标记颜色的行矢量c和一个图形标志m。X的每个列矢量用图形标志画图。每列矢量X(:,i)的数据颜色为c(i)。如果m缺省,则用缺省图形标志“+”。例x=01;-12;c=12;plotvec(x,c)200计算机MATLAB神经网络工具箱例例2-31利用函数learnlvq()设计一个学习向量量化网络,根据目标,将输入向量进行模式分类。ex2_31利用以上程序可得图2-56和图2-57及如下结果。201计算机MATLAB神经网络工具箱y1=10y=1结果显示输入向量X1属于1类,与事实相吻合。图2-56输入向量及初始权值分布图2-57输入向量及训练后的权值分布202计

119、算机MATLAB神经网络工具箱1.8Elman神经网络工具箱函数神经网络工具箱函数Elman神经网络通常由输入、隐含层和输出层构成,它存在从隐含层的输出到隐含层输入的反馈,这种反馈连接的结构使得其被训练后不仅能够识别和产生 空 域 模 式 , 还 能 够 识 别 和 产 生 时 域 模 式 。MATLAB神经网络工具箱中提供了建立、训练和仿真Elman神经网络的有关函数。 在MATLAB工作空间的命令行键入“helpelman”,便可得到与Elman神经网络相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-8列出了这些函数的名称和基本功能。203计算机MATLAB神经网络工具

120、箱表2-8Elman神经网络的重要函数和功能函数名函数名功功 能能initelm()对Elman神经网络进行初始化trainelm()训练Elman神经网络的权值和偏值simuelm()对Elman神经网络进行仿真newelm()生成一个Elman神经网络204计算机MATLAB神经网络工具箱1.初始化Elman神经网络函数initelm()Elman神经网络是一种回归网络,它包含一个tansig隐含层和一个purelin输出层,tansig隐含层接收网络输入和自身的反馈,purelin层从tansig隐含层得到输入。由于Elman神经网络是sigmoid/linear网络,它们能够表达含有限

121、个不连续点的函数。因为它们有一个反馈连接,所以它们也能够用来识别和产生时间模式和空间模式。函数initelm()的调用格式为:W1,b1,W2,b2=initelm(X,S1,S2)或W1,b1,W2,b2=initelm(X,S1,T)205计算机MATLAB神经网络工具箱 另外,输出层神经元的个数S2可以用对应的目标向量T来代替,此时输出神经元数根据T中的行数来设置。例如设计一个隐含层有3个神经元,传输函数为tansig,输出层有2个神经元,传输函数为purelin的两层Elman神经网络可利用以下命令。X=sin(0:100);cos(0:100*2);W1,b1,W2,b2=inite

122、lm(X,3,2); 206计算机MATLAB神经网络工具箱2.训练Elman神经网络函数trainelm()函数调用格式为:W1,B1,W2,B2,te,tr=trainelm(w1,b1,w2,b2,X,T,tp)207计算机MATLAB神经网络工具箱3.仿真Elman神经网络函数simuelm()其调用格式为:y=simuelm(X,w1,b1,w2,b2,A1)208计算机MATLAB神经网络工具箱例例2-32设计一个Elman神经网络,用于对输入波形进行振幅检测。解解MATLAB程序如下Ex2_32执行结果可得如图2-58和图2-59所示的曲线。209计算机MATLAB神经网络工具箱

123、图2-58输入信号及目标信号曲线图2-59输出信号及目标信号曲线 从图2-59所示的曲线可以看出,输出信号在目标信号的两侧有小幅度的振荡,但能跟着输入信号的振幅变化而变化,网络能较好地检测出输入信号的振幅。210计算机MATLAB神经网络工具箱4.建立网络函数newelm()利用newelm()函数可建立一个Elman神经网络。其调用格式为:net=newelm(Xr,S1S2Sn,TF1,TF1,TFn,BTF,BLF,PF)211计算机MATLAB神经网络工具箱例例2-33设计一个Elman神经网络,用于对输入波形进行振幅检测。解解MATLAB程序如下Ex2_33执行结果可得如图2-60和

124、图2-61所示的曲线。212计算机MATLAB神经网络工具箱图2-60输入信号及目标信号曲线图2-61输出信号及目标信号曲线 从图2-61所示的曲线可以看出,输出信号在目标信号的两侧有小幅度的振荡,但能跟着输入信号的振幅变化而变化,网络能较好地检测出输入信号的振幅。213计算机MATLAB神经网络工具箱1.9Hopfield神经网络工具箱函数神经网络工具箱函数Hopfield神经网络常用于存储一个或者多个稳定的目标向量,当向网络提供输入向量时,存储在网络中的接近于输入的目标向量就被唤醒。Hopfield神经网络设计的目标就是使得网络存储一些特定的平衡点,当给定网络一个初始条件时,网络最后会在这

125、样的点上停下来。由于输出又被反馈到输入,所以一旦网络开始运行,整个网络就是递归的。MATLAB神经网络工具箱中提供了建立、训练和仿真Hopfield神经网络的有关函数。214计算机MATLAB神经网络工具箱在MATLAB工作空间的命令行键入“helphpfield”,便可得到与Hopfield神经网络相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-9列出了这些函数的名称和基本功能。表2-9Hopfield网络的重要函数和功能函数名函数名功功 能能satlin()饱和线性传输函数satlins()饱和对称线性传输函数newhop()生成一个Hopfield回归网络solveh

126、op()设计一个Hopfield回归网络simuhop()仿真一个Hopfield回归网络215计算机MATLAB神经网络工具箱1.饱和线性传输函数satlin()对饱和线性传输函数,如果输入大于0且小于1时返回其输入值;如果输入小于0则返回0;如果输入大于1,则返回1。因此satlin神经元在一定的输入区域内象线性神经元,在超出此区域,则象硬特性神经元,函数调用格式为:a=satlin(N)或a=satlin(Z,b)a=satlin(P) 函数satlin(N)在给定网络的输入矢量矩阵N时,返回该层的输出矢量矩阵a。当N中的元素介于01之间时,其输出等于输入,在输入值小于0时返回0,大于1

127、时返回1。216计算机MATLAB神经网络工具箱函数satlin(Z,b)用于矢量是成批处理且偏差存在的情况下,此时的偏差b和加权输入矩阵Z是分开传输的。偏差矢量b加到Z中的每个矢量中形成网络输入矩阵,然后用上述方法转换成输出矩阵。返回的元素a是1还是0,取决于网络输入矩阵中的元素;函数satlin(P)包含传输函数的特性名并返回问题中的特性,如下的特性可丛任何传输函数中获得:(1)delta与传输函数相关的delta函数;(2)init传输函数的标准初始化函数;(3)name传输函数的全称;(4)output包含有传输函数最小、最大值的二元矢量。式中N为Q组S维的网络输入向量。217计算机M

128、ATLAB神经网络工具箱例利用以下命令可得,图2-62。n=-35:0.1:3;a=satlin(n);plot(n,a)图2-62饱和线性传输函数218计算机MATLAB神经网络工具箱2.饱和对称线性传输函数satlins() 对饱和对称线性传输函数,如果输入大于-1且小于1时,返回其输入值;如果输入小于-1,则返回-1;如果输入大于1,则返回1。因此satlins神经元在一定的输入区域内也象线性神经元,在超出此区域,则象硬特性神经元,函数调用格式同函数satlin()。219计算机MATLAB神经网络工具箱3.建立网络函数newhop()Hopfield神经网络经常被应用于模式的联想记忆中

129、。Hopfield神经网络仅有一层,其输入用netsum()函数,权函数用dotprod()函数,传输函数用对称饱和线性satlins()函数,层中的神经元有来自它自身的连接权和偏值。函数调用格式为:net=newhop(T)220计算机MATLAB神经网络工具箱例利用以下命令可得到一个Hopfield网络的每个神经元的权值和偏值。T=1-1;-11;net=newhop(T);W=net.LW1,1,b=net.b1,1显示:W=0.6925-0.4694-0.46940.6925b=00221计算机MATLAB神经网络工具箱4.设计网络函数solvehop()Hopfield神经网络由一系

130、列对称饱和线性神经元组成,神经元的输出通过权矩阵反馈回输入。由任何初试输出矢量开始,网络不断修正,直到有一个稳定的输出矢量。这些稳定的输出矢量认为是由初始矢量调用所唤醒的记忆。设计Hopfield网络包括计算对称饱和线性层的权值和偏差,以便目标矢量是网络的稳定输出矢量。函数调用格式为:w,b=solvehop(T)222计算机MATLAB神经网络工具箱例利用以下命令可得到一个Hopfield网络的每个神经元的权值和偏值。T=1-1;-11;w,b=solvehop(T)显示:w=0.6925-0.4694-0.46940.6925b=00223计算机MATLAB神经网络工具箱5.网络仿真函数s

131、imuhop()Hopfield神经网络由一层饱和线性神经元组成,神经元的输出通过权矩阵与输入相连。神经元的输出分配给初始状态后,神经元由任何初试输出矢量开始,网络不断修正,直到有一个稳定的输出矢量,网络可作任意次的迭代修正。在某些点上,网络达到稳定,新的输出等于以前的输出,最后的输出矢量可以看作是初始矢量的分类。每个Hopfield网络都有有限个这样稳定的输出矢量。利用simuhop()函数可以测试一个Hopfield神经网络的性能。函数调用格式为:y,yy=simuhop(T,w,b,ts)224计算机MATLAB神经网络工具箱例利用以下命令可用目标向量T来测试其是否被存储在网络中,即将目

132、标向量作为输入T=1-1;-11;w,b=solvehop(T);y=simuhop(T,w,b)显示:y=1-1-11所得结果显示,网络的输出正好为目标向量。225计算机MATLAB神经网络工具箱例例2-34设计一个Hopfield神经网络,并检验这个网络是否稳定在这些点上。Ex2_34结果显示:y=-1-111-11226计算机MATLAB神经网络工具箱例例2-35设计一个具有两个神经元的Hopfield神经网络,每个神经元有一个偏值和一个权值。解解具有两个神经元的Hopfield神经网络刚好与具有两个元素的输入向量相匹配。Ex2_35227计算机MATLAB神经网络工具箱利用以上程序可得

133、图2-63和图2-64及如下结果。w=0.6925-0.4694-0.46940.6925b=00y=1-1-11 图2-63 一个随机点趋于稳定点的轨迹 图2-6410个随机点趋于稳定点的轨迹228计算机MATLAB神经网络工具箱例例2-36设计一个具有三个神经元的Hopfield神经网络,每个神经元有一个偏值和一个权值。解解具有三个神经元的Hopfield神经网络刚好与具有三个元素的输入向量相匹配。Ex2_36229计算机MATLAB神经网络工具箱利用以上程序可得图2-65和图2-66及如下结果。w=0.22310001.16180000.2231b=0.85460-0.8546y=11-

134、11-1-1230计算机MATLAB神经网络工具箱图2-6610个随机点趋于稳定点的轨迹图2-65一个随机点趋于稳定点的轨迹 根据以上结果可知,网络输出y最终到达了稳定点。从图可以看出,对于设计好的网络,其随机输入点最终都到达了较近的稳定点。231计算机MATLAB神经网络工具箱2.1.10 利用利用Demos演示神经网络的建立演示神经网络的建立MATLAB提供了非常强大的帮助功能,如利用其Demos功能,也可以方便的演示如何利用神经网络工具箱函数创建神经网络。下面通过Demos的功能,演示如何利用神经网络工具箱创建一个如例2-36所示的三神经元Hopfield网络。232计算机MATLAB神

135、经网络工具箱(1)在MATLAB工作空间的命令行键入“demos”,便可打开“Help”命令窗口,如图2-67所示。当然在MATLAB工作窗口中,利用Help菜单下的有关命令也可打开如图2-67所示的“Help”命令窗口。(2)(2)在Help窗口右边的Demos页面中,利用鼠标的左键选择Toolboxes|NeuralNetwork|Hopfieldshreeneurondesign节点,则在该窗口的右边出现关于建立一个三神经元Hopfield网络的有关内容,如图2-68所示。233计算机MATLAB神经网络工具箱(3)单击三神经元Hopfield网络窗口右上角的Runthisdemo链接后

136、,便可出现一个三神经元Hopfield网络Demos的初始界面,如图2-69所示。(4)由三神经元Hopfield网络Demos的初始界面可以看出,本次演示共有8步。234计算机MATLAB神经网络工具箱2 MATLAB神经网络工具箱的图形用户界面神经网络工具箱的图形用户界面 前面介绍了神经网络工具箱中有关构造神经网络系统的函数,这些函数都是直接在MATLAB命令行窗口执行并显示结果的。为了方便用户,神经网络工具箱提供了一个图形用户界面(GUI)的神经网络编辑器(Network/DataManager)。为了进一步方便用户,在MATLABR2007(MATLAB7.4.0)神经网络工具箱中又增

137、加了一个基于神经网络拟合工具(Neural Network Fitting Tool)的图形用户界面(GUI)。神经网络工具箱中的GUI是一种人机交互界面,它引导用户一步一步地建立和训练神经网络,避免了代码的编写过程。235计算机MATLAB神经网络工具箱2.1 神经网络编辑器神经网络编辑器神经网络编辑器(Network/DataManager)可以建立网络、训练网络、仿真网络,将数据导出到MATLAB工作空间中、清除数据、从MATLAB工作空间中导入数据、变量存盘与读取。在MATLAB命令窗口中,可以用以下两种方法启动神经网络用户窗口(Network/DataManager):1)在MATL

138、AB的命令窗口中直接键入nntool命令;2)在MATLAB窗口的左下角“Start”菜单中,单击“ToolboxsNeuralNetwork”命令子菜单中的“NNTool”选项。236计算机MATLAB神经网络工具箱在以上两种方式启动下,神经网络编辑器的图形界面,如图2-72所示。图2-72神经网络编辑器237计算机MATLAB神经网络工具箱 如果对神经网络的图形用户接口不太熟悉,可以单击【Help】按钮。这时将弹出一个新的窗口,此窗口首先介绍了如何使用图形用户接口解决问题的一般步骤,然后给出了关于这些按钮的描述,最后对每个区域各代表什么也作了介绍。下面通过一个简单的例子,来说明神经网络编辑

139、器(Network/DataManager)的使用。238计算机MATLAB神经网络工具箱 例例2-37 建立一个感知机网络,使其能够完成“与”的功能。解解为了完成“与”函数,建立一个两输入、单输出的一个感知机网络。设输入向量为:X=0011;0101,目标向量为:T=0001。(1)启动神经网络编辑器(Network/DataManager)的图形界面,如图2-72所示。(2)设置输入向量X和目标向量239计算机MATLAB神经网络工具箱(3)建立网络(4)训练网络(5)仿真网络240计算机MATLAB神经网络工具箱(6)将数据导出到MATLAB工作空间(7)从MATLAB工作空间中导入数据

140、241计算机MATLAB神经网络工具箱例例2-38 利用神经网络编辑器(Network/DataManager)设计一个两层BP神经网络,并训练它来识别如例2-15中所示的0,1,2,9,A,F这16个已经被数字成像系统数字化了的十六进制数,其结果是对应每个数字有一个53的布尔量。242计算机MATLAB神经网络工具箱解解 (1)同例2-22首先将这16个含15个布尔量网络元素的输入向量定义成一个1516维的输入矩阵X,其每一列的15个元素对应一个数字量按列展开的布尔量网络元素,例如X中第一列的15个元素1;1;1;1;0;1;1;0;1;1;0;1;1;1;1表示0。目标向量也被定义成一个4

141、16维的目标矩阵T,其每一列的4个元素对应一个数字量,这16个数字量用其所对应的十六进制值表示。例如用0;0;0;0表示0;用0;0;0;1表示1;用0;0;1;0表示2,等等。生成输入矩阵X和目标矩阵T的程序如下:%ex2_38.m243计算机MATLAB神经网络工具箱(2)启动神经网络编辑器(Network/DataManager)的图形界面,如图2-72所示。(3)设置输入向量X和目标向量T(4)训练网络(5)仿真网络244计算机MATLAB神经网络工具箱2.2 神经网络拟合工具神经网络拟合工具神经网络拟合工具(NeuralNetworkFittingTool),可以用于函数逼近和数据拟

142、合。其中用来拟合函数的是一个两层前向神经网络,训练用的算法是trainlm算法。在MATLAB命令窗口中,可以用以下两种方法启动神经网络拟合工具:1)在MATLAB的命令窗口中直接键入nftool命令;2)在MATLAB窗口的左下角“Start”菜单中,单击“ToolboxsNeuralNetwork”命令子菜单中的“NFTool”选项。245计算机MATLAB神经网络工具箱在以上两种方式启动下,神经网络拟合工具的图形界面,如图2-97所示。246计算机MATLAB神经网络工具箱在图2-97图中,单击【Next】按钮后,会出现导入数据的对话框,如图2-98所示。247计算机MATLAB神经网络

143、工具箱由导入数据对话框图2-98可知,从MATLAB的Workspace窗口导入的数据分为输入数据(InputData)和目标数据(TargetData)两类。如导入数据不在-1,1之间,自动将其归一化到-1,1之间。这些数据可以在MATLAB窗口,利用以下命令产生。X=0:0.01:2*pi;T=3*sin(X);选定输入数据和目标数据,如X和T,单击【Next】按钮后,可以看到选取的确认数据和测试数据的对话框,如图2-99所示。248计算机MATLAB神经网络工具箱由图2-99可知,整个数据集分为训练集(Training)、确认集(Validation)和测试集(Testing),它们分别

144、占整个数据的60%,20%和20%。通过改变确认集和测试集所占的比例,便可重新调整它们与训练集所占整个数据的比例。其中训练集是用来训练神经网络的,目的是为了让网络对训练样本进行学习。确认集也是用来网络训练的,但是它的目的是为了确认在训练过程中,网络泛化能力是不是在不断提高。一旦发现经过训练以后,网络的泛化能力没有提高,则停止训练。测试集则和训练无关,只是为了测试已经训练好的网络的性能。选定训练集、确认集和测试集的比例后,单击【Next】按钮后,可以得到用来调整拟合的神经网络结构,如图2-100所示。249计算机MATLAB神经网络工具箱例例2-39 利用神经网络拟合工具,训练一神经网络用来拟合

145、正弦曲线。解解 首先在MATLAB窗口,利用以下命令来产生一组用来训练网络的输入数据X和目标输出数据T。X=0:0.01:2*pi;T=5*sin(X);然后启动神经网络拟合工具(NeuralNetworkFittingTool),利用输入数据X和目标输出数据T,根据以上步骤来训练神经网络,并将训练好的网络、输出和误差分别以net,y和error命名保存到MATLAB工作空间。250计算机MATLAB神经网络工具箱最后在MATLAB窗口,利用以下命令可得到网络的目标输出T、实际输出y和误差error曲线,如图2-105所示。plot(X,T,or,X,y,-k,X,error)网络的实际输出y

146、也可利用以下MATLAB命令得到,它与以上的结果完全相同。y=sim(net,X)251计算机MATLAB神经网络工具箱3 基于基于Simulink的神经网络模块的神经网络模块 神经网络工具箱中提供了一套可在Simulink中用来建立神经网络的模块,对于在MATLAB工作空间中建立的网络,也能够使用函数gensim()生成一个相应的Simulink网络模块。252计算机MATLAB神经网络工具箱3.1 模块的设置模块的设置在 Simulink库 浏 览 窗 口 的 Neural NetworkBlockset节点上,通过单击鼠标右键后,便可打开如图2-106所示的NeuralNetworkBl

147、ockset模块集窗口。图2-106NeuralNetworkBlockset模块集 在NeuralNetworkBlockset模块集中包含了四个模块库,用鼠标的左键双击各个模块库的图标,便可打开相应的模块库。253计算机MATLAB神经网络工具箱1. 传输函数模块库传输函数模块库(TransferFunctions)用鼠标的左键双击TransferFunctions模块库的图标,便可打开如图2-107所示的传输函数模块库窗口。传输函数模块库中的任意一个模块都能够接受一个网络输入向量,并且相应地产生一个输出向量,这个输出向量的组数和输入向量相同。图2-107传输函数模块库窗口254计算机MA

148、TLAB神经网络工具箱2. 网络输入模块库网络输入模块库(NetInputFunctions)用鼠标的左键双击NetInputFunctions模块库的图标,便可打开如图2-108所示的网络输入模块库窗口。 网络输入模块库中的每一个模块都能够接受任意数目的加权输入向量、加权的层输出向量,以及偏值向量,并且返回一个网络输入向量。图2-108网络输入模块库窗口255计算机MATLAB神经网络工具箱3. 权值模块库权值模块库(WeightFunctions)用鼠标的左键双击WeightFunctions模块库的图标,便可打开如图2-109所示的权值模块库窗口。权值模块库中的每个模块都以一个神经元权值

149、向量作为输入,并将其与一个输入向量(或者是某一层的输出向量)进行运算,得到神经元的加权输入值。图2-109权值模块库窗口上面的这些模块需要的权值向量必须定义为列向量。这是因为Simulink中的信号可以为列向量,但是不能为矩阵或者行向量。256计算机MATLAB神经网络工具箱4. 控制系统模块库控制系统模块库(ControlSystems)用鼠标的左键双击ControlSystems模块库的图标,便可打开如图2-110所示的控制系统模块库窗口。图2-110控制系统模块库窗口神经网络的控制系统模块库中包含三个控制器和一个示波器。关于它们的使用方法将在下一节专门介绍。257计算机MATLAB神经网

150、络工具箱3.2 模块的生成模块的生成在MATLAB工作空间中,利用函数gensim(),能够对一个神经网络生成其模块化描述,从而可在Simulink中对其进行仿真。gensim()函数的调用格式为:gensim(net,st)258计算机MATLAB神经网络工具箱例例2-40 设计一个线性网络,并生成其模块化描述。定义网络的输入为:X=12345,相应的目标为:T=13579。解实现以上任务的MATLAB命令为:ex2_40结果显示:y=13579可以看出,网络已经正确地解决了问题。gensim(net,-1)259计算机MATLAB神经网络工具箱例例2-41 设计一个感知机网络,使其能够完成

151、“与”的功能,并生成其模块化描述。解解 首先根据例2-37中的方法设计一个可实现“与”功能的感知机网络ANDnet,并确保将其导出到MATLAB工作空间。然后在MATLAB工作窗口中,利用以下命令生成其模块化描述。gensim(ANDnet,-1)260计算机MATLAB神经网络工具箱4神经网络在系统预测和故障诊断中的应用4.1系统输入输出数据的处理由于系统的实际输入输出数据常常不在0,1之间,而神经网络的输入输出一般要求位于0,1之间。因此利用神经网络对系统进行处理前,需要对获得的系统输入输出数据进行归一化处理,将数据转换为0,1之间的值。归一化方法有很多种形式,这里假设采用如下的公式。(2

152、-1)261计算机MATLAB神经网络工具箱对于神经网络的输出,需要进行反归一化处理,将网络在0,1之间的值转换为系统的实际输出值。与式(2-1)对应的反归一化公式如下。(2-2)262计算机MATLAB神经网络工具箱为了进一步方便用户,在MATLABR2007(MATLAB7.4.0)中提供了进行归一化和反归一化的函数mapminmax(),其调用格式如下y,ps=mapminmax(x,ymin,ymax)x=mapminmax(reverse,y,ps)263计算机MATLAB神经网络工具箱例利用函数mapminmax()将矩阵x中的数据归一化到0,1区间,并再将其反归一化为原数据的MA

153、TLAB命令如下。x=12345;1000300500300100;y,ps=mapminmax(x,0,1);yx1=mapminmax(reverse,y,ps)结果显示:y=00.25000.50000.75001.00001.00000.22220.44440.22220x1=123451000300500300100由以上结果可知,函数mapminmax()对矩阵中的数据进行归一化和反归一化时,是分别对各行单独进行处理的。264计算机MATLAB神经网络工具箱4.2基于神经网络的系统预测预测是对尚未发生和目前还不明确的事物进行预先的估计和推测,是以现实对事物将要发生的结果进行探讨的研

154、究。神经网络在非线性系统的建模、辨识和预测方面有着广泛的应用前景。因为传统的非线性系统建模、辨识和预测,在理论研究和实际应用方面,都存在极大的困难。相比之下,神经网络在这方面显示出了明显的优越性。由于神经网络具有通过学习逼近任意非线性映射的能力,将神经网络应用于非线性系统的建模、辨识和预测,可以不受非线性模型的限制,便于给出工程上易于实现的学习算法。265计算机MATLAB神经网络工具箱(1)交通运输能力的预测运输系统作为社会经济系统中的一个子系统,在受外界因素影响和作用的同时,对外部经济系统也具有一定的反作用,使得运输需求同时受到来自运输系统内外两方面因素的影响。 例例2-42运输系统某连续

155、9年货运量的有关数据如表2-9所示。根据对关于货运量影响因素的分析,这里分别取国内生产总值GDP、工业总产值、铁路运输线路长度、复线里程比重、公路运输线路长度、等级公路比重、铁路货车数量和民用载货车辆数量等8项指标作为影响货运量的因素,以货运总量、铁路货运量和公路货运量作为货运量的输出指标。根据这些资料,利用神经网络对运输系统进行货运量预测。266计算机MATLAB神经网络工具箱267计算机MATLAB神经网络工具箱由于BP网络采用有教师的训练学习方式,所以它的样本集由输入样本和目标样本组成。这里选取国内生产总值GDP、工业总产值、铁路运输线路长度、复线里程比重、公路运输线路长度、等级公路比重

156、、铁路货车数量和民用载货车辆数量等8项指标,作为网络输入样本的8个分量;货运总量、铁路货运量和公路货运量作为网络目标样本的3个分量,如表2-9所示。由表2-9可知,系统的样本对为9,分别对应于表2-9中9年货运量的有关数据,利用以下MATLAB程序,可产生网络样本集。%ex2_42_1.m解解 确定网络样本集确定网络样本集268计算机MATLAB神经网络工具箱对网络样本集进行归一化处理在网络训练前,需要将不在0,1之间的影响因子,如GDP、工业总产值、铁路运输线路长度、公路运输线路长度、铁路货车数量和民用载货车辆数量,利用公式(2-1)进行归一化处理。对于已经在0,1之间的影响因子,如复线比重

157、和等级公路比重,可以不用进行归一化处理。根据以上给定的输入数据x矩阵和期望输出t矩阵,编写的MATLAB程序如下。%ex2_42_2.m269计算机MATLAB神经网络工具箱以上运行结果矩阵X和T中值,则为归一化后的影响因子和目标样本,其中每一行代表一类影响因子。经过归一化后的交通能力样本集如表2-10所示。270计算机MATLAB神经网络工具箱 网络设计和训练网络设计和训练本例将网络设计为一个二层的BP网络。网络的输入层的神经元数为8个;输出层的神经元数为3个;隐含层的神经元数先设为17个。隐含层的神经元数并不是固定的,需要根据实际训练的结果来不断调整。隐含层神经元的传递函数采用S型正切函数

158、tansig,输出层神经元的传递函数采用S型对数函数logsig,这正好满足网络输出在0,1之间的要求。训练函数trainlm利用Levenberg-Marquardt算法对网络进行训练。这里利用前8年的历史统计数据对网络系统进行训练,也就是将前8个样本对作为训练样本,后1个样本对作为测试样本,因此网络训练样本对N为8。根据以上归一化后输入样本X矩阵和目标样本T矩阵中前8列的数据,即表2-10中前8年的数据,编写的MATLAB程序如下。%ex2_42_3.m271计算机MATLAB神经网络工具箱 网络测试网络测试网络训练成功后,利用表2-10最后一组数据,作为网络的外推测试样本,对网络进行测试

159、。根据以上训练好的网络net和表2-10最后一组测试样本,即最后一年的数据,编写的MATLAB命令如下。X_test=X(:,9);y_test=sim(net,X_test);272计算机MATLAB神经网络工具箱 对网络输出数据进行反归一化处理对网络输出数据进行反归一化处理对于在0,1之间的网络输出值y_test,还需利用公式(2-2)进行反归一化处理,以便将其变换到原实际数据范围。根据以上网络的输出y_test和反归一化处理公式(2-2),以及期望输出t矩阵所定义的货运总量、铁路货运量和公路货运量的最大/最小值,编写的MATLAB命令如下。fori=1:3;Y_test(i,:)=y_t

160、est(i,:)*(max(t(i,:)-min(t(i,:)+min(t(i,:)end;运行结果:Y_test=261990129560117690273计算机MATLAB神经网络工具箱由此可见,预测结果与最后一年的实际值263595,130378和120356相比,网络的预测结果基本正确。因为最后一年的数据较前几年的增加幅度较大,而且这些数据同训练数据之间的距离也比较远,外推起来有一定的难度。此外,由于训练样本容量比较小,所以预测精度不是很高。考虑到这些因素,以上的预测结果是可以接收的。274计算机MATLAB神经网络工具箱(2) 电力系统的负荷预测电力系统的负荷预测电力系统负荷预测是生

161、产部门的重要工作之一,通过准确的负荷预测,可以经济合理安排机组启停、减少旋转备用容量、合理安排检修计划、降低发电成本和提高经济效益。负荷预测按预测的时间可以分为长期、中期和短期负荷预测。其中,短期负荷预测中,周负荷预测(未来1周)、日负荷预测(未来24小时)及提前小时预测对于电力系统的实时运行调度至关重要。负荷预测对电力系统控制、运行和计划都有着重要意义。因为对未来时刻进行预调度要以负荷预测的结果为依据,负荷预测结果的准确性将直接影响调度的结果,从而对电力系统的安全稳定运行和经济性带来重要影响。275计算机MATLAB神经网络工具箱例例2-43电力系统负荷变化受多方面的影响。一方面,存在着由于

162、未知不确定因素引起的随机波动;另一方面,又具有周期变化的规律性,这也使得负荷曲线具有相似形。同时,由于受天气、节假日等特殊情况影响,又使得负荷变化出现差异。假设某电力系统在过去12天的有功负荷值,以及有关气象特征经归一化后的数据如表2-11所示。276计算机MATLAB神经网络工具箱277计算机MATLAB神经网络工具箱在表2-11中,由于电力负荷每隔2个小时测量1次,故一天共有12组负荷数据。而气象特征分别为预测日的最高气温、最低气温和天气特征值,其中分别用0表示晴、0.5表示阴天和1表示雨天等天气特征。试根据电力系统以前的电力负荷和当日的气象特征预测当日的电力负荷。 278计算机MATLA

163、B神经网络工具箱 解解 确定训练样本集确定训练样本集由于BP网络采用有教师的训练学习方式,所以它的样本集由输入样本和目标样本组成。由于电力负荷值曲线相邻的点之间不会发生变化,因此后一时刻的值必然和前一时刻的值有关,除非发生重大事故等特殊情况。所以这里将预测日前一天的12组实际负荷数据和预测日当天的3个气象特征值作为网络的输入样本数据,预测日当天的12组实际负荷数据作为网络的期望输出数据(目标样本)。根据表2-11中的第111天的12组实际负荷数据和第212天的预测日当天的3个气象特征值,可知系统的样本对为11。这里将前10个样本对作为训练样本,后1个样本对作为测试样本。 网络设计和训练网络设计

164、和训练%ex2_43.m 网络测试网络测试279计算机MATLAB神经网络工具箱(3)地震的预测地震预测是地理问题研究领域中的一个重要课题,准确的地震预测可以帮助人们及时采取有效措施,降低人员伤亡和经济损失。引发地震的相关性因素很多。在实际地震预测中,前兆及地震学异常的时间和种类多少与未来地震震级大小有一定的关系。例例2-44我国西南某地震常发地区在过去11年中经归一化后的地震资料如表2-12所示。根据这些资料,实现基于神经网络的地震预测。280计算机MATLAB神经网络工具箱281计算机MATLAB神经网络工具箱解解 (1) 利用利用BP网络进行地震预测网络进行地震预测因为BP网络具有逼近任

165、意非线性映射的能力,所以在系统预测中的应用非常成功。 确定训练样本集确定训练样本集由于BP网络采用有教师的训练学习方式,所以它的样本集由输入样本和目标样本组成。将表2-12中前7项的地震预测因子作为网络的输入样本数据,最后1项的实际地震震级作为网络的期望输出数据(目标样本),因此网络的输入为一个7维的输入向量,输出为一个1维的输出向量。由表2-12可知,系统的样本对为11,分别代表过去11年中的地震资料。这里将前10个样本对作为训练样本,后1个样本对作为测试样本。 网络设计和训练网络设计和训练%ex2_44_1.m 网络测试网络测试282计算机MATLAB神经网络工具箱(2) 利用竞争网络进行

166、地震预测利用竞争网络进行地震预测自组织竞争网络能够识别成组的相似向量,常用于模式分类。 确定训练样本集确定训练样本集由于竞争网络是无教师学习的自学习方式,所以它的训练样本集仅由输入样本组成。在训练样本集中,输入向量的维数为7。测试样本对N为10,分别代表过去前10年的地震数据。 网络设计和训练网络设计和训练%ex2_44_2.m 网络测试网络测试283计算机MATLAB神经网络工具箱(3) 利用学习向量量化(利用学习向量量化(LVQ)网络进行地震预测)网络进行地震预测LVQ网络是在监督状态下对竞争层进行训练的一种学习算法。它可以通过学习,将输入向量中与目标向量相近的向量分离出来。 确定训练样本

167、集确定训练样本集由于LVQ网络是无教师的自学习方式,所以它的训练样本集仅由输入样本组成。在训练样本集中,输入向量的维数为7。测试样本对N为10,分别代表过去前10年的地震数据。 网络设计和训练网络设计和训练%ex2_44_3.m 网络测试网络测试284计算机MATLAB神经网络工具箱(4) 股市的预测股市的预测自有股票交易以来,对股票价格的预测一直就是学术界和广大投资者最感兴趣的问题之一,它不仅存在着极其诱人的应用价值,也具有重大的理论意义。 例例2-45假设某公司在过去10天经归一化后的股市价格如表2-13所示。根据这些资料,实现基于神经网络的股市预测。表2-13归一化后的股票数据序号股票价

168、格序号股票价格10.125460.607820.231570.711930.329780.868540.437690.925650.5425101.0000285计算机MATLAB神经网络工具箱解解 因为RBF网络和BP网络一样可以逼近任意的连续非线性函数,故本例利用RBF网络预测股市。 确定训练样本集确定训练样本集由于股市中数据可以看作一个时间序列进行处理,现在希望通过序列的前L个时刻的值,预测出后M个时刻的值。这里可以采用序列的前L个时刻的数据为滑动窗,并将其映射为M个值。本例将取L=3,M=1,即每3天作为一个周期,将预测日前3天的股票价格作为网络的输入量,输出量则为预测日当天的股票价格

169、,因此网络的输入为一个3维的输入向量,输出为一个1维的输出向量。根据表2-13可知,样本对N=10-(M+N)+1=7。这里将前6个样本对作为训练样本,后1个样本对作为测试样本。 网络设计和训练网络设计和训练%ex2_45.m 网络测试网络测试286计算机MATLAB神经网络工具箱4.3 基于神经网络的故障诊断基于神经网络的故障诊断除了系统建模预测之外,神经网络应用的另一大领域是故障诊断。神经网络技术的出现,为故障诊断问题提供了一种新的解决途径。特别是对于在实际中难以建立数学模型的复杂系统,神经网络更显示出其独特的作用。神经网络作为一种自适应的模式识别技术,并不需要预先给出有关模式的经验知识和

170、判别函数,同通过自身的学习机制自动形成所要求的决策区域。网络的特性由其拓扑结构、神经元特性、学习和训练规则所决定。它充分利用状态信息,对来自于不同状态的信息逐一进行训练而获得某种映射关系。而且神经网络可以连续学习,如果环境发生变化,这种映射关系还可以自适应地进行调整。287计算机MATLAB神经网络工具箱 例例2-46 回热系统是火电机组的主要辅助系统之一。回热系统长期处于高温高压的运行状态,加之运行中还受到机组负荷突变、给水泵出现故障、旁路切换等因素的影响,这就造成回热系统的频繁故障。根据回热系统的运行经验及现场条件,利用9个运行参数提取故障征兆,归纳得到12种主要故障的样本特征模式,将归一

171、化处理后的如数据表2-14所示。288计算机MATLAB神经网络工具箱289计算机MATLAB神经网络工具箱解解 (1)利用BP网络进行故障诊断因为BP网络具有逼近任意非线性映射的能力,所以在故障诊断中的应用非常成功。 确定训练样本集确定训练样本集由于BP网络采用有教师的训练学习方式,所以它的训练样本集由输入样本和目标样本组成。这里选取回热系统的9个运行参数所提取的故障征兆,作为网络输入样本的9个分量;12种主要故障分别用4位不同的二进制数表示,如表2-14所示,作为网络目标样本的4个分量。由表2-14知,训练样本对N为12,分别代表12种不同的主要故障。 网络设计和训练网络设计和训练%ex2

172、_46_1.m 网络测试网络测试290计算机MATLAB神经网络工具箱 (2) 利用径向基神经网络利用径向基神经网络RBF进行故障诊断进行故障诊断RBF网络和BP网络一样可以逼近任意的连续非线性函数。两者的主要不同点是在非线性映射上采用了不同的作用函数。BP网络中的隐节点使用的是S型函数,而RBF网络中的隐节点使用的是高斯函数,这使得RBF网络在逼近能力、分类能里和学习速度等方面均优于BP网络。 确定训练样本集确定训练样本集由于RBF网络也采用有教师的训练学习方式,所以它的训练样本集也由输入样本和目标样本组成。在训练样本集中,输入向量的维数为9,由回热系统的9个运行参数所提取的故障征兆组成;目

173、标向量的维数为4,由代表12种主要故障的4位不同的二进制数表示,如表2-14所示。样本对N为12,分别代表12种不同的主要故障。 网络设计和训练网络设计和训练%ex2_46_2.m 网络测试网络测试291计算机MATLAB神经网络工具箱(3) 利用概率神经网络进行故障诊断利用概率神经网络进行故障诊断概率径向基网络PNN是适用于分类问题的径向基网络,它具有结构简单、训练速度快等特点,应用范围非常广泛,特别适合于模式分类问题的解决。 确定训练样本集确定训练样本集由于PNN网络也采用有教师的训练学习方式,所以它的训练样本集也由输入样本和目标样本组成。在训练样本集中,输入向量的维数为9,它由回热系统的

174、9个运行参数所提取的故障征兆组成;目标向量的维数为4,由代表输入向量所属的类别的112来表示,即分别用112来代表12种不同的主要故障AL,如表2-14所示。样本对N为12,分别代表12种不同的主要故障。 网络设计和训练网络设计和训练%ex2_46_3.m 网络测试网络测试292计算机MATLAB神经网络工具箱(4) 利用自组织特征映射利用自组织特征映射SOM网络进行故障诊断网络进行故障诊断 确定训练样本集确定训练样本集由于SOM网络是无教师学习的自学习方式,所以它的训练样本集仅由输入样本组成。在训练样本集中,输入向量的维数为9,由回热系统的9个运行参数所提取的故障征兆组成。样本对N为12,分

175、别代表12种不同的主要故障,可分别用12个字母A,B,CL来代表。 网络设计和训练网络设计和训练%ex2_46_4.m 网络测试网络测试293计算机MATLAB神经网络工具箱(5) 利用利用Elman网络进行故障诊断网络进行故障诊断 确定训练样本集确定训练样本集由于Elman网络也采用有教师的训练学习方式,所以它的训练样本集也由输入样本和目标样本组成。在训练样本集中,输入向量的维数为9,由回热系统的9个运行参数所提取的故障征兆组成;目标向量的维数为4,由代表12种主要故障的4位不同的二进制数表示,如表2-14所示。样本对N为12,分别代表12种不同的主要故障。 网络设计和训练网络设计和训练%ex2_46_5.m 网络测试网络测试294计算机MATLAB神经网络工具箱小结本章首先详细地介绍了十几种常用MATLAB神经网络工具箱的函数及其使用方法;然后介绍了MATLAB神经网络工具箱的图形用户界面和基于Simulink的神经网络系统模块的使用方法;最后介绍了神经网络在系统预测和故障诊断中的应用。295计算机MATLAB神经网络工具箱

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号