BP神经网络maab实例简单而经典.docx
《BP神经网络maab实例简单而经典.docx》由会员分享,可在线阅读,更多相关《BP神经网络maab实例简单而经典.docx(10页珍藏版)》请在冰豆网上搜索。
BP神经网络maab实例简单而经典
p=p1';t=t1';
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
%原始数据归一化
net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络%训练网络
pn,tn);%调用TRAINGDM算法训练BP网络
pnew=pnew1';
pnewn=tramnmx(pnew,minp,maxp);
anewn=sim(net,pnewn);
%对BP网络进行仿真
anew=postmnmx(anewn,mint,maxt);
%还原数据
y=anew';
1、BP网络构建
(1)生成BP网络
PR:
由R维的输入样本最小最大值构成的
R2维矩阵。
[S1S2...SNl]:
各层的神经元个数
{TF1TF2...TFNl}:
各层的神经元传递函数
BTF:
训练用函数的名称
(2)网络训练
(3)网络仿真
{'tansig','purelin'},'trainrp'
BP网络的训练函数
训练方法
训练函数
梯度下降法
traingd
有动量的梯度下降法
traingdm
自适应lr梯度下降法
traingda
自适应lr动量梯度下降法
traingdx
弹性梯度下降法
trainrp
Fletcher-Reeve共轭梯度法
traincgf
Ploak-Ribiere共轭梯度法
traincgp
Powell-Beale共轭梯度法
traincgb
量化共轭梯度法
trainscg
拟牛顿算法
trainbfg
一步正割算法
trainoss
Levenberg-Marquardt
trainlm
BP网络训练参数
训练参数
参数介绍
训练函数
最大训练次数(缺省为
10)
traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainosstrainlm
训练要求精度(缺省为0)
traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainosstrainlm
学习率(缺省为)
traingd、traingdm、traingda、traingdx、
trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainosstrainlm
最大失败次数(缺省为5)
traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainosstrainlm
最小梯度要求(缺省为
1e-10
traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainosstrainlm
显示训练迭代过程(NaN
表示不显示,缺省为25)
traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、
trainosstrainlm
最大训练时间(缺省为
inf)
traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainosstrainlm
动量因子(缺省)
traingdm、traingdx
学习率lr增长比(缺省
为)
traingdatraingdx
学习率lr下降比(缺省
为)
traingdatraingdx
表现函数增加最大比(缺
省为)
traingdatraingdx
权值变化增加量(缺省
为)
trainrp
权值变化减小量(缺省
为)
trainrp
初始权值变化(缺省为)
trainrp
权值变化最大值(缺省
为)
trainrp
一维线性搜索方法(缺省
为srchcha
traincgf、traincgp、
traincgb、trainbfg、
trainoss
因为二次求导对权值调
整的影响参数(缺省值)
trainscg
矩阵不确定性调节参数
(缺省为)
trainscg
控制计算机内存/速度的
参量,内存较大设为1,否则设为2(缺省为1)
trainlm
的初始值(缺省为)
trainlm
的减小率(缺省为)
trainlm
的增长率(缺省为10)
trainlm
的最大值(缺省为
trainlm
1e10)
2、BP网络举例
举例1、
%traingd
clear;
clc;
P=[-1-1224;05057];
T=[-1-111-1];
%利用minmax函数求输入样本范围
net=newff(minmax(P),T,[5,1],{'tansig','purelin'},'trainrp');
隐层权值
{1}%隐层阈值
{2,1}%输出层权值
{2}%输出层阈值sim(net,P)
举例2、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个
样本数据:
输入X
输出D
输入X
输出D
输入X
输出D
0
解:
看到期望输出的范围是1,1,所以利用双极性Sigmoid函数作为转移函数
程序如下:
clear;
clc;
X=-1:
:
1;
D=[
];
figure;
plot(X,D,'*');%绘制原始数据分布图(附录:
1-1)
net=newff([-11],[51],{'tansig,''tansig}');
=1000;%训练的最大次数
=;%全局最小误差
net=train(net,X,D);
O=sim(net,X);
figure;
plot(X,D,'*',X,O);%绘制训练后得到的结果和误差曲线(附录:
1-2、1-3)
V={1,1};%输入层到中间层权值
theta1={1};%中间层各神经元阈值
W={2,1};%中间层到输出层权值
theta2={2};%输出层各神经元阈值
所得结果如下:
输入层到中间层的权值:
V
-9.1669
7.3448
7.3761
4.8966
T
3.5409
中间层各神经元的阈值:
6.5885
-2.4019
-0.9962
1.5303
3.2731
中间层到输出层的权值:
W
0.3427
0.2135
0.2981
-0.8840
1.9134
输出层各神经元的阈值:
T
-1.5271
举例3、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个
样本数据:
输入X
输出D
输入X
输出D
输入X
输出D
0
0
4
4
8
2
1
1
5
3
9
3
2
2
6
2
10
4
3
3
7
1
解:
看到期望输出的范围超出1,1,所以输出层神经元利用线性函数作为转移函数。
程序如下:
clear;
clc;
X=[012345678910];
D=[01234321234];
figure;
plot(X,D,'*');%绘制原始数据分布图
net=newff([010],[51],{'tansig,''purelin'})
=100;
'*',X,O);%绘制训练后得到的结果和误差曲线(附录:
2-2、2-3)
V={1,1}%输入层到中间层权值
theta1={1}%中间层各神经元阈值
W={2,1}%中间层到输出层权值
theta2={2}%输出层各神经元阈值
所得结果如下:
输入层到中间层的权值:
V0.85842.0890-1.21660.2752-0.39ld
中间层各神经元的阈值:
-14.0302-9.83407.4331-2.01350.56l6
中间层到输出层的权值:
W-0.4675-1.12342.32084.6402-2.2686
BP神经网
输出层各神经元的阈值:
T1.7623
问题:
以下是上证指数2009年2月2日到3月27日的收盘价格,构建一个三层络,利用该组信号的6个过去值预测信号的将来值。
日期
价格
日期
价格
2009/02/02
2009/03/02
2009/02/03
2009/03/03
2009/02/04
2009/03/04
2009/02/05
2009/03/05
2009/02/06
2009/03/06
2009/02/09
2009/03/09
2009/02/10
2009/03/10
2009/02/11
2009/03/11
2009/02/12
2009/03/12
2009/02/13
2009/03/13
2009/02/16
2009/03/16
2009/02/17
2009/03/17
2009/02/18
2009/03/18
2009/02/19
2009/03/19
2009/02/20
2009/03/20
2009/02/23
2009/03/23
2009/02/24
2009/03/24
2009/02/25
2009/03/25
2009/02/26
2009/03/26
2009/02/27
2009/03/27
load;
[m,n]=size(data3_1);
tsx=data3_1(1:
m-1,1);
tsx=tsx';
ts=data3_1(2:
m,1);
ts=ts';
[TSX,TSXps]=mapminmax(tsx,1,2);
[TS,TSps]=mapminmax(ts,1,2);
TSX=TSX';
figure;
plot(ts,'LineWidth',2);
title('到杭旅游总人数’,'FontSize;12);
xlabel(统计年份','FontSize:
12);
ylabel(归一化后的总游客数/万人':
'FontSize:
12);
gridon;
%生成BP网络、利用minmax函数求输入样本范围
net_1=newff(minmax(TS):
[10:
1]:
{'tansig:
''purelin'}:
'traincgf')
%设置训练参数
=50;%显示训练迭代过程(NaN表示不显示,缺省25)
=;%学习率(缺省)
=;%动量因子(缺省)
=10000;%最大训练次数
=;%训练要求精度
inputWeights={1,1}%输入层权值inputbias={1}%输入层阈值
layerWeights={2,1}%输出层权值layerbias={2}%输出层阈值
TS',TSX
%网络训练
[net_1,tr]=train(net_1,TS,TSX);