在上一篇MATLAB工具箱bp神经网络应用介绍中,已经介绍了traingd函数的使用。这一节将继续介绍MATLABBP神经网络训练函数。
(2)traingda函数
当BP神经网络使用traingd函数和traingdm函数训练时,学习速率在训练过程中保持恒定不变,那么训练结果对学习速率的灵敏度大,不同的学习速率对网络的训练结果影响大,如果学习速率过大,那么网络将变得不稳定,如果学习速率过小,那么网络收敛速度慢,训练时间大大加长。因此,对于给定训练样本和目标样本,必须首先确定最优的学习速率。而traingda函数在人工神经网络训练中采用变学习速率的网络训练算法,可以有效地克服学习速率难以确定的缺点,在训练过程中自适应改变学习速率的大小。
net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingda');在MATLAB命令行窗口中输入以下程序段:
net.trainParam
ans =
epochs: 100
goal: 0
lr: 0.0100 %学习速率基值
lr_inc: 1.0500 %学习速率增加率为1.05
lr_dec: 0.7000 %学习速率减少率为0.7
max_fail: 5
max_perf_inc: 1.0400
min_grad: 1.0000e-006
show: 25
time: Inf
net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingda');下图所示为traingda函数bp神经网络训练过程曲线,BP神经网络对测试样本的输出结果为:
net.trainParam.show = 50;
net.trainParam.lr = 0.1;
net.trainParam.lr_inc = 1.05;
net.trainParam.lr_dec = 0.85;
net.trainParam.epochs = 300;
net.trainParam.goal = 0.01;
[net,tr]=train(net,P,T);
%回代检验
A=sim(net,P);
%测试样本检验
a=sim(net,p);
TRAINGDA-calcgrad, Epoch 0/300, MSE 0.784702/0.01, Gradient 1.98321/1e-006
TRAINGDA-calcgrad, Epoch 36/300, MSE 0.00993732/0.01, Gradient 0.0156508/1e-006
TRAINGDA, Performance goal met.
a =
0.4192 0.5750 0.7746
More details could be found in my published book:
MATLAB编程基础与典型应用
北京:人民邮电出版社,2008
ISBN:978-7-115-17932-6/TP
Pls contact me with Email:lhd06@mails.tsinghua.edu.cn
更多MATLAB交流,欢迎访问:
No comments:
Post a Comment