ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:225.06KB ,
资源ID:9171598      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9171598.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(BP神经网络实例.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

BP神经网络实例.docx

1、BP神经网络实例BP神经网络实例第一章BP神经网络基本原理一、BP神经网络基本概念1、人工神经网络人工神经网络ANN(Artificial Neural Network),是对人类大脑系统的一阶特性的一种描述。简单地讲,它是一个数学模型,可以用电子线路来实现,也可以用计算机程序来模拟,是人工智能研究地一种方法。近年来发展迅速并逐渐成熟的一种人工智能技术,其来源于对神经元细胞的模拟。人工神经网络具有以下三个特点:信息分布表示,运算全局并行与局部操作,信息非线性处理。由于这三个特点,使得由人工神经网络构成的分类器具有强大的数据拟和与泛化能力,因而广泛运用于模式识别与机器学习领域。神经网络模式识别的

2、过程分为两步:首先是学习过程,通过大量的训练样本,对网络进行训练,根据某种学习规则不断对连接权值进行调节,然后使网络具有某种期望的输出,这种输出就可以将训练样本正确分类到其所属类别中去,此时可以认为网络是学习到了输入数据或样本间的内在规律。接下来是分类过程,应用前面学习过程所训练好的权值,对任意送入网络的样本进行分类。人工神经网络模型各种各样,目前已有数十种。他们从各个角度对生物神经系统的不同层次进行了描述和模拟。代表模型有感知机、多层映射BP网、RBF网络、HoPfiled模型、Boit机等等。虽然人工神经网络有很多模型,但按神经元的连接方式只有两种型态:没有反馈的前向网络和相互结合型网络。

3、前向网络是多层映射网络,每一层中的神经元只接受来自前一层神经元的信号,因此信号的传播是单方向的。BP网络是这类网络中最典型的例子。在相互结合型网络中,任意两个神经元都可能有连接,因此输入信号要在网络中往返传递,从某一初态开始,经过若干变化,渐渐趋于某一稳定状态或进入周期震荡等其它状态,这方面典型的网络有Hopfiled模型等。2、BP神经网络BP算法是利用输出层的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差。如此下去,就获得了所有其他各层的误差估计。这样就形成了将输出端表现出的误差沿着与输入信号传送相反的方向逐级向网络的输入端传递的过程。因此,人们就又将此算法称为向后传播

4、算法,简称BP算法。如下图所示:算法过程为(1)设置各权值和阈值的初始值,为小随机数。(2)输入训练样本,对每个样本进行(3)(5)步。(3)计算各个网络层的实际输出(4)计算训练误差 ,输出层,隐含层和输入层(5)修正权值和阈值(6)当样本集中的所有样本都经历了(3)(5)步后,即完成了 一个训练周期(Epoch),计算性能指标,其中。(7)如果性能指标满足精度要求,即,那么训练结束,否则,转到(2),继续下一个训练周期。是小的正数,根据实际情况而定,例如0.013、流程图根据BP网络的算法,我们可得流程图如下。第二章BP神经网络实例分析一、实例要求1、取九个点来训练网络,然后得出拟合曲线。

5、2、取适当数量训练点来训练网络,然后得出拟合曲线3、取11*11个点来训练网络,并用21*21个点测试拟合的曲面。二、计算结果如下1、第一个函数:(2)学习率为0.2,训练次数为3300时训练过程如学习曲线所示,圈圈为学习后产生的,折线为标准函数点连线。检验过程如检验曲线所示,点序列为拟合曲线上的点,曲线为标准函数曲线。误差曲线如右图所示。(2)学习率为0.01,训练次数为3300时的曲线。从函数1可以看出,学习率比较大时,曲线收敛比较快,可以比较快速达到精度要求。但实际上,学习率比较大时(即收敛步长比较大),容易超出收敛边界,反而收敛导致不稳定,甚至发散。2、第二个函数:(1)学习率为0.2

6、,样本点数为10,学习次数为5000时的曲线如下:(2)学习率为0.2,样本点数为30,学习次数为5000时的曲线如下:从函数2可以看出,样本点个数越多时,曲线精度越高。但学习时间会有所增加。3、第三个函数学习率为0.1,动量项学习率为0.05,训练次数为5000,训练样本数为11*11。图形如下:附:程序源代码第一个和第二个函数的程序:%此BP网络为两层隐含层,每个隐含层4个节点。输入输出各一层%输入层和输出层均采用恒等函数,隐含层采用S形函数clear all;close all;b=0.01; %精度要求a=0.2; %学习率c=2;Num=30; %训练样本数N=3300; %训练次数

7、Nj=80; %检验样本数o0=rand(2,1); %输入层阈值o1=rand(4,1); %第一层隐含层阈值o2=rand(4,1); %第二层隐含层阈值o3=rand(1,1); %输出层阈值w1=rand(4,2); %输入信号为两个w2=rand(4,4); %第一层隐含层与第二层隐含层的权系数w3=rand(1,4); %第二层隐含层与输出层的权系数syms x y; %符号变量,用于两个输入值%fcn=cos(x); %被学习的函数fcn=abs(sin(x);x0=0:2*pi/(Num-1):2*pi; %输入的训练样本y0=0:2*pi/(Num-1):2*pi;x=x0;

8、y=y0;X(1,:)=x0;X(2,:)=y0;yf=eval(fcn); %输出的训练样本x3=zeros(1,Num);time=0;for j=1:1:N for i=1:1:Num %前向计算: s1=w1*X(:,i)-o1; x1=1./(1+exp(-s1); %第一层隐含层输出 s2=w2*x1-o2; x2=1./(1+exp(-s2); %第二层隐含层输出 s3=w3*x2-o3; %x3=1./(1+exp(-s3); %输出层输出 x3(i)=s3; %反向计算: %e3=(yf(i)-x3)./(exp(s3)+2+exp(-s3); %输出层误差 e3=yf(i)

9、-x3(i); e2=(w3)*e3)./(exp(s2)+2+exp(-s2); %第二层隐含层误差 e1=(w2)*e2)./(exp(s1)+2+exp(-s1); %第一层隐含层误差 %权值和阈值修正 w3=w3+a*e3*(x2); %权值修正 w2=w2+a*e2*(x1); w1=w1+a*e1*(X(:,i); o3=o3-a*e3; %阈值修正 o2=o2-a*e2; o1=o1-a*e1; end E(j)=0.5*(yf-x3)*(yf-x3); %方差 time=time+1; %记录学习次数 if E(j)b break endend%检验m=0:2*pi/(Nj-1

10、):2*pi;n=0:2*pi/(Nj-1):2*pi;x=m;y=n;ym=eval(fcn); %期望输出M(1,:)=x;M(2,:)=y;m3=zeros(1,Nj);for i=1:1:Nj S1=w1*M(:,i)-o1; m1=1./(1+exp(-S1); %第一层隐含层输出 S2=w2*m1-o2; m2=1./(1+exp(-S2); %第二层隐含层输出 S3=w3*m2-o3; %m3(i)=1./(1+exp(-S3); %输出层输出 m3(i)=S3;endfigure(1);plot(m,ym,g-);hold onplot(m,m3,r.); title(检验曲线

11、); xlabel(x);ylabel(y=cos(x) );figure(2);plot(x0,yf,b-);hold onplot(x0,x3,ro); title(学习曲线); xlabel(x);ylabel(y=cos(x);k=1:time;figure(3);plot(k,E); title(误差曲线);xlabel(训练次数);ylabel(误差值);第三个函数的程序%此BP网络为两层隐含层,每个隐含层10个节点。输入输出各一层%输入层和输出层均采用恒等函数,隐含层采用S形函数clear all;close all;b=0.05; %精度要求a=0.1; %学习率c=0.05;

12、 %动量项学习率Num=11; %训练样本数N=5000; %训练次数Nj=21; %检验样本数o0=rand(2,1); %输入层阈值o1=rand(10,1); %第一层隐含层阈值o2=rand(10,1); %第二层隐含层阈值o3=rand(1,1); %输出层阈值w1=rand(10,2); %输入层与第一层隐含层的权系数w2=rand(10,10); %第一层隐含层与第二层隐含层的权系数w3=rand(1,10); %第二层隐含层与输出层的权系数o1_before=zeros(4,1); %用于存储前一次的阈值o2_before=zeros(4,1);o3_before=zeros(

13、1,1);w1_before=zeros(4,2); %用于存储前一次的权值w2_before=zeros(4,4);w3_before=zeros(1,4);o1_next=zeros(4,1); %用于存储后一次的阈值o2_next=zeros(4,1);o3_next=zeros(1,1);w1_next=zeros(4,2); %用于存储后一次的权值w2_next=zeros(4,4);w3_next=zeros(1,4);x0,y0=meshgrid(-10:20/(Num-1)-0.001:10); %输入的训练样本yf=(sin(x0).*sin(y0)./(x0.*y0); %

14、被学习的函数x3=zeros(Num,Num);time=0;E=zeros(1,N);for j=1:1:N for i=1:1:Num for h=1:1:Num X=zeros(2,1); X(1,:)=x0(i,h); X(2,:)=y0(i,h); %前向计算: s1=w1*X-o1; x1=1./(1+exp(-s1); %第一层隐含层输出 s2=w2*x1-o2; x2=1./(1+exp(-s2); %第二层隐含层输出 s3=w3*x2-o3; %x3=1./(1+exp(-s3); %输出层输出 x3(i,h)=s3; %反向计算: %e3=(yf(i)-x3)./(exp(

15、s3)+2+exp(-s3); %输出层误差 e3=yf(i)-x3(i); e2=(w3)*e3)./(exp(s2)+2+exp(-s2); %第二层隐含层误差 e1=(w2)*e2)./(exp(s1)+2+exp(-s1); %第一层隐含层误差 w3_next=w3+a*e3*(x2)+c*(w3-w3_before); %权值修正 w2_next=w2+a*e2*(x1)+c*(w2-w2_before); w1_next=w1+a*e1*X+c*(w1-w1_before); o3_next=o3-a*e3+c*(o3-o3_before); %阈值修正 o2_next=o2-a*

16、e2+c*(o2-o2_before); o1_next=o1-a*e1+c*(o1-o1_before); w1_before=w1;w2_before=w2;w3_before=w3; o1_before=o1;o2_before=o2;o3_before=o3; w1=w1_next;w2=w2_next;w3=w3_next; o1=o1_next;o2=o2_next;o3=o3_next; d=yf(i,h); y=x3(i,h); E(j)=E(j)+0.5*(d-y)2); %方差 end end time=time+1; %记录学习次数 if E(j)b break ende

17、nd%检验m,n=meshgrid(-10:(20/(Nj-1)-0.001):10);ym=(sin(m).*sin(n)./(m.*n);m3=zeros(Nj,Nj);for i=1:1:Nj for j=1:1:Nj M=zeros(2,1); M(1,:)=m(i,j); M(2,:)=n(i,j); S1=w1*M-o1; m1=1./(1+exp(-S1); %第一层隐含层输出 S2=w2*m1-o2; m2=1./(1+exp(-S2); %第二层隐含层输出 S3=w3*m2-o3; m3(i,j)=S3; %输出层输出 endendfigure(1);surf(x0,y0,yf);title(学习期望输出);grid on;figure(2);surf(x0,y0,x3);title(学习实际输出);grid on;figure(3);subplot(221);surf(m,n,ym);title(检验期望输出);grid on;subplot(222);surf(m,n,m3);title(检验实际输出);grid on;k=1:time;subplot(212);title(误差曲线);plot(k,E); 友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1