diff --git a/Startcode/Aufgabenverteilung.txt b/Startcode/Aufgabenverteilung.txt new file mode 100644 index 0000000..d733c26 --- /dev/null +++ b/Startcode/Aufgabenverteilung.txt @@ -0,0 +1,70 @@ +Informatik 2 Praktikum - Aufgabe 2: Neuronales Netz +Aufgabenverteilung +=================================================== + +Aufwand in Prozent vom Gesamtaufwand (inkl. optionaler Aufgabe), +geschaetzt anhand der Aufgabenstellung. + +Gemeinsam (jeder einmal) +------------------------ +- Projektstruktur anschauen: welche Module gibt es, welche Funktionen fehlen? +- Startprogramm bauen und testen: + make mnist_initial + ./mnist mnist_test.info2 mnist_model.info2 + + +Maxi - Matrix-Modul (ca. 35 %) +------------------------------ +- Struktur "Matrix" an geeigneter Stelle (matrix.h) anlegen: + Anzahl Zeilen, Anzahl Spalten, Zeiger auf die Werte. +- Fehlende Funktionen in matrix.c implementieren (Hinweise aus den Unittests). +- Funktion add mit zwei Modi: + * Elementweise Addition (gleiche Groesse) + * Broadcasting: Matrix + Spaltenvektor (Spalten = 1, gleiche Zeilenanzahl), + Vektorwert jeder Zeile wird auf alle Elemente der Zeile addiert. +- Fertig, wenn gruen: + make matrixTests && ./runMatrixTests +- WICHTIG: Das Matrix-Struct moeglichst frueh pushen, David braucht es + fuer die Tests des neuronalen Netzes. + + +Hannes - Bilder einlesen (ca. 35 %) +----------------------------------- +- readImages in imageInput.c implementieren (Strukturen stehen in imageInput.h). +- Dateiformat (Binaerdatei, im Binaermodus "rb" oeffnen): + * String "__info2_image_file_format__" + * Anzahl Bilder (unsigned short) + * Breite (unsigned short) + * Hoehe (unsigned short) + * pro Bild: Breite*Hoehe Pixel (unsigned char, 0-255), dann Label (unsigned char, 0-9) +- Zuerst sinnvolle Hilfsfunktionen als static in imageInput.c schreiben + (z.B. Header pruefen, Header lesen, ein Bild lesen) und dafuer eigene + Unittests in imageInputTests.c ergaenzen. +- Danach readImages mit den Hilfsfunktionen zusammenbauen. +- Fertig, wenn gruen: + make imageInputTests && ./runImageInputTests +- Tipp: nach jedem Teilschritt testen und committen. + + +David - Neuronales Netz, Feinschliff, Optional (ca. 30 %) +--------------------------------------------------------- +- prepareNeuralNetworkFile() in neuralNetworkTests.c implementieren (ca. 15 %): + Erzeugt eine gueltige Testdatei. Dateiformat in neuralNetwork.c nachlesen + (Lesefunktion) und genau spiegelbildlich schreiben. + Datei beginnt mit "__info2_neural_network_file_format__", danach die Schichten. +- Fertig, wenn gruen: + make neuralNetworkTests && ./runNeuralNetworkTests +- Feinschliff (ca. 5 %), wenn alle Teile da sind: + * Projekt kompiliert ohne Warnungen + * alle Unittests laufen durch + * make mnist && ./mnist mnist_test.info2 mnist_model.info2 +- Optional (ca. 10 %): Ziffern mit der Maus malen und erkennen lassen, + in mnistVisualization.c mit Raylib. + + +Git-Regeln im Team +------------------ +- Vor jedem Arbeiten: git pull +- Nur eigene Dateien committen: git add (nicht git add .) +- Ordner und Dateien NICHT verschieben oder umbenennen. +- .idea/ und cmake-build-*/ nicht committen.