BP神经网络逼近非线性函数_第1页
BP神经网络逼近非线性函数_第2页
BP神经网络逼近非线性函数_第3页
BP神经网络逼近非线性函数_第4页
BP神经网络逼近非线性函数_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

应用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.2BP神经网络训练步骤 BP神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。BP神经网络的训练过程包括以下几个步骤。 步骤1:网络初始化。根据系统输入输出序列(X,Y)确定网络输入层节点数n、隐含层节点数l、输出层节点数m,初始化输入层、隐含层和输出层神经元之间的连接权值ωij,ωjk,初始化隐含层阈值a,输出层阈值b,给定学习速率和神经元激励函数。 步骤2:隐含层输出计算。根据输入变量X,输入层和隐含层间连接权值ωij以及隐含层阈值a,计算隐含层输出H。还会使网络收敛速度变慢;在经过查询相关资料之后,训练结束条件除了最大预测误差小于5%之外,还增加了目标函数,目标函数是取所有误差的平方和,当目标函数的计算值小于预期目标时同样也会停止训练,此时默认训练已达目标。在实际检验过程中发现,加入目标函数后不仅可以有效地改善收敛速度慢耗时长的问题,同时各个坐标点的预测误差也在期望值之内,达到了实验要求。四、实验结果 由于程序中权值阈值的取值是随机的,所以取其中一次的结果展示。最大训练次数为15329,训练结束后的最大误差为2.5331。图1非线性函数图像图2网络图图3误差曲线程序:clcclear%创建输入数据,产生361组输入输出数据row=1;fori=-4.5:0.5:4.5forj=-4.5:0.5:4.5input(row,1)=i;input(row,2)=j;output(row,1)=sin(input(row,1))+cos(input(row,2));row=row+1;endend%神经网络结构inputnum=2;%输入层节点数hiddennum=9;%隐含层节点数outputnum=1;%输出层节点数%网络参数learnSpeed=0.0003;%学习率learnGoal=0.05;%目标%隐含层及输出层的权值和阈值w1=0.2*rand(hiddennum,inputnum)-0.1;b1=0.2*rand(hiddennum,1)-0.1;w2=0.2*rand(outputnum,hiddennum)-0.1;b2=0.2*rand(outputnum,1)-0.1;%取训练数据和预测数据%采用全部样本遍历一次后再进行权值阈值调整%调整采用附加动量法,加快收敛速度,减少遍历次数input_train=[inputones(361,1)]';output_train=output;HH=[w1b1];OO=[w2b2];collectHH=[];collectOO=[];%用训练数据训练BP神经网络aimJ=0;max_rate=100;%初始化最大样本误差trainNum=0;%初始化训练次数while(max_rate>learnGoal)collectHiddenOut=logsig(HH*input_train);%计算隐含层输出hiddenOut=[collectHiddenOut'ones(361,1)]';networkOut=OO*hiddenOut;%计算网络输出error=output_train-networkOut';%计算误差%利用目标函数,判断是否结束循环aimJ=sumsqr(error)if(aimJ<learnGoal)break;end%统计训练次数trainNum=trainNum+1;%权值阈值调整因子factor2=error';factor1=w2'*factor2.*collectHiddenOut.*(1-collectHiddenOut);%调整权值和阈值调节量dHH=factor1*input_train';dOO=factor2*hiddenOut';%权值阈值调整if(trainNum<3)HH=HH+learnSpeed*dHH;OO=OO+learnSpeed*dOO;collectHH=[collectHHHH];collectOO=[collectOOOO];w1=HH(:,1:inputnum);b1=HH(:,1+inputnum);w2=OO(:,1:hiddennum);b2=OO(:,1+hiddennum);else%附加动量法HH=HH+learnSpeed*dHH+0.94*(collectHH(:,((trainNum-2)*3+1):((trainNum-2)*3+3))-collectHH(:,((trainNum-3)*3+1):((trainNum-3)*3+3)));OO=OO+learnSpeed*dOO+0.94*(collectOO(1,((trainNum-2)*10+1):((trainNum-2)*10+10))-collectOO(1,((trainNum-3)*10+1):((trainNum-3)*10+10)));collectHH=[collectHHHH];collectOO=[collectOOOO];w1=HH(:,1:inputnum);b1=HH(:,1+inputnum);w2=OO(:,1:hiddennum);b2=OO(:,1+hiddennum);end%训练数据测试,计算最大误差率hiddenOut_test=logsig(HH*input_train);%参数修改后的隐含层输出network_test=w2*hiddenOut_test+repmat(b2,1,361);%预测结果rate=(output_train-network_test')./output_train;%误差率max_rate=max(abs(rate));%误差率最大值end%显示测试结果%标准函数图像y=sin(x1)+cos(x2)[x,y]=meshgrid(-4.5:0.1:4.5,-4.5:0.1:4.5);z=sin(x)+cos(y);figure(1)mesh(x,y,z)xlabel('x1');ylabel('x2');zlabel('y');%网络图t1=linspace(min(input(:,1)),max(input(:,1)));t2=linspace(min(input(:,2)),max(input(:,2)));[X,Y]=meshgrid(t1,t2);Z=griddata(input(:,1),input(:,2),network_test',X,Y);figure(2)mesh(X,Y,Z)xlabel('Input1');ylabel('Input2');zlabel('Output');%绘制误差曲线t3=linspace(min(input(:,1)),max(input(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论