- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MATLAB下BP神經网络设计
MATLAB下BP神经网络的设计开发
BP网络在神经网络工具箱中的仿真
本文利用Matlab6.5神经网络工具箱,以一组动态冲击实验数据为例建立网络模型。实验数据共有13组,将其中对曲线形状有关键性影响的10组数据作为网络的训练数据,另外3组作为测试数据用以验证网络的预测性能。
①BP网络的建立
在建立BP神经网络时,首先要根据应用的问题确定网络结构,即选择网络的层数和隐层节点数。由于本例中实验数据较少,采用最基本的两层网络就可以很好地逼近未知函数了。隐层节点数的选择在神经网络的应用中一直是一个复杂的问题:隐层节点数过多,将导致网络的预测能力不够,并容易导致网络陷入局部极小值难以跳出;隐层节点数过少,网络训练不出来,或不能识别以前没有的样本,且容错性差。在设计中,比较实际的做法是通过对不同神经元数的网络进行训练、对比,找出网络效果最好时的隐层节点数。在本例中,经大量的训练、对比,最终取中间隐层节点数为10。另一方面,BP隐层传递函数采用正切Sigmoid函数tansig,可以逼近任意非线性函数;输出层神经元则采用线性函数purelin,可以把输出值释放到任意值。至此,一个1-10-1的神经网络模型建立完毕。
②BP网络的训练
Matlab神经网络工具箱为用户提供了三种可用于BP网络的训练函数,它们是:trainbp、trainbpx和trainlm。它们用法类似,采用不同的学习规则。trainlm训练函数使用Levenberg-Marquardt算法,是三种规则中迭代次数最少、训练速度最快的一个,缺点是该算法在每次迭代时的计算量比其他算法大,故需要大量的存储空间,对于参数很大的应用是不实用的,考虑到待处理问题的参数较小,因此采用trainlm训练函数。目标误差设为0.01,最大训练步数设为10 000。设定好参数之后开始训练网络,训练结果显示:网络在训练了32次之后达到目标误差0.01,训练停止。
③BP网络的测试
由于初始值取随机值,每次训练得到的结果都不相同,经多次训练得到最好的结果,并记录下此时的权值和阈值。至此,可用固定的网络去进行其他非实验点的最大加速度—静应力值的预测。为了检验该网络是否具有较好的预测能力,将3组测试数据代入网络中进行预测,结果表明:预测数据和原始数据的平均相对误差为3.2726%,由此可以看出拟合结果是相当精确的。至此,利用BP网络成功建立了厚度为50mm、跌落高度为40cm的蜂窝纸板缓冲特性模型。
本文利用BP网络在非线性建模方面的特殊优势,以厚度为50mm、跌落高度为40cm的蜂窝纸板为例,建立神经网络模型。经测试表明:该模型能以较高的精度对非实验点数据进行预测。但是,在建立模型的过程中也发现了一些问题,主要有两个方面:
一是样本数过少,很难精确反映出待建模型的特性,而且容易导致网络在学习过程中难以退出局部极小值。解决的办法是在实验部分增加实验点以增加训练样本数。
二是BP网络本身存在的一些问题,主要表现在收敛速度很慢,有时在局部极小值收敛,不能找到全局极小值。针对这样的情况,可以考虑采用其他算法如:模拟退火、遗传算法等,以保证网络能收敛到全局极小值。
1调试方法
1.1提供训练样本和权值、阈值的初始值
BP算法是有指导的训练,是靠调节各层的权值使网络学会训练样本所表达的规律。
训练样本由输入输出对{Pki:tkj}组成,而
i(i=1,2,…,n,)是输入层神经元的序号,n是输入层神经元数;
j(j=1,2,…,m,)是输出层神经元的序号,m是输出层神经元数;
k(k=1,2,…,q,)是训练对的序号,显然,q的大小决定了训练样本的规模,
Pki的输入方法是:先就某固定的k值,输入i的所有取值下的输入样本;再改变k值,输入i的所有取值下的输入样本;直到k=q,输入i的所有取值下的输入样本为至。tkj的输入方法与Pki相同。
需要注意的是:MATLAB下的神经网络工具箱不必专门指出输入层神经元和输出层神经元的多少,而是自动地从Pki和tkj中辨认,即会默认输入层神经元数为n,输出层神经元数为m。所以Pki和tkj的给定就显得特别重要。
Wih是输入层至隐层的权值,h(h=1,2,…,s1,)是隐层神经元的序号,s1是隐层神经元数。它需要在程序中给出确定的初始值,其输入方法是:就某固定的i值,输入h的所有取值下的权值;Whj是隐层至输出层的权值,其输入方法是:就某固定的h值,输入j的所有取值下的权值,bh和bj分别是隐层、输出层神经元的阈值,它们需要在程序中给出确定的初始值。
1.2有关函数说明
用软件模拟BP网络时,需要用到的函数有:initff、trainbp、simuff、ploterr等,下面分别说明。
在设计BP网络时,只要已知输入向量p、各层的神经元数、各层神经元的传递函数,就
文档评论(0)