BP神经网络用于函数拟合与模式识别的Matlab示例程序 - 副本

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%--------------------------------------------------% 归一化
[PN1,minp,maxp,TN1,mint,maxt] = premnmx(P1,T1); PN2 = tramnmx(P2,minp,maxp); TN2 = tramnmx(T2,mint,maxt);
[PN1,minp,maxp] = premnmx(P1); PN2 = tramnmx(P2,minp,maxp);
%--------------------------------------------------% 设置网络参数
NodeNum = 10; % 隐层节点数 TypeNum = 3; % 输出维数
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)];
%--------------------------------------------------% 归一化
%----------------------------Biblioteka Baidu---------------------% 产生训练样本与测试样本
P1 = 1:2:200; % 训练样本,每一列为一个样本 T1 = sin(P1*0.1); % 训练目标
P2 = 2:2:200; % 测试样本,每一列为一个样本 T2 = sin(P2*0.1); % 测试目标
% BP 神经网络用于函数拟合 % 使用平台 - Matlab6.5 % 作者:陆振波,海军工程大学 % 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页 % 电子邮件:luzhenbo@yahoo.com.cn % 个人主页:http://luzhenbo.88uu.com.cn
clc clear close all
%---------------------%
net.trainParam.show = 20; % 训练显示间隔 net.trainParam.lr = 0.3; % 学习步长 - traingd,traingdm net.trainParam.mc = 0.95; % 动量项系数 - traingdm,traingdx net.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 = newff(minmax(PN1),[NodeNum TypeNum],{TF1 TF2});
%--------------------------------------------------% 指定训练参数
% net.trainFcn = 'traingd'; % 梯度下降算法 % net.trainFcn = 'traingdm'; % 动量梯度下降算法 % % net.trainFcn = 'traingda'; % 变学习率梯度下降算法 % net.trainFcn = 'traingdx'; % 变学习率动量梯度下降算法 %
BP 神经网络用于函数拟合与模式识别的 Matlab 示例程序
clc clear close all
%--------------------------------------------------% 产生训练样本与测试样本,每一列为一个样本
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)];
%---------------------%
net.trainParam.show = 1; % 训练显示间隔 net.trainParam.lr = 0.3; % 学习步长 - traingd,traingdm net.trainParam.mc = 0.95; % 动量项系数 - traingdm,traingdx net.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; % 最大训练时间
Y1 = full(compet(Y1)); % 竞争输出 Y2 = full(compet(Y2));
%--------------------------------------------------% 结果统计
Result = ~sum(abs(T1-Y1)) % 正确分类显示为 1 Percent1 = sum(Result)/length(Result) % 训练样本正确分类率
TF1 = 'tansig';TF2 = 'purelin'; % 判别函数(缺省值) %TF1 = 'tansig';TF2 = 'logsig'; %TF1 = 'logsig';TF2 = 'purelin'; %TF1 = 'tansig';TF2 = 'tansig'; %TF1 = 'logsig';TF2 = 'logsig'; %TF1 = 'purelin';TF2 = 'purelin';
Result = ~sum(abs(T2-Y2)) % 正确分类显示为 1 Percent2 = sum(Result)/length(Result) % 测试样本正确分类率
******************************************************************
% % (中型网络的首选算法) net.trainFcn = 'trainlm'; % Levenberg-Marquardt 算法,内存需求最大,收敛速度最快 % % net.trainFcn = 'trainbr'; % 贝叶斯正则化算法 % % 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss', 'trainlm'
net = newff(minmax(PN1),[NodeNum TypeNum],{TF1 TF2});
%--------------------------------------------------% 指定训练参数
% 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'; % Scaled Conjugate Gradient 算法,内存需求与 Fletcher-Reeves 修正算法相同,计算量比上面三种算法都小很多 % % net.trainFcn = 'trainbfg'; % Quasi-Newton Algorithms - BFGS Algorithm,计算量和 内存需求均比共轭梯度算法大,但收敛比较快 % net.trainFcn = 'trainoss'; % One Step Secant Algorithm,计算量和内存需求均比 BFGS 算法小,比共轭梯度算法略大
%--------------------------------------------------% 设置网络参数
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.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'; % Scaled Conjugate Gradient 算法,内存需求与 Fletcher-Reeves 修正算法相同,计算量比上面三种算法都小很多 % % net.trainFcn = 'trainbfg'; % Quasi-Newton Algorithms - BFGS Algorithm,计算量和 内存需求均比共轭梯度算法大,但收敛比较快 % net.trainFcn = 'trainoss'; % One Step Secant Algorithm,计算量和内存需求均比 BFGS 算法小,比共轭梯度算法略大 % % (中小型网络的首选算法 - 函数拟合,模式识别) net.trainFcn = 'trainlm'; % Levenberg-Marquardt 算法,内存需求最大,收敛速度最快 % % net.trainFcn = 'trainbr'; % 贝叶斯正则化算法 % % 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss', 'trainlm'
%--------------------------------------------------% 训练与测试
net = train(net,PN1,T1); % 训练
%--------------------------------------------------% 测试
Y1 = sim(net,PN1); % 训练样本实际输出 Y2 = sim(net,PN2); % 测试样本实际输出
相关文档
最新文档