freeboy 发表于 2007-6-22 10:04

隐层神经元个数是怎么确定的

多数文章中隐神经元的个数是凭经验或实验确定,同时隐神经元与输入层、输出层之间如何连接也没有多少人详细说明,不知道大家都是怎么处理的?

frogfish 发表于 2007-7-6 04:05

这个问题目前还没有特定的方法,精确预测隐层所需的神经元数目到现在还做不到。
一般来说,隐层的神经元越多,结果越精确,但是隐层的神经元过多会大大的加大训练时间,同时隐层的神经元的增加会造成网络的容错能力下降,因此隐层神经元的数目必须要适当的选取,不能太多,也不能太少,需要结合经验,经过多次试算来确定

hahaer 发表于 2007-7-21 13:39

有一个经验的数值
隐层的神经元数目与输入输出层之间有个经验公式
但是我忘记了
楼主可以网络搜索下
应该能找的到

但是我认为2楼的回复是正确的
也就是说经验公式有时不是那么好用的
我做的神经网络滤波器设计 隐层数目时也是调整了好多次

frogfish 发表于 2007-7-24 16:38

经验公式一:
n1=sqrt(n+m)+d
其中:
n1 为隐层单元数
n为输入单元数
m为输出单元数
d为0到10之间的常数

经验公式二:
n1=log2(n)
其中n为输入单元数

jollyhope 发表于 2007-7-31 22:38

我记得还有经验公式3:
n1=sqrt(n×m)+d
其中:
n1 为隐层单元数
n为输入单元数
m为输出单元数
d为1到10之间的常数

zzushi 发表于 2007-8-8 17:32

隐神经元与输入层、输出层之间如何连接  我的理解

"隐神经元与输入层、输出层之间如何连接也没有多少人详细说明, "我不大明白你的意思,不过隐藏层和输入输出层之间是通过非线形函数来进行计算的,最常用的是S型函数,其表达式为f(x)=1/(1+e-ax)上式中e-ax是e的-ax次幂.输入层数据经过S函数得到f(x),然后加上输出层到隐藏层的阈值,即得到隐层的输出.隐藏层到输出层计算步骤一样.一般说来隐藏层数要大于出入层数,可以通过程序得到隐层数目与收敛速度和网络振荡之间的关系,从而确定合适的隐层数目,不过这比较麻烦,一般通过经验公式算得一个数即可,楼上提供的公式都不错的

mcx8305 发表于 2007-9-6 16:48

上面提的经验公式都是不可靠的,现在最可靠的办法是试算!!
然后取最好的那个。

summer 发表于 2007-11-22 21:18

比较多见的是第一个
n1=sqrt(n+m)+d
其中:
n1 为隐层单元数
n为输入单元数
m为输出单元数
d为0到10之间的常数
(参考书上见的)

lxq 发表于 2007-11-25 15:33

原帖由 mcx8305 于 2007-9-6 16:48 发表 http://www.chinavib.com/forum/images/common/back.gif
上面提的经验公式都是不可靠的,现在最可靠的办法是试算!!
然后取最好的那个。
同意

frogfish 发表于 2007-12-5 15:21

原帖由 mcx8305 于 2007-9-6 16:48 发表 http://www.chinavib.com/forum/images/common/back.gif
上面提的经验公式都是不可靠的,现在最可靠的办法是试算!!
然后取最好的那个。

这个很显然,上面的公式只是经验公式,而非理论推导得来
只能作为一个参考,在多数情况下适用而已
页: [1]
查看完整版本: 隐层神经元个数是怎么确定的