int main (int argc, const char * argv[]) { //Create a new Softmax instance Softmax softmax; //Load some training data to train the classifier ClassificationData trainingData; if( !trainingData.loadDatasetFromFile("SoftmaxTrainingData.txt") ){ cout << "Failed to load training data!\n"; return EXIT_FAILURE; } //Use 20% of the training dataset to create a test dataset ClassificationData testData = trainingData.partition( 80 ); //Train the classifier if( !softmax.train( trainingData ) ){ cout << "Failed to train classifier!\n"; return EXIT_FAILURE; } //Save the Softmax model to a file if( !softmax.saveModelToFile("SoftmaxModel.txt") ){ cout << "Failed to save the classifier model!\n"; return EXIT_FAILURE; } //Load the Softmax model from a file if( !softmax.loadModelFromFile("SoftmaxModel.txt") ){ cout << "Failed to load the classifier model!\n"; return EXIT_FAILURE; } //Use the test dataset to test the softmax model double accuracy = 0; for(UINT i=0; i<testData.getNumSamples(); i++){ //Get the i'th test sample UINT classLabel = testData[i].getClassLabel(); vector< double > inputVector = testData[i].getSample(); //Perform a prediction using the classifier if( !softmax.predict( inputVector ) ){ cout << "Failed to perform prediction for test sample: " << i <<"\n"; return EXIT_FAILURE; } //Get the predicted class label UINT predictedClassLabel = softmax.getPredictedClassLabel(); vector< double > classLikelihoods = softmax.getClassLikelihoods(); vector< double > classDistances = softmax.getClassDistances(); //Update the accuracy if( classLabel == predictedClassLabel ) accuracy++; cout << "TestSample: " << i << " ClassLabel: " << classLabel << " PredictedClassLabel: " << predictedClassLabel << endl; } cout << "Test Accuracy: " << accuracy/double(testData.getNumSamples())*100.0 << "%" << endl; return EXIT_SUCCESS; }
int main (int argc, const char * argv[]) { //Parse the data filename from the argument list if( argc != 2 ){ cout << "Error: failed to parse data filename from command line. You should run this example with one argument pointing to the data filename!\n"; return EXIT_FAILURE; } const string filename = argv[1]; //Create a new Softmax instance Softmax softmax; //Load some training data to train the classifier ClassificationData trainingData; if( !trainingData.load( filename ) ){ cout << "Failed to load training data: " << filename << endl; return EXIT_FAILURE; } //Use 20% of the training dataset to create a test dataset ClassificationData testData = trainingData.split( 80 ); //Train the classifier if( !softmax.train( trainingData ) ){ cout << "Failed to train classifier!\n"; return EXIT_FAILURE; } //Save the Softmax model to a file if( !softmax.save("SoftmaxModel.grt") ){ cout << "Failed to save the classifier model!\n"; return EXIT_FAILURE; } //Load the Softmax model from a file if( !softmax.load("SoftmaxModel.grt") ){ cout << "Failed to load the classifier model!\n"; return EXIT_FAILURE; } //Use the test dataset to test the softmax model double accuracy = 0; for(UINT i=0; i<testData.getNumSamples(); i++){ //Get the i'th test sample UINT classLabel = testData[i].getClassLabel(); VectorFloat inputVector = testData[i].getSample(); //Perform a prediction using the classifier if( !softmax.predict( inputVector ) ){ cout << "Failed to perform prediction for test sample: " << i <<"\n"; return EXIT_FAILURE; } //Get the predicted class label UINT predictedClassLabel = softmax.getPredictedClassLabel(); VectorFloat classLikelihoods = softmax.getClassLikelihoods(); VectorFloat classDistances = softmax.getClassDistances(); //Update the accuracy if( classLabel == predictedClassLabel ) accuracy++; cout << "TestSample: " << i << " ClassLabel: " << classLabel << " PredictedClassLabel: " << predictedClassLabel << endl; } cout << "Test Accuracy: " << accuracy/double(testData.getNumSamples())*100.0 << "%" << endl; return EXIT_SUCCESS; }