TensorBoard-Tutorial: TensorFlow-Graph-Visualisierung [Beispiel]

Was ist TensorBoard?

TensorBoard ist die Schnittstelle zur Visualisierung des Diagramms und anderer Tools zum Verstehen, Debuggen und Optimieren des Modells. Es handelt sich um ein Tool, das Messungen und Visualisierungen für den Workflow des maschinellen Lernens bereitstellt. Es hilft, Metriken wie Verlust und Genauigkeit, Modelldiagrammvisualisierung, Projekteinbettung in niedrigerdimensionalen Räumen usw. zu verfolgen.

TensorFlow-Diagrammvisualisierung anhand eines Tensorboard-Beispiels

Das Bild unten stammt aus dem TensorBoard-Diagramm, das Sie in diesem TensorBoard-Tutorial erstellen werden. Es ist das Hauptpanel:

Visualisierung von TensorFlow-Graphen
Visualisierung von TensorFlow-Graphen

Auf dem Bild unten sehen Sie das Panel der TensorBoard-Grafikvisualisierung. Das Bedienfeld enthält verschiedene Registerkarten, die mit der Informationsebene verknüpft sind, die Sie beim Ausführen des Modells hinzufügen.

TensorBoard-Diagramme

TensorBoard-Diagramme
  • Skalare: Verschiedene nützliche Informationen während des Modelltrainings anzeigen
  • Graphs: Modell anzeigen
  • Histogramm: Gewichte mit einem Histogramm anzeigen
  • Vertrieb: Zeigt die Gewichtsverteilung an
  • Projektor: Hauptkomponentenanalyse und T-SNE-Algorithmus anzeigen. Die zur Dimensionsreduktion verwendete Technik

In diesem TensorBoard-Tutorial trainieren Sie ein einfaches Deep-Learning-Modell. Wie es funktioniert, erfahren Sie in einem zukünftigen Tutorial.

Wenn Sie sich die Grafik ansehen, können Sie verstehen, wie das Modell funktioniert.

  1. Stellen Sie die Daten in die Warteschlange des Modells: Übertragen Sie eine Datenmenge, die der Stapelgröße entspricht, in das Modell, d. h. die Anzahl der Datenfeeds nach jeder Iteration
  2. Geben Sie die Daten an die Tensoren weiter
  3. Trainiere das Modell
  4. Zeigen Sie die Anzahl der Chargen während des Trainings an. Speichern Sie das Modell auf der Festplatte.

TensorFlow-Diagrammvisualisierung anhand eines Tensorboard-Beispiels

Die Grundidee hinter Tensorboard ist, dass ein neuronales Netzwerk eine Art Blackbox sein kann und wir ein Tool benötigen, um zu untersuchen, was sich in dieser Box befindet. Sie können sich Tensorboard als Taschenlampe vorstellen, mit der Sie in das neuronale Netzwerk eintauchen können.

Es hilft, die Abhängigkeiten zwischen Operationen zu verstehen, wie die Gewichte berechnet werden, zeigt die Verlustfunktion und viele andere nützliche Informationen an. Wenn Sie all diese Informationen zusammenführen, haben Sie ein großartiges Tool zum Debuggen und Finden von Möglichkeiten zur Verbesserung des Modells.

Um Ihnen eine Vorstellung davon zu geben, wie nützlich das TensorBoard-Diagramm sein kann, sehen Sie sich das Bild unten an:

TensorBoard-Diagramme
TensorBoard-Diagramm

Ein neuronales Netzwerk entscheidet, wie die verschiedenen „Neuronen“ verbunden werden und wie viele Schichten vorhanden sind, bevor das Modell ein Ergebnis vorhersagen kann. Sobald Sie die Architektur definiert haben, müssen Sie nicht nur das Modell trainieren, sondern auch eine Metrik festlegen, um die Genauigkeit der Vorhersage zu berechnen. Diese Metrik wird als verlustfunktion. Das Ziel besteht darin, die Verlustfunktion zu minimieren. Mit anderen Worten bedeutet dies, dass das Modell weniger Fehler macht. Alle Algorithmen des maschinellen Lernens wiederholen die Berechnungen so oft, bis der Verlust eine flachere Linie erreicht. Um diese Verlustfunktion zu minimieren, müssen Sie Folgendes definieren: Lernrate. Es ist die Geschwindigkeit, die das Modell lernen soll. Wenn Sie die Lernrate zu hoch einstellen, hat das Modell keine Zeit, etwas zu lernen. Dies ist im linken Bild der Fall. Die Linie bewegt sich nach oben und unten, was bedeutet, dass das Modell das Ergebnis anhand reiner Schätzungen vorhersagt. Das Bild rechts zeigt, dass der Verlust im Laufe der Iteration abnimmt, bis die Kurve flacher wird, was bedeutet, dass das Modell eine Lösung gefunden hat.

TensorBoard ist ein großartiges Tool, um solche Metriken zu visualisieren und potenzielle Probleme hervorzuheben. Das neuronale Netzwerk kann Stunden bis Wochen brauchen, bis es eine Lösung findet. TensorBoard aktualisiert die Metriken sehr oft. In diesem Fall müssen Sie nicht bis zum Ende warten, um zu sehen, ob das Modell richtig trainiert wird. Sie können TensorBoard öffnen, um zu überprüfen, wie das Training verläuft, und bei Bedarf die entsprechenden Änderungen vornehmen.

Wie verwende ich TensorBoard?

In diesem Tutorial erfahren Sie, wie Sie TensorBoard vom Terminal für MacOS und die Befehlszeile TensorBoard für öffnen Windows.

Der Code wird in einem zukünftigen Tutorial erklärt, der Fokus liegt hier auf TensorBoard.

Zunächst müssen Sie die Bibliotheken importieren, die Sie während des Trainings verwenden werden

## Import the library
import tensorflow as tf
import numpy as np

Sie erstellen die Daten. Es handelt sich um ein Array mit 10000 Zeilen und 5 Spalten

X_train = (np.random.sample((10000,5)))
y_train =  (np.random.sample((10000,1)))
X_train.shape

Ausgang

(10000, 5)

Die folgenden Codes transformieren die Daten und erstellen das Modell.

Beachten Sie, dass die Lernrate 0.1 beträgt. Wenn Sie diese Rate auf einen höheren Wert ändern, findet das Modell keine Lösung. Dies geschah auf der linken Seite des obigen Bildes.

Während der meisten TensorFlow-Tutorials, verwenden Sie den TensorFlow-Schätzer. Dies ist die TensorFlow-API, die alle mathematischen Berechnungen enthält.

Um die Protokolldateien zu erstellen, müssen Sie den Pfad angeben. Dies geschieht mit dem Argument model_dir.

Im TensorBoard-Beispiel unten speichern Sie das Modell im Arbeitsverzeichnis, also dort, wo Sie die Notebook- oder Python-Datei speichern. Innerhalb dieses Pfads erstellt TensorFlow einen Ordner namens train mit einem untergeordneten Ordner namens linreg.

feature_columns = [
      tf.feature_column.numeric_column('x', shape=X_train.shape[1:])]
DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns,
# Indicate where to store the log file    
     model_dir='train/linreg',    
     hidden_units=[500, 300],    
     optimizer=tf.train.ProximalAdagradOptimizer(      
          learning_rate=0.1,      
          l1_regularization_strength=0.001    
      )
)

Ausgang

INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}

Der letzte Schritt dieses TensorFlow-Visualisierungsdiagrammbeispiels besteht darin, das Modell zu trainieren. Während des Trainings schreibt TensorFlow Informationen in das Modellverzeichnis.

# Train the estimator
train_input = tf.estimator.inputs.numpy_input_fn(    
     x={"x": X_train},    
     y=y_train, shuffle=False,num_epochs=None)
DNN_reg.train(train_input,steps=3000)

Ausgang

INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt.
INFO:tensorflow:loss = 40.060104, step = 1
INFO:tensorflow:global_step/sec: 197.061
INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec)
INFO:tensorflow:global_step/sec: 172.487
INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec)
INFO:tensorflow:global_step/sec: 193.295
INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec)
INFO:tensorflow:global_step/sec: 175.378
INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec)
INFO:tensorflow:global_step/sec: 209.737
INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec)
INFO:tensorflow:global_step/sec: 171.646
INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec)
INFO:tensorflow:global_step/sec: 192.269
INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec)
INFO:tensorflow:global_step/sec: 198.264
INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec)
INFO:tensorflow:global_step/sec: 226.842
INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec)
INFO:tensorflow:global_step/sec: 152.929
INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec)
INFO:tensorflow:global_step/sec: 166.745
INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec)
INFO:tensorflow:global_step/sec: 161.854
INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec)
INFO:tensorflow:global_step/sec: 179.074
INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec)
INFO:tensorflow:global_step/sec: 202.776
INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec)
INFO:tensorflow:global_step/sec: 144.161
INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec)
INFO:tensorflow:global_step/sec: 154.144
INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec)
INFO:tensorflow:global_step/sec: 151.094
INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec)
INFO:tensorflow:global_step/sec: 193.644
INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec)
INFO:tensorflow:global_step/sec: 189.707
INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec)
INFO:tensorflow:global_step/sec: 176.423
INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec)
INFO:tensorflow:global_step/sec: 213.066
INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec)
INFO:tensorflow:global_step/sec: 220.975
INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec)
INFO:tensorflow:global_step/sec: 219.289
INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec)
INFO:tensorflow:global_step/sec: 215.123
INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec)
INFO:tensorflow:global_step/sec: 175.65
INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec)
INFO:tensorflow:global_step/sec: 206.962
INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec)
INFO:tensorflow:global_step/sec: 229.627
INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec)
INFO:tensorflow:global_step/sec: 195.792
INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec)
INFO:tensorflow:global_step/sec: 176.803
INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec)
INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt.
INFO:tensorflow:Loss for final step: 10.73032.

<tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>

Für MacOS-Benutzer

TensorBoard-Tutorial für MacOS-Benutzer

Für Windows Benutzer

TensorBoard-Tutorial für Windows Mitglied

Sie können diese Informationen im einsehenPyTorch TensorBoard.

Nachdem Sie nun die Protokollereignisse geschrieben haben, können Sie Tensorboard öffnen. Tensorboard Keras läuft auf Port 6006 (Jupyter läuft auf Port 8888). Sie können das Terminal für MacOs-Benutzer oder die Anaconda-Eingabeaufforderung verwenden für Windows Benutzer.

Für MacOS-Benutzer

# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!

Das Notizbuch wird im Pfad /Users/Guru99/tuto_TF gespeichert

Für Windows Nutzer

cd C:\Users\Admin\Anaconda3
activate hello-tf

Das Notizbuch wird im Pfad C:\Users\Admin\Anaconda3 gespeichert

Um Tensorboard zu starten, können Sie diesen Code verwenden

Für MacOS-Benutzer

tensorboard --logdir=./train/linreg

Für Windows Nutzer

tensorboard --logdir=.\train\linreg

Tensorboard befindet sich unter dieser URL: http://localhost:6006

Es könnte sich auch an folgender Stelle befinden.

Verwenden Sie TensorBoard

Kopieren Sie die URL und fügen Sie sie in Ihren bevorzugten Browser ein. Sie sollten Folgendes sehen:

Beachten Sie, dass wir in dem entsprechenden Tutorial lernen werden, wie man die Grafik liest tiefe Lernen.

Verwenden Sie TensorBoard

Wenn Sie so etwas sehen:

Verwenden Sie TensorBoard

Das bedeutet, dass Tensorboard die Protokolldatei nicht finden kann. Stellen Sie sicher, dass Sie die CD auf den richtigen Pfad verweisen, oder überprüfen Sie noch einmal, ob das Protokollereignis erstellt wurde. Wenn nicht, führen Sie den Code erneut aus.

Wenn Sie TensorBoard schließen möchten, drücken Sie STRG+C

Tipp: Überprüfen Sie Ihre Anaconda-Eingabeaufforderung auf das aktuelle Arbeitsverzeichnis.

Verwenden Sie TensorBoard

Die Protokolldatei sollte unter C:\Benutzer\Admin erstellt werden

Zusammenfassung

TensorBoard ist ein großartiges Tool zur Visualisierung Ihres Modells. Außerdem werden während des Trainings viele Metriken angezeigt, wie z. B. Verlust, Genauigkeit oder Gewichte.

Um Tensorboard zu aktivieren, müssen Sie den Pfad Ihrer Datei festlegen:

cd /Users/Guru99/tuto_TF

Aktivieren Sie die Tensorflow-Umgebung

activate hello-tf

Starten Sie Tensorboard

tensorboard --logdir=.+ PATH