From 7eb19c47c07c5187ada0a79db7addde1b5f62572 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Fri, 30 Sep 2016 20:27:26 +0200 Subject: 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 --- src/gensvm_pred.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/gensvm_pred.c') 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; jU, 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); } -- cgit v1.2.3