最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

(完整版)BP神经网络matlab实例(简单而经典)

来源:动视网 责编:小OO 时间:2025-09-23 18:28:06
文档

(完整版)BP神经网络matlab实例(简单而经典)

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,t
推荐度:
导读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,t
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);                               %对BP网络进行仿真

anew=postmnmx(anewn,mint,maxt);                     %还原数据

y=anew';

1、BP网络构建

(1)生成BP网络

:由维的输入样本最小最大值构成的维矩阵。

:各层的神经元个数。

:各层的神经元传递函数。

:训练用函数的名称。

(2)网络训练

(3)网络仿真

{'tansig','purelin'},'trainrp'

BP网络的训练函数    

训练方法训练函数
梯度下降法traingd
有动量的梯度下降法traingdm
自适应lr梯度下降法

traingda
自适应lr动量梯度下降法

traingdx
弹性梯度下降法trainrp
Fletcher-Reeves共轭梯度法

traincgf
Ploak-Ribiere共轭梯度法

traincgp

Powell-Beale共轭梯度法

traincgb

量化共轭梯度法trainscg
拟牛顿算法trainbfg
一步正割算法trainoss
Levenberg-Marquardttrainlm
BP网络训练参数

训练参数参数介绍训练函数
net.trainParam.epochs最大训练次数(缺省为10)

traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm

net.trainParam.goal训练要求精度(缺省为0)

traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm

net.trainParam.lr学习率(缺省为0.01)

traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm

net.trainParam.max_fail最大失败次数(缺省为5)

traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm

net.trainParam.min_grad最小梯度要求(缺省为1e-10)

traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm

net.trainParam.show显示训练迭代过程(NaN表示不显示,缺省为25)

traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm

net.trainParam.time最大训练时间(缺省为inf)

traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm

net.trainParam.mc

动量因子(缺省0.9)

traingdm、traingdx

net.trainParam.lr_inc

学习率lr增长比(缺省为1.05)

traingda、traingdx

net.trainParam.lr_dec

学习率lr下降比(缺省为0.7)

traingda、traingdx

net.trainParam.max_perf_inc

表现函数增加最大比(缺省为1.04)

traingda、traingdx

net.trainParam.delt_inc

权值变化增加量(缺省为1.2)

trainrp
net.trainParam.delt_dec

权值变化减小量(缺省为0.5)

trainrp
net.trainParam.delt0

初始权值变化(缺省为0.07)

trainrp
net.trainParam.deltamax

权值变化最大值(缺省为50.0)

trainrp
net.trainParam.searchFcn

一维线性搜索方法(缺省为srchcha)

traincgf、traincgp、traincgb、trainbfg、trainoss

net.trainParam.sigma

因为二次求导对权值调整的影响参数(缺省值5.0e-5)

trainscg
net.trainParam.lambda

Hessian矩阵不确定性调节参数(缺省为5.0e-7)

trainscg
net.trainParam.men_reduc

控制计算机内存/速度的参量,内存较大设为1,否则设为2(缺省为1)

trainlm
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神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。

样本数据:

输入X输出D输入X输出D输入X输出D
-1.0000-0.9602-0.30000.13360.40000.3072
-0.9000-0.5770-0.2000-0.20130.50000.3960
-0.8000-0.0729-0.1000-0.43440.60000.3449
-0.70000.37710-0.50000.70000.1816
-0.60000.050.1000-0.39300.8000-0.3120
-0.50000.66000.2000-0.170.9000-0.21
-0.40000.46090.3000-0.09881.0000-0.3201
解:

看到期望输出的范围是,所以利用双极性Sigmoid函数作为转移函数。

程序如下:

clear;

clc;

X=-1:0.1:1;

D=[-0.9602 -0.5770 -0.0729 0.3771 0.05 0.6600 0.4609...

    0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.17 -.0988...

    0.3072 0.3960 0.3449 0.1816 -0.312 -0.21 -0.3201];

figure;

plot(X,D,'*'); %绘制原始数据分布图(附录:1-1)

net = newff([-1 1],[5 1],{'tansig','tansig'});

net.trainParam.epochs = 1000; %训练的最大次数

net.trainParam.goal = 0.005; %全局最小误差

net = train(net,X,D); 

O = sim(net,X); 

figure; 

plot(X,D,'*',X,O); %绘制训练后得到的结果和误差曲线(附录:1-2、1-3)

V = net.iw{1,1};%输入层到中间层权值

theta1 = net.b{1};%中间层各神经元阈值

W = net.lw{2,1};%中间层到输出层权值

theta2 = net.b{2};%输出层各神经元阈值

所得结果如下:

输入层到中间层的权值: 

中间层各神经元的阈值: 

中间层到输出层的权值: 

输出层各神经元的阈值:

举例3、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。

样本数据:

输入X输出D输入X输出D输入X输出D
004482
115393
2262104
3371
解:

看到期望输出的范围超出,所以输出层神经元利用线性函数作为转移函数。

程序如下:

clear; 

clc;

X = [0 1 2 3 4 5 6 7 8 9 10];

D = [0 1 2 3 4 3 2 1 2 3 4];

figure;

plot(X,D,'*'); %绘制原始数据分布图

net = newff([0 10],[5 1],{'tansig','purelin'})

net.trainParam.epochs = 100;

net.trainParam.goal=0.005;

net=train(net,X,D);

O=sim(net,X);

figure;

plot(X,D,'*',X,O); %绘制训练后得到的结果和误差曲线(附录:2-2、2-3)

V = net.iw{1,1}%输入层到中间层权值

theta1 = net.b{1}%中间层各神经元阈值

W = net.lw{2,1}%中间层到输出层权值

theta2 = net.b{2}%输出层各神经元阈值

所得结果如下:

输入层到中间层的权值:

中间层各神经元的阈值: 

中间层到输出层的权值: 

输出层各神经元的阈值:

问题:以下是上证指数2009年2月2日到3月27日的收盘价格,构建一个三层BP神经网络,利用该组信号的6个过去值预测信号的将来值。

日期价格日期价格
2009/02/022011.6822009/03/022093.452
2009/02/032060.8122009/03/032071.432
2009/02/042107.7512009/03/042198.112
2009/02/052098.0212009/03/052221.082
2009/02/062181.2412009/03/062193.012
2009/02/092224.7112009/03/092118.752
2009/02/102265.1612009/03/102158.572
2009/02/112260.8222009/03/112139.021
2009/02/122248.0922009/03/122133.881
2009/02/132320.7922009/03/132128.851
2009/02/1623.3922009/03/162153.291
2009/02/172319.4422009/03/172218.331
2009/02/182209.8622009/03/182223.731
2009/02/192227.1322009/03/192265.761
2009/02/202261.4822009/03/202281.091
2009/02/232305.7822009/03/232325.481
2009/02/242200.6522009/03/242338.421
2009/02/252206.5722009/03/25

2291.551
2009/02/262121.2522009/03/262361.701
2009/02/272082.8522009/03/272374.44
load data3_1.txt;

[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('到杭旅游总人数(1999.01.01-2009.12.31)','FontSize',12);

xlabel('统计年份(1990.12.19-2009.08.19)','FontSize',12);

ylabel('归一化后的总游客数/万人','FontSize',12);

grid on;

 

% 生成BP网络、利用minmax函数求输入样本范围

net_1=newff(minmax(TS),[10,1],{'tansig','purelin'},'traincgf')

 % 设置训练参数

net_1.trainParam.show = 50;  %显示训练迭代过程(NaN表示不显示,缺省25)

net_1.trainParam.lr = 0.025;     %学习率(缺省0.01)

net_1.trainParam.mc = 0.9;   %动量因子(缺省0.9)

net_1.trainParam.epochs = 10000; %最大训练次数

net_1.trainParam.goal = 0.001;   %训练要求精度

 

inputWeights=net_1.IW{1,1}  %输入层权值

inputbias=net_1.b{1}         %输入层阈值 

layerWeights=net_1.LW{2,1}  %输出层权值

layerbias=net_1.b{2}         %输出层阈值

 

TS',TSX

% 网络训练 

[net_1,tr]=train(net_1,TS,TSX);

 

文档

(完整版)BP神经网络matlab实例(简单而经典)

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,t
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top