From 3f218ef2de703893f4d0ec670fd2fa0e2c24bf67 Mon Sep 17 00:00:00 2001 From: manusmac Date: Tue, 2 Dec 2025 13:41:19 +0100 Subject: [PATCH] prepareNeuralNetworkFile geschrieben und Tests laufen gelassen --- neuralNetworkTests.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/neuralNetworkTests.c b/neuralNetworkTests.c index 21ab370..22ad1f7 100644 --- a/neuralNetworkTests.c +++ b/neuralNetworkTests.c @@ -5,10 +5,47 @@ #include "unity.h" #include "neuralNetwork.h" +#define FILE_HEADER_STRING "__info2_neural_network_file_format__" static void prepareNeuralNetworkFile(const char *path, const NeuralNetwork nn) { - // TODO + FILE *file = fopen(path, "wb"); + if (file == NULL) { + return; + } + + // Magic String (File Header) schreiben + size_t headerLen = strlen(FILE_HEADER_STRING); + fwrite(FILE_HEADER_STRING, sizeof(char), headerLen, file); + + // Erste inputDimension schreiben (vom ersten Layer) + if (nn.numberOfLayers > 0) { + unsigned int inputDim = nn.layers[0].weights.cols; + fwrite(&inputDim, sizeof(unsigned int), 1, file); + } + + // Für jeden Layer: outputDimension, weights und biases schreiben + for (unsigned int i = 0; i < nn.numberOfLayers; i++) { + Layer layer = nn.layers[i]; + + // Output-Dimension dieses Layers schreiben + unsigned int outputDim = layer.weights.rows; + fwrite(&outputDim, sizeof(unsigned int), 1, file); + + // Weights schreiben (alle Daten) + unsigned int weightSize = layer.weights.rows * layer.weights.cols; + fwrite(layer.weights.buffer, sizeof(MatrixType), weightSize, file); + + // Biases schreiben (alle Daten) + unsigned int biasSize = layer.biases.rows * layer.biases.cols; + fwrite(layer.biases.buffer, sizeof(MatrixType), biasSize, file); + } + + // Endmarkierung schreiben (0 als nächste outputDimension) + unsigned int endMarker = 0; + fwrite(&endMarker, sizeof(unsigned int), 1, file); + + fclose(file); } void test_loadModelReturnsCorrectNumberOfLayers(void)