예제 #1
0
        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]);
        }
예제 #2
0
        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]);
        }
예제 #3
0
        public static NeuralNet GetRandomMultiLayerNeuralNet(NeuralNetParameters parameters)
        {
            var multiLayerNeuralNet = GetMultiLayerNeuralNet(parameters);

            multiLayerNeuralNet.Randomize();

            return(multiLayerNeuralNet);
        }
예제 #4
0
 public static NeuralNet GetMultiLayerNeuralNet(NeuralNetParameters parameters)
 {
     return(new NeuralNet(parameters));
 }