Network trainNetWithParsedTrainData(vector<int> hiddenLayers, int epochs, int miniBatchSize, double learningRate, double regularizationFactor) { inputData_t data = generateInputData(); int input_dim = data.x_train.cols(); int output_dim = OUTPUT_SIZE; vector<int> layers; layers.push_back(input_dim); layers.insert(layers.end(), hiddenLayers.begin(), hiddenLayers.end()); //inserta todos los elementos de hiddenLayers layers.push_back(output_dim); Network net(layers); if (LOAD_NET){ CsvReader reader; vector<MatrixXd> weights = reader.readWheights(WEIGHTS_BASE_LOAD_PATH,2); vector<VectorXd> biases = reader.readBiases(BIASES_LOAD_PATH); net = Network(layers,biases,weights); } if (TRAIN_NET){ cout << "Arranca train" << endl; net.SGD(data.x_train, data.y_train, data.x_test, data.y_test, epochs, miniBatchSize, learningRate, regularizationFactor); } int validationResult = net.accuracy(data.x_validation, data.y_validation); double cost = net.totalCost(data.x_validation, data.y_validation); cout << "---------------------------" << endl; cout << "Validation results: " << validationResult << " / " << data.y_validation.rows() << endl; cout << "---------------------------" << endl; cout << "Validation cost: " << cost << endl; cout << "---------------------------" << endl; return net; }