From d916c6c86bce218a6ebf11bbe01497c03c3c18f3 Mon Sep 17 00:00:00 2001 From: julienChemillier Date: Sun, 28 May 2023 09:12:52 +0200 Subject: [PATCH] Rectification of a d_network leak --- src/cnn/free.c | 7 ++++--- src/cnn/include/free.h | 2 +- src/cnn/train.c | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/cnn/free.c b/src/cnn/free.c index 701f52f..f586c45 100644 --- a/src/cnn/free.c +++ b/src/cnn/free.c @@ -208,8 +208,8 @@ void free_d_convolution(Network* network, int pos) { } void free_d_dense(Network* network, int pos) { - D_Kernel_nn* d_k_pos = d_network->kernel[pos]->nn; D_Network* d_network = network->d_network; + D_Kernel_nn* d_k_pos = d_network->kernel[pos]->nn; int dim = network->kernel[pos]->nn->size_input; for (int i=0; i < dim; i++) { gree(d_k_pos->d_weights[i], true); @@ -232,8 +232,8 @@ void free_d_dense(Network* network, int pos) { } void free_d_dense_linearisation(Network* network, int pos) { - D_Kernel_nn* d_k_pos = d_network->kernel[pos]->nn; D_Network* d_network = network->d_network; + D_Kernel_nn* d_k_pos = d_network->kernel[pos]->nn; int dim = network->kernel[pos]->nn->size_input; if (network->finetuning <= NN_AND_LINEARISATION) { @@ -260,7 +260,8 @@ void free_d_dense_linearisation(Network* network, int pos) { gree(d_k_pos, true); } -void free_d_network_creation(Network* network, D_Network* d_network) { +void free_d_network(Network* network) { + D_Network* d_network = network->d_network; for (int i=0; i < network->max_size-1; i++) { D_Kernel* d_k_i = d_network->kernel[i]; if (d_k_i->cnn) { // Convolution diff --git a/src/cnn/include/free.h b/src/cnn/include/free.h index c705223..be0a064 100644 --- a/src/cnn/include/free.h +++ b/src/cnn/include/free.h @@ -65,6 +65,6 @@ void free_d_dense_linearisation(Network* network, int pos); /* * Libère entièrement l'espace mémoire alloué dans 'create_d_network' (creation.c) */ -void free_d_network_creation(Network* network, D_Network* d_network); +void free_d_network(Network* network); #endif \ No newline at end of file diff --git a/src/cnn/train.c b/src/cnn/train.c index 4447895..35bd118 100644 --- a/src/cnn/train.c +++ b/src/cnn/train.c @@ -463,6 +463,7 @@ void train(int dataset_type, char* images_file, char* labels_file, char* data_di write_network(out, network); } free(shuffle_index); + free_d_network(network); free_network(network); #ifdef USE_MULTITHREADING