Eine Übersicht über den Code
canvaselements-functions/:
add-canvaselement.js remove-all-canvaselements.js
Hinzufügen und Löschen eines canvas-elements und da alle anderen Klassen davon erben wird hier eine Index-Struktur implementiert um eine Übersicht zu haben, was alles an Objekten gerade exisitert.
classes/:
canvaselement.js colorScale.js eoutput.js line.js matrix.js neuron.js output.js sidebar.js
Jede Klasse hat ihre eigene Datei, wobei fast jede Klasse von canvaselement erbt!
plot/:
myPlot.js openPlotWindow.js plot.html
Hier sind nur ungenutze Code-Relikte.
save-load-file/:
load-dataset.js load-file.js save-file.js splitData.js
-
In der Datei load-file ist der Code zum Laden eines gespeicherten Neuronalen Netzes. Beachte, dass hier nicht das Lernverfahren gespeichert wird, sondern nur die Struktur des Netzwerks und der Eingabematrizen.
-
In der Datei save-file wird das Netzwerk entsprechend im json Format gespeichert.
-
In der Datei load-dataset gibt es verschiedene Methoden die aufeinander aufbauen. Diese Dokumentation ist etwas ausführlicher, da sie während der Entwicklung gut gepflegt wurde.
csvToArray wandelt die gegebene Datei in ein array um, wo jede zeile ein array ist gibt labelvektor zurück addEventListener liest Datei ein wandelt sie in array um - csvToArray macht Matrix draus - createMatrix nutzt csvToArray, createMatrix TransformRowToMatrix wandelt gegebene Zeile des Datensazes in matrixarray um und labelvektor nutzt keine andere funktion transformDataToMatrics wandelt alle zeilen eines datensatzes in matrixarray, labelvektor um benutzt transformRowToMatrix create Matrix lösche alte matrizen erstelle neue Matirzen auf canvas lösche outputs erstelle neue outputs setze alle label der outputs richtig nutzt transformDataToMatrics loadScriptFile lade skript datei in textfeld -
In der Datei splitData werden die Eingabematrizen aufteilt in Test und Trainingsmatrizen. Hierbei handelt es sich jedoch um ein voll funktionsfähiges Relikt, dass wegen der fehlenden Möglichkeit der Evaluation der Modelle nicht genutzt wird.
training/:
backpropagation.js calculate-error.js eigenesTraining.js random-training.js start-training.js training-getter.js
In den Dateien
- random-training
- backpropagation
- eigenes-Training
sind jeweils die spezifischen Lernverfahren implementiert.
Die Datei start-training ist Lernverfahren unabhängig und ruft rundenbasiert das jeweils ausgewählte Lernverfahren auf und achtet auf die serielle Ausführung mittels der pause Funktion, sodass auch bei großen Rundendauern bei der Animation nichts falsch läuft durch synchrone Ausführungen des Codes. Diese Datei ist also die Trainings-Masterdatei.
In der Datei training-getter sind nur Hilfsfunktionen die die gewählten Parameter des Nutzers abfragen.
In der Datei calculate-error sind zwei Fehlermetriken implementiert. Dabei nimmt der maximumError den größten Fehler alles Eingabematrizen, sodass mit dieser Metrik die schlechteste Eingabematrix optimiert wird. Der quadraticError ist einfach der Standardfehler im Maschinellen Lernen.
andere Skripte
-
createStandardNetwork.js
erstelle das Standardnetzwerk
- frage Parameter ab
- lösche alle alten Neuronen, Linien
- erstelle Neuronen und verbinde sie (ohne Neuronen des letzten Layers)
- verbinde Neuronen mit Eingabematrix
- erstelle so viele Neuronen im letzten Layer wie Ergebnis-Outputs existieren
- verbinde Neuronen des letzten Layers mit Ergebnis-Outputs (diese wurden extra nicht gelöscht)
- verbinde Neuronen des letzten Layers mit den restlichen Neuronen
- sortiere Netzwerk
-
init.js
Initialisierung der Website und der Tools
-
main.js
Erstelle Anfangsnetz manuell damit die Website nicht leer ist und man sofort starten kann
-
mouse-pos.js
Maus Handling
-
onload.js
Verhalten der Website beim Neu-Laden
-
sort-network.js
sortiert das Netzwerk für eine schöne Darstellung
unnötige Elemente können wahlweise gelöscht werden
-
functions.js
Zoom- Funktionen und einzelne Getter
-
linearity.js
Aktivierungsfunktionen werden hier implementiert und ihre Ableitung
-
math-functions.js
hat nur eine Funktion - calculateStickedCoordinates damit die Neuronen immer auf einem Raster angeordnet sind
-
normalizeDataSet.js
normalisiert die Eingabewerte aller Matrizen - normalisiert aber nicht die zu vorhersagenden Werte einer Matrix
updatet danach die Darstellung in der rechten Sidebar
-
showUnshowOptions.js
Zeigt einzelne html-Elemente der index.html an bzw. löscht oder fügt sie hinzu je nachdem welches Lernverfahren etc. gewählt wurde
-
tools.js
implementiert die Tool-Funktionen, damit ein Tool wie z.B. das Hinzufügen von Neuronen aktiv bleibt, wenn man ein Neuron hinzugefügt hat und man nicht immer neu auf den Button Neuron hinzufügen klicken muss