神经网络2193346348.ppt

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

BP神经网络 BP网络是由一个输入层,一个或多个隐层以及一个输出层组成,上下层之间实现全连接,而每层神经元之间无连接。 网络的学习过程包括正向传播和反向传播。 在正向传播进程中,输入信息从输入层经隐层加权处理传向输出层,经功能函数运算后得到的输出值与期望值进行比较,若有误差,则误差反向传播,沿原先的连接通道返回,通过逐层修改各层的权重系数,减小误差。随着这种误差逆向传播修正的不断进行,网络对输入模式响应的正确率也不断上升。 三层BP神经网络的网络结构 输入、输出层的设计 输入的神经元可以根据需要求解的问题和数据表示方式确定。在故障诊断中,输入层神经元个数一般等于每个样本中包含的特征值的个数。 输出层的维数可根据设计者的要求确定,在故障诊断中,一般将BP网络用作分类器,如类别模式一共有m个,则输出层神经元的个数为m。 隐层的设计 隐层的神经元个数选择是一个较为复杂的问题,往往需要设计者多次试验来确定,因而不存在一个理想的解析式来表示。 隐层单元的个数与问题的要求、输入/输出单元的数目都有着直接关系。隐层单元个数太多会导致学习时间过长、误差不一定最佳,也会导致容错性差、不能识别以前没有见到的样本等问题,因此一定存在一个最佳的隐层单元数。 以下三个公式可作为选择最佳隐层单元数时的参考公式: ,其中 是输入层神经元数, 是隐层神经元数。 ,其中,m是输出神经元数,n是输入神经元数,a是[l,10]之间的常数。 ,其中n是输入神经元数。 学习速率 学习速率决定每一次循环训练中所产生的权值变化量。大的学习速率可能导致系统的不稳定,但小的学习速率将会导致训练较长,收敛速度很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值。 所以在一般情况下。倾向于选取较小的学习率以保证系统的稳定性。学习速率将的选取范围在0.01~0.8之间。 期望误差的选取 在设计网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值,这个所谓的“合适”,是相对于所需要的隐含层的节点数来确定,因为较小的期望误差值是要靠增加隐含层的节点,以及训练时间来获得的。 例子 首先提取出有效特征值,并进行归一化处理。 设计BP神经网络,确定其各个参数。 建立神经网络并对其进行训练。 对模式进行识别。 特征值 训练样本: 测试样本: 输出目标向量: 确定隐层神经元 由第一个公式进行计算。 由于输入为9个神经元,输出为3个神经元,由参考公式可知隐层神经元在19左右。 下面就设计一个隐层可以随意改变的BP神经网络,通过误差对比确定隐层数目,隐层神经元在15~22之间进行比较。 训练代码 res=1:8; s=15:22; for i=1:8 net=newff(minmax(训练数据),[s(i),3],{tansig,logsig},traingdx); net.trainParam.epochs = 200; net.trainParam.lr = 0.1; net.trainParam.goal = 0.01; net=train(net,训练数据,目标向量); y=sim(net,训练数据); error=y-目标向量; res(i)=norm(error); end 设定网络的隐含层神经元的传递函数为tansig,输出层神经元的传递函数为logsig,目标误差为0.01 。 结果如下表: 上表表明,在经过200次的训练后(训练函数采用traingdx),隐含层神经元为19的BP网络对函数的逼近效果最好,因为它的误差最小而且网络经过74次训练就达到了目标误差。所以这里将网络隐含层的神经元数目设定为19。 确定BP网络的最终结构 网络训练 神经网络的建立: net=newff(minmax(训练数据),[隐层神经元个数,3],{tansig,logsig},trainlm); 网络的训练: net.trainParam.epochs=200;训练次数 net.trainParam.lr = 0.1;学习速率 net.trainParam.goal=0.001;训练误差 net=train(net,训练数据,目标向量); 训练结果 TRAINLM, Epoch 0/200, MSE 0.462785/0.001, Gradient 2.16613/1e-010 TRAINLM, Epoch 3/200, MSE 00.001, Gradient 0.0269758/1e-010 TRAINLM, Performance goal met. 训练误差为0.000

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档