Files
NeuralNetworkLib/tests/basis.cpp

75 lines
2.1 KiB
C++

#include <NeuralNetwork/BasisFunction/Linear.h>
#include <NeuralNetwork/BasisFunction/Product.h>
#include <NeuralNetwork/BasisFunction/Radial.h>
#include <NeuralNetwork/Network.h>
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#include <gtest/gtest.h>
#pragma GCC diagnostic pop
NEURAL_NETWORK_INIT();
TEST(Linear,FourElements) {
NeuralNetwork::BasisFunction::Linear l;
ASSERT_EQ(39.0, l({1,2,3,5},{1,2,3,5}));
}
TEST(Linear,FiveElements) {
NeuralNetwork::BasisFunction::Linear l;
ASSERT_EQ(88.0, l({1,2,3,5,7},{1,2,3,5,7}));
}
TEST(Linear,HundredElements) {
NeuralNetwork::BasisFunction::Linear l;
std::vector<float> w;
for(int in=0;in<100;in++) {
w.push_back(2);
}
ASSERT_EQ(400.0, l(w,w));
}
TEST(Linear,FivetyFiveElements) {
NeuralNetwork::BasisFunction::Linear l;
std::vector<float> w;
for(int in = 0; in < 55; in++) {
w.push_back(2);
}
ASSERT_EQ(220.0, l(w, w));
}
TEST(Product,Product) {
NeuralNetwork::BasisFunction::Product p;
std::vector<float> w({0,0.501,1});
std::vector<float> i({0,0.2,0.3});
ASSERT_GT(p(w,i), 0.05999);
ASSERT_LT(p(w,i), 0.06001);
}
TEST(Linear, Serialize) {
NeuralNetwork::BasisFunction::Linear l;
std::string tmp = l.serialize().serialize();
NeuralNetwork::BasisFunction::BasisFunction *deserialized =NeuralNetwork::BasisFunction::Factory::deserialize(l.serialize()).release();
ASSERT_EQ(tmp, deserialized->serialize().serialize());
delete deserialized;
}
TEST(Product, Serialize) {
NeuralNetwork::BasisFunction::Product l;
std::string tmp = l.serialize().serialize();
NeuralNetwork::BasisFunction::BasisFunction *deserialized =NeuralNetwork::BasisFunction::Factory::deserialize(l.serialize()).release();
ASSERT_EQ(tmp, deserialized->serialize().serialize());
delete deserialized;
}
TEST(Radial, Serialize) {
NeuralNetwork::BasisFunction::Radial l;
std::string tmp = l.serialize().serialize();
NeuralNetwork::BasisFunction::BasisFunction *deserialized =NeuralNetwork::BasisFunction::Factory::deserialize(l.serialize()).release();
ASSERT_EQ(tmp, deserialized->serialize().serialize());
delete deserialized;
}