static void parse_args (command_line_parser& parser, int argc, char* argv[]) { try { // Algorithm-independent options parser.add_option ("a", "Choose the learning algorithm: {krls,krr,mlp,svr}.",1); parser.add_option ("h","Display this help message."); parser.add_option ("help","Display this help message."); parser.add_option ("k", "Learning kernel (for krls,krr,svr methods): {lin,rbk}.",1); parser.add_option ("in","A libsvm-formatted file to test.",1); parser.add_option ("normalize", "Normalize the sample inputs to zero-mean unit variance."); parser.add_option ("train-best", "Train and save a network using best parameters", 1); parser.set_group_name("Algorithm Specific Options"); // Algorithm-specific options parser.add_option ("rbk-gamma", "Width of radial basis kernels: {float}.",1); parser.add_option ("krls-tolerance", "Numerical tolerance of krls linear dependency test: {float}.",1); parser.add_option ("mlp-hidden-units", "Number of hidden units in mlp: {integer}.",1); parser.add_option ("mlp-num-iterations", "Number of epochs to train the mlp: {integer}.",1); parser.add_option ("svr-c", "SVR regularization parameter \"C\": " "{float}.",1); parser.add_option ("svr-epsilon-insensitivity", "SVR fitting tolerance parameter: " "{float}.",1); parser.add_option ("verbose", "Use verbose trainers"); // Parse the command line arguments parser.parse(argc,argv); // Check that options aren't given multiple times const char* one_time_opts[] = {"a", "h", "help", "in"}; parser.check_one_time_options(one_time_opts); const char* valid_kernels[] = {"lin", "rbk"}; const char* valid_algs[] = {"krls", "krr", "mlp", "svr"}; parser.check_option_arg_range("a", valid_algs); parser.check_option_arg_range("k", valid_kernels); parser.check_option_arg_range("rbk-gamma", 1e-200, 1e200); parser.check_option_arg_range("krls-tolerance", 1e-200, 1e200); parser.check_option_arg_range("mlp-hidden-units", 1, 10000000); parser.check_option_arg_range("mlp-num-iterations", 1, 10000000); parser.check_option_arg_range("svr-c", 1e-200, 1e200); parser.check_option_arg_range("svr-epsilon-insensitivity", 1e-200, 1e200); // Check if the -h option was given if (parser.option("h") || parser.option("help")) { std::cout << "Usage: mltool [-a algorithm] --in input_file\n"; parser.print_options(std::cout); std::cout << std::endl; exit (0); } // Check that an input file was given if (!parser.option("in")) { std::cout << "Error in command line:\n" << "You must specify an input file with the --in option.\n" << "\nTry the -h option for more information\n"; exit (0); } } catch (std::exception& e) { // Catch cmd_line_parse_error exceptions and print usage message. std::cout << e.what() << std::endl; exit (1); } catch (...) { std::cout << "Some error occurred" << std::endl; } }