diff options
| author | Gertjan van den Burg <burg@ese.eur.nl> | 2013-08-08 14:21:38 +0200 |
|---|---|---|
| committer | Gertjan van den Burg <burg@ese.eur.nl> | 2013-08-08 14:21:38 +0200 |
| commit | 862307cff068bee98318415aa15ab920a02838a2 (patch) | |
| tree | 407a16f2ed4946c0ab67ed5737927fd3147b4b2a /src/trainMSVMMaj.c | |
| parent | changed the update to ensure instances are iterated over once (diff) | |
| download | gensvm-862307cff068bee98318415aa15ab920a02838a2.tar.gz gensvm-862307cff068bee98318415aa15ab920a02838a2.zip | |
allow seeding of V and added documentation
Diffstat (limited to 'src/trainMSVMMaj.c')
| -rw-r--r-- | src/trainMSVMMaj.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/trainMSVMMaj.c b/src/trainMSVMMaj.c index 311675c..5a403be 100644 --- a/src/trainMSVMMaj.c +++ b/src/trainMSVMMaj.c @@ -5,7 +5,7 @@ void print_null(const char *s) {} void exit_with_help(); void parse_command_line(int argc, char **argv, struct Model *model, - char *input_filename, char *output_filename); + char *input_filename, char *output_filename, char *model_filename); void exit_with_help() { @@ -17,6 +17,7 @@ void exit_with_help() printf("-h | -help : print this help.\n"); printf("-k kappa : set the value of kappa used in the Huber hinge\n"); printf("-l lambda : set the value of lambda (lambda > 0)\n"); + printf("-m model_file : use previous model as seed for W and t\n"); printf("-o output_file : write output to file\n"); printf("-p p-value : set the value of p in the lp norm (1.0 <= p <= 2.0)\n"); printf("-q : quiet mode (no output)\n"); @@ -32,13 +33,14 @@ int main(int argc, char **argv) { char input_filename[MAX_LINE_LENGTH]; char model_filename[MAX_LINE_LENGTH]; + char output_filename[MAX_LINE_LENGTH]; struct Model *model = Malloc(struct Model, 1); struct Data *data = Malloc(struct Data, 1); if (argc < MINARGS || check_argv(argc, argv, "-help") || check_argv_eq(argc, argv, "-h") ) exit_with_help(); - parse_command_line(argc, argv, model, input_filename, model_filename); + parse_command_line(argc, argv, model, input_filename, output_filename, model_filename); // read data file read_data(data, input_filename); @@ -53,13 +55,22 @@ int main(int argc, char **argv) allocate_model(model); initialize_weights(data, model); + if (check_argv_eq(argc, argv, "-m")) { + struct Model *seed_model = Malloc(struct Model, 1); + read_model(seed_model, model_filename); + seed_model_V(seed_model, model); + free_model(seed_model); + } else { + seed_model_V(NULL, model); + } + // start training main_loop(model, data); // write_model to file if (check_argv_eq(argc, argv, "-o")) { - write_model(model, model_filename); - info("Output written to %s\n", model_filename); + write_model(model, output_filename); + info("Output written to %s\n", output_filename); } // free model and data @@ -70,7 +81,7 @@ int main(int argc, char **argv) } void parse_command_line(int argc, char **argv, struct Model *model, - char *input_filename, char *output_filename) + char *input_filename, char *output_filename, char *model_filename) { int i; void (*print_func)(const char*) = NULL; @@ -98,6 +109,9 @@ void parse_command_line(int argc, char **argv, struct Model *model, case 'l': model->lambda = atof(argv[i]); break; + case 'm': + strcpy(model_filename, argv[i]); + break; case 'o': strcpy(output_filename, argv[i]); break; |
