示例#1
0
        public void CalculateOutput_HasAllInputs_CalculatesAndStoresValue()
        {
            var neuron = new Neuron();

            neuron.AddInputNeuron(new Neuron(14), .5m);
            neuron.AddInputNeuron(new Neuron(29), .25m);
            neuron.AddInputNeuron(new Neuron(4), -.75m);


            Assert.That(neuron.CalculateOutput(), Is.EqualTo(11.25m));

            Assert.That(neuron.CalculateOutput(), Is.EqualTo(11.25m));
        }
示例#2
0
        public void CalculateOutput_MultiLayer_CalculatesAndStoresValue()
        {
            var inputNeuron1 = new Neuron("inputNeuron1", 1);
            var inputNeuron2 = new Neuron("inputNeuron2", 2);

            var layer1Neuron1 = new Neuron("layer1Neuron1");
            var layer1Neuron2 = new Neuron("layer1Neuron2");

            var outNeuron1 = new Neuron("outNeuron1");
            var outNeuron2 = new Neuron("outNeuron2");


            layer1Neuron1.AddInputNeuron(inputNeuron1, .1m);
            layer1Neuron1.AddInputNeuron(inputNeuron2, .2m);

            layer1Neuron2.AddInputNeuron(inputNeuron1, .3m);
            layer1Neuron2.AddInputNeuron(inputNeuron2, .4m);

            outNeuron1.AddInputNeuron(layer1Neuron1, .5m);
            outNeuron1.AddInputNeuron(layer1Neuron2, .6m);

            outNeuron2.AddInputNeuron(layer1Neuron1, .7m);
            outNeuron2.AddInputNeuron(layer1Neuron2, .8m);


            Assert.That(outNeuron1.CalculateOutput(), Is.EqualTo(0.91m));
            Assert.That(outNeuron2.CalculateOutput(), Is.EqualTo(1.23m));
        }
示例#3
0
        public void CalculateOutput_CorrectValues()
        {
            var n = new Neuron(2);

            n.weights = new List <double> {
                1.0, 2.0
            };
            n.bias = -1.0;

            Assert.AreEqual(0.9525741268224331, n.CalculateOutput(new List <double> {
                2.0, 1.0
            }));
            Assert.AreEqual(0.5, n.CalculateOutput(new List <double> {
                3.0, -1.0
            }));
        }
示例#4
0
        public void CalculateOutput_MockingFunctions_OutputReturned()
        {
            var activationFunction = new Mock <IActivationFunction>();

            activationFunction.Setup(x => x.CalculateOutput(It.IsAny <double>())).Returns(111);

            var inputFunction = new Mock <IInputFunction>();

            inputFunction.Setup(x => x.CalculateInput(It.IsAny <List <ISynapse> >())).Returns(23);

            var neuron = new Neuron(activationFunction.Object, inputFunction.Object);

            Assert.AreEqual(111, neuron.CalculateOutput());
        }
示例#5
0
        public void CalculateOutput_ShouldWork()
        {
            int[]          neuronAmounts  = new int[] { 4, 3, 5 };
            NetworkBuilder networkBuilder = new();
            Network        network        = networkBuilder.AddLayers(neuronAmounts).Build();

            network.Layers[0].Neurons.ForEach(n => n.Weights = new List <double>(new double[] { .1, .2, .3, .4 }));
            network.Layers[1].Neurons.ForEach(n => n.Weights = new List <double>(new double[] { .4, .5, .6, .7, .8 }));

            double expectedOutput = 12.5;
            double actualOutput   = Neuron.CalculateOutput(new double[] { 5, 6, 2, 3 }, new double[] { .9, .8, .7, .6 });

            Assert.Equal(expectedOutput, actualOutput);
        }