




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、BP神网偽一实验内容设计BP网络,映射函数为:y=sin(x)xG(0,In)y=x”2+x2八2+xl*x2xl,x2e(0,l)给出训练后的权值矩阵,并考察训练拟合的效果。二实验原理BP网络原理BP网络模型处理信息的基本原理是:输入信号人通过中间节点(隐层点)作用于输出节点,经过非线形变换,产生输出信号网络训练的每个样本包括输入向量X和期望输出量t,网络输出值Y与期望输出值t之间的偏差,通过调整输入节点与隐层节点的联接强度取值Wjj和隐层节点与输出节点之间的联接强度0以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的
2、神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。BP学习的过程正向传播:输入样本输入层各隐层输出层判断是否转入反向传播阶段:若输出层的实际输出与期望的输出(教师信号)不符误差反传BP网络的设计在本次试验中,均釆用了三层的BP网络,即输入层,一隐层,输出层。隐层结点数均定义为10个。在取样本时,釆取均匀采样的方法,在测试时釆用未使用的数据。对于初始值釆用随机选取的办法。釆用单极性Sigmoid函数:f(x)=亓吕,其具有连续、可导的特点。1.0Z0*4算法初始化网络参数,其阈值和各层之间的权值均用随机数产生,其范围卜1加;输入样本及教师信号,(x,y),并归一化,其
3、函数为:0,1归一化(mimax一一0,1):0J反归一化(0,1一一min/max):爲=辱(.口厂备)+x卜1归一化(min,max一一-1,1):卜1丄反归一化(4JL一min,max):谷巧x(:a盂、隘卅dY_爲uax+兀urn(其中2)计算隐层及输出层的输出设其函数为:f(x)=l/(1+exp(x)则隐层输出为:yj=fGi=0VijXt)输出层输出为:Ok=fQ=QWjkyj)计算各层的误差信号并改变权值。计算隐层对输出层的误差信号,5=(dk-Ok)Ok(l-Ok),并根据误差信号求出权值增量,Wjlc=2納-进而可更新权值:Wjk=Wjk+Wjk。计算输入层对隐层的误差信号
4、,处=猱Wjk)yj(l-y)并根据误差信号,求出权值增量,Vij=2*Xi。进而可更新权值:Vif=Vif+AViJO计算网络均方根误差E,E=-OQ判断误差是否达到要求或者达到训练次数,若未达到要求,则执行3,4部知道到达要求。若满足要求,则进行测试。5算法的流程图为:结束Times=36602Times=36603Times=36604Times=36605Times=36606Times=36607Times=36608Times=36609Times=36610Times=36611Times=36612Times=36613|Times=36614|Times=36615|Time
5、s=36616|Times=36617|Times=36618|Times=36619|Times=36620Times=36621Times=36622Times=36623Times=36624E=0.000130022E=0.000130021E=0.000130019E=0.000130018E=0.000130016E=0.000130015E=0.000130014E=0.000130012E=0.000130011E=0.000130009E=0.000130泗E=0.00013西目6E=0.000130005E=0.000130003E=0.000130002E=0.00013
6、E=0.000129999三实验结果y=sin(x)在实验时将隐层节点个数设为:10;学习率为:0.1;误差设定值为:0.00013;实验截图如图所示:实验次数及误差E=0.000130031E=0.00013003E=0.000130028E=0.00013002?E=0.000130025E=0.000130024trainingcompleted经试验,当误差达到0.00013后,误差减小的很慢,当达到0.00012后便开始增加。故选定误差为0.00013,训练次数为36624次。实验结束后的权值:F;作业zhinerrgghhhDebugghhh冶Times=36&24E=0.0001
7、29咖trainincfcompleted-.最后的权值为:w_hide_input1.13881.260621.09712-1-09608-1.2823-3.8236-1.34532-1.1056-3.963484.38029最后的权值为;w_output_hide5.095369.17154.79617-7.33S77-1.680777.47398一954034-4.606738.82398-G.12119输入旷2Fi之间的数,测试:误差为-0-06&143输人旷2亦之间的驗0.5输岀:0.505098应该输岀为;0.479426一00256729误芜为A02*pi之间的数:2输出0-84
8、4328应该输岀为:0.909297误差为;0-0649699输人旷2狭pi之询药纵5输岀-0.845001应逐勒出为:误差为;-0-113923输人旷2其pi之间的数:-0.958924输岀匚-0捌工三-0.30709应该输出为-0-279415勺:0.0276744I嶽X.旷2和i之间的数;半二y=xlA2+x2A2+xl*x2xl,x2G(0,l)在实验时将隐层节点个数设为:10:学习率为:0.5;误差设定值为:实验截图如图所示:实验次数及误差0.0015;一F作业智能xy22Debugxy22exMTimes=56747limes=56748Times=56749Times=56750
9、Times=56751Times=56752Times=56753limes=56754Times=56755Times=56756Times=56757Times=56758Times=56759Times=56760limes=56761Times=56762Times=56763Times=56764Times=56765Times=56766limes=56767Times=56768Times=56769Times=56770Times=56771Times=56772Times=56773Times=56774Times=56775Times=56776Times=56777Tim
10、es=56778Times=56779limes=56780Times=56781Times=56782Times=56783Times=56784Times=56785limes=56786Times=56787Times=56788E=0.00150373E=0.00150364E=8.00150355E=0.00150346E=0.00150337E=0.00150328E=0.00150319E=9.0015031E=0.00150301E=0.00150292E=0.00150283E=0.00150274E=0.00150265E=0.00150256E=0.00150246E=0
11、.00150237E=0.00150228E=0.00150219E=0.0015021E=0.601502E=0.00150191E=0.00150182E=0.00150173E=0.00150163E=0.00150154E=0.60150145E=9.00150136E=0.00150126E=0.00150117E=0.00150108E=0.00150098E=0.00150089E=0.00150079E=0.001500?E=0.00150061E=0.00150051E=0.00150042E=0.00150032E=0.00150923E=0.00150913E=0.001
12、50904E=0.00149994ngcompleted-经试验,当误差达到0.0015后,误差减小的非常慢,但一直在减小,故选定误差为0.0015,且选定的学习率比较高。最终的训练次数为56788次。最终的权值为最后的权值为:w_hide_input4.253252.363972.083841.78115-4.122121.049531.73771-1.21911.22399-0.672378-2.09057-2.20691-2.03617-1.91113.60243-3.06195-1.69254-0.000977956-1.507351.01596最后的权值为:w_output_J)id
13、e10.8036-0.984563-1.74013-2.95384.815581.52658-1.03275-809225一4.6938数据测试TH:*6.23770.0453536四实验结果分析在BP网络训练的过程中,误差开始减小的非常快,到后來训练了一万次后误差减小开始变得非常慢。当改变学习率时,学习率增加时,学习的速度增加,但是出现了震荡的现象。选取较小的学习率时,学习的速率明显变慢,但是选取的值较多,震荡的现象减小。隐层节点数减少时学习的速率变快,但是相应的测试误差变大。在测试时,有的数的误差明显偏大,这是由于训练次数少,隐层结点数少,训练有误差而导致的仿真结果不准确造成的。五实验中存
14、在的不足对于第一题,在训练时,产生了很多次的震荡,而且不能保证最后的结果是最优的结果。对于第二题,误差减小的很慢,到了最后基本上不减小。训练次数多使得学习效率低,收敛速度慢;实验训练结束后的测试,最终的绝对误差均在0.05左右,有些大。训练次数少,误差较大而引起的。六实验中出现的问题(1)在调试程序的过程中出现误差非常大,而且不减小的情况一进入了平坦区产生的原因:没有进行归一化处理。进行归一化处理的原因:网络的各个输入数据常常具有不同的物理意义和不同的量纲,归一化给各输入分量以同等重要的地位;BP网的神经元均采用Sigmoid转移函数,变换后可防止因净输入的绝对值过大而使神经元输出饱和,继而使
15、权值调整进入误差曲面的平坦区;Sigmoid转移函数的输出在0V或之间。教师信号如不进行归一化处理,势必使数值大的输出分量绝对误差大,数值小的输出分量绝对误差小。在调试的过程中出现了误差震荡产生的原因:标准bp算法的局限性,在误差变化剧烈的区域,口太大会因调整量过大而跨过较窄的“坑凹”处,使训练出现振荡,反而使迭代次数增加。解决方法:自适应改变学习率,使其根据环境变化增大或减小。误差收敛比较慢产生原因:只按t时刻误差的梯度降方向调整,而没有考虑t时刻以前的梯度方向解决方法:从前一次权值调整量中取出一部分迭加到本次权值调整量中对于使用VC的错误产生的原因:由于很久没有使用C编写程序,对C的一些函
16、数和变量定义有一些生疏,所以导致一些基本的错误。七实验心得通过本次试验,让我对BP神经网络的基本原理和方法有了更深层次的理解,学会了如何运用VC+设计BP网络。了解了BP网络的基本算法,及标准BP算法存在的局限性有了更深的了解,并且了解了改进BP算法的方法及过程。A.附录:(1)y=sin(x)程序itincludeitincludeusingnamespacestd;#definet200000#definenumlnputLayer1#definenumHiddenLayer10#definenumOutputLayer1#definelearnRatio0.1#definenumSamp
17、le50#definepi3.1415926输入样本doubleXnumSampienumlnputLayer;期望输出样本doubleYnumSampienumOutputLayer;doubletheta_hidenumHiddenLayer;/隐含结点阀值doubletheta_outputnumOutputLayer;/输出结点阀值doublew_hidenputnumHiddenLayernumlnputLayer;/隐含结点权值doublew_output_hidenumOutputLayernumHiddenLayer;/输出结点权值doubleinput_xnumInputLa
18、yer;/输入样本doubleoutput_ynumOutputLayer;期望输出样本doublenet_hidenumHiddenLayer;/隐含层状态值doubleo_hidenumHiddenLayer;隐含层输出值doublenet_outputnumOutputLayer;/输出状态值doubleo_outputnumOutputLayer;/输出层输出值doubledet_w_hidenputnumHiddenLayernumlnputLayer;/新隐含结点权值doubledet_w_output_hidenumOutputLayernumHiddenLayer;/新输出结点
19、权值doublepreminmax(doublemin,doublemax,doublein)/归一化函数:min,max-0,1return(in-min)/(max-min);doublepostminmaxfdoublemin,doublemax,doublein)/反归一化函数:0,1一min,maxreturnin*(max-min)+min;doublepreminmax2(doublemin,doublemax,doublein)/归一化函数:min,max-1,1doublemid=(max+min)/2;return2*(in-mid)/(max-min);doublepos
20、tminmax2(doublemin,doublemax,doublein)/反归一化函数:一一min,maxdoublemid=(max+min)/2;returnin*(max-min)/2+mid;intData_lnput(inti)Xi0=2*i*pi/50;Yi0=sin(Xi0);Xi0=preminmax2(0,2*pi/Xi0);/输入0,2ir归一化至lj-lzlYiO=preminmax(-l/lMiO);/输出J/L归一化到OJreturn0;voidinitial()隐含层阈值forfinti=O;inumHiddenLayer;i+)theta_hidei=(2.0
21、*(double)rand()/RAND_MAX)-l;/-l到1之间的随机数一输出层阈值for(i=0;inumOutputLayer;i+)theta_outputi=(2.0*(double)rand()/RAND_MAX)-l;输入层与隐层之间的权值for(i=0;inumHiddenLayer;i+)forfintj=O;jnumlnputLayer;j+)w_hide_inputij=(2.0*(double)rand()/RAND_MAX)-l;输出层与隐层之间的权值for(i=0;inumOutputLayer;i+)forfintj=0;jnumHiddenLayer;j+)
22、w_output_hideij=(2.0*(double)rand()/RAND_MAX)-l;voidcalcNetO()/输入层netkforfinti=O;inumHiddenLayer;i+)doubletemp=0;for(intj=0;jnumlnputLayer;j+)temp+=w_hide_inputij*input_xj;/Wi*Xinet_hidei=temp;voidsigmoidNetO()/隐含层输出for(inti=O;inumHiddenLayer;i+)o_hidei=l/(l+exp(-(net_hidei+theta_hidei);voidcalcNetl
23、f)/隐层netkfor(inti=0;inumOutputLayer;i+)doubletemp=0;forfintj=O;jnumHiddenLayer;j+)temp+=w_output_hideij*o_hidej;/Wi*Xinet_outputi=temp;voidsigmoidNetl()/输出层输出for(inti=0;inumOutputLayer;i+)o_outputi=l/(l+exp(-(net_outputi+theta_outputi);voidadjustWeightf)for(intk=O;knumOutputLayer;k+)/输出层与隐层之间的权值增量fo
24、rfintj=O;jnumHiddenLayer;j+)det_w_output_hidekj=leamRatio*(output_yk-o_outputk)*o_outputk*(l-o_outputk)*o_hidej;for(inti=0;inumlnputLayer;i+)/输入层与隐层之间的权值增量forfintj=O;jnumHiddenLayer;j+)doublesum=0;forfintk=0;knumOutputLayer;k+)sum+=(output_yk-o_outputk)*o_outputk*(l-o_outputk)*w_output_hidekj;det_w_
25、hide_inputji=learnRatio*o_hide|j*(l-o_hidej)*sum*input_xi;for(i=0;inumOutputLayer;i+)/更新输出层权值for(intj=O;jnumHiddenLayer;j+)w_output_hideij+=det_w_output_hideij;for(i=0;inumHiddenLayer;i+)/更新隐含层权值for(intj=O;jnumlnputLayer;j+)w_hide_inputij+=det_w_hide_inputij;voidtest()doublea2;doubleb;doublee;double
26、c;while(l)cout输入02*pi之间的数:Nendl;for(inti=0;i0.00013×t)times+;E=0;for(intn=O;nnumSample;n+)Data_lnput(n);压择X值forfintm=O;mnumlnputLayer;m+)input_xm=Xnm;选择Y值for(m=0;mnumOutputLayer;m+)output_ym=Ynm;calcNetO();sigmoidNetO();calcNetl();sigmoidNetl();adjustWeightf);计算一次训练的误差for(inti=0;inumOutputLayer
27、;i+)E+=(output_yi-o_outputi)*(output_yi-o_outputi);E=E/2.0;coutvvT1mesJvvtimesvvE=Eendl;coutntrainingcompleted.Hendlendl;cout最后的权值为:w_hidenputvvendl;forfinti=0;inumlnputLayer;i+)forfintj=0;jnumHiddenLayer;j+)coutw_hide_inputjiendl;coutendl;一coutH最后的权值为:w_output_hideNendl;for(i=0;inumOutputLayer;i+)f
28、orfintj=0;jnumHiddenLayer;j+)coutw_output_hideijendl;test();/测试,按ctrl+C结束return0;#include#includeusingnamespacestd;#definet200000ftdefinenumlnputLayer2definenumHiddenLayer10ftdefinenumOutputLayer1definelearnRatio0.5definenumSample2500/#definepi3.1415926输入样本doubleXnumSampienumlnputLayer;期望输出样本doubleY
29、numSamplenumOutputLayer;doubletheta_hidenumHiddenLayer;/隐含结点阀值doubletheta_outputnumOutputLayer;输出结点阀值doublew_hidenputnumHiddenLayernumlnputLayer;/隐含结点权值doublew_output_hidenumOutputLayernumHiddenLayer;/输出结点权值doubleinput_xnumInputLayer;/输入样本doubleoutput_ynumOutputLayer;期望输出样本doublenet_hidenumHiddenLay
30、er;/隐含层状态值doubleo_hidenumHiddenLayer;隐含层输出值doublenet_outputnumOutputLayer;/输出状态值doubleo_outputnumOutputLayer);/输出层输出值max,doublein)/归一化函doubledet_w_hidenputnumHiddenLayernumlnputLayer;新隐含结点权值doubledet_w_output_hidenumOutputLayernumHiddenLayer;/新输出结点权值doublepreminmaxfdoublemin,double数:min,max-0,1retur
31、n(in-min)/(max-min);in)/反归一化函doublepostminmaxfdoublemin,doublemax,double数:0,1-min,maxreturnin*(max-min)+min;doublepreminmax2(doublemin,doublemax,doublein)/归一化函数:min,max-1,1doublemid=(max+min)/2;return2*(in-mid)/(max-min);doublepostminmax2(doublemin,doublemax,doublein)/反归一化函数:一一min,maxdoublemid=(max+
32、min)/2;returnin*(max-min)/2+mid;intData_lnput(inti)intj;intk;j=i/50;k=i%50;Xj0=j*0.02;Xkl=k*0.02;/Xj0=preminmax2(0,l/Xj0);/输入0丄归一化到dj/Xkl=preminmax2(0,l,Xkl);/输入0,1归一化到卜1丄YiO=XjO*XjO+Xkl*Xkl+XjO*Xkl;Yi0=preminmax(0,3,Yi0);/输出0,3归一化到0,1return0;隐含层阈值for(inti=O;inumHiddenLayer;i+)theta_hidei=(2.0*(doub
33、le)rand()/RAND_MAX)-l;/-l到1之间的随机数一输出层阈值for(i=0;inumOutputLayer;i+)theta_outputi=(2.0*(double)rand()/RAND_MAX)-l;输入层至隐层权值for(i=0;inumHiddenLayer;i+)forfintj=0;jnumlnputLayer;j+)w_hide_inputij=(2.0*(double)rand()/RAND_MAX)-l;隐含层至输出层权值for(i=0;inumOutputLayer;i+)forfintj=O;jnumHiddenLayer;j+)w_output_hi
34、deij=(2.0*(double)rand()/RAND_MAX)-l;voidcalcNetO()输入层netkforfinti=O;inumHiddenLayer;i+)doubletemp=0;for(intj=0;jnumlnputLayer;j+)temp+=w_hide_inputij*input_xj;/Wi*Xinet_hidei=temp;voidsigmoidNetO()/隐含层输出for(inti=O;inumHiddenLayer;i+)/y=l/(l+exp(-Wi*Xi-theta)o_hidei=l/(l+exp(-(net_hidei+theta_hidei)
35、;voidcalcNetlf)/隐层netkfor(inti=0;inumOutputLayer;i+)doubletemp=0;forfintj=O;jnumHiddenLayer;j+)temp+=w_output_hideij*o_hidej;/Wi*Xinet_outputi=temp;voidsigmoidNetl()/输出层输出for(inti=0;inumOutputLayer;i+)o_outputi=l/(l+exp(-(net_outputi+theta_outputi);voidadjustWeightf)for(intk=0;knumOutputLayer;k+)/输出层与隐层之间的权值增量forfintj=O;jnumHiddenLayer;j+)det_w_output_hidekj=leamRatio*(output_yk-o_outputk)*o_outputk*(l-o_outputk)*o_hidej;for(inti=O;inumlnputLayer;i+)/输入层与隐层之间的权值增量forfintj=O;jnumHiddenLayer;j+)doublesum=0;forfintk=0;knumOutputLayer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年03月浙江嘉兴市海盐县事业单位公开招聘工作人员96人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年03月北京西城区事业单位公开招聘13人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 脲醛塑料项目安全评估报告
- 长春工业大学《老子》2023-2024学年第一学期期末试卷
- 江苏医药职业学院《植物绿化与配置》2023-2024学年第二学期期末试卷
- 亳州职业技术学院《模型制作》2023-2024学年第一学期期末试卷
- 山西财贸职业技术学院《钢琴即兴伴奏与弹唱》2023-2024学年第一学期期末试卷
- 安徽省宿州地区重点中学2024-2025学年初三下学期期末英语试题测试卷含答案
- 湘中幼儿师范高等专科学校《计算机系统设计及实践》2023-2024学年第二学期期末试卷
- 宁夏大学《工程力学(下)》2023-2024学年第二学期期末试卷
- 中考英语复习第24讲 书面表达之演讲稿(课件)
- 国开可编程控制器应用形考实训任务六
- DZ∕T 0203-2014 航空遥感摄影技术规程(正式版)
- 高考地理一轮专题复习课件+地貌的形成过程
- 山羊出售方案范文
- 《化工园区有毒有害气体环境预警体系技术规范》
- 小班安全教案玩具不放嘴巴
- 冷链仓储项目经济效益和社会效益分析
- 2024AHA心肺复苏指南解读
- 两轮电动车行业风险分析
- 物业承接查验方案样本
评论
0/150
提交评论