# Aufgabenverteilung: | Flo | Jamin | |---|---| | Matrixfunktionen | Image-Ladefunktionen | | Matrixmultiplikation | Dateiformat verstehen | | Broadcasting | Datei einlesen | | Speicherverwaltung | Speicherverwaltung | | NN-Testdatei schreiben | clearSeries | | ca. 50–55 % | ca. 45–50 % | --- ## imageInput: - Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei - Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen - Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt ## matrix: - Matrix-Funktionen implementieren ## neuralNetworkTests: - prepareNeuralNetworkFile --- # Co-Pilot Guideline: --- ## Aufgabe 1: Matrix-Modul implementieren ### Matrix-Struktur erstellen Eine geeignete `struct Matrix` definieren, die mindestens enthält: - Anzahl der Zeilen - Anzahl der Spalten - Speicherbereich für die Matrixwerte ### Fehlende Funktionen implementieren Alle TODOs in `matrix.c` bearbeiten. Besonderes Augenmerk auf die Funktion: ```c add() ``` Anforderungen: - Elementweise Addition zweier Matrizen gleicher Größe - Broadcasting einer Spaltenvektor-Matrix auf eine größere Matrix ### Tests ausführen ```bash make matrixTests ./runMatrixTests ``` --- ## Aufgabe 2: Bilder einlesen Die Datei `mnist_test.info2` enthält die Testbilder im Binärformat. ### Vorgehensweise 1. Sinnvolle Hilfsfunktionen in `imageInput.c` erstellen 2. Diese als `static` deklarieren 3. Eigene Unit-Tests ergänzen 4. Funktion `readImages()` implementieren ### Tests ausführen ```bash make imageInputTests ./runImageInputTests ``` --- ## Aufgabe 3: Neuronales Netz testen In `neuralNetworkTests.c` die Funktion ```c prepareNeuralNetworkFile() ``` implementieren. ### Ziel - Eine gültige Testdatei für die Unit-Tests generieren - Die erwartete Dateistruktur einhalten ### Tests ausführen ```bash make neuralNetworkTests ./runNeuralNetworkTests ``` --- ## Abschluss Vor der Abgabe sicherstellen, dass: - Alle Unit-Tests erfolgreich sind - Keine Compiler-Warnungen auftreten - Das Gesamtprogramm korrekt funktioniert ### Endprogramm kompilieren ```bash make mnist ``` ### Programm ausführen ```bash ./mnist mnist_test.info2 mnist_model.info2 ``` --- ## Optionale Erweiterung Mit der Bibliothek **Raylib** eine grafische Oberfläche erstellen: - Ziffern mit der Maus zeichnen - Zeichnung als Eingabe für das neuronale Netz verwenden - Klassifikation direkt anzeigen