(完整版)bp神经网络算法.pdf

上传人:可**** 文档编号:18507729 上传时间:2022-05-31 格式:PDF 页数:5 大小:166KB
返回 下载 相关 举报
(完整版)bp神经网络算法.pdf_第1页
第1页 / 共5页
(完整版)bp神经网络算法.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《(完整版)bp神经网络算法.pdf》由会员分享,可在线阅读,更多相关《(完整版)bp神经网络算法.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、BP 神经网络算法三层 BP 神经网络如图:传递函数g目标输出向量输出层,输出向量权值为wjk传递函数f隐含层, 隐含层输出向量输入层,输入向量设网络的输入模式为x (x1,x2,.xn),隐含层有 h 个单元,隐含层的输出为y (y1, y2,.yh),输出层有 m 个单元,他们的输出为z (z1,z2,.zm),目标输出为t (t1,t2,.,tm)设隐含层到输出层的传递函数为f,输出层的传递函数为 gTTTT于是:yj f (hw xiji1ni) f (wijxi):隐含层第 j 个神经元的输出;其中w0 j ,i0nx01zk g(wjkyj):输出层第 k 个神经元的输出j01m2

2、此时网络输出与目标输出的误差为(tk zk),显然,它是wij和wjk的函数。2k1下面的步骤就是想办法调整权值,使减小。由高等数学的知识知道:负梯度方向是函数值减小最快的方向因此,可以设定一个步长,每次沿负梯度方向调整个单位,即每次权值的调整为:wpq ,在神经网络中称为学习速率wpq可以证明:按这个方法调整,误差会逐渐减小。BP 神经网络(反向传播)的调整顺序为:1)先调整隐含层到输出层的权值设vk为输出层第 k 个神经元的输入vk-复合函数偏导公式wj0hjkyj1evk11若取g(x) f (x) ,则g(u ) (1) zk(1 zk)kvk2vkvk1ex(1e)1e1e于是隐含层

3、到输出层的权值调整迭代公式为:2)从输入层到隐含层的权值调整迭代公式为:其中uj为隐含层第 j 个神经元的输入:ujwi0nijxi涉及所有的权值wij,因此yj注意:隐含层第j 个神经元与输出层的各个神经元都有连接,即mm(tkzk)2zkuk(tkzk)f(uk)wjkyjk0zkukyjk0于是:因此从输入层到隐含层的权值调整迭代为公式为:例:下表给出了某地区公路运力的历史统计数据, 请建立相应的预测模型, 并对给出的 2010 和 2011 年的数据,预测相应的公路客运量和货运量。时间199019911992199319941995199619971998199920002001200

4、22003200420052006人数(单位:万人)20.5522.4425.3727.1329.4530.130.9634.0636.4238.0939.1339.9941.9344.5947.352.8955.73机动车数公路面积(单公路客运量公路货运量(单位:万位:万平方公(单位:万(单位:万辆)里)人)吨)0.60.09512612370.750.11621713790.850.11773013850.90.14914513991.050.21046016631.350.231138717141.450.231235318341.60.321575043221.70.321830481

5、321.850.341983689362.150.3621024110992.20.3619490112032.250.3820433105242.350.4922598111152.50.5625107133202.60.5933442167622.70.593683618673200756.762.85200859.172.95200960.633.173.39003.96350.9880201075.55004.09751.02682011function main()function main()clcclc% 清屏清屏clear all;clear all;%清除内存以便加快运算速度

6、清除内存以便加快运算速度close all;close all;%关闭当前所有关闭当前所有 figurefigure 图像图像SamNum=20;SamNum=20;%输入样本数量为输入样本数量为 2020TestSamNum=20;TestSamNum=20;%测试样本数量也是测试样本数量也是 2020ForcastSamNum=2;ForcastSamNum=2;%预测样本数量为预测样本数量为 2 20.670.690.79405484292743462207242080321804HiddenUnitNum=8;HiddenUnitNum=8;%中间层隐节点数量取中间层隐节点数量取 8,

7、 8,比工具箱程序多了比工具箱程序多了 1 1 个个InDim=3;InDim=3;%网络输入维度为网络输入维度为 3 3OutDim=2;OutDim=2;%网络输出维度为网络输出维度为 2 2%原始数据原始数据%人数人数( (单位:万人单位:万人) )sqrs=20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 .sqrs=20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 .41.93 44.59 47.3

8、0 52.89 55.73 56.76 59.17 60.63;41.93 44.59 47.30 52.89 55.73 56.76 59.17 60.63;%机动车数机动车数( (单位:万辆单位:万辆) )sqjdcs=0.6 0.75 0.85 0.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6.sqjdcs=0.6 0.75 0.85 0.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6.2.7 2.85 2.95 3.1;2.7 2.85 2.95 3.1

9、;%公路面积公路面积( (单位:万平方公里单位:万平方公里) )sqglmj=0.09 0.11 0.11 0.14 0.20 0.23 0.23 0.32 0.32 0.34 0.36 0.36 0.38 0.49 .sqglmj=0.09 0.11 0.11 0.14 0.20 0.23 0.23 0.32 0.32 0.34 0.36 0.36 0.38 0.49 .0.56 0.59 0.59 0.67 0.69 0.79;0.56 0.59 0.59 0.67 0.69 0.79;%公路客运量公路客运量( (单位:万人单位:万人) )glkyl=5126 6217 7730 9145

10、 10460 11387 12353 15750 18304 19836 21024 19490 20433 .glkyl=5126 6217 7730 9145 10460 11387 12353 15750 18304 19836 21024 19490 20433 .22598 25107 33442 36836 40548 42927 43462;22598 25107 33442 36836 40548 42927 43462;%公路货运量公路货运量( (单位:万吨单位:万吨) )glhyl=1237 1379 1385 1399 1663 1714 1834 4322 8132 8

11、936 11099 11203 10524 11115 .glhyl=1237 1379 1385 1399 1663 1714 1834 4322 8132 8936 11099 11203 10524 11115 .13320 16762 18673 20724 20803 21804;13320 16762 18673 20724 20803 21804;p=sqrs;sqjdcs;sqglmj;p=sqrs;sqjdcs;sqglmj;%输入数据矩阵输入数据矩阵t=glkyl;glhyl;t=glkyl;glhyl;%目标数据矩阵目标数据矩阵SamIn,minp,maxp,tn,min

12、t,maxt=premnmx(p,t); %SamIn,minp,maxp,tn,mint,maxt=premnmx(p,t); %原始样本对(输入和输出)初始化原始样本对(输入和输出)初始化rand(state,sum(100*clock)rand(state,sum(100*clock)%依据系统时钟种子产生随机数依据系统时钟种子产生随机数randrand是产生是产生 0 0到到 1 1 的均匀分布,的均匀分布,randnrandn是产生均值为是产生均值为 0 0,方差为,方差为 1 1 的正态分布的正态分布 rand(n)rand(n)或或 randn(n)randn(n)产生产生 n*

13、nn*n 阶矩阵,阶矩阵,rand(m,n)rand(m,n)或或 randn(n)randn(n)产生产生m*nm*n 的随机数矩阵的随机数矩阵NoiseVar=0.01;NoiseVar=0.01;%噪声强度为噪声强度为 0.010.01(添加噪声的目的是为了防止网络过度拟合)(添加噪声的目的是为了防止网络过度拟合)Noise=NoiseVar*randn(2,SamNum);Noise=NoiseVar*randn(2,SamNum);%生成噪声生成噪声SamOut=tn + Noise;SamOut=tn + Noise;%将噪声添加到输出样本上将噪声添加到输出样本上TestSamIn

14、=SamIn;TestSamIn=SamIn;%这里取输入样本与测试样本相同因为样本容量偏少这里取输入样本与测试样本相同因为样本容量偏少TestSamOut=SamOut;TestSamOut=SamOut;%也取输出样本与测试样本相同也取输出样本与测试样本相同MaxEpochs=50000;MaxEpochs=50000;%最多训练次数为最多训练次数为 5000050000lr=0.035;lr=0.035;%学习速率为学习速率为 0.0350.035E0=0.65*10(-3);E0=0.65*10(-3);%目标误差为目标误差为 0.65*10(-3)0.65*10(-3)W1=0.5*

15、rand(HiddenUnitNum,InDim)-0.1;W1=0.5*rand(HiddenUnitNum,InDim)-0.1;%初始化输入层与隐含层之间的权值初始化输入层与隐含层之间的权值B1=0.5*rand(HiddenUnitNum,1)-0.1;B1=0.5*rand(HiddenUnitNum,1)-0.1;%初始化输入层与隐含层之间的阈值初始化输入层与隐含层之间的阈值W2=0.5*rand(OutDim,HiddenUnitNum)-0.1; %W2=0.5*rand(OutDim,HiddenUnitNum)-0.1; %初始化输出层与隐含层之间的权值初始化输出层与隐含层

16、之间的权值B2=0.5*rand(OutDim,1)-0.1;B2=0.5*rand(OutDim,1)-0.1;%初始化输出层与隐含层之间的阈值初始化输出层与隐含层之间的阈值ErrHistory=;ErrHistory=;%给中间变量预先占据内存给中间变量预先占据内存for i=1:MaxEpochsfor i=1:MaxEpochsHiddenOut=logsig(W1*SamIn+repmat(B1,1,SamNum); %HiddenOut=logsig(W1*SamIn+repmat(B1,1,SamNum); % 隐含层网络输出隐含层网络输出NetworkOut=W2*Hidden

17、Out+repmat(B2,1,SamNum);NetworkOut=W2*HiddenOut+repmat(B2,1,SamNum);% 输出层网络输出输出层网络输出Error=SamOut-NetworkOut;Error=SamOut-NetworkOut;% 实际输出与网络输出之差实际输出与网络输出之差SSE=sumsqr(Error)SSE=sumsqr(Error)%能量函数(误差平方和)能量函数(误差平方和)ErrHistory=ErrHistory SSE;ErrHistory=ErrHistory SSE;if SSEE0,break, endif SSEE0,break,

18、end%如果达到误差要求则跳出学习循环如果达到误差要求则跳出学习循环% 以下六行是以下六行是 BPBP 网络最核心的程序网络最核心的程序% 他们是权值(阈值)依据能量函数负梯度下降原理所作的每一步动态调整量他们是权值(阈值)依据能量函数负梯度下降原理所作的每一步动态调整量Delta2=Error;Delta2=Error;Delta1=W2*Delta2.*HiddenOut.*(1-HiddenOut);Delta1=W2*Delta2.*HiddenOut.*(1-HiddenOut);dW2=Delta2*HiddenOut;dW2=Delta2*HiddenOut;dB2=Delta2

19、*ones(SamNum,1);dB2=Delta2*ones(SamNum,1);dW1=Delta1*SamIn;dW1=Delta1*SamIn;dB1=Delta1*ones(SamNum,1);dB1=Delta1*ones(SamNum,1);%对输出层与隐含层之间的权值和阈值进行修正对输出层与隐含层之间的权值和阈值进行修正W2=W2+lr*dW2;W2=W2+lr*dW2;B2=B2+lr*dB2;B2=B2+lr*dB2;%对输入层与隐含层之间的权值和阈值进行修正对输入层与隐含层之间的权值和阈值进行修正W1=W1+lr*dW1;W1=W1+lr*dW1;B1=B1+lr*dB1

20、;B1=B1+lr*dB1;endendHiddenOut=logsig(W1*SamIn+repmat(B1,1,TestSamNum); %HiddenOut=logsig(W1*SamIn+repmat(B1,1,TestSamNum); % 隐含层输出最终结果隐含层输出最终结果NetworkOut=W2*HiddenOut+repmat(B2,1,TestSamNum);NetworkOut=W2*HiddenOut+repmat(B2,1,TestSamNum);% 输出层输出最终结果输出层输出最终结果a=postmnmx(NetworkOut,mint,maxt);a=postmn

21、mx(NetworkOut,mint,maxt);% 还原网络输出层的结果还原网络输出层的结果x=1990:2009;x=1990:2009;% 时间轴刻度时间轴刻度newk=a(1,:);newk=a(1,:);% 网络输出客运量网络输出客运量newh=a(2,:);newh=a(2,:);% 网络输出货运量网络输出货运量figure ;figure ;subplot(2,1,1);plot(x,newk,r-o,x,glkyl,b-+)subplot(2,1,1);plot(x,newk,r-o,x,glkyl,b-+)%绘值公路客运量对比图;绘值公路客运量对比图;legend(legen

22、d(网络输出客运量网络输出客运量,实际客运量实际客运量););xlabel(xlabel(年份年份);ylabel();ylabel(客运量客运量/ /万人万人););subplot(2,1,2);plot(x,newh,r-o,x,glhyl,b-+)subplot(2,1,2);plot(x,newh,r-o,x,glhyl,b-+)%绘制公路货运量对比图;绘制公路货运量对比图;legend(legend(网络输出货运量网络输出货运量,实际货运量实际货运量););xlabel(xlabel(年份年份);ylabel();ylabel(货运量货运量/ /万吨万吨););% 利用训练好的网络进

23、行预测利用训练好的网络进行预测% 当用训练好的网络对新数据当用训练好的网络对新数据 pnewpnew 进行预测时,也应作相应的处理进行预测时,也应作相应的处理pnew=73.39 75.55pnew=73.39 75.553.9635 4.09753.9635 4.09750.9880 1.0268;0.9880 1.0268;%2010%2010 年和年和 20112011 年的相关数据;年的相关数据;pnewn=tramnmx(pnew,minp,maxp);pnewn=tramnmx(pnew,minp,maxp);%利用原始输入数据的归一化参数对新数据进行归一化;利用原始输入数据的归一

24、化参数对新数据进行归一化;HiddenOut=logsig(W1*pnewn+repmat(B1,1,ForcastSamNum); %HiddenOut=logsig(W1*pnewn+repmat(B1,1,ForcastSamNum); % 隐含层输出预测结果隐含层输出预测结果anewn=W2*HiddenOut+repmat(B2,1,ForcastSamNum);anewn=W2*HiddenOut+repmat(B2,1,ForcastSamNum);% 输出层输出预测结果输出层输出预测结果%把网络预测得到的数据还原为原始的数量级;把网络预测得到的数据还原为原始的数量级;anew=postmnmx(anewn,mint,maxt)anew=postmnmx(anewn,mint,maxt)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁