神经网络主要由输入层,隐藏层以及输出层构成,合理的选择神经网络的层数以及隐藏层神经元的个数,会在很大程度上影响模型的性能(不论是进行分类还是回归任务)。

输入层的节点数量以及输出层的节点数量是最容易获得的。

输入层的神经元数量等于数据的特征数量(feature个数)。

若为回归,则输出层的神经元数量等于1;若为分类,则输出层的神经元数量为分类的类别个数(如区分猫狗,则为2;区分手写数字0-9,则为10)。

1.确定隐藏层的层数

对于一些很简单的数据集,一层甚至两层隐藏元都已经够了,隐藏层的层数不一定设置的越好,过多的隐藏层可能会导致数据过拟合。对于自然语言处理以及CV领域,则建议增加网络层数。

隐藏层的层数与神经网络的结果如下表所示:

如何确定隐藏层的层数
隐藏层层数 用途
仅能够表示线性可分函数或决策
1 可以拟合任何“从一个有限空间到另一个有限空间的连续映射”的函数
2 搭配适当的激活函数(比如Relu)可以表示任意精度的任意决策边界,并且可以拟合任何精度的任何平滑映射
>2 多出来的隐藏层可以学习复杂的描述(某种自动特征工程)

层数越深,理论上来说模型拟合函数的能力增强,效果会更好,但是实际上更深的层数可能会带来过拟合的问题,同时也会增加训练难度,使模型难以收敛。

因此这里给出的建议是,在使用神经网络时,最好可以参照已有的性能良好的模型。

如果自己手写的话,若数据集很简单,则最好从一两层开始尝试,尽量不要使用太多的层数。在CV、NLP等特殊领域,可以使用CNN、RNN、attention等特殊模型,不能不考虑实际而直接无脑堆砌多层神经网络。

尝试迁移和微调已有的预训练模型,能取得事半功倍的效果

2.确定隐藏层中的神经元数量

在隐藏层中使用太少的神经元将导致欠拟合(underfitting)

相反,使用过多的神经元同样会导致一些问题。首先,隐藏层中的神经元过多可能会导致过拟合(overfitting)

当神经网络具有过多的节点时,训练集中包含的有限信息量不足以训练隐藏层中的所有神经元,因此就会导致过拟合。即使训练数据包含的信息量足够,隐藏层中过多的神经元会增加训练时间,从而难以达到预期的效果。显然,选择一个合适的隐藏层神经元数量是至关重要的。

通常对于某些数据集,拥有较大的第一层并在其后跟随较小的层将导致更好的性能,因为第一层可以学习很多低阶的特征,这些较低层的特征可以馈入后续层中,提取出较高阶特征。

需要注意的是,与在每一层中添加更多的神经元相比,添加层层数将获得更大的性能提升。因此,不要在一个隐藏层中加入过多的神经元

按照经验来说,神经元数量可以由以下规则来确定:

还有另一种方法可供参考,神经元数量通常可以由一下几个原则大致确定:

  • 隐藏神经元的数量应在输入层的大小和输出层的大小之间。
  • 隐藏神经元的数量应为输入层大小的2/3加上输出层大小的2/3。
  • 隐藏神经元的数量应小于输入层大小的两倍。

总而言之,隐藏层神经元是最佳数量需要自己通过不断试验来进行微调,建议从一个较小数值比如1到3层和1到100个神经元开始。

如果欠拟合然后慢慢添加更多的层和神经元,如果过拟合就减小层数和神经元。此外,在实际过程中还可以考虑引入Batch Normalization, Dropout, 正则化等降低过拟合的方法。

同时神经元的数量也可以参考以下公式来确定:

其中:

Nh是输入层神经元个数;

No是输出层神经元个数;

Ns是训练集的样本数;

α是任意值变量,通常取值范围为2-10。

确定神经网络层数以及神经元个数相关推荐

  1. matlab 神经网络设计多层隐含层_[rbf神经网络]请教关于MATLAB中RBF神经网络隐含层神经元个数的问题...

    rbf神经网络 请教关于MATLAB中RBF神经网络隐含层神经元个数的问题 问题补充:MATLAB中用newrb(P, T, goal, spread)创建的神经网络,用于数据的预测,程序可以运行并能 ...

  2. bp神经网络隐含层神经元个数_CNN,残差网络,BP网络

    (以下实验均在MNIST中实现) 一.CNN与CNN改进的对比 众所周知,对于CNN卷积神经网络而言,随着卷积层数的增加,其模型的准确度也会增加.那模型层数和准确度是无限地成正比例关系吗?显然不是的, ...

  3. SSA麻雀算法-LSTM-优化神经网络神经元个数-dropout-batch_size

    1.摘要 本文主要讲解:使用SSA麻雀算法-LSTM-优化神经网络神经元个数-dropout-batch_size 主要思路: SSA Parameters :优化函数.粒子数量.搜索维度.迭代次数 ...

  4. PSO粒子群优化CNN-优化神经网络神经元个数dropout和batch_size等超参数

    1.摘要 本文主要讲解:PSO粒子群优化-CNN-优化神经网络神经元个数dropout和batch_size,目标为对沪深300价格进行预测 主要思路: PSO Parameters :粒子数量.搜索 ...

  5. 灰狼算法优化LSTM超参数-神经元个数-dropout-batch_size

    1.摘要 本文主要讲解:使用灰狼算法优化LSTM超参数-神经元个数-dropout-batch_size 主要思路: 灰狼算法 Parameters : 迭代次数.狼的寻值范围.狼的数量 LSTM P ...

  6. 遗传算法优化LSTM网络结构(实现自动根据适应度函数:即准确率来全局搜索最佳网络结构):主要被优化参数:网络层数,每层的神经元个数,全连接的层数,全连接层的神经元个数。代码有详细注解

    代码视频链接:https://www.bilibili.com/video/BV19q4y1Q7DR/ 代码效果图: 1.优化参数 本文优化的是LSTM的层数参数和各层神经元参数,其中包含了lstm层 ...

  7. 神经网络结构设计指导原则——输入层:神经元个数=feature维度 输出层:神经元个数=分类类别数,默认只用一个隐层 如果用多个隐层,则每个隐层的神经元数目都一样...

    神经网络结构设计指导原则 原文   http://blog.csdn.net/ybdesire/article/details/52821185 下面这个神经网络结构设计指导原则是Andrew NG在 ...

  8. python bp神经网络 隐含层神经元数_【机器学习】python实现BP神经网络实战

    概述: 人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善.联想大家熟悉的回归问题, 神经网络模型实际上是根据训练样本创造出一个多维输入多维输出的函数, 并使用该函数进行预测 ...

  9. 人工神经网络神经元模型,人工神经元算法机制图

    神经网络算法原理 4.2.1概述人工神经网络的研究与计算机的研究几乎是同步发展的. 1943年心理学家McCulloch和数学家Pitts合作提出了形式神经元的数学模型,20世纪50年代末,Rosen ...

最新文章

  1. 先搞清楚了任务究竟是什么再说
  2. mysql preparedstatement 批量update,PreparedStatement的批量更新的有关问题(只执行最后一条插入语句)...
  3. Spring Cloud Stream 体系及原理介绍
  4. jmr连接mysql_MYSQL 优化之延迟关联
  5. zookeeper的设计猜想-阶段一:提交事务请求(投票)
  6. 功能接口简介–在Java 8中重新创建的概念
  7. 关于React-native的介绍以及环境搭建
  8. $ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略
  9. Canvas制作排序算法演示动画
  10. Python学习笔记——GIF倒放处理
  11. 任正非认为自己的成功没有秘诀
  12. Zabbix 系统监控(三)VMware 虚拟平台监控、邮件告警、企业微信告警配置
  13. log4net 不生成日志文件的解决办法
  14. 读书 -- 偷偷暗时间之《暗时间》总结
  15. 怎么设置电脑的固定IP地址?
  16. python向excel写数据_Python向excel中写入数据的方法 方法简单
  17. idea jsp mysql
  18. 武汉大学计算机学院学生工作处,学生工作部
  19. 顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-webrtc(浏览器直接拨打电话)
  20. 【蓝桥杯基础题】2021年省赛填空题—卡片

热门文章

  1. 海南大学2020年申请考核博士研究生招生工作办法
  2. 收藏|56张图片带您认识细菌长啥样?
  3. Sciences:用膳食纤维钓出15株缓解糖尿病的细菌!
  4. R语言plotly可视化:plotly可视化多个直方图、通过bingroup参数设置多个直方图使用相同的bins设置(Share bins between histograms)
  5. R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化PCA所有的主成分绘制散点图矩阵、降维后的两个(三个)核心主成分的二维、三维可视化图形、方差解释的量、载荷图等
  6. R语言text函数在R原生可视化结果中添加文本标签、内容:指定文本显示的位置、颜色、字体大小等(Position、Change Color 、 Size of Text)
  7. R语言distCosine函数计算大圆距离实战(Law of Cosines Great Circle Distance)
  8. R程序设计中的IF、IFELSE、SWITCH
  9. 影像组学视频学习笔记(6)-特征筛选之LASSO回归(理论)、Li‘s have a solution and plan.
  10. java常用注解汇总_Spring常用注解汇总