aboutsummaryrefslogtreecommitdiff
path: root/src/gensvm_pred.c
diff options
context:
space:
mode:
authorGertjan van den Burg <burg@ese.eur.nl>2016-09-30 20:27:26 +0200
committerGertjan van den Burg <burg@ese.eur.nl>2016-09-30 20:27:26 +0200
commit7eb19c47c07c5187ada0a79db7addde1b5f62572 (patch)
treefe9e6b73f4f375839bdfcd8eb314246897337ba5 /src/gensvm_pred.c
parentRemove category matrix from implementation (diff)
downloadgensvm-7eb19c47c07c5187ada0a79db7addde1b5f62572.tar.gz
gensvm-7eb19c47c07c5187ada0a79db7addde1b5f62572.zip
Rewrite UU matrix to be K*K*(K-1) instead of n*K*(K-1)
significant memory reduction by turning the 3D UU matrix into a 2D block matrix, with significantly less dimensions
Diffstat (limited to 'src/gensvm_pred.c')
-rw-r--r--src/gensvm_pred.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/gensvm_pred.c b/src/gensvm_pred.c
index 8a9a43e..43b27cc 100644
--- a/src/gensvm_pred.c
+++ b/src/gensvm_pred.c
@@ -31,7 +31,7 @@ void gensvm_predict_labels(struct GenData *testdata, struct GenModel *model,
long *predy)
{
long i, j, k, n, m, K, label;
- double norm, min_dist, *S, *ZV, *U;
+ double norm, min_dist, *S, *ZV;
n = testdata->n;
m = testdata->r;
@@ -40,10 +40,9 @@ void gensvm_predict_labels(struct GenData *testdata, struct GenModel *model,
// allocate necessary memory
S = Calloc(double, K-1);
ZV = Calloc(double, n*(K-1));
- U = Calloc(double, K*(K-1));
// Generate the simplex matrix
- gensvm_simplex(K, U);
+ gensvm_simplex(model);
// Generate the simplex space vectors
cblas_dgemm(
@@ -70,7 +69,7 @@ void gensvm_predict_labels(struct GenData *testdata, struct GenModel *model,
for (j=0; j<K; j++) {
for (k=0; k<K-1; k++) {
S[k] = matrix_get(ZV, K-1, i, k) -
- matrix_get(U, K-1, j, k);
+ matrix_get(model->U, K-1, j, k);
}
norm = cblas_dnrm2(K-1, S, 1);
if (norm < min_dist) {
@@ -82,7 +81,6 @@ void gensvm_predict_labels(struct GenData *testdata, struct GenModel *model,
}
free(ZV);
- free(U);
free(S);
}