generated from freudenreichan/info2Praktikum-NeuronalesNetz
140 lines
2.5 KiB
Markdown
140 lines
2.5 KiB
Markdown
# 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
|