人工神经网络BP算法及其改进在DELPHI下的实现.doc

人工神经网络BP算法及其改进在DELPHI下的实现.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工神经网络BP算法及其改进在DELPHI下的实现

人工神经网络BP算法及其改进在Delphi下的实现 指导老师:武妍 学号:0520080227 姓名:何斌 摘要 :人工神经元网络的BP学习算法在小规模相似模式的识别中得到了广泛的应用 ,本文给出了一种BP算法在Delphi 7.0环境下的实现方法。 关键词 :人工神经元网络 ;BP算法 ;Delphi 7.0 1 引言 人工神经元网络是由大量简单单元以及这些单元的分层组织大规模并行联结而成的一种网络 ,它力图象生物神经系统一样处理事物 ,实现人脑的某些功能[1] 半个世纪以来 ,它在非线性系统、优化组合、模式识别等领域得到了广泛的应用,特别是 80年代以来 ,人们应用前馈网络的误差反算法BP(BackPropagation)对小规模相似模式的识别进行了大量的研究. 2 BP算法权值及阈值调整公式 误差反传算法 (BP)是Rnmenhort在 1986年提出的一种前馈阶层网络的学习算法 前馈阶层网络包含输入层、隐含层和输出层 ,各层之间实行全连接 ,层内神经元之间无连接 ,网络的拓扑结构如图 1所示: n为输入层神经元的数目 ,p为隐含层层神经元的数目 ,m为输出层神经元的数目 ,对于一个输入样本 ,经过权值、阈值和作用函数运算后 ,得到一个输出 ,然后让它与期望的样本进行比较 ,若有偏差 ,则从输出开始反向传播该偏差 ,进行权值、阈值调整 ,使网络输出逐渐与希望输出一致.设网络输入层共有n个神经元 ,序号为h,h=1,2,…,n,隐含层共有p个神经元,序号为i,i=1,2,…,p,输出层有m个神经元,序号j,j=1,2,…,m 输入层中第h个神经元与隐含层中第i个神经元之间的连接权为vhi,隐含层中第i个神经元的阈值为θi,隐含层中第i个神经元与输出层中第j个神经元之间的连接权为wij,输出层中第j个神经元的阈值为γj,Oi为隐含层中第i个神经元的输出,yj为输出层中第j个神经元的输出。 BP训练算法流程的描述 3 在delphi 7.0环境下实现BP改进算法的关键步骤 3.1 对于各初始变量赋值 各初始变量的声明如下:(以下变量全部声明为全局变量) feature:array of real; //输入层各单元的输出值 th1:array of real; //隐含层各神经元的阈值 th2:array of real; //输出层各神经元的阈值 w1:array of array of real; //输入层于隐含层之间的权值 w2:array of array of real; //输出层与隐含层之间的权值 Y1,Y2:array of real; //隐含层、输出层各神经元的输出 D1,D2:array of real; //隐含层、输出层各神经元的一般化误差 在对变量赋初始值时,考虑过两种方案: a. 人工赋值 给出特定输入控件,逐个进行赋值。 部分输入算法如下: //以下对输入层神经元初始赋值(一维) feature[0]=……feature[1]=…… j := 1; if edit1.Text then begin str := edit8.Text; str1:=; for i:=0 to inputnum-1 do begin str3 := str; str1 := copy(str3,length(str1)+1,Pos(,,str3)-1);//获取字符串然后获取长度 if AnsiContainsText(str3,,) then //返回字符串AText是否包含子串ASubText begin str2 := copy(str3,1,Pos(,,str3)-1);//获取自己想要的值 j := j + 1; if jinputnum+1 then Exit; //这里变量的值根据你数组的大小定 end else begin str2 := copy(str3,1,Length(str3)); end; str3 := copy(str3,Pos(,,str3)+1,length(str3)-len

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档