From 3af1970eb770ce1ea438e4059cbdc8a471e6fa8b Mon Sep 17 00:00:00 2001 From: KohlerMaxi Date: Mon, 9 Nov 2026 14:45:19 +0100 Subject: [PATCH] =?UTF-8?q?=C3=84nderung=20an=20neuralesNetwork.c=20vorgen?= =?UTF-8?q?ommen,=20weil=20es=20die=20Funktion=20aus=20matrix.c=20falsch?= =?UTF-8?q?=20benutzt=20hat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Startcode/neuralNetwork.c | 18 +++++++++--------- Startcode/runNeuralNetworkTests | Bin 0 -> 78608 bytes 2 files changed, 9 insertions(+), 9 deletions(-) create mode 100755 Startcode/runNeuralNetworkTests diff --git a/Startcode/neuralNetwork.c b/Startcode/neuralNetwork.c index bd8f164..b0b63cc 100644 --- a/Startcode/neuralNetwork.c +++ b/Startcode/neuralNetwork.c @@ -67,14 +67,14 @@ static unsigned int readDimension(FILE *file) if(fread(&dimension, sizeof(int), 1, file) != 1) dimension = 0; - + return dimension; } static Matrix readMatrix(FILE *file, unsigned int rows, unsigned int cols) { Matrix matrix = createMatrix(rows, cols); - + if(matrix.buffer != NULL) { if(fread(matrix.buffer, sizeof(MatrixType), rows*cols, file) != rows*cols) @@ -128,7 +128,7 @@ NeuralNetwork loadModel(const char *path) { if(checkFileHeader(file)) { - unsigned int inputDimension = readDimension(file); + unsigned int inputDimension = readDimension(file); unsigned int outputDimension = readDimension(file); while(inputDimension > 0 && outputDimension > 0) @@ -142,7 +142,7 @@ NeuralNetwork loadModel(const char *path) clearModel(&model); break; } - + layerBuffer = (Layer *)realloc(model.layers, (model.numberOfLayers + 1) * sizeof(Layer)); if(layerBuffer != NULL) @@ -170,7 +170,7 @@ NeuralNetwork loadModel(const char *path) static Matrix imageBatchToMatrixOfImageVectors(const GrayScaleImage images[], unsigned int count) { - Matrix matrix = {NULL, 0, 0}; + Matrix matrix = {0, 0, NULL}; if(count > 0 && images != NULL) { @@ -201,7 +201,7 @@ static Matrix forward(const NeuralNetwork model, Matrix inputBatch) { Matrix biasResult; Matrix weightResult; - + weightResult = multiply(model.layers[i].weights, result); clearMatrix(&result); biasResult = add(model.layers[i].biases, weightResult); @@ -248,9 +248,9 @@ unsigned char *predict(const NeuralNetwork model, const GrayScaleImage images[], Matrix outputBatch = forward(model, inputBatch); unsigned char *result = argmax(outputBatch); - + clearMatrix(&outputBatch); - + return result; } @@ -265,4 +265,4 @@ void clearModel(NeuralNetwork *model) model->layers = NULL; model->numberOfLayers = 0; } -} \ No newline at end of file +} diff --git a/Startcode/runNeuralNetworkTests b/Startcode/runNeuralNetworkTests new file mode 100755 index 0000000000000000000000000000000000000000..15b6417de623ba2606b1854e09eb6650af8e00bc GIT binary patch literal 78608 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 BwLJg; literal 0 HcmV?d00001