您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > BP神经网络用于函数拟合与模式识别的Matlab示例程序
%BP神经网络用于模式分类%使用平台-Matlab6.5%作者:陆振波,海军工程大学%欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页%电子邮件:luzhenbo@yahoo.com.cn%个人主页:产生训练样本与测试样本,每一列为一个样本P1=[rand(3,5),rand(3,5)+1,rand(3,5)+2];T1=[repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];P2=[rand(3,5),rand(3,5)+1,rand(3,5)+2];T2=[repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];%---------------------------------------------------%归一化[PN1,minp,maxp]=premnmx(P1);PN2=tramnmx(P2,minp,maxp);%---------------------------------------------------%设置网络参数NodeNum=10;%隐层节点数TypeNum=3;%输出维数TF1='tansig';TF2='purelin';%判别函数(缺省值)%TF1='tansig';TF2='logsig';%TF1='logsig';TF2='purelin';%TF1='tansig';TF2='tansig';%TF1='logsig';TF2='logsig';%TF1='purelin';TF2='purelin';net=newff(minmax(PN1),[NodeNumTypeNum],{TF1TF2});%---------------------------------------------------%指定训练参数%net.trainFcn='traingd';%梯度下降算法%net.trainFcn='traingdm';%动量梯度下降算法%%net.trainFcn='traingda';%变学习率梯度下降算法%net.trainFcn='traingdx';%变学习率动量梯度下降算法%%(大型网络的首选算法-模式识别)%net.trainFcn='trainrp';%RPROP(弹性BP)算法,内存需求最小%%共轭梯度算法%net.trainFcn='traincgf';%Fletcher-Reeves修正算法%net.trainFcn='traincgp';%Polak-Ribiere修正算法,内存需求比Fletcher-Reeves修正算法略大%net.trainFcn='traincgb';%Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大%(大型网络的首选算法-函数拟合,模式识别)%net.trainFcn='trainscg';%ScaledConjugateGradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多%%net.trainFcn='trainbfg';%Quasi-NewtonAlgorithms-BFGSAlgorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快%net.trainFcn='trainoss';%OneStepSecantAlgorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大%%(中小型网络的首选算法-函数拟合,模式识别)net.trainFcn='trainlm';%Levenberg-Marquardt算法,内存需求最大,收敛速度最快%%net.trainFcn='trainbr';%贝叶斯正则化算法%%有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss','trainlm'%---------------------%net.trainParam.show=1;%训练显示间隔net.trainParam.lr=0.3;%学习步长-traingd,traingdmnet.trainParam.mc=0.95;%动量项系数-traingdm,traingdxnet.trainParam.mem_reduc=10;%分块计算Hessian矩阵(仅对Levenberg-Marquardt算法有效)net.trainParam.epochs=1000;%最大训练次数net.trainParam.goal=1e-8;%最小均方误差net.trainParam.min_grad=1e-20;%最小梯度net.trainParam.time=inf;%最大训练时间%---------------------------------------------------%训练与测试net=train(net,PN1,T1);%训练%---------------------------------------------------%测试Y1=sim(net,PN1);%训练样本实际输出Y2=sim(net,PN2);%测试样本实际输出Y1=full(compet(Y1));%竞争输出Y2=full(compet(Y2));%---------------------------------------------------%结果统计Result=~sum(abs(T1-Y1))%正确分类显示为1Percent1=sum(Result)/length(Result)%训练样本正确分类率Result=~sum(abs(T2-Y2))%正确分类显示为1Percent2=sum(Result)/length(Result)%测试样本正确分类率******************************************************************%BP神经网络用于函数拟合%使用平台-Matlab6.5%作者:陆振波,海军工程大学%欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页%电子邮件:luzhenbo@yahoo.com.cn%个人主页:产生训练样本与测试样本P1=1:2:200;%训练样本,每一列为一个样本T1=sin(P1*0.1);%训练目标P2=2:2:200;%测试样本,每一列为一个样本T2=sin(P2*0.1);%测试目标%---------------------------------------------------%归一化[PN1,minp,maxp,TN1,mint,maxt]=premnmx(P1,T1);PN2=tramnmx(P2,minp,maxp);TN2=tramnmx(T2,mint,maxt);%---------------------------------------------------%设置网络参数NodeNum=20;%隐层节点数TypeNum=1;%输出维数TF1='tansig';TF2='purelin';%判别函数(缺省值)%TF1='tansig';TF2='logsig';%TF1='logsig';TF2='purelin';%TF1='tansig';TF2='tansig';%TF1='logsig';TF2='logsig';%TF1='purelin';TF2='purelin';net=newff(minmax(PN1),[NodeNumTypeNum],{TF1TF2});%---------------------------------------------------%指定训练参数%net.trainFcn='traingd';%梯度下降算法%net.trainFcn='traingdm';%动量梯度下降算法%%net.trainFcn='traingda';%变学习率梯度下降算法%net.trainFcn='traingdx';%变学习率动量梯度下降算法%%(大型网络的首选算法)%net.trainFcn='trainrp';%RPROP(弹性BP)算法,内存需求最小%%共轭梯度算法%net.trainFcn='traincgf';%Fletcher-Reeves修正算法%net.trainFcn='traincgp';%Polak-Ribiere修正算法,内存需求比Fletcher-Reeves修正算法略大%net.trainFcn='traincgb';%Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大%(大型网络的首选算法)%net.trainFcn='trainscg';%ScaledConjugateGradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多%%net.trainFcn='trainbfg';%Quasi-NewtonAlgorithms-BFGSAlgorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快%net.trainFcn='trainoss';%OneStepSecantAlgorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大%%(中型网络的首选算法)net.trainFcn='trainlm';%Levenberg-Marquardt算法,内存需求最大,收敛速度最快%%net.trainFcn='trainbr';%贝叶斯正则化算法%%有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss','trainlm'%---------------------%net.trainParam.show=20;%训练显示间隔net.trainParam.lr=0.3;%学习步长-traingd,traingdmnet.trainParam.mc=0.95;%动量项系数-traingdm,traingdxnet.trainParam.mem_reduc=1;%分块计算Hessian矩阵(仅对Levenberg-Marquardt算法有效)net.trainParam.epochs=1000;%最大训练次数net.trainParam.goal=1e-8;%最小均方误差net.trainParam.min_grad=1e-20;%最小梯度net.trainParam.time=inf;%最大训练时间%---------------------------------------------------%训练net=train(net,PN1,TN1);%训练%---------------------------------------------------%测试YN1=sim(net,PN1);%训练样本实际输出YN2=sim(net,PN2);%测试样本实际输出MSE1=mean((TN1-YN1).^2)%训练均方误差MSE2=mean((TN2-YN2).^2)%测试均方误差%---------------------------------------------------%反归一化Y2=postmnmx(YN2,mint,maxt);%---------------------------------------------
本文标题:BP神经网络用于函数拟合与模式识别的Matlab示例程序
链接地址:https://www.777doc.com/doc-4224265 .html