BP神经网络的设计方法

神经网络的设计主要包括网络层数(隐含层数)、输入节点数、隐含节点数、输出节点数、传输函数、训练方法、训练参数。

  • 网络层数
    网络层数可以从一层到多层。但理论上证明,单个隐含层的网络可以通过适当的增加神经元节点的个数实现任意非线性映射。因此,对于大部分应用场合,单个隐含层即可满足训练要求。但如果样本太多,也可增加隐含层数的层数来减少网络规模。

  • 输入层节点数
    输入层节点数取决于输入向量的维数。应用神经网络解决实际问题时,首先应从问题中提炼出一个抽象模型,形成输入空间和输出空间。因此,数据的表达方式会影响输入向量的维数大小。例如,如果输入的是64×64的图像,则输入向量应为图像中所有的像素形成的4096维向量。如果待解决的问题是二元函数拟合,则输入向量应为二维向量。

  • 隐含层节点数
    隐含层节点数对BP网络的性能有很大影响。一般较多的隐含层节点数可以带来更好的性能,但可能导致训练时间过长。目前并没有一个理想的解析式可以用来确定合理的神经元节点个数,这也是BP网络的一个缺陷。通常的做法是采用经验公式给出估计值:
    (1)

    其中kkk,MMM为隐含层神经元个数,nnn为输入层神经元个数。如果i>Mi>Mi>M,规定CMi=0C^i_M=0CMi​=0
    (2)M=n+m+aM=\sqrt{n+m}+aM=n+m​+a,mmm和nnn分别是输出层和输入层的神经元个数,aaa是[0,10]之间的常数。
    (3)M=log2nM=log_2nM=log2​n,nnn为输入层神经元个数

  • 输出层神经元个数
    输出层神经元的个数同样需要根据从实际问题中得到的抽象模型来确定。如在模式分类问题中,如果共有n种类别,则输出可以采用n个神经元,如n=4时,0100表示某输入样本属于第二个类别。也可以将节点个数设计为[1og2n]个,[x]表示不小于x的最小整数。
    由于输出共有4种情况,因此采用二维输出即可覆盖整个输出空间,00、01、10和11分别表示一种类别。

  • 传递函数选择
    一般隐含层使用Sigmoid函数,而输出层使用线性函数。如果输出层也采用Sigmoid函数,则输出值将会被限制在(0,1)或(-1,1)之间。

  • 训练方法选择
    BP网络除了标准的最速下降法以外,还有若干种改进的训练算法。训练算法的选择与问题本身、训练样本的个数都有关系。一般来说,对于包含数百个权值的函数逼近网络,使用LM算法收敛速度最快,均方误差也较小。但LM算法对于模式识别相关问题的处理能力较弱,且需要较大的存储空间。对于模式识别问题,使用RPROP算法能收到较好的效果。SCG算法对于模式识别和函数逼近问题都有较好的性能表现。
    串行或批量训练方式的选择,也是神经网络设计过程中需要确定的内容。串行方式需要更小的存储空间,且输入样本具有一定随机性,可以避免陷入局部最优。批量方式的误差收敛条件非常简单,训练速度快。

  • 初始权值的确定

  • BP网络采用迭代更新的方式确定权值,因此需要一个初始值。一般初始值都是随机给定的,这容易造成网络的不可重现性。初始值过大或过小都会对性能产生影响,通常将初始权值定义为较小的非零随机值,经验值为(−2.4/F-2.4/F−2.4/F,2.4/F2.4/F2.4/F)或(−3/F-3/\sqrt{F}−3/F​,3/F3/\sqrt{F}3/F​)之间,其中FFF为权值输入端连接的神经元个数。
    确定以上参数后,将训练数据进行归一化处理,并输入网络中进行学习,若网络成功收敛,即可得到所需的神经网络。

BP神经网络设计方法相关推荐

  1. BP神经网络设计与实现

    BP神经网络设计与实现 实验要求 基于Python原生实现,不调用深度学习框架函数,完成代码编写 实验内容 1.详细论述本次实验的算法设计及描述. 2.双月数据构建生成及使用方法. 3.根据误差反向传 ...

  2. 【智能控制实验】基于MATLAB的BP神经网络设计

    实验五:基于MATLAB的BP神经网络设计 一.实验要求: 重点是掌握BP神经网络的学习算法原理和代码设计方法,应用MATLAB编写BP神经网络训练方法:应用神经网络工具箱设计BP神经网络实现对输入输 ...

  3. matlab神经网络的简单程序设计,BP神经网络设计的matlab简单实现

    例1 采用动量梯度下降算法训练 BP 网络.用matlab自带的神经网络训练样本定义如下: 输入矢量为 p =[-1 -2 3  1 -1  1 5 -3] 目标矢量为   t = [-1 -1 1  ...

  4. Matlab中newff函数使用方法和搭建BP神经网络的方法

    1. newff()函数使用方法 net = newff(data,label,[8,8],{'tansig','purelin'},'trainlm') (1)输入参数详细介绍: data:训练时网 ...

  5. 基于bp神经网络的字符识别matlab,基于bp神经网络的数字识别的Matlab实现

    <基于bp神经网络的数字识别的Matlab实现>由会员分享,可在线阅读,更多相关<基于bp神经网络的数字识别的Matlab实现(18页珍藏版)>请在人人文库网上搜索. 1.基于 ...

  6. 模式识别八--三层BP神经网络的设计与实现

    文章转自:http://www.kancloud.cn/digest/prandmethod/102850 本文的目的是学习和掌握BP神经网络的原理及其学习算法.在MATLAB平台上编程构造一个3-3 ...

  7. 模式识别:三层BP神经网络的设计与实现

    本文的目的是学习和掌握BP神经网络的原理及其学习算法.在MATLAB平台上编程构造一个3-3-1型的singmoid人工神经网络,并使用随机反向传播算法和成批反向传播算法来训练这个网络,这里设置不同的 ...

  8. BP神经网络python简单实现

    BP神经网络的原理在网上有很详细的说明,这里就不打算细说,这篇文章主要简单的方式设计及实现BP神经网络,并简单测试下在恒等计算(编码)作测试. BP神经网络模型图如下 BP神经网络基本思想 BP神经网 ...

  9. BP神经网络在期货价格预测中的应用

    摘 要 BP网络通过对以往历史数据的学习,找出期货市场发展的内在规律,并将其存储在网络具体的权值.阀值中,用以预测未来的走势.文章在深入分析期货市场预测面临的关键问题的基础上,探讨利用BP(Back ...

  10. bp 神经网络 优点 不足_【学术论文】基于灰度共生矩阵和BP神经网络的乳腺肿瘤识别...

    摘要 乳腺肿瘤是女性病发率极高的一种肿瘤疾病, 但也是一种可以通过早期确诊.提早治疗来降低病死率的一种疾病.提出灰度共生矩阵结合BP神经网络的方法, 提高乳腺肿瘤的识别率.首先将红外乳腺图像进行预处理 ...

最新文章

  1. ffmpeg源码分析——av_register_all
  2. [Angularjs]ng-show和ng-hide
  3. Spring3 M2 quartz-2.1.7 解决bean不能注入问题
  4. /usr/lib/sudo/sudoers.so must be only be writable by owner
  5. 原码、反码、补码,计算机中所有的数都是以补码的形式存储的
  6. Postgresql 查看当前数据库所有的触发器
  7. 今日恐慌与贪婪指数为66 贪婪程度有所缓解
  8. Exchange 2016 之分层通讯簿
  9. webService发布在IIS服务器上
  10. em模型补缺失值_EM算法学习(三)
  11. fluent二维叶型仿真_【ICEPAK】手把手教你热仿真--认识ICEPAK
  12. Windows 2012重置系统管理员密码
  13. MySQL高性能:索引、锁、事务、分库分表如何撑起亿级数据
  14. 什么是ubuntu ?
  15. 虚拟场景+AR特效,世优科技助力京东手机华为新品发布会MR直播
  16. css li修改小圆点的颜色
  17. 目前宽带的接入方式有哪些
  18. 难复制薇娅李佳琦,如涵的网红牌何时能在资本市场出奇制胜?
  19. Web Components使用(一)
  20. python自动垃圾分类_现在垃圾都得分类,如何利用Python快速实现一个垃圾分类APP?...

热门文章

  1. java实现萤火虫算法_基于萤火虫算法的矢量图生成方法
  2. Zalo营销大师2019版
  3. Java速成:Boot入门
  4. TokenInsight对话首席——暗流涌动,钱包如何引领数字资产新生态
  5. 个人财务管理系统,Excel记账表格分享
  6. easyUi后台,模板实现前台简易版网上书店功能实现
  7. 毕业设计——基于SSM的JAVA图书管理系统(有图书管理前台+后台)
  8. Pandas 速查手册中文版
  9. 关于win10系统常用的c盘清理技巧
  10. 黑群晖linux删除文件夹命令,不拆机直接修改黑群晖的SN和MAC