fixed bugs & mem leak

This commit is contained in:
Thomas 2023-09-23 19:16:49 +02:00
parent abd888e2f8
commit 3557c28392
2 changed files with 8 additions and 8 deletions

8
main.c
View file

@ -7,18 +7,18 @@ int main() {
Image** images = import_images("../data/train-images.idx3-ubyte", "../data/train-labels.idx1-ubyte", NULL, 60000); Image** images = import_images("../data/train-images.idx3-ubyte", "../data/train-labels.idx1-ubyte", NULL, 60000);
// img_visualize(images[0]); // img_visualize(images[0]);
Neural_Network* nn = new_network(28*28, 32, 3, 10, 0.01); Neural_Network* nn = new_network(28*28, 100, 5, 10, 0.01);
randomize_network(nn, 1); randomize_network(nn, 10);
// save_network(nn); // save_network(nn);
// Neural_Network* nn = load_network("../networks/test1.txt"); // Neural_Network* nn = load_network("../networks/test1.txt");
for (int i = 0; i < 20000; ++i) { for (int i = 0; i < 60000; ++i) {
train_network(nn, images[i], images[i]->label); train_network(nn, images[i], images[i]->label);
} }
// train_network(nn, images[0], images[0]->label); // train_network(nn, images[0], images[0]->label);
// train_network(nn, images[0], images[0]->label); // train_network(nn, images[0], images[0]->label);
printf("%lf\n", measure_network_accuracy(nn, images, 1000)); printf("%lf\n", measure_network_accuracy(nn, images, 10000));
} }

View file

@ -210,7 +210,7 @@ void train_network(Neural_Network* network, Image *image, int label) {
delta = calculate_delta_hidden(previous_delta, network->weights[1], output[0]); delta = calculate_delta_hidden(previous_delta, network->weights[1], output[0]);
delta_weights[0] = calculate_weights_delta(image_data, delta); delta_weights[0] = calculate_weights_delta(image_data, delta);
for (int i = 0; i < network->hidden_size ; ++i) { for (int i = 0; i < network->hidden_amount + 1; ++i) {
apply_weights(network, delta_weights[i], i); apply_weights(network, delta_weights[i], i);
} }
@ -264,7 +264,7 @@ Matrix* calculate_delta_hidden(Matrix* next_layer_delta, Matrix* weights, Matrix
void apply_weights(Neural_Network* network, Matrix* delta_weights_matrix, int index) { void apply_weights(Neural_Network* network, Matrix* delta_weights_matrix, int index) {
if(index > network->hidden_amount + 1 || index < 0) { if(index > network->hidden_amount || index < 0) {
printf("ERROR: Index out of range! (apply_weights)"); printf("ERROR: Index out of range! (apply_weights)");
exit(1); exit(1);
} }
@ -274,8 +274,8 @@ void apply_weights(Neural_Network* network, Matrix* delta_weights_matrix, int in
exit(1); exit(1);
} }
for (int i = 0; i < delta_weights_matrix->rows; ++i) { for (int i = 0; i < delta_weights_matrix->rows; i++) {
for (int j = 0; j < delta_weights_matrix->columns; ++j) { for (int j = 0; j < delta_weights_matrix->columns; j++) {
network->weights[index]->numbers[i][j] += delta_weights_matrix->numbers[i][j]; network->weights[index]->numbers[i][j] += delta_weights_matrix->numbers[i][j];
} }
} }