我经常出错使用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条记录。
答案 0 :(得分:0)
隐藏神经元的数量是一个整数,它被提升到输入神经元数量的幂。因此,如果您有3个输入属性且窗口大小为2,则隐藏神经元将是任意整数(例如3),增加到6(3 x 2)或729的幂。这限制了输入属性和窗口大小的数量,如隐藏神经元的数量非常快地变得非常大。