diff --git a/neuralNetworkTests.c b/neuralNetworkTests.c index 21ab370..5173fa2 100644 --- a/neuralNetworkTests.c +++ b/neuralNetworkTests.c @@ -6,11 +6,46 @@ #include "neuralNetwork.h" + static void prepareNeuralNetworkFile(const char *path, const NeuralNetwork nn) { - // TODO + //öffnet die Datei in Binär zum schreiben + FILE *file = fopen(path, "wb"); + if (!file) return; + //Fester Headerstring + const char *tag = "__info2_neural_network_file_format__"; + fwrite(tag, sizeof(char), strlen(tag), file); + //Bestimmt die Eingabedimension + int inputDim = nn.layers[0].weights.cols; + fwrite(&inputDim, sizeof(int), 1, file); + + + for (unsigned int i = 0; i < nn.numberOfLayers; i++) { + + const Layer *L = &nn.layers[i]; + const Matrix *W = &L->weights; + const Matrix *B = &L->biases; + + int outputDim = W->rows; + fwrite(&outputDim, sizeof(int), 1, file); + //Anzahl der Weight-Werte + size_t weightCount = (size_t)(W->rows * W->cols); + fwrite(&weightCount, sizeof(size_t), 1, file); + //Anzahl der Bias-Werte + size_t biasCount = (size_t)(B->rows * B->cols); + fwrite(B->buffer, sizeof(MatrixType), biasCount, file); + + inputDim = outputDim; + } + + int zero = 0; + fwrite(&zero, sizeof(int), 1, file); + + fclose(file); + } + void test_loadModelReturnsCorrectNumberOfLayers(void) { const char *path = "some__nn_test_file.info2";