Я прошел всю документацию и не нашел, как установить сеть RBF. Я нашел пример RBF в ConsoleExpales/Examples/Radial, но похоже, что он больше не работает, поскольку некоторые методы были изменены в 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 должно быть целым числом по силе" измерений ". на SetRBFCentersAndWidthsEqualSpacing. Он работает, если я изменяю этот метод для RandomizeRBFCentersAndWidths до достижения train.iteration(), где я получаю" Index был за пределами массива".
Я понимаю, как работает сеть RBF, но я запутался из всех параметров в методе SetRBFCentersAndWidthsEqualSpacing, может кто-нибудь объяснить это более подробно?.