public void TestDynamicXOR() { Func <int, int, double> inputFunc = OnInputFunc; Func <int, int, double> idealFunc = delegate(int chunk, int index) { return(XOR.XORIdeal[chunk][index]); }; var input = new FuncMLDataProvider(inputFunc, XOR.XORInput.Length, XOR.XORInput[0].Length); var ideal = new FuncMLDataProvider(idealFunc, XOR.XORIdeal.Length, XOR.XORIdeal[0].Length); var ds = new DynamicMLDataSet(input, ideal); var network = new BasicNetwork(); network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, ds.InputSize)); network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, ds.InputSize + 1)); network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, ds.IdealSize)); network.Structure.FinalizeStructure(); network.Reset(42); var trainer = new Encog.Neural.Networks.Training.Propagation.Resilient.ResilientPropagation(network, ds); int maxIteration = 300; int iteration = 0; do { trainer.Iteration(); Debug.WriteLine(++iteration + ": Error = " + trainer.Error); } while(trainer.Error > 0.0001 && maxIteration > iteration); Assert.IsTrue(iteration < maxIteration); }
public void TestDynamicXOR() { Func<int, int, double> inputFunc = OnInputFunc; Func<int, int, double> idealFunc = delegate(int chunk, int index) { return XOR.XORIdeal[chunk][index]; }; var input = new FuncMLDataProvider(inputFunc, XOR.XORInput.Length, XOR.XORInput[0].Length); var ideal = new FuncMLDataProvider(idealFunc, XOR.XORIdeal.Length, XOR.XORIdeal[0].Length); var ds = new DynamicMLDataSet(input, ideal); var network = new BasicNetwork(); network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, ds.InputSize)); network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, ds.InputSize + 5)); network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, ds.IdealSize)); network.Structure.FinalizeStructure(); network.Reset(42); var trainer = new Encog.Neural.Networks.Training.Propagation.Resilient.ResilientPropagation(network, ds); int maxIteration = 300; int iteration = 0; do { trainer.Iteration(); Debug.WriteLine(++iteration + ": Error = " + trainer.Error); } while(trainer.Error > 0.0001 && maxIteration > iteration); Assert.IsTrue(iteration < maxIteration); }