已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BP算法实际例子与程序 1. 题目1)训练样本集:等间隔选取的9个样本。检验样本集:等间隔选取的361个样本。2)训练样本集:等间隔选取的9个样本。检验样本集:等间隔选取的361个样本。3) 训练样本集1:等间隔选取的1111个样本,应包含2个最高点。训练样本集2:等间隔选取的2121个样本,应包含2个最高点。检验样本集:等间隔选取的3131个样本,或4141个样本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)如果满足Ee,则结束训练。或者返回步骤2),开始下一个训练周期。执行过程根据BP网络规范,我们可以得到现在的BP网络算法流程图如下图2,按照这一思路,我使用Matlab语言完成了BP神经网络程序设计。NoYes参数设定计算和保留所有层的输出修改并保留权值和阈值初始化权值和阈值满足要求?计算并保留误差结束Yes训练周期图2、BP神经网络算法流程图BP网络的运行细节是这样的:1、 为BP网络设定参数。如,隐含层数、神经元个数、精度等等2、 按照随机的规则初始化权值和阈值3、 使用等式(i)计算每层的输出4、 按照等式(ii)或(iii)计算每层的误差5、 通过等式(iv)和(v)重复计算权值和阈值6、 计算同一周期内所有采样值的误差和E7、 比较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.14.4.2所示为程序运行后的曲线:图4.4.1 11*11图4.4.2 21*21附录1:1、2两题clear allclose allx0_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(Eerro_goal) break; end E=0;endT=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);endoutput=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 numberfor 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; endend%actual outputsfor 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); endendx1=x1_i;x2=x2_i;for j=1:No for i=1:No x1_temp(j-1)*No+i)=x1(i); end endfor j=1:No for i=1:No x2_temp(i+No*(j-1)=x2(j); end endX0=x1_temp x2_temp; %input matrixw1=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(Eerror_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; endendDest=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 endfor j=1:No for i=1:No x2test(i+No*(j-1)=x1_temp(j); end endX0test=x1test x2test;OUT_k=0;for i=1:1:No*No Si=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度乡村旅游用地经营权出租管理协议3篇
- 2024年城市更新项目物业管理费收取与城市风貌改造合同3篇
- 2024中介二手房买卖合同电子版范本3篇
- 2024商业街店铺租赁及夜间经济开发合作合同3篇
- 2024年度农业综合开发担保合同范本(新修订)3篇
- 2024年度高档别墅区物业管理委托合同书3篇
- 2024年度知识产权质押担保合同范本(专业版)3篇
- 2024中金大摩业务交接及分手补偿协议2篇
- 2024年单位部门采购合同(31篇)
- 成都银行2023年年度股东会材料
- 隐患排查治理管理规定
- 2025材料供货合同样本
- 豪华酒店翻新工程协议
- 《逆向教学设计研究的国内外文献综述》2500字
- 教科版2022-2023学年度上学期三年级科学上册期末测试卷及答案(含八套题)
- 国家开放大学电大《11662会计信息系统(本)》期末终考题库及标准参考答案
- 水产动物增养殖学虾蟹类增养殖终极版
- 工程部奖惩制度
- 出境竹木草制品生产企业卫生防疫管理手册
- 承建红砖烧成隧道窑合同协议书范本模板
- 大班上学期周计划1—20周精编版
评论
0/150
提交评论