用BP网络逼近非线性函数f(x)=sin2x+cos5x

合集下载

BP神经网络逼近非线性函数

BP神经网络逼近非线性函数

3、 试用BP 神经网络逼近非线性函数f(u) =)5.0u (9.1e+-sin(10u) 其中,u ∈[-0.5,0.5](1)解题步骤:①网络建立:使用“net=newff(minmax(x), [20, 1], {'tansig ’,’ purelin' });,语句建立个前馈BP 神经网络。

该BP 神经网络只含个隐含层,且神经元的个数为20。

隐含层和输出层神经元的传递函数分别为tansig 和pure-lin 。

其他参数默认。

②网络训练:使用“net=train (net, x , y) ;”语句训练建立好的BP 神经网络。

当然在网络训练之前必须设置好训练参数。

如设定训练时间为50个单位时间,训练目标的误差小于0.01,用“net.trainParam.epochs=50; net.train-Param.goal=0.01;”,语句实现。

其他参数默认。

③网络仿真:使用“y1=sim(net, x); y2=sim(net, x};”语句仿真训练前后的BP 神经网络。

(2)程序如下:clear all ;x=[-0.5:0.01:0.5];y=exp(-1.9*(0.5+x)).*sin(10*x);net=newff(minmax(x),[20,1],{'tansig' 'purelin'});y1=sim(net,x); %未训练网络的仿真结果 net.trainParam.epochs=50;net.trainParam.goal=0.01;net=train(net,x,y);y2=sim(net,x); %训练后网络的仿真结果 figure;plot(x,y,'-',x,y1,'-',x,y2,'--')title('原函数与网络训练前后的仿真结果比较');xlabel('x');ylabel('y');legend('y','y1','y2');grid on(3)仿真结果如图:图1图1为原函数y与网络训练前后(y1,y2)的仿真结果比较图。

BP神经网络实现函数逼近python实现

BP神经网络实现函数逼近python实现

机器学习作业一BP神经网络实现函数逼近一.算法描述BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。

BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。

它的学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。

BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。

二.数据描述逼近函数y = sin(x)三.算法参数输入学习率,迭代次数,逼近函数,神经网络规模输出逼近的函数四.实验流程反向传播算法(Back Propagation)分二步进行,即正向传播和反向传播。

这两个过程简述如下:1.正向传播输入的样本从输入层经过隐单元一层一层进行处理,传向输出层;在逐层处理的过程中。

在输出层把当前输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。

2.反向传播反向传播时,把误差信号按原来正向传播的通路反向传回,逐层修改连接权值,以望代价函数趋向最小。

输入层输入向量(n维):X=(x1,x2,…,xi,…,xn)T隐层输出向量(隐层有m个结点):Y=(y1,y2,…,yj,…,ym)T输出层输出向量(l维):O=(o1,o2,…,ok,…,ol)T期望输出向量:d=(d1, d2,…,dk,…,dl)T输入层到隐层之间的权值矩阵:V=(V1,V2,…,Vj,…,Vm)隐层到输出层之间的权值矩阵用:W=(W1,W2,…,Wk,…,Wl)对输出层第k个结点和隐含层的第j个结点有如下关系:激活函数f(x)常用sigmoid函数(一个在生物学中常见的S型的函数,也称为S 形生长曲线)或者tanh(双曲正切)函数。

基于BP神经网络的函数逼近方法及其MATLAB实现

基于BP神经网络的函数逼近方法及其MATLAB实现
基于BP神经网络的函数逼近方法及其MATLAB实现
摘 要: MATLAB软件及其BP神经网络工具箱函数的应用,结合一个实际的例子详细阐述了基于BP神经网络的函数逼近过程及其MATLAB实现方法。
关键词: 函数逼近 BP神经网络 MATLAB软件
数值计算方法已经在各个学科领域得到了广泛应用,并且促使新的有效数值方法不断出现。计算工具的使用为科学计算带来了很大的方便,但由于计算机字长的限制,许多复杂的、大规模的计算问题需简化。神经网络是对生物神经系统的模拟,其信息处理功能是由网络单元(神经元)的输入输出特性(激活特性)、网络的拓扑结构(神经元的连接方式)、连接权的大小(突触联系强度)和神经元的阈值(视作特殊的连接权)所决定的。在神经网络的实际应用中,绝大部分的神经网络模型使用的是BP神经网络或其变化形式,它也是前馈神经网络的核心部分。BP神经网络的主要特点是非线性映射能力,这种能力使其能够对任意非线性函数进行很好的逼近。鉴于函数逼近及BP神经网络的这些特点,本文提出了基于BP神经网络的函数逼近方法。此外,本文开创性地遗弃了C、C++、VC等传统的高级编程语言,采用功能强大的MATLAB语言编程,直接调用MATLAB软件包中的BP神经网络工具箱函数,使程序简捷明了,达到了事半功倍的效果。
BP神经网络的学习过程由正向和反向传播二部分组成。在正向传播过程中,每一层神经元的状态只影响到下一层神经元网格。如果输出层不能得到期望输出,就是实际输出值和期望输出值之间存在误差,从而转入反向传播过程,将误差信号沿原来的连接通路返回。通过修改各层神经元的权值,逐次地向输入层传播并进行计算,再进行正向传播。这二个过程的反复运用,使得误差信号最小。实际上,误差达到人们所希望的要求时,网络的学习过程就结束。

基于BP神经网络算法的正余弦函数逼近

基于BP神经网络算法的正余弦函数逼近

实验二 基于BP 神经网络算法的正余弦函数逼近班级:学号:姓名:1. 实验目的(1) 掌握MATLAB 子函数编写与调用。

(2) 理解BP 神经元网络算法的原理,并利用程序实现通过BP 算法逼近任意非线性函数。

2. 实验内容与实验要求(1) 掌握BP 神经网络算法的原理。

(2) 掌握MATLAB 子函数的编写方法及调用方法。

(3) 根据BP 神经网络算法的原理,编写MA TLAB 程序,逼近非线性函数。

3. 实验原理一个2×3×1的神经网络即输入层有两个节点,隐层含三个节点,输出层有一个节点,图1 神经网络结构图图中ij w )5,4,3;2,1(==j i 为输入层与隐层的权值,jk w )6;5,4,3(==k j 为隐层与输出层的权值,1x 、2x 是神经网络的输入值,y 是网络的输出值,p y 为教师信号,e 为神经网络的实际输出与期望输出的误差。

在这个神经网络中,节点1,2是输入层, 节点3,4,5是隐层,节点6是输出层;输入层和隐层之间的权值依次252423151413,,,,,w w w w w w ,隐层和输出层间的权值为564636,,w w w ,下角标为节点的编号;隐层和输出层节点的阈值依次为3θ,4θ,5θ,6θ。

①前馈计算设隐层的第j 个节点的输入和输出分别为:∑=⋅=N i i ij j O wI 1)(j j I f O =其中)(j I f 为激励函数 j I j e I f -+=11)(由于隐层的输出就是输出层的输入,则输出层第k 个节点的总输入和输出分别为: ∑=⋅=H j j jk k O wI 1)(k k k I f O y ==若网络输出与实际输出存在误差,则将误差信号反向传播,并不断地修正权值,直至误差达到要求为止。

②权值调整设误差函数定义为: ∑=-=M k k k p y d E 12)(21 为了简便,以下计算都是针对每个节点而言,误差函数p E 记作E 。

BP神经网络用MATLAB逼近非线性函数及其泛化能力的分析

BP神经网络用MATLAB逼近非线性函数及其泛化能力的分析
检测本例的泛化能力errd1y1算法改变为trainlm后的泛化能力输入样本集增多至40个点后的泛化能力隐节点数曾至20后的泛化能力从上面几个例子可以看出影响网络泛化能力的因素有很多比如样本集的多少隐层节点数的多少bp网络的算法网络结构的复杂性甚至是初始权值学习时间等都对其有丌同程度的影响
BP网络逼近非线性函数及其泛 化能力的分析
则得到以下所示未经训练的BP网络期 望输出不实际输出曲线比较
接着对函数进行训练
在M文件中输入如下函数:
net.trainParam.goal=0.001;
net=train(net,u,d);
%训练精度设置 为0.001 %网络训练
经过1183次训练达到了要求
经过训练后可以看到网络输出基本不样本输出 一致。这说明经过训练后,BP网络对非线性 函数的逼近效果相当好。
逼近对象
如下:
f (u ) e
[ 1.9 ( u 0.5 )]
sin( u ) 10
由于作用函数采取S型函数,样本数据和测试数据尽量在[-1,1] 之间取。所以样本数据取: u=-0.4:0.04:0.36 测试数据取: u1=-0.48:0.05:0.47
在MATLAB中建立M文件下输入 如下命令:
王江
引言
函数逼近问题是神经网络研究的基本问题 之一.目前,非线性系统的研究已成为国内外科 学研究的热点。复杂非线性系统辨识是非线性 系统研究的前提和基础,其中非线性系统的黑 箱辨识问题尤为引人注目。而具有良好函数逼 近能力的神经网络为非线性系统黑箱辨识提供 了一种十分有效的工具。本文选取比较有代表 性的BP神经网络对非线性函数的逼近问题进行 研究,并通过实际的建模仿真给出了相关的实 验结果。
参考文献

BP神经网络逼近非线性函数

BP神经网络逼近非线性函数

应用BP神经网络逼近非线性函一、实验要求1、逼近的非线性函数选取为y=sin(x1)+cos(x2),其中有两个自变量即x1,x2,一个因变量即y。

2、逼近误差<5%,即:应用测试数据对网络进行测试时,神经网络的输出与期望值的最大误差的绝对值小于期望值的5%。

3、学习方法为经典的BP算法或改进形式的BP算法,鼓励采用改进形式的BP算法。

4、不允许采用matlab中现有的关于神经网络建立、学习、仿真的任何函数及命令。

二、实验基本原理2.1 神经网络概述BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传播,误差反向传播。

在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。

每一层的神经元状态只影响下一层神经元状态。

如果输出层得不到期望输出,则转入反向传播,根据预判误差调整网络权值和阈值,从而使BP神经网络预测输出不断逼近期望输出。

BP神经网络的拓扑结构如图所示。

2.2 BP神经网络训练步骤BP神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。

BP神经网络的训练过程包括以下几个步骤。

步骤1:网络初始化。

根据系统输入输出序列(X,Y)确定网络输入层节点数n、隐含层节点数l、输出层节点数m,初始化输入层、隐含层和输出层神经元之间的连接权值ωij,ωjk,初始化隐含层阈值a,输出层阈值b,给定学习速率和神经元激励函数。

步骤2:隐含层输出计算。

根据输入变量X,输入层和隐含层间连接权值ωij以及隐含层阈值a,计算隐含层输出H。

j1(a )nj ij ii H f x ω==-∑ j=1,2,…,l式中,l 为隐含层节点数,f 为隐含层激励函数,该函数有多种形式,一般选取为1(x)1xf e-=+ 步骤3:输出层输出计算。

根据隐含层输出H ,连接权值ωjk 和阈值b ,计算BP 神经网络预测输出O 。

1lk j jk k j O H b ω==-∑ k=1,2,…,m步骤4:误差计算。

基于BP网络模型的非线性模型逼近问题

基于BP网络模型的非线性模型逼近问题

一、作业题目BP-Based Non-linear model approximation(基于BP网络的非线性模型逼近问题)二、编程工具及语言本次编程工具是Microsoft Visual Studio 2010中文版软件,编程语言为C#语言,由此实现界面化程序模型。

三、BP界面简介其中右上角的空白区域是训练过程中动态显示误差的变化曲线;左下角的空白区域是显示训练数据网络输出值和训练数据真实值的对比图;右下角空白区域是用来显示泛化数据真实值和泛化数据网络输出值的对比图;这三个图待输入好正确参数后,是动态显示出的,具有很好的直观效果。

四、实验结果本次程序源代码以电子版格式放到老师邮箱请查收!①单输入单输出模型的验证对函数51xy x-=++的逼近1>数据样本集的产生:用matlab中的随机数函数rand,代码如下:a=rand(150,1);y1=5*logsig(a)+a;noise=0.02*randn(150,1);y=y1+noise;test=[a,y];b=rand(150,1);y2=5*logsig(a)+a;Generalization=[b,y2];其中test为训练样本,对应输入数据a序列其函数输出值y是真实值y1加上干扰noise之后的值;泛化样本为Generalization,训练样本和泛化样本都是用随机数函数rand产生的样本集,保证了他们里的数据不相同。

然后把训练数据集和泛化数据集分别保存成Test.txt和Generalization.txt放在BP程序工作路径下,以便程序里调用该数据。

2> 训练和泛化结果其结果如下图所示:对于单输入单输出系统,输入输出节点都为1,并设计隐层数设为25,学习速率为0.5,动量因子为0.6,期望误差设为0.014,最大训练次数为100;由此训练网络可以得到的结果如小窗口所示为: 训练次数为100次,说明训练到最后没有满足期望的误差;训练过程的平均、最大、最小相对误差分别为0.0146、0.0722、0.000259;泛化过程的平均、最大、最小相对误差分别为:0.0161、0.0731、0.00007264。

实验一、BP及RBP神经网络逼近

实验一、BP及RBP神经网络逼近

实验一、BP及RBF神经网络逼近一、实验目的1、了解MATLAB集成开发环境2、了解MATLAB编程基本方法3、熟练掌握BP算法的原理和步骤4、掌握工具包入口初始化及调用5、加深BP、RBF神经网络对任意函数逼近的理解二、实验内容1、MATLAB基本指令和语法。

2、BP算法的MATLAB实现三、实验步骤1、熟悉MATLAB开发环境2、输入参考程序3、设置断点,运行程序,观察运行结果四、参考程序1. BP算法的matlab实现程序%lr为学习步长,err_goal期望误差最小值,max_epoch训练的最大次数,隐层和输出层初值为零lr=0.05;err_goal=0.0001;max_epoch=10000;a=0.9;Oi=0;Ok=0;%两组训练集和目标值X=[1 1;-1 -1;1 1];T=[1 1;1 1];%初始化wki,wij(M为输入节点j的数量;q为隐层节点i的数量;L为输出节点k的数量)[M,N]=size(X);q=8;[L,N]=size(T);wij=rand(q,M);wki=rand(L,q);wij0=zeros(size(wij));wki0=zeros(size(wki));for epoch=1:max_epoch%计算隐层各神经元输出NETi=wij*X;for j=1:Nfor i=1:qOi(i,j)=2/(1+exp(-NETi(i,j)))-1;endend%计算输出层各神经元输出NETk=wki*Oi;for i=1:Nfor k=1:LOk(k,i)=2/(1+exp(-NETk(k,i)))-1;endend%计算误差函数E=((T-Ok)'*(T-Ok))/2;if (E<err_goal)break;end%调整输出层加权系数deltak=Ok.*(1-Ok).*(T-Ok);w=wki;wki=wki+lr*deltak*Oi';wki0=w;%调整隐层加权系数deltai=Oi.*(1-Oi).*(deltak'*wki)';w=wij;wij=wij+lr*deltai*X';wij0=w;endepoch %显示计算次数%根据训练好的wki,wij和给定的输入计算输出X1=X;%计算隐层各神经元的输出NETi=wij*X1;for j=1:Nfor i=1:qOi(i,j)=2/(1+exp(-NETi(i,j)))-1;endend%计算输出层各神经元的输出NETk=wki*Oi;for i=1:Nfor k=1:LOk(k,i)=2/(1+exp(-NETk(k,i)))-1;endendOk %显示网络输出层的输出2、BP逼近任意函数算法的matlab实现程序⏹X=-4:0.08:4;⏹T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);⏹net=newff(minmax(X),[20,1],{'tansig','purelin'});⏹net.trainParam.epochs=15000;⏹net.trainParam.goal=0.001;⏹net=train(net,X,T);⏹X1=-1:0.01:1;⏹y=sim(net,X1);⏹figure;⏹plot(X1,y,'-r',X,T,':b','LineWidth',2);3.RBF能够逼近任意的非线性函数⏹X=-4:0.08:4;⏹T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);⏹net=newrb(X,T,0.002,1);⏹X1=-1:0.01:1;⏹y=sim(net,X1);⏹figure;⏹plot(X1,y,'-r',X,T,':b','LineWidth',3);五、思考题1. 将结果用图画出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能技术实验三-BP程序的算法设计1熟悉BP网络的基本训练算法程序,练习课件上的相关程序。

(1)用BP网络逼近非线性函数f(x)=sin2x+cos5x程序:x=-0.8:0.05:0.75;t=sin(2*x)+cos(5*x);net=newff(minmax(x),[12,1],{'tansig','purelin'},'trainbfg','learngdm','sse');%利用准牛顿反向传播算法对网络进行训练,动量梯度下降权值与阈值的学习net.trainParam.epochs=1500;%训练步数net.trainParam.goal=0;%训练目标误差net.trainParam.lr=1.42;%学习速率net.trainParam.show=100;%现实训练结果的间隔步数[net,Tr]=train(net,x,t);x1=-0.77:0.05:0.78;y1=sim(net,x1);x2=0.75:0.05:0.95;%外推t2=sin(2*x2)+cos(5*x2);y2=sim(net,x2);e=y2-t2;xwc=e./t2;%相对误差figure(2)subplot(211)plot(x,t,'ko',x,t,'k-',x1,y1,'k*',x1,y1,'k-');xlabel('自变量x')ylabel('函数值')subplot(212)plot(x2,e,'k.',x2,e,'k-')xlabel('自变量x')ylabel('函数误差值e')运行结果:(2)BP 网络在故障诊断中的应用 程序:P=[0.2286 0.1292 0.0720 0.1592 0.1335 0.0733 0.1159 0.0940 0.0522 0.1345 0.0090 0.1260 0.3619 0.0690 0.1828; 0.2090 0.0947 0.1393 0.1387 0.2558 0.0900 0.0771 0.0882 0.0393 0.1430 0.0126 0.1670 0.2450 0.0508 0.1328; 0.0442 0.0880 0.1147 0.0563 0.3347 0.1150 0.1453 0.0429 0.1818 0.0378 0.0092 0.2251 0.1516 0.0858 0.0670;0.2603 0.1715 0.0702 0.2711 0.1491 0.1330 0.0968 0.1911 0.2545 0.0871 0.0060 0.1793 0.1002 0.0789 0.0909; 0.3690 0.2222 0.0562 0.5157 0.1872 0.1614 0.1425 0.1506 0.1310 0.0500 0.0078 0.0348 0.0451 0.0707 0.0880; 0.0359 0.1149 0.1230 0.5460 0.1977 0.1248 0.0624 0.0832 0.1640 0.1002 0.0059 0.1503 0.1837 0.1295 0.0700;自变量x函数值0.750.80.850.90.95自变量x函数误差值e0.1759 0.2347 0.1829 0.1811 0.2922 0.0655 0.0774 0.2273 0.2056 0.0925 0.0078 0.1852 0.3501 0.1680 0.2668;0.0724 0.1909 0.1340 0.2409 0.2842 0.0450 0.0824 0.1064 0.1909 0.1586 0.0116 0.1698 0.3644 0.2718 0.2494;0.2634 0.2258 0.1165 0.1154 0.1074 0.0657 0.0610 0.2623 0.2588 0.1155 0.0050 0.0978 0.1511 0.2273 0.3220]';T=[1 0 0;1 0 0;1 0 0;0 1 0;0 1 0;0 1 0;0 0 1;0 0 1;0 0 1]';%输入向量的最大值与最小值threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];net=newff(threshold,[31,3],{'tansig','l ogsig'},'trainlm');%训练次数为50,训练目标为0.001,学习速率为0.1net.trainParam.epochs=50;net.trainParam.goal=0.001;LP.lr=0.1;net=train(net,P,T);%测试数据test=[0.2593 0.1800 0.0711 0.2801 0.1501 0.1298 0.1001 0.1891 0.2531 0.0875 0.0058 0.1803 0.0992 0.0802 0.1002;0.2101 0.0950 0.1298 0.1359 0.2601 0.1001 0.0753 0.0890 0.0389 0.1451 0.0128 0.1590 0.2452 0.0512 0.1319;0.2599 0.2235 0.1201 0.1171 0.1102 0.0683 0.0621 0.2597 0.2602 0.1167 0.0048 0.1002 0.1521 0.2281 0.3205]';y=sim(net,test)运行结果:y =0.0160 0.9789 0.01010.9600 0.0234 0.03920.0161 0.0044 0.9701(3)BP网络在模式识别中的应用程序:%BP网络用血清胆固醇含量检测%prestd-对样本数据进行标准化处理%prepca-对样本数据进行主元分析%newff-生成一个新的前向神经网络%train-对BP网络进行训练%sim-对BP网络进行仿真%postreg-对仿真结果进行回归分析%加载样本数据load choles_all.matsizeofp=size(p);sizeoft=size(t);%对样本数据进行标准化处理[pn,meanp,stdp,tn,meant,stdt]=prestd(p, t);%对样本数据进行主元分析[ptrans,transMat]=prepca(pn,0.001); [R,Q]=size(ptrans);% 将样本数据划分为训练集、验证集和测试集iitst=2:4:Q;iival=4:4:Q;iitr=[1:4:Q 3:4:Q];val.P=ptrans(:,iival);%验证样本集val.T=tn(:,iival);test.P=ptrans(:,iitst);%测试样本集test.T=tn(:,iitst);ptr=ptrans(:,iitr);%训练样本集ttr=tn(:,iitr);%创建神经网络net=newff(minmax(ptr),[53],{'tansig','purelin'},'trainlm'); [net,tr]=train(net,ptr,ttr,[],[],val,te st);%绘制误差变化曲线plot(tr.epoch,tr.perf,tr.epoch,tr.vperf,':',tr.epoch,tr.tperf,'r-.') legend('Training','Validation','Test',-1);ylabel('Squard Error'); xlabel('Epoch'); %对神经网络进行仿真分析 an=sim(net,ptrans); a=poststd(an,meant,stdt);%将仿真结果与目标输出作线性回归分析 for i=1:3 figure(i+1)[m(i),b(i),r(i)]=postreg(a(i,:),t(i,:)); end运行结果:2468100.20.40.60.811.21.41.6EpochS q u a r d E r r o rTraining Validation Test2 采用2种不同的训练算法来训练BP网络,使其能够拟合某一附加有白噪声的正弦样本数据,其中样本数据可以采用下列语句生成:输入矢量:P=[-1:0.05:1];目标矢量:randn(’seed’,78341223);T=sin(2*pi*P)+0.1*randn(size(P));% NEWFF——生成一个新的前向神经网络% TRAIN——对BP 神经网络进行训练% SIM——对BP 神经网络进行仿真算法1:Trainlm(L-M优化方法)程序:%定义网络输入和期望输出P=[-1:0.05:1];randn('seed',78341223);T=sin(2*pi*P)+0.1*randn(size(P));%建立相应的BP网络net=newff(minmax(P),[3,1],{'tansig','pu relin'},'trainlm');inputWeights=net.IW{1,1};inputbias=net.b{1};% 训练网络net.trainParam.show=50;net.trainParam.lr=0.05; net.trainParam.mc=0.9; net.trainParam.epochs=1000; net.trainParam.goal=0.0001;%调用TRAINGDM算法训练BP网络net=train(net,P,T);%对BP网络进行仿真A=sim(net,P);E=A-T;M=mse(E);N=sse(E);%测试网络%结果作图 %训练曲线 figure(1) plot(T,'r'); hold on plot(A,'b.:');legend('训练样本值','BP 拟合值'); title('BP 网络训练图');xlabel('样本个数'); %训练误差 figure(2) plot(T-A,'-');title('BP 网络训练误差'); legend('训练样本误差'); ylabel('训练绝对误差'); xlabel('样本个数'); grid;运行结果:51015202530354045-1.5-1-0.50.511.5样本个数BP 网络训练图算法2trainrp (弹性学习算法) 程序:%定义网络输入和期望输出 P=[-1:0.05:1]; randn('seed',78341223);T=sin(2*pi*P)+0.1*randn(size(P)); %建立相应的BP 网络net=newff(minmax(P),[3,1],{'tansig','pu relin'},'trainrp'); inputWeights=net.IW{1,1}; inputbias=net.b{1};% 训练网络net.trainParam.show=50; net.trainParam.lr=0.05; net.trainParam.mc=0.9; net.trainParam.epochs=1000; net.trainParam.goal=0.0001;%调用TRAINGDM 算法训练BP 网络 net=train(net,P,T);%对BP 网络进行仿真 A=sim(net,P); E=A-T; M=mse(E); N=sse(E); %测试网络%结果作图 %训练曲线 figure(1) plot(T,'r'); hold on plot(A,'b.:');legend('训练样本值','BP 拟合值'); title('BP 网络训练图');xlabel('样本个数'); %训练误差 figure(2) plot(T-A,'-');title('BP 网络训练误差');51015202530354045-0.500.51BP 网络训练误差样本个数训练绝对误差legend('训练样本误差'); ylabel('训练绝对误差');xlabel('样本个数'); grid;运行结果:51015202530354045-1.5-1-0.50.511.5样本个数BP 网络训练图51015202530354045-0.8-0.6-0.4-0.200.20.40.60.8BP 网络训练误差样本个数训练绝对误差。

相关文档
最新文档