Terragon-Programmierung: Einführung in TensorFlow.js
Diese kurze Einführung in TensorFlow.js zeigt die Einbindung in eine HTML Seite, das Erstellen eines Tensors und einer Variablen, das Durchführen von Operationen und das Freigeben des Speichers.
Basierend auf der offiziellen Einführung:
Schritt 1: TensorFlow.js in HTML Seite einbinden
Das Einbinden der JavaScript Datei erfolgt ganz einfach über <script> und kann entweder von einer lokalen Datei, oder von der externen Quelle eingebunden werden.
Hinweis: Auch wenn der Verweis auf eine externe Datei immer die aktuellste Version liefert, kann es Sinn machen eine lokale Datei zu speichern, die auch nach mehreren Jahren noch zuverlässig genau so funktioniert wie heute.
Schritt 2: Den ersten Tensor erstellen
Die grundlegenden Container in TensorFlow sind Tensors, die ähnlich wie Arrays in PHP aufgebaut sind, jedoch nur numerische Zahlenwerte beinhalten können.
Optional kann vor dem Einrichten eines Tensors dessen shape festgelegt werden, der die Anzahl der Reihen und Spalten des Arrays (Tensors) angibt.
Um die Eingabe von Standard-Tensors zu vereinfachen bzw schneller zu machen, lassen sich beliebig große Tensors mit Einsen oder Nullen komplett füllen.
Wichtig zu wissen ist, dass Tensors sich nicht mehr verändern lassen, wenn sie einmal angelegt wurden. Das heißt, sämtliche Operation mit ihnen ändern nicht den Tensor, sondern erstellen einen neuen Tensor mit dem Rechenergebnis.
Schritt 3: Die erste Variable erstellen
Schritt 4: Die erste Operation erstellen
Schritt 5: Operationen verketten
Speicher aufräumen
Da bereits einfache Operationen viel Speicher belegen können, wird empfohlen den Speicher nach der Berechnung wieder zu löschen bzw freizugeben.
Dazu wird die eigentliche Berechnung in eine Art Metafunktion gepackt, die nach der Berechnung sämtliche Zwischenschritte löscht, und nur das Ergebnis im Speicher behält.
Ob das wirklich notwendig ist habe ich noch nicht getestet, aber da es empfohlen wird sei an dieser Stelle darauf hingewiesen.
Training-Data immer in zufälliger Reihenfolge trainieren
When training the classifier, it's important to randomly shuffle the data, so the model's predictions aren't affected by the order in which we feed it images.
For example, if we were to feed the model all the 1 digits first, during this phase of training, the model might learn to simply predict 1 (since this minimizes the loss).
If we were to then feed the model only 2 s, it might simply switch to predicting only 2 and never predict a 1 (since, again, this would minimize loss for the new set of images).
The model would never learn to make an accurate prediction over a representative sample of digits.