(完整版)BP神经网络matlab实例(简单而经典).doc
- 格式:doc
- 大小:433.52 KB
- 文档页数:7
学习神经网络的好助手,可以仿照其中的代码,只需修改个别参数便可以轻易实现自己需要完成的任务。
p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
% 原始数据归一化
net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');
%设置网络
,建立相应的
BP 网络
net.trainParam.show=2000; % 训练网络
net.trainParam.lr=0.01;
net.trainParam.epochs=100000;
net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn);
%调用 TRAINGDM 算法训练 BP 网络
pnew=pnew1';
pnewn=tramnmx(pnew,minp,maxp);
anewn=sim(net,pnewn);
anew=postmnmx(anewn,mint,maxt);
%对 BP 网络进行仿真
%还原数据
y=anew';
1、 BP 网络构建
(1)生成 BP 网络
net newff ( PR,[ S1 S2...SNl],{ TF1 TF 2...TFNl }, BTF , BLF , PF )
PR :由
R 维的输入样本最小最大值构成的
R 2 维矩阵。
[ S1 S2...SNl]
:各层的神经元个数。
{TF 1 TF 2...TFNl } :各层的神经元传递函数。
BTF :训练用函数的名称。
(2)网络训练
[ net,tr ,Y, E, Pf , Af ]
train (net, P, T , Pi , Ai ,VV , TV )
(3)网络仿真
[Y, Pf , Af , E, perf ]
sim(net, P, Pi , Ai ,T )
{'tansig','purelin'},'trainrp'
BP 网络的训练函数
训练方法
梯度下降法
有动量的梯度下降法
自适应 lr 梯度下降法
自适应 lr 动量梯度下降法
弹性梯度下降法
训练函数
traingd
traingdm
traingda
traingdx
trainrp
Fletcher-Reeves 共轭梯度法
traincgf
Ploak-Ribiere
共轭梯度法
traincgp
学习神经网络的好助手,可以仿照其中的代码,只需修改个别参数便可以轻易实现自己需要完成的任务。
Powell-Beale 共轭梯度法 traincgb
量化共轭梯度法 trainscg
拟牛顿算法 trainbfg
一步正割算法 trainoss
Levenberg-Marquardt trainlm
BP 网络训练参数
训练参数
net.trainParam.epochs
net.trainParam.goal
net.trainParam.lr
net.trainParam.max_fail
net.trainParam.min_grad
net.trainParam.show
net.trainParam.time
net.trainParam.mc
net.trainParam.lr_inc
参数介绍
最大训练次数(缺省为 10)
训练要求精度(缺省为 0)
学习率(缺省为 0.01 )
最大失败次数(缺省为 5)
最 小 梯 度 要 求 ( 缺 省 为
1e-10)
显示训练迭代过程( NaN 表示不显示,缺省为 25)
最大训练时间(缺省为 inf )
动量因子(缺省 0.9)
学习率 lr 增长比(缺省为
1.05)
训练函数
traingd 、traingdm 、traingda 、
traingdx 、 trainrp 、 traincgf 、
traincgp 、traincgb 、trainscg、
trainbfg 、 trainoss、 trainlm
traingd 、traingdm 、traingda 、
traingdx 、 trainrp 、 traincgf 、
traincgp 、traincgb 、trainscg、
trainbfg 、 trainoss、 trainlm
traingd 、traingdm 、traingda 、
traingdx 、 trainrp 、 traincgf 、
traincgp 、traincgb 、trainscg、
trainbfg 、 trainoss、 trainlm
traingd 、traingdm 、traingda 、
traingdx 、 trainrp 、 traincgf 、
traincgp 、traincgb 、trainscg、
trainbfg 、 trainoss、 trainlm
traingd 、traingdm 、traingda 、
traingdx 、 trainrp 、 traincgf 、
traincgp 、traincgb 、trainscg、
trainbfg 、 trainoss、 trainlm
traingd 、traingdm 、traingda 、
traingdx 、 trainrp 、 traincgf 、
traincgp 、traincgb 、trainscg、
trainbfg 、 trainoss、 trainlm
traingd 、traingdm 、traingda 、
traingdx 、 trainrp 、 traincgf 、
traincgp 、traincgb 、trainscg、
trainbfg 、 trainoss、 trainlm
traingdm 、 traingdx traingda 、
traingdx
net.trainParam.lr_dec 学习率 lr 下降比(缺省为 0.7) traingda 、 traingdx
net.trainParam.max_perf_inc 表现函数增加最大比(缺省 traingda 、 traingdx
为 1.04)
net.trainParam.delt_inc 权 值 变 化增 加量 ( 缺省为 trainrp
1.2)
学习神经网络的好助手,可以仿照其中的代码,只需修改个别参数便可以轻易实现自己需要完成的任务。
net.trainParam.delt_dec 权 值 变 化减 小量 ( 缺省为 trainrp
0.5)
net.trainParam.delt0 初始权值变化 (缺省为 0.07) trainrp
net.trainParam.deltamax 权 值 变 化最 大值 ( 缺省为 trainrp
50.0)
net.trainParam.searchFcn 一维线性搜索方法(缺省为 traincgf 、traincgp 、traincgb 、
srchcha) trainbfg 、 trainoss
net.trainParam.sigma 因为二次求导对权值调整的 trainscg
影响参数(缺省值 5.0e-5)
mbda Hessian 矩阵不确定性调节 trainscg
参数(缺省为 5.0e-7)
net.trainParam.men_reduc 控制计算机内存 / 速度的参 trainlm
量,内存较大设为 1,否则设
为 2(缺省为 1)
net.trainParam.mu 的初始值(缺省为 0.001) trainlm
net.trainParam.mu_dec 的减小率(缺省为 0.1) trainlm
net.trainParam.mu_inc 的增长率(缺省为 10) trainlm
net.trainParam.mu_max 的最大值(缺省为 1e10) trainlm
2、 BP 网络举例
举例 1、
%traingd
clear;
clc;
P=[-1 -1 2 2 4;0 5 0 5 7];
T=[-1 -1 1 1 -1];
%利用 minmax 函数求输入样本范围
net = newff(minmax(P),T,[5,1],{'tansig','purelin'},'trainrp');
net.trainParam.show=50;%
net.trainParam.lr=0.05;
net.trainParam.epochs=300;
net.trainParam.goal=1e-5;
[net,tr]=train(net,P,T);
net.iw{1,1}% 隐层权值
net.b{1}% 隐层阈值
net.lw{2,1}% 输出层权值
net.b{2}% 输出层阈值
sim(net,P)
举例 2、利用三层
样本数据:
BP
神经网络来完成非线性函数的逼近任务,
其中隐层神经元个数为五个。