aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGertjan van den Burg <gertjanvandenburg@gmail.com>2017-02-21 18:32:35 -0500
committerGertjan van den Burg <gertjanvandenburg@gmail.com>2017-02-21 18:32:35 -0500
commit75182ca28c2b481420fe42e6fc469075ec6b4cdf (patch)
tree3c5e087525379c2e5b674c544198ffc5468e523c
parentKeep track of elapsed iterations in training (diff)
downloadgensvm-75182ca28c2b481420fe42e6fc469075ec6b4cdf.tar.gz
gensvm-75182ca28c2b481420fe42e6fc469075ec6b4cdf.zip
Keep a status of training
-rw-r--r--include/gensvm_base.h2
-rw-r--r--src/gensvm_base.c1
-rw-r--r--src/gensvm_optimize.c12
3 files changed, 13 insertions, 2 deletions
diff --git a/include/gensvm_base.h b/include/gensvm_base.h
index e13deb9..72371df 100644
--- a/include/gensvm_base.h
+++ b/include/gensvm_base.h
@@ -140,6 +140,8 @@ struct GenModel {
//eigendecomposition.
long max_iter;
///< maximum number of iterations of the algorithm
+ int status;
+ ///< status of the model after training
};
/**
diff --git a/src/gensvm_base.c b/src/gensvm_base.c
index 10e4435..791cd3e 100644
--- a/src/gensvm_base.c
+++ b/src/gensvm_base.c
@@ -116,6 +116,7 @@ struct GenModel *gensvm_init_model()
model->kernel_eigen_cutoff = 1e-8;
model->max_iter = 1000000000;
model->elapsed_iter = -1;
+ model->status = -1;
model->V = NULL;
model->Vbar = NULL;
diff --git a/src/gensvm_optimize.c b/src/gensvm_optimize.c
index b6bc164..df46ec4 100644
--- a/src/gensvm_optimize.c
+++ b/src/gensvm_optimize.c
@@ -104,13 +104,21 @@ void gensvm_optimize(struct GenModel *model, struct GenData *data)
it++;
}
+ // status == 0 means training was successful
+ model->status = 0;
+
// print warnings if necessary
- if (L > Lbar)
+ if (L > Lbar) {
err("[GenSVM Warning]: Negative step occurred in "
"majorization.\n");
- if (it >= model->max_iter)
+ model->status = 1;
+ }
+
+ if (it >= model->max_iter) {
err("[GenSVM Warning]: maximum number of iterations "
"reached.\n");
+ model->status = 2;
+ }
// print final iteration count and loss
note("Optimization finished, iter = %li, loss = %15.16f, "