generated from freudenreichan/info2Praktikum-NeuronalesNetz
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:
add()
Anforderungen:
- Elementweise Addition zweier Matrizen gleicher Größe
- Broadcasting einer Spaltenvektor-Matrix auf eine größere Matrix
Tests ausführen
make matrixTests
./runMatrixTests
Aufgabe 2: Bilder einlesen
Die Datei mnist_test.info2 enthält die Testbilder im Binärformat.
Vorgehensweise
- Sinnvolle Hilfsfunktionen in
imageInput.cerstellen - Diese als
staticdeklarieren - Eigene Unit-Tests ergänzen
- Funktion
readImages()implementieren
Tests ausführen
make imageInputTests
./runImageInputTests
Aufgabe 3: Neuronales Netz testen
In neuralNetworkTests.c die Funktion
prepareNeuralNetworkFile()
implementieren.
Ziel
- Eine gültige Testdatei für die Unit-Tests generieren
- Die erwartete Dateistruktur einhalten
Tests ausführen
make neuralNetworkTests
./runNeuralNetworkTests
Abschluss
Vor der Abgabe sicherstellen, dass:
- Alle Unit-Tests erfolgreich sind
- Keine Compiler-Warnungen auftreten
- Das Gesamtprogramm korrekt funktioniert
Endprogramm kompilieren
make mnist
Programm ausführen
./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