public void MutateTest() { var neuralNetParameters = new NeuralNetParameters() { ActivationFunctionType = EActivationFunctionType.Tanh, InputLayerSize = 2, HiddenLayerSize = 3, OutputLayerSize = 2, NumberOfHiddenLayers = 1 }; var neuralNet = new NeuralNet(neuralNetParameters); var input = new double[] { 1.0, -1.0 }; neuralNet.Randomize(); var result1 = neuralNet.Think(input); neuralNet.Mutate(1.0); var result2 = neuralNet.Think(input); Assert.AreEqual(2, result1.Length); Assert.AreEqual(2, result2.Length); Assert.AreNotEqual(result1[0], result2[0]); Assert.AreNotEqual(result1[1], result2[1]); }
public void CrossoverIdenticalNeuralNetsTest() { var neuralNetParameters = new NeuralNetParameters() { ActivationFunctionType = EActivationFunctionType.Tanh, InputLayerSize = 2, HiddenLayerSize = 3, OutputLayerSize = 2, NumberOfHiddenLayers = 1 }; var neuralNet1 = new NeuralNet(neuralNetParameters); neuralNet1.Randomize(); var neuralNet2 = neuralNet1.GetClone(); var child = neuralNet1.Crossover(neuralNet2); var input = new double[] { 1.0, -1.0 }; var neuralNet1Result = neuralNet1.Think(input); var neuralNet2Result = neuralNet2.Think(input); var childResult = child.Think(input); Assert.AreEqual(2, childResult.Length); Assert.AreEqual(neuralNet1Result[0], childResult[0]); Assert.AreEqual(neuralNet1Result[1], childResult[1]); Assert.AreEqual(neuralNet2Result[0], childResult[0]); Assert.AreEqual(neuralNet2Result[1], childResult[1]); }
public static NeuralNet GetRandomMultiLayerNeuralNet(NeuralNetParameters parameters) { var multiLayerNeuralNet = GetMultiLayerNeuralNet(parameters); multiLayerNeuralNet.Randomize(); return(multiLayerNeuralNet); }
public static NeuralNet GetMultiLayerNeuralNet(NeuralNetParameters parameters) { return(new NeuralNet(parameters)); }