ドキュメント全体を調べましたが、RBF ネットワークの設定方法が見つかりませんでした。ConsoleExmpales/Examples/Radial で RBF の例をいくつか見つけましたが、Encog でいくつかのメソッドが変更されたため、もう機能しないようです。
これまでのところ、私はこれにこだわっています:
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 ニューロンの総数は、'dimensions' 乗の整数でなければなりません」というエラーが表示されます。SetRBFCentersAndWidthsEqualSpacingで。このメソッドをRandomizeRBFCentersAndWidthsに変更すると、 train.iteration()に到達するまで機能します。ここで、「インデックスが配列の境界外でした」というメッセージが表示されます。
RBF ネットワークがどのように機能するかは理解していますが、SetRBFCentersAndWidthsEqualSpacingメソッドのすべてのパラメーターに混乱しています。誰か詳しく説明してもらえますか?