TensorBoard-Tutorial: Visualisierung von TensorFlow-Graphen
⚡ Intelligente Zusammenfassung
TensorBoard ist die visuelle Benutzeroberfläche für TensorFlow-Trainingsläufe und visualisiert Verlustkurven, Modellgraphen, Gewichtshistogramme und Einbettungen. In dieser Anleitung werden Ereignisdateien mithilfe eines Schätzers geschrieben und anschließend das Dashboard auf Port 6006 geöffnet.
Was ist TensorBoard?
TensorBoard ist die Benutzeroberfläche zur Visualisierung des Graphen und weiterer Werkzeuge zum Verständnis, zur Fehlersuche und zur Optimierung des Modells. Es ist ein Werkzeug, das Messungen und Visualisierungen für einen Machine-Learning-Workflow bereitstellt. tracMithilfe von k Metriken wie Verlust und Genauigkeit visualisieren sie den Modellgraphen und projizieren Einbettungen in niedrigdimensionale Räume.
TensorBoard wird ausgeliefert mit TensorFlow und läuft als kleiner lokaler Webserver, der die Ereignisdateien liest, die ein Trainingsjob auf die Festplatte schreibt.
TensorFlow-Graphvisualisierung mit TensorBoard – Beispiel
Das untenstehende Bild stammt aus dem TensorBoard-Graphen, den Sie in diesem Tutorial erstellen werden. Es handelt sich um das Hauptfenster:
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.
- Skalare: Zeigen Sie während des Modelltrainings verschiedene nützliche Informationen an.
- Diagramme: Zeig das Modell
- Histogramm: Gewichte mit einem Histogramm anzeigen
- Vertrieb: Zeigen Sie die Gewichtsverteilung an
- Beamer: Zeigen Sie die Hauptkomponentenanalyse und den T-SNE-Algorithmus. Die Technik wird zur Dimensionsreduktion verwendet.
In diesem TensorBoard-Tutorial trainieren Sie ein einfaches Modell. tiefe Lernen Das Modell und der daraus resultierende Graph werden von unten nach oben gelesen.
Anhand der Grafik lässt sich die Funktionsweise des Modells nachvollziehen. Die nummerierten Symbole im folgenden Screenshot markieren diese vier Phasen:
- 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
- Geben Sie die Daten an die Tensoren weiter
- Trainiere das Modell
- Zeigen Sie die Anzahl der Chargen während des Trainings an. Speichern Sie das Modell auf der Festplatte.
Die Grundidee von TensorBoard ist, dass sich ein neuronales Netzwerk wie eine Blackbox verhalten kann und man ein Werkzeug benötigt, um dessen Inneres zu untersuchen. Man kann sich TensorBoard wie eine Taschenlampe vorstellen, mit der man tief in das Netzwerk eintauchen kann.
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 der TensorBoard-Graph sein kann, sehen Sie sich die beiden folgenden Verlustkurven an:
Ein neuronales Netzwerk entscheidet, wie die verschiedenen Neuronen miteinander verbunden werden und wie viele Schichten benötigt werden, damit das Modell ein Ergebnis vorhersagen kann. Sobald die Architektur definiert ist, muss nicht nur das Modell trainiert werden, sondern auch eine Metrik zur Messung der Vorhersagegenauigkeit festgelegt werden. Diese Metrik wird Verlustfunktion genannt, und das Ziel ist es, sie zu minimieren, was bedeutet, dass das Modell möglichst wenige Fehler macht.
Jeder Trainingsalgorithmus wiederholt die Berechnung so lange, bis der Verlust einen flacheren Verlauf erreicht. Die Minimierung des Verlusts erfordert zudem eine Lernrate, also die Geschwindigkeit, mit der das Modell lernt. Ist die Lernrate zu hoch, hat das Modell keine Zeit zu lernen: Dies zeigt sich im linken Diagramm, wo die Linie auf und ab schwankt, da das Modell quasi rät. Das rechte Diagramm zeigt, wie der Verlust mit den Iterationen abnimmt, bis die Kurve abflacht, was bedeutet, dass das Modell eine Lösung gefunden hat.
TensorBoard ist ein hervorragendes Werkzeug, um solche Metriken zu visualisieren und potenzielle Probleme aufzuzeigen. Ein neuronales Netzwerk kann Stunden oder Wochen benötigen, um eine Lösung zu finden, und TensorBoard aktualisiert die Metriken, während der Prozess noch läuft. Sie müssen daher nicht bis zum Ende warten, um zu sehen, ob das Modell korrekt trainiert wird: Öffnen Sie TensorBoard, überprüfen Sie den Trainingsfortschritt und nehmen Sie gegebenenfalls die entsprechenden Anpassungen vor.
Wie benutzt man TensorBoard?
In diesem Abschnitt erfahren Sie, wie Sie TensorBoard über das Terminal öffnen. macOS und von der Kommandozeile aus WindowsHier liegt der Fokus auf dem Werkzeug und nicht auf dem Modell, daher ist der Trainingscode bewusst kurz gehalten.
Zuerst 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)
Der unten stehende Code transformiert die Daten und erstellt das Modell.
Beachten Sie, dass die Lernrate 0.1 beträgt. Wenn Sie diesen Wert erhöhen, findet das Modell keine Lösung. Genau das ist auf der linken Seite des obigen Bildes passiert.
Das Beispiel verwendet einen TensorFlow-Estimator, die High-Level-API, die die mathematischen Berechnungen kapselt. Estimators gehören zur TensorFlow 1.x API, daher laufen die beiden folgenden Code-Snippets unter einer 1.x-Installation oder über die tf.compat.v1 Namespace.
Um die Protokolldateien zu erstellen, müssen Sie den Pfad angeben. Dies geschieht mit dem Argument model_dir.
Im folgenden TensorBoard-Beispiel speichern Sie das Modell im Arbeitsverzeichnis, also dort, wo Sie das Notebook speichern. Python Datei. Innerhalb dieses Pfades erstellt TensorFlow einen Ordner namens train mit einem Unterordner 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-Beispiels zur Visualisierung von Graphen besteht im Trainieren des Modells. 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>
Bei TensorFlow 2 übernimmt die Keras TensorBoard-Callback-Funktion diese Aufgabe und schreibt den Graphen und die Metriken pro Epoche ohne jeglichen Schätzcode:
logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir) model.fit(train_images, train_labels, epochs=5, callbacks=[tensorboard_callback])
Sobald der Lauf abgeschlossen ist, enthält das Protokollverzeichnis eine Prüfpunktdatei. graph.pbtxt Datei und eine oder mehrere events.out.tfevents Dateien – genau das, was TensorBoard liest.
Für macOS Nutzer
Die untenstehende Finder-Ansicht zeigt den neu erstellten Ordner train/linreg im Arbeitsverzeichnis.
Für Windows Nutzer
On Windows Die gleichen Dateien erscheinen unter dem Pfad, den Sie an model_dir übergeben haben, wie in der Adressleiste hervorgehoben.
Das gleiche Ereignisdateiformat wird erzeugt von PyTorchDas Dashboard ist also nicht auf TensorFlow-Läufe beschränkt.
Nachdem die Log-Ereignisse nun geschrieben wurden, können Sie TensorBoard öffnen. TensorBoard läuft standardmäßig auf Port 6006 (Jupyter (verwendet Port 8888). Verwenden Sie das Terminal auf macOS oder die Anaconda-Eingabeaufforderung auf Windows.
Für macOS Nutzer
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
Das Notebook ist im Pfad /Users/ gespeichert.Guru99/tuto_TF
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, führen Sie folgenden Befehl in diesem Verzeichnis aus.
Für macOS Nutzer
tensorboard --logdir=./train/linreg
Für Windows Nutzer
tensorboard --logdir=.\train\linreg
TensorBoard wird dann unter http://localhost:6006 bereitgestellt.
| Flagge | Was es steuert |
|---|---|
--logdir |
Verzeichnis, das die Ereignisdateien enthält. Dies ist die einzige erforderliche Option. |
--port |
Port, auf dem der Dienst ausgeführt werden soll. Standardmäßig wird Port 6006 verwendet; ändern Sie ihn, falls eine frühere Sitzung diesen Port noch belegt. |
--bind_all |
Auf jeder Netzwerkschnittstelle bereitstellen. TensorBoard bindet standardmäßig nur an localhost, daher ist für den Fernzugriff dieses Flag erforderlich, und es kann nicht mit anderen kombiniert werden. --host. |
--reload_interval |
Wie oft (in Sekunden) das Protokollverzeichnis nach neuen Daten durchsucht wird. |
--logdir_spec |
Legacy-Fallback, der mehrere durch Kommas getrennte Pfade akzeptiert; --logdir Diese Form wird nicht mehr unterstützt. |
Das tensorboard dev Der Unterbefehl funktioniert nicht mehr: Der gehostete Dienst TensorBoard.dev wurde am 1. Januar 2024 eingestellt. Die lokale Nutzung ist davon nicht betroffen.
Auf manchen Rechnern wird in der Konsole der Hostname anstelle von localhost angezeigt, wie in der Anaconda-Eingabeaufforderung unten. Beide Adressen öffnen dasselbe Dashboard.
Kopieren Sie die Adresse und fügen Sie sie in Ihren bevorzugten Browser ein. Anschließend sollte das Scalars-Dashboard wie unten dargestellt angezeigt werden.
Wenn Sie stattdessen so etwas sehen:
Das bedeutet, dass TensorBoard die Protokolldatei nicht finden kann. Stellen Sie sicher, dass Sie darauf verweisen. cd Um den richtigen Pfad zu finden, überprüfen Sie, ob das Protokollereignis tatsächlich erstellt wurde. Falls nicht, führen Sie den Trainingscode erneut aus.
Wenn Sie TensorBoard schließen möchten, drücken Sie im Terminalfenster STRG+C.
Kleiner Tipp: Überprüfen Sie die Anaconda-Eingabeaufforderung, um das aktuelle Arbeitsverzeichnis zu ermitteln.
Im obigen Screenshot befindet sich die Eingabeaufforderung unter C:\Users\Admin, daher sollte die Protokolldatei in diesem Ordner erstellt werden.










