public void EvaluateLayer_WithPassthroughAF_WithSingleInput_ReturnsInputValueTimesWeights()
    {
        FullyConnectedNN nn = new FullyConnectedNN(new[] { 1, 2 },
                                                   AF.Passthrough);

        int offsetWeight = 0;

        float[] output = nn.EvaluateLayer(new[] { 1.0f }, 1, new[] { 0.3f, -1.0f }, ref offsetWeight);

        AssertFloat.AreAlmostEqual(0.3f, output[0]);
        AssertFloat.AreAlmostEqual(-1.0f, output[1]);

        offsetWeight = 0;
        output       = nn.EvaluateLayer(new[] { -0.5f }, 1, new[] { 0.5f, -1.0f }, ref offsetWeight);

        AssertFloat.AreAlmostEqual(-0.25f, output[0]);
        AssertFloat.AreAlmostEqual(0.5f, output[1]);
    }
    public void EvaluateLayer_WithPassthroughAF_WithMultipleInputs_ReturnsCorrectValues()
    {
        FullyConnectedNN nn = new FullyConnectedNN(new[] { 2, 2 },
                                                   AF.Passthrough);

        int offsetWeight = 0;

        float[] output = nn.EvaluateLayer(new[] { 1.0f, -1.0f }, 1, new[] { 0.9f, 1.0f, 1.0f, 0.5f }, ref offsetWeight);

        AssertFloat.AreAlmostEqual(-0.1f, output[0]);
        AssertFloat.AreAlmostEqual(0.5f, output[1]);
    }