BPNN在matlab中的实现学习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运用Matlab创建BP神经网络(R2010b)

BP神经网络属于前向网络

以下为创建BP神经网络的方法及参数意义

(1)net=newff(P,T,S)或者net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)

P:输入参数矩阵。(RxQ1)

T:目标参数矩阵。(SNxQ2)

S:N-1个隐含层的数目(S(i)到S(N-1)),输出层的单元数目取决于T,默认为空矩阵。

TF:相关层的传递函数,默认隐含层为tansig函数,输出层为purelin函数。

BTF:BP神经网络学习训练函数,默认值为trainlm函数。

BLF:权重学习函数,默认值为learngdm。

PF:性能函数,默认值为mse。

IPF,OPF,DDF均为默认值即可。

(2)传递函数

purelin 线性传递函数

tansig 正切S 型传递函数

logsig 对数S 型传递函数

隐含层和输出层函数的选择对BP神经网络预测精度有较大影响,一般隐含层节点转移函数选用tansig函数或logsig函数,输出层节点转移函数选用tansig函数或purelin函数。(3)学习训练函数

神经网络的学习分为有导师学习和无导师学习。

最速下降BP算法:traingd

动量BP算法:traingdm

学习率可变的BP算法:trainda(学习率可变的最速下降BP算法);traindx(学习率可变的动量BP算法)

弹性算法:trainrp

变梯度算法:traincgf(Fletcher-Reeves修正算法)

traincgp(Polak_Ribiere修正算法)

traincgb(Powell-Beale复位算法)

trainbfg(BFGS 拟牛顿算法)

trainoss(OSS算法)

trainlm(LM算法)

参数说明:通过net.trainParam可以查看参数

Show Training Window Feedback showWindow: true

Show Command Line Feedback showCommandLine: false

Command Line Frequency show: 两次显示之间的训练次数

Maximum Epochs epochs: 训练次数

Maximum Training Time time: 最长训练时间(秒)

Performance Goal goal: 网络性能目标

Minimum Gradient min_grad: 性能函数最小梯度

Maximum Validation Checks max_fail: 最大验证失败次数

Learning Rate lr: 学习速率

Learning Rate Increase lr_inc: 学习速率增长值

Learning Rate lr_dec: 学习速率下降值

Maximum Performance Increase max_perf_inc:

Momentum Constant mc: 动量因子

(4)BP神经网络预测函数

SimOut = sim('model', Parameters) & y=sim(net,x)

函数功能:用训练好的BP神经网络预测函数输出

net:训练好的网络

x:输入数据

y:网络预测数据

(5)训练函数

[net,tr] = train(Net,P,T,Pi,Ai)

其中,

Net 待训练的网络

P 输入数据矩阵

T 输出数据矩阵(default = zeros)

Pi 初始化输入层条件(default = zeros)

Ai 初始化输出层条件(default = zeros)

net 训练好的网络

tr 训练过程记录

注意:P Ni-by-TS cell array Each element P{i,j,ts} is an Ni-by-Q matrix. T Nl-by-TS cell array Each element T{i,ts} is a Ui-by-Q matrix.

范例(网上搜寻的,谢谢原作者)

现给出一药品商店一年当中12个月的药品销售量(单位:箱)如下:2056 2395 2600 2298 1634 1600 1873 1487 1900 1500 2046 1556

训练一个BP网络,用当前的所有数据预测下一个月的药品销售量。

我们用前三个月的销售量预测下一个月的销售量,也就是用1-3月的销售量预测第4个月的销售量,用2-4个月的销售量预测第5个月的销售量,如此循环下去,直到用9-11月预测12月份的销售量。这样训练BP神经网络后,就可以用10-12月的数据预测来年一月的销售量。

实现程序如下:

P =[2056 2395 2600;2395 2600 2298;2600 2298 1634;2298 1634 1600;...

1634 1600 1873;1600 1873 1478;1873 1478 1900;1478 1900 1500;...

1900 1500 2046;];

T = [2298 1634 1600 1873 1487 1900 1500 2046 1556];

pmax = max(P);

pmax1 = max(pmax);

pmin = min(P);

pmin1 = min(pmin);

for i=1:9

P1(i,:)=(P(i,:)-pmin1)/(pmax1-pmin1);

T1(i)=(T(i)-pmin1)/(pmax1-pmin1);

end

net = newff(P1',T1,[3 7],{'tansig' 'logsig'},'traingd');

for i = 1:9

net.trainParam.epochs = 15000;

net.trainParam.goal=0.01;

net.trainParam.lr = 0.1

net = train(net,P1(i,:)',T1(i));

end

y=sim(net,[1500 2046 1556]');

y1=y*(pmax1-pmin1)+pmin1;

如果神经网络的训练函数使用trainlm,则仿真步骤会很少,但需要较大的系统内存。

经预测,来年一月的销售量(y1)为1.6845e+003箱(每次运行后的结果可能不同)。

相关文档
最新文档