Encog C# RBF network, how to start?

asked9 years ago
last updated9 years ago
viewed919 times
Up Vote11Down Vote

I went through whole documantation and didnt find how to set RBF network. I found some RBF example in ConsoleExmpales/Examples/Radial, but it looks like it doesnt work anymore, beceause some methods have been changed in Encog.

So far I am stuck on this:

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));

When I run this, I get error "Total number of RBF neurons must be some integer to the power of 'dimensions'." on . It works if I change this method for until is reached, where i get " Index was outside the bounds of the array".

I understand how RBF network works, but I am confused from all parameters in method, can someone explain it more detail?.