diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2017-02-17 19:17:17 -0500 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2017-02-17 19:17:17 -0500 |
| commit | e8baad9ae430a838c34fa8173b36f92c9baa862d (patch) | |
| tree | 646574b2d6ee594b600c74d1e93ae2c0fbe898b2 /src | |
| parent | Bump version (diff) | |
| download | gensvm-e8baad9ae430a838c34fa8173b36f92c9baa862d.tar.gz gensvm-e8baad9ae430a838c34fa8173b36f92c9baa862d.zip | |
allow max_iter to be set in the model
Diffstat (limited to 'src')
| -rw-r--r-- | src/gensvm_base.c | 1 | ||||
| -rw-r--r-- | src/gensvm_copy.c | 2 | ||||
| -rw-r--r-- | src/gensvm_optimize.c | 11 | ||||
| -rw-r--r-- | src/gensvm_task.c | 6 |
4 files changed, 11 insertions, 9 deletions
diff --git a/src/gensvm_base.c b/src/gensvm_base.c index 79e5f45..6bb4367 100644 --- a/src/gensvm_base.c +++ b/src/gensvm_base.c @@ -114,6 +114,7 @@ struct GenModel *gensvm_init_model() model->degree = 2.0; model->kerneltype = K_LINEAR; model->kernel_eigen_cutoff = 1e-8; + model->max_iter = 1000000000; model->V = NULL; model->Vbar = NULL; diff --git a/src/gensvm_copy.c b/src/gensvm_copy.c index 28642c7..75c7e8c 100644 --- a/src/gensvm_copy.c +++ b/src/gensvm_copy.c @@ -48,4 +48,6 @@ void gensvm_copy_model(struct GenModel *from, struct GenModel *to) to->gamma = from->gamma; to->coef = from->coef; to->degree = from->degree; + + to->max_iter = from->max_iter; } diff --git a/src/gensvm_optimize.c b/src/gensvm_optimize.c index 95f9df2..fff6768 100644 --- a/src/gensvm_optimize.c +++ b/src/gensvm_optimize.c @@ -31,13 +31,6 @@ #include "gensvm_optimize.h" /** - * Maximum number of iterations of the algorithm. - */ -#ifndef GENSVM_MAX_ITER - #define GENSVM_MAX_ITER 1000000000 -#endif - -/** * Iteration frequency with which to print to stdout */ #ifndef GENSVM_PRINT_ITER @@ -94,7 +87,7 @@ void gensvm_optimize(struct GenModel *model, struct GenData *data) Lbar = L + 2.0*model->epsilon*L; // run main loop - while ((it < GENSVM_MAX_ITER) && (Lbar - L)/L > model->epsilon) + while ((it < model->max_iter) && (Lbar - L)/L > model->epsilon) { // ensures V contains newest V and Vbar contains V from // previous @@ -115,7 +108,7 @@ void gensvm_optimize(struct GenModel *model, struct GenData *data) if (L > Lbar) err("[GenSVM Warning]: Negative step occurred in " "majorization.\n"); - if (it >= GENSVM_MAX_ITER) + if (it >= model->max_iter) err("[GenSVM Warning]: maximum number of iterations " "reached.\n"); diff --git a/src/gensvm_task.c b/src/gensvm_task.c index 1526936..1112c66 100644 --- a/src/gensvm_task.c +++ b/src/gensvm_task.c @@ -53,6 +53,7 @@ struct GenTask *gensvm_init_task() t->train_data = NULL; t->test_data = NULL; t->performance = 0.0; + t->max_iter = 1000000000; return t; } @@ -103,6 +104,8 @@ struct GenTask *gensvm_copy_task(struct GenTask *t) nt->coef = t->coef; nt->degree = t->degree; + nt->max_iter = t->max_iter; + return nt; } @@ -130,4 +133,7 @@ void gensvm_task_to_model(struct GenTask *task, struct GenModel *model) model->gamma = task->gamma; model->coef = task->coef; model->degree = task->degree; + + // copy other parameters + model->max_iter = task->max_iter; } |
