BP神经网络参数设置及实例

BP网络的训练函数

 

训练方法         训练函数

梯度下降法     traingd

有动量的梯度下降法     traingdm

自适应lr梯度下降法     traingda

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

弹性梯度下降法     trainrp

Fletcher-Reeves共轭梯度法 traincgf

Ploak-Ribiere共轭梯度法       traincgp

Powell-Beale共轭梯度法       traincgb

量化共轭梯度法     trainscg

拟牛顿算法     trainbfg

一步正割算法         trainoss

Levenberg-Marquardt     trainlm

 

                                                       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

1、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),[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.3000    0.1336      0.4000      0.3072

-0.9000    -0.5770    -0.2000    -0.2013    0.5000      0.3960

-0.8000    -0.0729    -0.1000    -0.4344    0.6000      0.3449

-0.7000    0.3771      0       -0.5000    0.7000      0.1816

-0.6000    0.6405      0.1000      -0.3930    0.8000      -0.3120

-0.5000    0.6600      0.2000      -0.1647    0.9000      -0.2189

-0.4000    0.4609      0.3000      -0.0988    1.0000      -0.3201

解:

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

程序如下:

clear;

clc;

X=-1:0.1:1;

D=[-0.9602 -0.5770 -0.0729 0.3771 0.64050.6600 0.4609...

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

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

figure;

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

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

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

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

0       0       4       4       8       2

1       1       5       3       9       3

2       2       6       2       10     4

3       3       7       1                

解:

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

程序如下:

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],[51],{'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/02      2011.682 2009/03/02      2093.452

2009/02/03      2060.812 2009/03/03      2071.432

2009/02/04      2107.751 2009/03/04      2198.112

2009/02/05      2098.021 2009/03/05      2221.082

2009/02/06      2181.241 2009/03/06      2193.012

2009/02/09      2224.711 2009/03/09      2118.752

2009/02/10      2265.161 2009/03/10      2158.572

2009/02/11      2260.822 2009/03/11      2139.021

2009/02/12      2248.092 2009/03/12      2133.881

2009/02/13      2320.792 2009/03/13      2128.851

2009/02/16      2389.392 2009/03/16      2153.291

2009/02/17      2319.442 2009/03/17      2218.331

2009/02/18      2209.862 2009/03/18      2223.731

2009/02/19      2227.132 2009/03/19      2265.761

2009/02/20      2261.482 2009/03/20      2281.091

2009/02/23      2305.782 2009/03/23      2325.481

2009/02/24      2200.652 2009/03/24      2338.421

2009/02/25      2206.572 2009/03/25      2291.551

2009/02/26      2121.252 2009/03/26      2361.701

2009/02/27      2082.852 2009/03/27      2374.44

BP神经网络参数设置是非常重要的,它会直接影响到网络的性能和训练结果。下面是一些常见的BP神经网络参数以及如何进行确认的方法: 1. 输入层选择:根据你的问题和数据集的特点,确定输入层的节点数。通常情况下,输入层的节点数应该等于你的输入数据的特征数。 2. 隐藏层选择:隐藏层的节点数和层数是根据问题的复杂性和数据集的大小来确定的。一般来说,隐藏层的节点数越多,网络的拟合能力越强,但也容易导致过拟合。可以通过交叉验证等方法来确定隐藏层的节点数和层数。 3. 输出层选择:输出层的节点数取决于你的问题是分类问题还是回归问题。对于分类问题,输出层的节点数应该等于类别的数量。对于回归问题,输出层的节点数通常为1。 4. 训练次数选择:训练次数是指将整个训练集输入网络进行一次前向传播和反向传播的次数。训练次数的选择需要根据你的数据集大小和网络的收敛情况来确定。可以通过观察训练误差的变化情况来判断网络是否已经收敛,如果训练误差已经趋于稳定,则可以停止训练。 5. 训练函数选择:在Matlab中,有多种训练函数可供选择,如梯度下降法(traingd)、弹性梯度下降法(trainrp)和自适应学习率梯度下降法(traingda)等。选择合适的训练函数需要考虑网络的收敛速度和性能。 请注意,以上只是一些常见的BP神经网络参数设置方法,具体的参数选择还需要根据具体问题和数据集的特点进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值