Training mit TensorFlow.js

Mit Hilfe von TensorFlow.js und der Verwendung von SharedMobility.ai-Datasets kann man direkt im Browser eigene Vorhersagemodelle berechnen. Diese Modelle können über die von Keras abgeleitete API zusammengestellt werden. Durch den Aufruf von tf.sequential() wird ein neues neuronales Deep-Learning-Netzwerk erstellt. Einzelne Layer des Modells werden mit der Funktion model.add(tf.layers.dense(…)) hinzugefügt. Im Compile-Schritt werden die Hyperparameter für das Training, z.B. Lernrate und Batch-Größe, festgelegt. Im Beispiel wird bewusst auf zu kleine Eingabedaten und schnelle Batch-Größen gesetzt, damit die Berechnung im Browser schneller durchgeführt wird und entsprechende Ausgaben zu sehen sind. Die von SharedMobility.ai eingesetzten produktiven Hyperparameter sind im Quelltext einsehbar.

Um das Modell zu trainieren, werden einige Hilffunktionen beötigt:

  • convertCsvRecord() wandelt eine Zeile aus dem CSV-Dataset in ein JavaScript-Objekt um, welches für das Training verwendet werden kann. Das resultierende Objekt besteht aus einem Property xs = die Eingabeparameter und ys = die Ausgabeklassifizierung.
  • recordToInput() ist eine Subfunktion von convertCsvRecord() und erzeugt ein flaches Array, das als xs-Eingabeparameter verwendet wird. Sie wandelt die Eingabewerte mit dem sogenannten One-Hot-Encoding in ein nur aus 0 oder 1 bestehendes flaches Array um. Dieses Encoding verhindert, dass höhere Werte zu starken Einfluss auf das Ergebnis der Klassifizierung haben. Im konkreten Beispiel möchten wir nicht die rohen Wetterwerte als Eingabe verwenden, sondern bilden Kategorien: kein / kaum / spürbarer / starker / sehr starker Regen statt echter Messwerte in Liter pro Quadratmeter pro Stunde.
  • recordToOutput() ist das Pendant zu recordToInput(), jedoch für die Ausgabeklasse in ys. Wir unterteilen die Ausgabe in 4 Klassen: die Station ist entweder voller Räder, mit ausreichend Rädern, mit wenig Rädern oder mit kaum oder gar keinen Rädern gefüllt.

Das gesamte Codebeispiel kann auf Codepen angesehen, ausprobiert und verändert werden: https://codepen.io/botic/pen/dyyPgYq

Modellerstellung im Browser

Das nachfolgende Beispiel ist ein Auszug aus dem vollen Codepen-Beispiel und zeigt nur den Code zur Erstellung eines neuen neuronalen Netzes mit TensorFlow.js unter der Verwendung von eines SharedMobility.ai-Datasets: