aboutsummaryrefslogtreecommitdiff
path: root/src/gensvm_optimize.c
diff options
context:
space:
mode:
authorGertjan van den Burg <burg@ese.eur.nl>2016-10-17 13:41:46 +0200
committerGertjan van den Burg <burg@ese.eur.nl>2016-10-17 13:41:46 +0200
commite2c0ca1c082bfd7755c7af5bc5c9021bce64f3ba (patch)
tree3564a0b9ed66ccf71d16bf54a304aad320876bbf /src/gensvm_optimize.c
parentupdate doxyfile (diff)
downloadgensvm-e2c0ca1c082bfd7755c7af5bc5c9021bce64f3ba.tar.gz
gensvm-e2c0ca1c082bfd7755c7af5bc5c9021bce64f3ba.zip
Update predictions to work with sparse matrices
This is done by pulling the Z*V routines from the gensvm_optimize file to a seperate file, since they are shared by prediction and get_loss
Diffstat (limited to 'src/gensvm_optimize.c')
-rw-r--r--src/gensvm_optimize.c43
1 files changed, 1 insertions, 42 deletions
diff --git a/src/gensvm_optimize.c b/src/gensvm_optimize.c
index e83fa47..300df40 100644
--- a/src/gensvm_optimize.c
+++ b/src/gensvm_optimize.c
@@ -257,10 +257,7 @@ void gensvm_calculate_errors(struct GenModel *model, struct GenData *data,
long n = model->n;
long K = model->K;
- if (data->spZ == NULL)
- gensvm_calculate_ZV_dense(model, data, ZV);
- else
- gensvm_calculate_ZV_sparse(model, data, ZV);
+ gensvm_calculate_ZV(model, data, ZV);
for (i=0; i<n; i++) {
for (j=0; j<K; j++) {
@@ -273,41 +270,3 @@ void gensvm_calculate_errors(struct GenModel *model, struct GenData *data,
}
}
-void gensvm_calculate_ZV_sparse(struct GenModel *model,
- struct GenData *data, double *ZV)
-{
- long i, j, jj, jj_start, jj_end, K,
- n_row = data->spZ->n_row;
- double z_ij;
-
- K = model->K;
-
- int *Zia = data->spZ->ia;
- int *Zja = data->spZ->ja;
- double *vals = data->spZ->values;
-
- for (i=0; i<n_row; i++) {
- jj_start = Zia[i];
- jj_end = Zia[i+1];
-
- for (jj=jj_start; jj<jj_end; jj++) {
- j = Zja[jj];
- z_ij = vals[jj];
-
- cblas_daxpy(K-1, z_ij, &model->V[j*(K-1)], 1,
- &ZV[i*(K-1)], 1);
- }
- }
-}
-
-void gensvm_calculate_ZV_dense(struct GenModel *model,
- struct GenData *data, double *ZV)
-{
- long n = model->n;
- long m = model->m;
- long K = model->K;
-
- cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, n, K-1, m+1,
- 1.0, data->Z, m+1, model->V, K-1, 0, ZV, K-1);
-}
-