#include #include "MatDataSet.h" #include "ClassFormatDataSet.h" #include "ClassNLLCriterion.h" #include "MSECriterion.h" #include "OneHotClassFormat.h" #include "ClassMeasurer.h" #include "MSEMeasurer.h" #include "StochasticGradient.h" #include "KFold.h" #include "ConnectedMachine.h" #include "Linear.h" #include "Tanh.h" #include "LogSoftMax.h" #include "MeanVarNorm.h" #include "DiskXFile.h" #include "CmdLine.h" #include "Random.h" using namespace Torch; int main (void) { CmdLine cmd; Allocator *allocator = new Allocator; //===================== MLP ======================= ConnectedMachine mlp; Linear *c1 = new(allocator) Linear(/*input*/ 2,/*output2Hidden*/ 4); //connectors //c1->setROption("weight decay", 0.5); Tanh *c2 = new(allocator) Tanh(/*hiddenSize*/ 4); //hidden layer Linear *c3 = new(allocator) Linear(/*hiddenSize*/ 4,/*outputSize*/ 1); //connectors //c3->setROption("weight decay", 0.5); //LogSoftMax *c4 = new(allocator) LogSoftMax(/*OutputSize*/ 1); //RegressionMode mlp.addFCL(c1); mlp.addFCL(c2); mlp.addFCL(c3); // mlp.addFCL(c4); // Initialize the MLP mlp.build(); mlp.setPartialBackprop(); printf("MLP initialized\n"); //====================== DataSet ==================================== MatDataSet *data = new(allocator) MatDataSet("XOR-ProblemData.txt", 2, 1); printf("Data loaded\n"); //====================== Measure ==================================== // The list of measurers... MeasurerList measurers; DataSet *valid_data = new(allocator) MatDataSet("XOR-ProblemData.txt", 2, 1); DiskXFile mse_file("the_mse_error", "w"); MSEMeasurer *valid_mse_meas = new(allocator) MSEMeasurer(mlp.outputs, valid_data, &mse_file); measurers.addNode(valid_mse_meas); printf("Measure initialized\n"); //====================== Trainer ==================================== Criterion *criterion = NULL; criterion = new(allocator) MSECriterion(/*outputSize*/ 1); StochasticGradient trainer(&mlp, criterion); //trainer.setIOption("max iter", 100); trainer.setROption("end accuracy", 0.0001); trainer.setROption("learning rate", 0.1); //trainer.setROption("learning rate decay", 0.1); //train data trainer.test(&measurers); trainer.train(data, &measurers); trainer.test(&measurers); delete allocator; printf("The End\n"); return 0; }