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);
// img_visualize(images[0]);
Neural_Network* nn = new_network(28*28, 32, 3, 10, 0.01);
randomize_network(nn, 1);
Neural_Network* nn = new_network(28*28, 100, 5, 10, 0.01);
randomize_network(nn, 10);
// save_network(nn);
// 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[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_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);
}
@ -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) {
if(index > network->hidden_amount + 1 || index < 0) {
if(index > network->hidden_amount || index < 0) {
printf("ERROR: Index out of range! (apply_weights)");
exit(1);
}
@ -274,8 +274,8 @@ void apply_weights(Neural_Network* network, Matrix* delta_weights_matrix, int in
exit(1);
}
for (int i = 0; i < delta_weights_matrix->rows; ++i) {
for (int j = 0; j < delta_weights_matrix->columns; ++j) {
for (int i = 0; i < delta_weights_matrix->rows; i++) {
for (int j = 0; j < delta_weights_matrix->columns; j++) {
network->weights[index]->numbers[i][j] += delta_weights_matrix->numbers[i][j];
}
}