11
我经历了整个文档,没有找到如何设置RBF网络。我在ConsoleExmpales/Examples/Radial中发现了一些RBF示例,但它看起来不再起作用,因为在Encog中已经更改了一些方法。Encog C#RBF网络,如何启动?
到目前为止,我坚持这个:
public static double[][] XORInput = {
new[] {0.0, 0.0},
new[] {1.0, 0.0},
new[] {0.0, 1.0},
new[] {1.0, 1.0}
};
public static double[][] XORIdeal = {
new[] {0.0},
new[] {1.0},
new[] {1.0},
new[] {0.0}
};
int dimension = 8;
int numNeuronsPerDimension = 64;
double volumeNeuronWidth = 2.0/numNeuronsPerDimension;
bool includeEdgeRBFs = true;
RBFNetwork n = new RBFNetwork(dimension, numNeuronsPerDimension, 1, RBFEnum.Gaussian);
n.SetRBFCentersAndWidthsEqualSpacing(0, 1, RBFEnum.Gaussian, volumeNeuronWidth, includeEdgeRBFs);
//n.RandomizeRBFCentersAndWidths(0, 1, RBFEnum.Gaussian);
INeuralDataSet trainingSet = new BasicNeuralDataSet(XORInput, XORIdeal);
SVDTraining train = new SVDTraining(n, trainingSet);
int epoch = 1;
do
{
train.Iteration();
Console.WriteLine("Epoch #" + epoch + " Error:" + train.Error);
epoch++;
} while ((epoch < 1) && (train.Error > 0.001));
当我跑,我得到错误“RBF神经元的总数必须有一些整数‘尺寸’的力量。”在SetRBFCentersAndWidthsEqualSpacing。如果我改变这个方法RandomizeRBFCentersAndWidths,直到train.iteration()到达,我得到“索引是在数组边界之外”。
我了解网络如何RBF工作,但我很困惑在SetRBFCentersAndWidthsEqualSpacing方法的所有参数,有人可以解释更详细?
我忘了改变我的尺寸,2是正确的。感谢您指向numNeuronsPerDimension,现在它工作!我已经试过8,32,它不工作,所以只有16,64,256。 – EdWood
WRT功率的尺寸是RBF中心和等宽度间距算法的要求 –
我认为在232线上的.NET版本中存在一个错误: var expectedSideLength =(int)Math.Pow(totalNumHiddenNeurons,1.0d/dimensions); double cmp = Math.Pow(totalNumHiddenNeurons,1.0d/dimensions);如果(expectedSideLength!= cmp)这两个变量不能相等,因为“(int)”将该数字四舍五入。这是巧合,它适用于XOR示例,与19不同的dimenson它不会工作。 – EdWood