75 lines
2.1 KiB
C++
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;
|
|
} |