diff --git a/main.c b/main.c index d35d189..434c38b 100644 --- a/main.c +++ b/main.c @@ -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)); } \ No newline at end of file diff --git a/neuronal_network.c b/neuronal_network.c index b0285ff..fdcd032 100644 --- a/neuronal_network.c +++ b/neuronal_network.c @@ -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]; } }