Exemplo n.º 1
0
TEST(TestNeuralNetwork, zeroInputAndWeights)
{
    NeuralNetwork nn {2, 2};
    vector<float> input {1.0f, 1.0f};
    vector<float> expected = {0.0f, 0.0f};
    vector<float> output;

    nn.setWeights([]() {
        return 0.0f;
    });
    nn.calc();
    nn.getOutput(output);

    ASSERT_EQ(expected.size(), output.size());
    for (int i = 0; i < expected.size(); ++i) {
        EXPECT_EQ(expected[i], output[i]);
    }
    EXPECT_EQ(0, nn.calcCost(expected));
}
Exemplo n.º 2
0
TEST(TestNeuralNetwork, feedFordward)
{
    NeuralNetwork nn {4, 3, 2};
    float curWeight = 1.0f;
    vector<float> input {0.1f, 0.2f, 0.3f, 0.4f};
    vector<float> expected {957.0f, 1177.0f};
    vector<float> output;

    nn.setWeights([&curWeight] {return curWeight++;});

    ASSERT_EQ(24, curWeight);

    nn.setInput(input);
    nn.calc();
    nn.getOutput(output);

    ASSERT_EQ(expected.size(), output.size());
    for (int i = 0; i < expected.size(); ++i)
        EXPECT_FLOAT_EQ(expected[i], output[i]);
}
Exemplo n.º 3
0
TEST(TestNeuralNetwork, activationFunction)
{
    int timesActivCalled = 0;
    ActivationFunction af([&timesActivCalled](float) {
        timesActivCalled++;
        return 1.0f;
    }, [](float) {
        return 0.0f;
    });
    NeuralNetwork nn {2, 3, 3, 2};
    vector<float> expected = {1.0f, 1.0f};
    vector<float> output;

    nn.setActivationFunction(af);
    nn.calc();
    nn.getOutput(output);

    ASSERT_EQ(expected.size(), output.size());
    for (int i = 0; i < expected.size(); ++i)
        EXPECT_FLOAT_EQ(expected[i], output[i]);
    EXPECT_EQ(8, timesActivCalled);
}