void linearRegressionExample() { // Load data into input/reference matrices // divide into training set/validation set auto inputData = loadInputData(); auto referenceData = loadReferenceData(); size_t inputCount = inputData.size()[0]; size_t inputSamples = inputData.size()[1]; size_t trainingSamples = 400; //size_t validationSamples = inputSamples - trainingSamples; auto trainingData = slice(inputData, {0, 0}, {inputCount, trainingSamples}); auto trainingReference = slice(referenceData, {0, 0}, {1, trainingSamples}); auto validationData = slice(inputData, {0, trainingSamples}, {inputCount, inputSamples}); auto validationReference = slice(referenceData, {0, trainingSamples}, {1, inputSamples}); setupParameters(); // Create the network network::NeuralNetwork simpleNetwork; simpleNetwork.addLayer(std::make_unique<network::FeedForwardLayer>(inputCount, 1, matrix::DoublePrecision())); simpleNetwork.back()->setActivationFunction(network::ActivationFunctionFactory::create("NullActivationFunction")); simpleNetwork.setCostFunction(network::CostFunctionFactory::create("SumOfSquaresCostFunction")); simpleNetwork.initialize(); // Train it simpleNetwork.train(trainingData, trainingReference); // Evaluate it on test set //auto trainingPredictions = simpleNetwork.runInputs(trainingData); //compare(trainingPredictions, trainingReference); // Evaluate it on validation set auto predictions = simpleNetwork.runInputs(validationData); compare(predictions, validationReference); //for(size_t sample = 0; sample < validationSamples; ++ sample) //{ // std::cout << sample << ", " << predictions(0, sample) << ", " << validationReference(0, sample) << "\n"; //} }
void StrictMathTestCaseCos::setUp() { loadReferenceData(TESTSRC "/StrictMathTestCase/cos.ref"); }
void StrictMathTestCaseATan::setUp() { loadReferenceData(TESTSRC "/StrictMathTestCase/atan.ref"); }