diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2016-05-16 21:41:27 +0200 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2016-05-16 21:41:27 +0200 |
| commit | 2584591266e434140a94d818402745f34fb3acf3 (patch) | |
| tree | 2faeb4f27b6b4101149e608657d2d018249e73c1 /src/gensvm_train.c | |
| parent | major refactor of the code (diff) | |
| download | gensvm-2584591266e434140a94d818402745f34fb3acf3.tar.gz gensvm-2584591266e434140a94d818402745f34fb3acf3.zip | |
create a single training function for easy external access
Diffstat (limited to 'src/gensvm_train.c')
| -rw-r--r-- | src/gensvm_train.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/gensvm_train.c b/src/gensvm_train.c new file mode 100644 index 0000000..4c0f332 --- /dev/null +++ b/src/gensvm_train.c @@ -0,0 +1,51 @@ +/** + * @file gensvm_train.c + * @author Gertjan van den Burg + * @date May, 2016 + * @brief Main function for training a GenSVM model. + * + */ + +#include "gensvm_train.h" + +/** + * @brief Utility function for training a GenSVM model + * + * @details + * This function organizes model allocation, kernel preprocessing, instance + * weight initialization, and model training. It is the function that should + * be used for training a single GenSVM model. Note that optionally a seed + * model can be passed to the function to seed the V matrix with. When no such + * model is used this parameter should be set to NULL. + * + * @param[in] model a GenModel instance + * @param[in] data a GenData instance with the training data + * @param[in] seed_model an optional GenModel to seed the V matrix + * + */ +void gensvm_train(struct GenModel *model, struct GenData *data, + struct GenModel *seed_model) +{ + // copy dataset parameters to model + model->n = data->n; + model->m = data->m; + model->K = data->K; + + // initialize the V matrix (potentially with a seed model) + gensvm_init_V(seed_model, model, data); + + // allocate model + gensvm_allocate_model(model); + + // preprocess kernel + gensvm_kernel_preprocess(model, data); + + // reallocate model for kernels + gensvm_reallocate_model(model, data->n, data->r); + + // initialize weights + gensvm_initialize_weights(data, model); + + // start training + gensvm_optimize(model, data); +} |
