Exemple #1
0
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;
    }
}