基于MATLAB的BP神经网络应用
ValidationTestTrain
图3.12 训练过程
net.trainParam.show=5;
[net,tr]=train(net,ptr,ttr,[],[],val,test);
TRAINLM-calcjx, Epoch 0/100, MSE 5.23521/0, Gradient 5.13228/1e-010 TRAINLM-calcjx, Epoch 5/100, MSE 0.578625/0, Gradient 1.62833/1e-010 TRAINLM-calcjx, Epoch 10/100, MSE 0.352352/0, Gradient 0.505629/1e-010 TRAINLM-calcjx, Epoch 15/100, MSE 0.340796/0, Gradient 0.404806/1e-010 TRAINLM-calcjx, Epoch 16/100, MSE 0.334648/0, Gradient 0.513826/1e-010 TRAINLM, Validation stop.
可以看出,经过20次训练后,由于验证误差的增加,训练停止。将训练误差,验证误差和测试误差绘制在一副图中,如图3.13所示,这样就可以更加直观地观察训练过程。
plot(tr.epoch,tr.perf,'-',tr.epoch,tr.vperf,':',tr.epoch,tr.tperf,'-.') legend('Training','Validation','Test',-1); ylabel('平方差'); xlabel('时间')
19
基于MATLAB的BP神经网络应用
图3.13 训练误差、验证误差、测试误差曲线
步骤三:输出结果
最后,对网络响应进行分析,将所有的数据都放在整个数据集中,包括训练数据、验证数据和测试数据,然后网络输出和相应的期望输出向量进行线性回归分析。线性回归之前需要对网络输出进行反规范转换,因为有三组输出值,所以应进行三次线性回归。其结果如图3.14所示。
an=sim(net,ptrans); a=poststd(an,meant,stdt); for i=1:3 figure(i)
[m(i),b(i),r(i)]=postreg(a(i,:),t(i,:)); %postreg( )将三组输出进行线性回归分析 End
(a)
20
基于MATLAB的BP神经网络应用
(b) (c)
图3.14 线性回归结果
(a) hdl线性回归;(b) ldl线性回归;(c) vhdl线性回归
3.3.3 不同条件下的输出结果
对BP网络型进行改进,将隐层神经元数目加为15个,观察其输出结果其训练过程如图3.16所示。三种误差曲线如图3.17所示,改进后的线性回归结果如图3.15所示。
图3.16 训练过程
net=newff(minmax(ptr),[20 3],{'tansig' 'purelin'},'trainlm'); [net,tr]=train(net,ptr,ttr,[],[],val,test);
TRAINLM-calcjx, Epoch 0/100, MSE 15.4753/0, Gradient 16.3115/1e-010 TRAINLM-calcjx, Epoch 12/100, MSE 0.216075/0, Gradient 0.204225/1e-010 TRAINLM, Validation stop.
21
基于MATLAB的BP神经网络应用
图3.17 三种误差曲线
plot(tr.epoch,tr.perf,'-',tr.epoch,tr.vperf,':',tr.epoch,tr.tperf,'-.') legend('Training','Validation','Test',-1); ylabel('平方差'); xlabel('时间')
plot(tr.epoch,tr.perf,'-',tr.epoch,tr.vperf,':',tr.epoch,tr.tperf,'-.') an=sim(net,ptrans); a=poststd(an,meant,stdt); for i=1:3 figure(i)
[m(i),b(i),r(i)]=postreg(a(i,:),t(i,:)); end
[m(1),b(1),r(1)]=postreg(a(1,:),t(1,:));
同样将所有的数据都放在整个数据集中,包括训练数据、验证数据和测试数据,然后网络输出和相应的期望输出向量进行线性回归分析。最后线性回归的输出结果如图3.15所示。
(a) (b)
22
基于MATLAB的BP神经网络应用
(c)
图3.15 线性回归结果
(a) hdl线性回归;(b) ldl线性回归;(c) vhdl线性回归
3.3.4 讨论
综上两种情况比较下,其中当隐层神经元为五个时,前面两个输出期望值的跟踪较好,相应的R值几乎达到了0.9,而第三个输出则吻合得不是很理想,作进一步研究,在当隐层数据为15时,较第一种情况,它的输出更加接近于期望值。比较可知,当隐层数目越多,则测试得到的样本水平越接近于期望值。
4 结束语
本文首先总结了神经网络的研究目的和意义,介绍了神经网络的研究背景和现状,分析了目前神经网络研究中存在的问题,然后描述了BP神经网络算法的实现以及BP神经网络的工作原理,给出了BP网络的局限性。在以BP神经网络为基础的前提下,分析研究了BP神经网络在函数逼近和样本含量估计两个实例中的应用。以及分析了结论,即信号的频率越高,则隐层节点越多,隐单元个数越多,逼近能力越强。和隐层数目越多,测试得到的样本的水平越接近于期望值。
本文虽然总结分析了BP神经网络算法的实现,给出了实例分析,但是还有很多的不足。本文所总结的BP神经网络和目前研究的现状都还不够全面,经过程序调试的图形有可能都还存在很多细节上的问题,而图形曲线所实现效果都还不够好,以及结果分析不够全面,正确,缺乏科学性等,这些都还是需加强提高的,本文的完成不代表就对这门学科研究的结束,还有很多知识,理论,研究成果需要不断学习,
近几年的不断发展,神经网络更是取得了非常广泛的应用,和令人瞩目的发展,在很多方面都发挥了其独特的作用,特别是在人工智能、自动控制、计算机科学、信息处理、机器人、模式识别等众多方面的应用实例,给人们带来了很多应用上到思考,和解决方法的研究。但是神经网络的研究最近几年还没有达到非常热门的阶段,这还需有很多热爱神经网络和研究神经网络人员的不断研究和创新,在科技高度发达
23
基于MATLAB的BP神经网络应用 - 图文



