#include #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Weffc++" #include #pragma GCC diagnostic pop TEST(PerceptronLearning,XOR) { NeuralNetwork::FeedForward::Perceptron n(2,1); n.randomizeWeights(); NeuralNetwork::Learning::PerceptronLearning learn(n); for(int i=0;i<10;i++) { learn.teach({1,0},{1}); learn.teach({1,1},{1}); learn.teach({0,0},{0}); learn.teach({0,1},{1}); } { std::vector ret =n.computeOutput({1,1}); ASSERT_GT(ret[0], 0.9); } { std::vector ret =n.computeOutput({0,1}); ASSERT_GT(ret[0], 0.9); } { std::vector ret =n.computeOutput({1,0}); ASSERT_GT(ret[0], 0.9); } { std::vector ret =n.computeOutput({0,0}); ASSERT_LT(ret[0], 0.1); } }