Encog RBF C#,RBF神经元的总数必须是'维'的幂的某个整数

时间:2016-10-16 16:37:25

标签: neural-network encog

我经常出错使用C#中的方法 SetRBFCentersAndWidthsEqualSpacing ,RBF神经元的总数必须是'维'的幂的整数。

在Encog中熟悉RBF网络的人是否可以检查RBFNetwork.cs中的第232行。我想可能有一个错误或者我错过了一些东西:

var expectedSideLength = (int) Math.Pow(totalNumHiddenNeurons, 1.0d/dimensions); 
double cmp = Math.Pow(totalNumHiddenNeurons, 1.0d/dimensions); 
if (expectedSideLength != cmp) -> error

这两个变量不能相等,因为(int)对数字进行舍入。巧合的是它适用于XOR示例,例如它不适用于不同的尺寸,例如19。

这就是我创建RBF网络的方式:

dataSet is VersatileMLDataSet 
RBFNetwork n = new RBFNetwork(dataSet.CalculatedInputSize, dataSet.Count, 1, RBFEnum.Gaussian);
n.SetRBFCentersAndWidthsEqualSpacing(0, 1, RBFEnum.Gaussian, 2.0/(dataSet.CalculatedInputSize * dataSet.CalculatedInputSize), true);

我的数据集有19个属性(维度),有731条记录。

1 个答案:

答案 0 :(得分:0)

隐藏神经元的数量是一个整数,它被提升到输入神经元数量的幂。因此,如果您有3个输入属性且窗口大小为2,则隐藏神经元将是任意整数(例如3),增加到6(3 x 2)或729的幂。这限制了输入属性和窗口大小的数量,如隐藏神经元的数量非常快地变得非常大。