(完整版)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

神经网络来完成非线性函数的逼近任务,

其中隐层神经元个数为五个。