Commit 7c93afc9 authored by Martin Beseda's avatar Martin Beseda

Commit before merge

parents 99514ea1 5fe40bf3
Summary **Summary**
(Summarize the bug encountered concisely) (Summarize the bug encountered concisely)
Steps to reproduce **Steps to reproduce**
(How one can reproduce the issue - this is very important) (How one can reproduce the issue - this is very important)
What is the current bug behavior? **What is the current bug behavior?**
(What actually happens) (What actually happens)
What is the expected correct behavior? **What is the expected correct behavior?**
(What you should see instead) (What you should see instead)
Relevant logs and/or screenshots **Relevant logs and/or screenshots**
(Paste any relevant logs - please use code blocks (```) to format console output, (Paste any relevant logs - please use code blocks (```) to format console output,
logs, and code as it's very hard to read otherwise.) logs, and code as it's very hard to read otherwise.)
Possible fixes **Possible fixes**
(If you can, link to the line of code that might be responsible for the problem) (If you can, link to the line of code that might be responsible for the problem)
......
Summary **Summary**
(Summarize the bug encountered concisely) (Summarize the bug encountered concisely)
Associated classes **Associated classes**
(Classes, which need to be modified, if any) (Classes, which need to be modified, if any)
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
``` ```
git clone git@code.it4i.cz:moldyn/lib4neuro.git git clone git@code.it4i.cz:moldyn/lib4neuro.git
``` ```
- Clone the repository of `exprtk` - Clone the repository of `exprtk`
...@@ -29,8 +30,11 @@ ...@@ -29,8 +30,11 @@
``` ```
sudo apt-get install libboost-all-dev sudo apt-get install libboost-all-dev
``` ```
- Go to the `lib4Neuro` folder
- Go to the `lib4Neuro` folder and run - Set variables `BUILD_TYPE` and `CXX_COMPILER` in the file `build.sh`
- Run
``` ```
./build.sh ./build.sh
...@@ -46,13 +50,15 @@ ...@@ -46,13 +50,15 @@
bootstrap.bat bootstrap.bat
b2.exe --build-type=complete b2.exe --build-type=complete
``` ```
- set `BOOST_ROOT` variable to the path of your folder with `Boost` - Set `BOOST_ROOT` variable to the path of your folder with `Boost`
``` ```
setx BOOST_ROOT YOUR_PATH setx BOOST_ROOT YOUR_PATH
``` ```
- go to the `lib4neuro` folder and run - Go to the `lib4neuro` folder
- Set variables `BUILD_TYPE`, `CXX_COMPILER` and `C_COMPILER` in the file `build.bat`
- Run
``` ```
build.bat build.bat
......
#TODO uncomment #TODO uncomment
#add_subdirectory(tests bin/unit-tests) #add_subdirectory(tests bin/unit-tests)
add_subdirectory(examples bin/examples) add_subdirectory(examples bin/examples)
add_library(4neuro SHARED add_library(4neuro SHARED
Neuron/Neuron.cpp Neuron/Neuron.cpp
Neuron/NeuronBinary.cpp Neuron/NeuronBinary.cpp
Neuron/NeuronConstant.cpp Neuron/NeuronConstant.cpp
Neuron/NeuronLinear.cpp Neuron/NeuronLinear.cpp
Neuron/NeuronLogistic.cpp Neuron/NeuronLogistic.cpp
Network/NeuralNetwork.cpp Network/NeuralNetwork.cpp
Network/NeuralNetworkSum.cpp Network/NeuralNetworkSum.cpp
NetConnection/ConnectionFunctionGeneral.cpp NetConnection/ConnectionFunctionGeneral.cpp
NetConnection/ConnectionFunctionIdentity.cpp NetConnection/ConnectionFunctionIdentity.cpp
LearningMethods/ParticleSwarm.cpp LearningMethods/ParticleSwarm.cpp
DataSet/DataSet.cpp DataSet/DataSet.cpp
ErrorFunction/ErrorFunctions.cpp ErrorFunction/ErrorFunctions.cpp
Solvers/DESolver.cpp Solvers/DESolver.cpp
LearningMethods/ILearningMethods.h) LearningMethods/ILearningMethods.h)
#list(REMOVE_ITEM Boost_LIBRARIES "optimized" "debug") message("Boost_LIBRARIES sadf: ${Boost_LIBRARIES}")
#
#set(TMP "") target_link_libraries(4neuro ${Boost_LIBRARIES})
#set(TMP2 "")
#foreach(e ${Boost_LIBRARIES}) add_library(boost_unit_test SHARED boost_test_lib_dummy.cpp)
# string(REPLACE "/" "\\" TMP2 ${e}) add_library(exprtk SHARED exprtk.cpp)
# list(APPEND TMP ${TMP2})
#endforeach(e)
#
#set(Boost_LIBRARIES ${TMP})
message("Boost_LIBRARIES sadf: ${Boost_LIBRARIES}")
target_link_libraries(4neuro ${Boost_LIBRARIES})
add_library(boost_unit_test SHARED boost_test_lib_dummy.cpp)
add_library(exprtk SHARED exprtk.cpp)
...@@ -3,3 +3,4 @@ ...@@ -3,3 +3,4 @@
// //
#define BOOST_TEST_MODULE neuron_test #define BOOST_TEST_MODULE neuron_test
#include <boost/test/included/unit_test.hpp>
...@@ -2,29 +2,50 @@ ...@@ -2,29 +2,50 @@
# UNIT TESTS # # UNIT TESTS #
############## ##############
<<<<<<< HEAD
add_executable(neuron_test neuron_test.cpp) add_executable(neuron_test neuron_test.cpp)
target_link_libraries(neuron_test boost_unit_test 4neuro) target_link_libraries(neuron_test boost_unit_test 4neuro)
=======
#add_executable(neuron_test Neuron_test.cpp)
#target_link_libraries(neuron_test boost_unit_test 4neuro)
>>>>>>> 5fe40bf3d3cae575f15db8b0ad440aa5b558ff1d
add_executable(linear_neuron_test NeuronLinear_test.cpp) add_executable(linear_neuron_test NeuronLinear_test.cpp)
target_link_libraries(linear_neuron_test boost_unit_test 4neuro) target_link_libraries(linear_neuron_test boost_unit_test 4neuro)
<<<<<<< HEAD
=======
add_executable(constant_neuron_test NeuronConstant_test.cpp)
target_link_libraries(constant_neuron_test boost_unit_test 4neuro)
>>>>>>> 5fe40bf3d3cae575f15db8b0ad440aa5b558ff1d
add_executable(binary_neuron_test NeuronBinary_test.cpp) add_executable(binary_neuron_test NeuronBinary_test.cpp)
target_link_libraries(binary_neuron_test boost_unit_test 4neuro) target_link_libraries(binary_neuron_test boost_unit_test 4neuro)
add_executable(logistic_neuron_test NeuronLogistic_test.cpp) add_executable(logistic_neuron_test NeuronLogistic_test.cpp)
target_link_libraries(logistic_neuron_test boost_unit_test 4neuro) target_link_libraries(logistic_neuron_test boost_unit_test 4neuro)
<<<<<<< HEAD
add_executable(connection_weight_test ConnectionWeight_test.cpp) add_executable(connection_weight_test ConnectionWeight_test.cpp)
target_link_libraries(connection_weight_test boost_unit_test 4neuro) target_link_libraries(connection_weight_test boost_unit_test 4neuro)
add_executable(connection_test Connection_test.cpp) add_executable(connection_test Connection_test.cpp)
target_link_libraries(connection_test boost_unit_test 4neuro) target_link_libraries(connection_test boost_unit_test 4neuro)
=======
add_executable(connectionFunctionGeneral_test ConnectionFunctionGeneral_test.cpp)
target_link_libraries(connectionFunctionGeneral_test boost_unit_test 4neuro)
>>>>>>> 5fe40bf3d3cae575f15db8b0ad440aa5b558ff1d
add_executable(neural_network_test NeuralNetwork_test.cpp) add_executable(neural_network_test NeuralNetwork_test.cpp)
target_link_libraries(neural_network_test boost_unit_test 4neuro) target_link_libraries(neural_network_test boost_unit_test 4neuro)
<<<<<<< HEAD
add_executable(connection_weight_identity_test ConnectionWeightIdentity_test.cpp) add_executable(connection_weight_identity_test ConnectionWeightIdentity_test.cpp)
target_link_libraries(connection_weight_identity_test boost_unit_test 4neuro) target_link_libraries(connection_weight_identity_test boost_unit_test 4neuro)
=======
add_executable(connection_Function_identity_test ConnectionFunctionIdentity_test.cpp)
target_link_libraries(connection_Function_identity_test boost_unit_test 4neuro)
>>>>>>> 5fe40bf3d3cae575f15db8b0ad440aa5b558ff1d
add_executable(dataset_test DataSet_test.cpp) add_executable(dataset_test DataSet_test.cpp)
target_link_libraries(dataset_test boost_unit_test 4neuro) target_link_libraries(dataset_test boost_unit_test 4neuro)
...@@ -41,3 +62,10 @@ target_link_libraries(particle_test boost_unit_test 4neuro) ...@@ -41,3 +62,10 @@ target_link_libraries(particle_test boost_unit_test 4neuro)
add_executable(NeuralNetworkSum_test NeuralNetworkSum_test.cpp) add_executable(NeuralNetworkSum_test NeuralNetworkSum_test.cpp)
target_link_libraries(NeuralNetworkSum_test boost_unit_test 4neuro) target_link_libraries(NeuralNetworkSum_test boost_unit_test 4neuro)
<<<<<<< HEAD
=======
add_executable(DESolver_test DESolver_test.cpp)
target_link_libraries(DESolver_test boost_unit_test 4neuro)
>>>>>>> 5fe40bf3d3cae575f15db8b0ad440aa5b558ff1d
///**
//* DESCRIPTION OF THE CLASS
//*
//* @author David Vojtek
//* @date 2018
//*/
//
//#define BOOST_TEST_NO_MAIN
//
//#include <boost/test/unit_test.hpp>
//#include "../NetConnection/ConnectionFunctionIdentity.h"
//
///**
// * Boost testing suite for testing ConnectionWeightIdentity.h
// */
//BOOST_AUTO_TEST_SUITE(ConnectionWeightIdentity_test)
//
// /**
// * Test of correct construction of ConnectionWeightIdentity
// */
// BOOST_AUTO_TEST_CASE(ConnectionWeightIdentity_construction_test) {
// std::vector<double> weight_array = {1, 2, 3, 4, 5};
// //Test of none exception when creation new instance of ConnectionFunctionIdentity
// BOOST_CHECK_NO_THROW(ConnectionFunctionIdentity CWI(&weight_array));
// }
//
// /**
// * Test of eval method
// */
// BOOST_AUTO_TEST_CASE(ConnectionWeightIdentity_eval_test) {
// std::vector<double> weight_array = {1, 2, 3, 4, 5};
// ConnectionFunctionIdentity CWI(&weight_array);
// int para[5] = {3, 1, 2, 3, 4};
// CWI.SetParamIndices(para);
//
// //Test of correct output of eval method
// BOOST_CHECK_EQUAL(4, CWI.eval());
// }
//
//BOOST_AUTO_TEST_SUITE_END()
///**
// * DESCRIPTION OF THE CLASS
// *
// * @author David Vojtek
// * @date 2018
// */
//
//#define BOOST_TEST_NO_MAIN
//
//#include <boost/test/unit_test.hpp>
//#include "../NetConnection/ConnectionFunctionGeneral.h"
//
///**
// * Boost testing suite for testing ConnectionWeight.h
// */
//BOOST_AUTO_TEST_SUITE(ConnectionWeight_test)
//
// /**
// * Test of construction of ConnectionWeight
// */
// BOOST_AUTO_TEST_CASE(ConnectionWeight_construction__test) {
// std::vector<double> * w_array = nullptr ;
//
// //Tests of no exception when, create new instance
// BOOST_CHECK_NO_THROW( ConnectionFunctionGeneral conn(2, w_array ));
// BOOST_CHECK_NO_THROW( ConnectionFunctionGeneral conn);
// }
//
// /**
// * Test of setParamIndices and SetParamIndex methods
// */
// BOOST_AUTO_TEST_CASE(ConnectionWeight_param_test){
// std::vector<double> w_array= {0,1,2,3,4} ;
//
// ConnectionFunctionGeneral conn(5, &w_array );
// ConnectionFunctionGeneral connbad(7, &w_array);
// int para[5]={0,1,2,3,4};
//
// //Test of no exception when call SetParamIndices method on instance created with with correct parameters
// BOOST_CHECK_NO_THROW(conn.SetParamIndices(para));
// //Test of no exception when call SetParamIndex method on instance created with with correct parameters
// BOOST_CHECK_NO_THROW(conn.SetParamIndex(2,2));
// // Features not implemented yet
// //Test of expected exception out_of_range when call SetParamIndices method on instance created with with incorrect parameters
// //BOOST_CHECK_THROW(connbad.SetParamIndices(para), std::out_of_range);
// //Test of expected exception out_of_range when call SetParamIndex method on instance created with incorrect parameters
// //BOOST_CHECK_THROW(connbad.SetParamIndex(2,8), std::out_of_range);
// }
//
// /**
// * Test of eval method
// */
// BOOST_AUTO_TEST_CASE(ConnectionWeight_eval__test) {
// std::vector<double> w_array= {1,2,3,4,5} ;
//
// ConnectionFunctionGeneral conn(5, &w_array );
// int para[5]={1,2,3,4,5};
// conn.SetParamIndices(para);
//
// //Test of correct output after calling eval() method
// BOOST_CHECK_EQUAL(120, conn.eval());
// }
//
// /**
// * Test of adjust_weights method
// */
// BOOST_AUTO_TEST_CASE(ConnectionWeight_weight_adjustment_test) {
// std::vector<double> w_array= {1,2,3,4,5} ;
// double w_array2[5] = {5,4,3,2,1};
//
// ConnectionFunctionGeneral conn(5, &w_array);
// int para[5]={0,1,2,3,4};
// conn.SetParamIndices(para);
// conn.adjust_weights(w_array2);
//
// //Test of correct eval output after adjusting weights
// BOOST_CHECK_EQUAL(7776, conn.eval());
// }
//
// /**
// * Test of set_weights method
// */
// BOOST_AUTO_TEST_CASE(ConnectionWeight_weight_set_test) {
// std::vector<double> w_array= {2,3,4,5,6} ;
// double w_array2[5] = {1,2,3,4,5};
// ConnectionFunctionGeneral conn(5, &w_array );
// conn.eval();
// int para[5]={0,1,2,3,4};
// conn.SetParamIndices(para);
// conn.set_weights(w_array2);
//
// //Test of correct eval output after setting new weights
// BOOST_CHECK_EQUAL(120, conn.eval());
// }
//
//
//BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file
///**
// * DESCRIPTION OF THE CLASS
// *
// * @author David Vojtek
// * @date 2018
// */
//
//#define BOOST_TEST_NO_MAIN
//
//#include <boost/test/unit_test.hpp>
//
//
//#include "../NetConnection/ConnectionFunctionGeneral.h"
//#include "../Neuron/NeuronLinear.h"
//#include <iostream>
///**
// * Boost testing suite for testing ConnectionFunctionGeneral.h
// */
//
//BOOST_AUTO_TEST_SUITE(Connection_test)
//
///**
// * Test of constructor of Connection
// */
//BOOST_AUTO_TEST_CASE(Connection_construction__test) {
//
// Neuron *neuron1 = new NeuronLinear(2, 3);
// Neuron *neuron2 = new NeuronLinear(4, 5);
// std::vector<double> w_array = {2, 3, 4, 5, 6};
//
// ConnectionWeight *conn = new ConnectionWeight(2, &w_array);
// Connection connection(neuron1, neuron2, conn);
// //Test of correct input neuron
// BOOST_CHECK_EQUAL(neuron1, connection.get_neuron_in());
// //Test of correct output neuron
// BOOST_CHECK_EQUAL(neuron2, connection.get_neuron_out());
//}
//
///**
// * Test of pass_signal method
// */
//BOOST_AUTO_TEST_CASE(Connection_pass_signal_test) {
//
// Neuron *neuron1 = new NeuronLinear(2, 3);
// Neuron *neuron2 = new NeuronLinear(4, 5);
// std::vector<double> w_array = {2, 3, 4, 5, 6};
// std::function<double(double *, int *, int)> f = [](double *weight_array, int *index_array, int n_params) {
// double a = weight_array[0];
// double b = weight_array[1];
// return (a + 1.5 * b);
// };
//
//
// ConnectionWeight *conn = new ConnectionWeight(2, &w_array);
//
// Connection connection(neuron1, neuron2, conn);
//
// neuron1->activate();
// neuron2->activate();
// // test of neuron state before passing signal
// BOOST_CHECK_EQUAL(4, neuron2->get_state());
// connection.pass_signal();
// neuron2->activate();
// // test of neuron state after passing signal
// BOOST_CHECK_EQUAL(7204, neuron2->get_state());
//
//}
//
//
//BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file
///**
// * DESCRIPTION OF THE CLASS
// *
// * @author David Vojtek
// * @date 2018
// */
//
//#define BOOST_TEST_NO_MAIN
//
//#include <boost/test/unit_test.hpp>
//#include <boost/test/output_test_stream.hpp>
//#include "../DataSet/DataSet.h"
////#include <boost/filesystem.hpp>
//
//
///**
// * Boost testing suite for testing DataSet.h
// */
//BOOST_AUTO_TEST_SUITE(DataSet_test)
//
// struct cout_redirect {
// cout_redirect(std::streambuf *new_buffer)
// : old(std::cout.rdbuf(new_buffer)) {}
//
// ~cout_redirect() {
// std::cout.rdbuf(old);
// }
//
// private:
// std::streambuf *old;
// };
//
///**
// * Test of DataSet constructor with filepath parameter
// */
// BOOST_AUTO_TEST_CASE(DataSet_construction_from_file_test) {
// //test of exception with non-existing file path
// //TODO resolve exception throw
// DataSet dataSet("file/unknown");
// //BOOST_CHECK_THROW(DataSet dataSet("file unknown"), boost::archive::archive_exception::input_stream_error);
// }
//
///**
// * Test of DataSet constructor with vector parameter
// */
// BOOST_AUTO_TEST_CASE(DataSet_construction_from_vector_test) {
// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec;
// std::vector<double> inp, out;
//
// for (int i = 0; i < 3; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
//
// data_vec.emplace_back(std::make_pair(inp, out));
//
// DataSet dataSet(&data_vec);
//
// //test of no exception when create object DataSet
// BOOST_CHECK_NO_THROW(DataSet dataSet(&data_vec));
// }
//
///**
// * Test of get_data method
// */
// BOOST_AUTO_TEST_CASE(DataSet_get_data_test) {
// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec;
// std::vector<double> inp, out;
//
// for (int i = 0; i < 1; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
//
// data_vec.emplace_back(std::make_pair(inp, out));
// DataSet dataSet(&data_vec);
//
// //test of equal data
// //TODO out of range, ==
// BOOST_CHECK_EQUAL(0, dataSet.get_data()->at(0).first.at(0));
// BOOST_CHECK_EQUAL(4, dataSet.get_data()->at(0).second.at(0));
//
// }
//
///**
// * Test of add_data_pair method
// */
// BOOST_AUTO_TEST_CASE(DataSet_add_daata_pair_test) {
// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec;
// std::vector<double> inp, out;
//
// for (int i = 0; i < 3; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
//
// data_vec.emplace_back(std::make_pair(inp, out));
//
// DataSet dataSet(&data_vec);
//
// inp.clear();
// out.clear();
// for (int i = 8; i < 11; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
//
// dataSet.add_data_pair(inp, out);
//
// // Test of correct add of input
// BOOST_CHECK_EQUAL(8, dataSet.get_data()->at(1).first.at(0));
// // Test of correct add of output
// BOOST_CHECK_EQUAL(12, dataSet.get_data()->at(1).second.at(0));
//
// }
//
// /**
// * Test of get_input_dim and get_output_dim methods
// */
// BOOST_AUTO_TEST_CASE(DataSet_dimension_test) {
// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec;
// std::vector<double> inp, out;
//
// for (int i = 0; i < 3; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
//
// data_vec.emplace_back(std::make_pair(inp, out));
//
// DataSet dataSet(&data_vec);
//
// //Test of correct input dimension
// BOOST_CHECK_EQUAL(3, dataSet.get_input_dim());
// //Test of correct output dimension
// BOOST_CHECK_EQUAL(3, dataSet.get_output_dim());
// }
//
///**
// * Test of get_n_elements method
// */
// BOOST_AUTO_TEST_CASE(DataSet_get_number_of_elements_test) {
// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec;
// std::vector<double> inp, out;
//
// for (int i = 0; i < 3; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
// data_vec.emplace_back(std::make_pair(inp, out));
// inp.clear();
// out.clear();
// for (int i = 8; i < 11; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
// data_vec.emplace_back(std::make_pair(inp, out));
//
// DataSet dataSet(&data_vec);
//
// //Test of correct number of elements
// BOOST_CHECK_EQUAL(2, dataSet.get_n_elements());
// }
//
///**
// * Test of print_data method
// */
// BOOST_AUTO_TEST_CASE(DataSet_print_data_test) {
// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec;
// std::vector<double> inp, out;
//
// for (int i = 0; i < 1; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
//
// data_vec.emplace_back(std::make_pair(inp, out));
//
// DataSet dataSet(&data_vec);
//
// boost::test_tools::output_test_stream output;
// {
// cout_redirect guard(output.rdbuf());
// dataSet.print_data();
// }
//
// //Test of correct print of DataSet
// BOOST_CHECK(output.is_equal("0 -> 4 \n"));
// }
//
///**
// * Test of store_text method
// */
// BOOST_AUTO_TEST_CASE(DataSet_store_text_test) {
// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec;
// std::vector<double> inp, out;
//
// for (int i = 0; i < 3; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
//
// data_vec.emplace_back(std::make_pair(inp, out));
//
// DataSet dataSet(&data_vec);
// int elements = dataSet.get_n_elements();
// dataSet.store_text("testDataSet");
//
// //Test of correct file creations
// //BOOST_CHECK(boost::filesystem::exists( "testDataSet" ));
//
// DataSet newDataSet("testDataSet");
//
// //Test of correct number of element from dataSet from file
// BOOST_CHECK_EQUAL(elements, newDataSet.get_n_elements());
//
// // removing of created file
// remove("testDataSet");
// }
//
//BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file
///**
// * DESCRIPTION OF THE CLASS
// *
// * @author David Vojtek
// * @date 2018
// */
//
//#define BOOST_TEST_NO_MAIN
//
//#include <boost/test/unit_test.hpp>
//#include "../ErrorFunction/ErrorFunctions.h"
//
///**
// * Boost testing suite for testing ErrorFunction.h
// * doesn't test inherited methods
// */
//BOOST_AUTO_TEST_SUITE(ErrorFunctions_test)
//
// BOOST_AUTO_TEST_CASE(ErrorFunction_MSE_Construction_Test) {
// NeuralNetwork network;
// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec;
// std::vector<double> inp, out;
// for (int i = 0; i < 3; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
// data_vec.emplace_back(std::make_pair(inp, out));
// DataSet dataSet(&data_vec);
// BOOST_CHECK_NO_THROW(MSE mse(&network, &dataSet));
// }
//
// BOOST_AUTO_TEST_CASE(ErrorFunction_MSE_Eval_Test) {
// Neuron *n1 = new NeuronLinear(1, 1);
// Neuron *n2 = new NeuronLinear(2, 2);
// NeuralNetwork network;
// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec;
// std::vector<double> inp, out;
// for (int i = 0; i < 1; i++) {
// inp.push_back(i);
// out.push_back(i + 4);
// }
// data_vec.emplace_back(std::make_pair(inp, out));
// network.add_neuron(n1);