/** * @brief Deallocate the memory for a backprop neural net object * @param net Backprop neural net object */ void bp_free(bp * net) { int l,i; for (i = 0; i < net->NoOfInputs; i++) { bp_neuron_free(net->inputs[i]); free(net->inputs[i]); net->inputs[i] = 0; } free(net->inputs); for (l = 0; l < net->HiddenLayers; l++) { for (i = 0; i < net->NoOfHiddens; i++) { bp_neuron_free(net->hiddens[l][i]); free(net->hiddens[l][i]); net->hiddens[l][i] = 0; } free(net->hiddens[l]); net->hiddens[l] = 0; } free(net->hiddens); for (i = 0; i < net->NoOfOutputs; i++) { bp_neuron_free(net->outputs[i]); free(net->outputs[i]); net->outputs[i] = 0; } free(net->outputs); }
static void test_backprop_neuron_init() { bp_neuron n; int no_of_inputs=10; unsigned int random_seed = 123; printf("test_backprop_neuron_init..."); bp_neuron_init(&n, no_of_inputs, &random_seed); bp_neuron_free(&n); printf("Ok\n"); }
static void test_backprop_neuron_save_load() { bp_neuron n1, n2; int no_of_inputs=10; unsigned int random_seed = 123; char filename[256]; FILE * fp; printf("test_backprop_neuron_save_load..."); /* create neurons */ bp_neuron_init(&n1, no_of_inputs, &random_seed); bp_neuron_init(&n2, no_of_inputs, &random_seed); sprintf(filename,"%stemp_deep.dat",DEEPLEARN_TEMP_DIRECTORY); /* save the first neuron */ fp = fopen(filename,"wb"); assert(fp!=0); bp_neuron_save(fp, &n1); fclose(fp); /* load into the second neuron */ fp = fopen(filename,"rb"); assert(fp!=0); bp_neuron_load(fp, &n2); fclose(fp); /* compare the two */ assert(bp_neuron_compare(&n1, &n2)==1); /* free memory */ bp_neuron_free(&n1); bp_neuron_free(&n2); printf("Ok\n"); }
static void test_backprop_neuron_copy() { bp_neuron n1, n2; int retval, no_of_inputs=10; unsigned int random_seed = 123; printf("test_backprop_neuron_copy..."); bp_neuron_init(&n1, no_of_inputs, &random_seed); bp_neuron_init(&n2, no_of_inputs, &random_seed); bp_neuron_copy(&n1, &n2); retval = bp_neuron_compare(&n1, &n2); if (retval != 1) { printf("\nretval %d\n", retval); } assert(retval == 1); bp_neuron_free(&n1); bp_neuron_free(&n2); printf("Ok\n"); }