diff --git a/neuralNetworkTests.c b/neuralNetworkTests.c index e993e5f..04a278e 100644 --- a/neuralNetworkTests.c +++ b/neuralNetworkTests.c @@ -8,38 +8,46 @@ static void prepareNeuralNetworkFile(const char *path, const NeuralNetwork nn) { - FILE *file = fopen(path, "wb"); - if (!file) { + FILE *file = fopen(path, "wb"); //Datei öffnen im write binary modus + if (!file) //wenn fopen 0 zurück gibt + { fprintf(stderr, "Fehler: Datei konnte nicht geöffnet werden.\n"); return; } // Header schreiben const char *header = "__info2_neural_network_file_format__"; - fwrite(header, sizeof(char), strlen(header), file); + fwrite(header, sizeof(char), strlen(header), file); // Zeiger auf Daten, größe des ElementsChar (1 byte), + //länge des Stings ohen \0, Zieldatei - // Erste Dimension: Input der ersten Schicht - unsigned int inputDim = nn.layers[0].weights.cols; + // Erste Dimension: Input-Dimension der ersten Schicht (Anzahl der Eingangsneuronen)Anzahl Spalten + unsigned int inputDim = nn.layers[0].weights.cols; + // Speichert die Input-Dimension in die Datei fwrite(&inputDim, sizeof(unsigned int), 1, file); - // Für jede Schicht - for (int i = 0; i < nn.numberOfLayers; i++) { - Layer layer = nn.layers[i]; + // Für jede Schicht im Netzwerk + for (int i = 0; i < nn.numberOfLayers; i++) + { + Layer layer = nn.layers[i]; // Zugriff auf die aktuelle Schicht - // Output-Dimension + // Output-Dimension: Anzahl der Neuronen in dieser Schicht (Anzahl Zeilen der Gewichtsmatrix) unsigned int outputDim = layer.weights.rows; + // Speichert die Output-Dimension in die Datei fwrite(&outputDim, sizeof(unsigned int), 1, file); - // Weights + // Speichert die Gewichtsmatrix der Schicht in die Datei + // Anzahl der Elemente = rows * cols, Typ = MatrixType fwrite(layer.weights.buffer, sizeof(MatrixType), layer.weights.rows * layer.weights.cols, file); - // Biases + // Speichert die Bias-Werte der Schicht in die Datei + // Anzahl der Elemente = rows * cols (meist rows x 1), Typ = MatrixType fwrite(layer.biases.buffer, sizeof(MatrixType), layer.biases.rows * layer.biases.cols, file); } - fclose(file); +// Schließt die Datei nach dem Schreiben +fclose(file); } void test_loadModelReturnsCorrectNumberOfLayers(void)