分享
分销 收藏 举报 申诉 / 13
播放页_导航下方通栏广告

类型BP算法实际例子与程序.doc

  • 上传人:xrp****65
  • 文档编号:7036861
  • 上传时间:2024-12-25
  • 格式:DOC
  • 页数:13
  • 大小:191KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    BP 算法 实际 例子 程序
    资源描述:
    BP算法实际例子与程序 1. 题目 1) 训练样本集:等间隔选取的9个样本。 检验样本集:等间隔选取的361个样本。 2) 训练样本集:等间隔选取的9个样本。 检验样本集:等间隔选取的361个样本。 3) 训练样本集1:等间隔选取的11×11个样本,应包含2个最高点。 训练样本集2:等间隔选取的21×21个样本,应包含2个最高点。。 检验样本集:等间隔选取的31×31个样本,或41×41个样本 2. BP算法原理 BP网络简介 误差反向传播算法(BP)是感知器学习规则当前著名发展,其中增加了额外的隐含层(在输入层和输出层之间,它不予外界直接相连)。网络拓扑结构被限定为前向输入:例如,由输入层向第一隐含层(或许只有一层)传输,由第一隐含层向第二隐含层传输,……,或者从最后隐含层向输出层传输,如图1所示,这是一个典型的BP神经网络结构。它包含了三层。隐含层学习对输入层信息重编码(或者说是重复表达输入层信息)。可以使用多于一层的隐含层,这时网络的功能要比单独一层隐含层时功能强大的多。可以证明,一个含有两层隐含层的神经网络可以学习任何映射。这种含两层隐含层的神经网络也就是比原来含有一层隐含层的网络稍微复杂了一些。训练BP网络的权值调整规则是感知器学习规则的发展。权值调整是通过与输出误差的比较调整实现的。 图1、BP网络结构 网络的运行包括: 1) 前向通道:计算输出层的输出结果和误差 2) 后向通道:输出误差用于调整输出单元的权值。隐含节点的误差也可以得到(通过输出层的权值将误差反向传播),这样隐含层的权值也可以调整了。 每一个数据都被前向通道和后向通道学习。这样不断重复直到误差小到一个允许的范围(或者说我们停止运行)。 BP网络最常用的工作形式是这样的: 1) 权值和阈值随机取为很小的数据 2) 输入训练采样,按下面3)—5)步运行每一采样值 3) 计算网络中每一层的输出 (i) 4) 计算训练误差 ,输出层误差 (ii) ,隐含层和输入层误差 (iii) 5) 修正权值和阈值 (iv) (v) 6) 所有采样值都完成了3)—5)步后,一次训练周期结束。计算误差情况: 7)如果满足E≦e,则结束训练。或者返回步骤2),开始下一个训练周期。 执行过程 根据BP网络规范,我们可以得到现在的BP网络算法流程图如下图2, 按照这一思路,我使用Matlab语言完成了BP神经网络程序设计。 No Yes 参数设定 计算和保留所有层的输出 修改并保留权值和阈值 初始化权值和阈值 满足要求? 计算并保留误差 结束 Yes 训练周期 图2、BP神经网络算法流程图 BP网络的运行细节是这样的: 1、 为BP网络设定参数。如,隐含层数、神经元个数、精度等等 2、 按照随机的规则初始化权值和阈值 3、 使用等式(i)计算每层的输出 4、 按照等式(ii)或(iii)计算每层的误差 5、 通过等式(iv)和(v)重复计算权值和阈值 6、 计算同一周期内所有采样值的误差和E 7、 比较E与我们的期望值并做出判断。如果满足要求的话,或者停止运行或者返回步骤3)重复执行一个新的周期 3. 结果分析 以下结果分析中,样本学习率都取u=0.2,动量项的学习率都取n=0.05。 4.1 y=sin x 下图4.1.1—图4.1.3为不同的隐含层神经元数和不同的性能指标E所得到的曲线: 图4.1.1 隐含层神经元数为4,性能指标E=0.05 图4.1.2 隐含层神经元个数为8,性能指标E=0.05 图4.1.3 隐含层神经元数为8,性能指标E=0.01 分析: (1)从图4.1.1和图4.1.2中可以看出,对于同样的性能指标,其训练次数会随着隐含层神经元个数的增加;比较图4.2和图4.3可以发现,对应同样数目的隐含层神经元个数,性能指标要求越高,训练次数会相应变多,甚至出现在规定的次数内(程序中最多进行20000此BP训练),性能指标不能满足要求的情况。 (2)从上述三个曲线中可以发现,总体误差会随着训练次数的增加而不断趋于0,且越到后面,变化越不明显。 (3)从样本与训练结果的误差曲线中可以发现,在样本点的附近,样本与训练结果的误差比较小;在远离样本点的区域,样本与训练结果之间的误差明显变大。 4.2 y=|sinx| 样本学习率和动量项的学习率保持不变,只需在上述程序的基础上,将函数y=sinx变换到y=|sinx|。下图4.2.1—图4.2.3为不同的隐含层神经元数和不同的性能指标E所得到的曲线: 图4.2.1隐含层神经元数为4,性能指标E=0.05 图4.2.2隐含层神经元个数为8,性能指标E=0.05 图4.2.3隐含层神经元数为8,性能指标E=0.001 图4.3.1 异或训练结果曲线 4.3 下图4.4.1—4.4.2所示为程序运行后的曲线: 图4.4.1 11*11 图4.4.2 21*21 附录1:1、2两题 clear all close all x0_0=linspace(0,2*pi,9); x0=x0_0; D=sin(x0_0); %D=abs(sin(x0_0)); [n0,No]=size(x0); [n2,No]=size(D); n1=8; u=0.2; n=0.05; epoch_max=20000; erro_goal=0.001; w1=rand(n1,n0); w2=rand(n1,n0); theta1=rand(n1,n0); theta2=rand(n2,n0); x1=0; x2=0; E=0; w1_0=zeros(size(w1)); w2_0=zeros(size(w2)); theta1_0=zeros(size(theta1)); theta2_0=zeros(size(theta2)); %%%%%%%%%%%%%%%%%%%%%% training %%%%%%%%%%%%%%%%%%%%%%%%%%% for epoch=1:1:epoch_max for num=1:1:No S1=w1*x0(:,num)+theta1; x1=logsig(S1); S2=x1'*w2+theta2; x2=S2; temp1=w2; temp2=theta2; temp3=w1; temp4=theta1; delta2=(D(:,num)-x2); delta1=x1.*(1-x1).*(w2*delta2); w2=w2+u*delta2*x1+n*(w2-w2_0); w1=w1+u*delta1*x0(:,num)'+n*(w1-w1_0); theta2=theta2+u*delta2+n*(theta2-theta2_0); theta1=theta1+u*delta1+n*(theta1-theta1_0); w2_0=temp1; w1_0=temp3; theta2_0=temp2; theta1_0=temp4; Eq=(D(:,num)-x2)'*(D(:,num)-x2)/2; E=E+Eq; end Error(epoch)=E; if(E<erro_goal) break; end E=0; end T=linspace(0,2*pi,361); test_in=T; test_out=sin(T); %test_out=abs(sin(T)); out_y=zeros(size(T)); for i=1:1:361; S3=w1*test_in(:,i)+theta1; x1=logsig(S3); S4=x1'*w2+theta2; out_y(i)=S4; Error_out(i)= out_y(i)-sin(T(i)); end output=out_y; subplot(3,1,1),plot(T,test_out,'r',T,output,'b'),title('red-Ñù±¾ÇúÏߣ¬blue-ѵÁ·½á¹û'); i=1:1:epoch; subplot(3,1,2),plot(i,Error),title('×ÜÎó²îÓëѵÁ·´ÎÊýÇúÏß'); subplot(3,1,3),plot(T,Error_out),title('Ñù±¾ÓëѵÁ·½á¹ûµÄÎó²îÇúÏß'); 附录3: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%initial%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear all; close all; n0=2; n1=4; n2=1; x1_i=-10:2:10; x2_i=-10:2:10; No=size(x1_i,2); %when the denominator is 0, then evaluate it with a little number for j=1:No if(x1_i(j)==0.0) x1_i(j)=0.001; end if(x2_i(j)==0.0) x2_i(j)=0.001; end end %actual outputs for j=1:No for i=1:No D(No*(j-1)+i)=0.9*exp(- ( (x1_i(i)+5)^2+(x2_i(j)+5)^2 )/10)+0.99996*exp(- ( (x1_i(i)-5)^2+(x2_i(j)-5)^2 )/20); end end x1=x1_i; x2=x2_i; for j=1:No for i=1:No x1_temp((j-1)*No+i)=x1(i); end end for j=1:No for i=1:No x2_temp(i+No*(j-1))=x2(j); end end X0=[x1_temp' x2_temp']'; %input matrix w1=rand(n1,n0); w2=rand(n2,n1); o1=rand(n1,1); o2=rand(n2,1); w1_0=zeros(size(w1)); w2_0=zeros(size(w2)); o1_0=zeros(size(o1)); o2_0=zeros(size(o2)); u=0.03; n=0.01; E=0; error_goal=0.1; epoch_max=2000; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%training%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for epoch=2:1:epoch_max for num=1:1:No*No Si=w1*X0(:,num)+o1; X1(:,num)=logsig(Si); Sk=w2*X1(:,num)+o2; X2(:,num)=Sk; W=w2; O=o2; delta2=D(num)-X2(:,num); delta1=X1(:,num).*(1-X1(:,num)).*(delta2*w2'); w2= w2 + (u*delta2)* X1(:,num)' + n*(w2- w2_0); o2=o2+u*delta2+n*(o2-o2_0); w2_0=W; o2_0=O; W = w1; O=o1; w1 = w1 + u*delta1*X0(:,num)'+ n* (w1 - w1_0); o1=o1+u*delta1+n*(o1-o1_0); w1_0 = W; o1_0=O; Eq = delta2*delta2/2; E = E+Eq; end Error(epoch)=E; if(E<error_goal) break; end E=0; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%testing%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% x1_test=-10:1:10; x2_test=-10:1:10; No=size(x1_test,2); for j=1:No if(x1_test(j)==0) x1_test(j)=0.0001; end if(x2_test(j)==0) x2_test(j)=0.0001; end end Dest=0.9*exp(- ( (x1_test+5).^2+(x2_test+5).^2 )/10)+0.99996*exp(- ((x1_test-5).^2+(x2_test-5).^2 )/20); x1_temp=x1_test; x2_temp=x2_test; for j=1:No for i=1:No x1test((j-1)*No+i)=x1_temp(i); end end for j=1:No for i=1:No x2test(i+No*(j-1))=x1_temp(j); end end X0test=[x1test' x2test']'; OUT_k=0; for i=1:1:No*No Si=w1*X0test(:,i)+o1; X1test(:,i)=logsig(Si);%[4 1] Sk=w2*X1test(:,i)+o2; OUT_k(i) = Sk; end OUT=reshape(OUT_k,No,No); OUT=OUT'; figure (1); surf(x1_test,x2_test,Dest),title('Ñù±¾Êä³ö'); figure (2); surf(x1_test,x2_test,OUT),title('BPѵÁ·½á¹ûÊä³ö'); i=1:epoch; figure (3); plot(i,Error),title('Îó²î');
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:BP算法实际例子与程序.doc
    链接地址:https://www.zixin.com.cn/doc/7036861.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork