prepareNeuralNetworkFile geschrieben und Tests laufen gelassen

This commit is contained in:
Manuel Nitsche 2025-12-02 13:41:19 +01:00
parent b2408e6f82
commit 3f218ef2de

View File

@ -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)