Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Verwenden von TensorBoard in Notebooks

Ansicht auf TensorFlow.org In Google Colab ausführen Quelle auf GitHub anzeigen

TensorBoard kann direkt in Notebook-Erlebnissen wie Colab und Jupyter verwendet werden . Dies kann hilfreich sein, um Ergebnisse auszutauschen, TensorBoard in vorhandene Workflows zu integrieren und TensorBoard zu verwenden, ohne etwas lokal zu installieren.

Konfiguration

Beginnen Sie mit der Installation von TF 2.0 und dem Laden der TensorBoard-Notebook-Erweiterung:

Für Jupyter-Benutzer: Wenn Sie Jupyter und TensorBoard in derselben virtuellen Umgebung installiert haben, sollten Sie bereit sein. Wenn Sie ein komplizierteres Setup verwenden, z. B. eine globale Jupyter-Installation und Kernel für verschiedene Conda / Virtualenv-Umgebungen, müssen Sie sicherstellen, dass sich die tensorboard Binärdatei in Ihrem PATH im Jupyter-Notebook-Kontext befindet. Eine Möglichkeit, dies zu tun, besteht darin, die kernel_spec zu ändern, dass das bin Verzeichnis der Umgebung PATH kernel_spec , wie hier beschrieben .

Wenn Sie ein Docker- Image des Jupyter Notebook-Servers mit TensorFlows nächtlichem Betrieb ausführen, müssen Sie nicht nur den Port des Notebooks, sondern auch den Port des TensorBoards freigeben.

Führen Sie den Container daher mit dem folgenden Befehl aus:

 docker run -it -p 8888:8888 -p 6006:6006 \
tensorflow/tensorflow:nightly-py3-jupyter 
 

Dabei ist der -p 6006 der Standardport von TensorBoard. Dadurch wird ein Port zugewiesen, über den Sie eine TensorBoard-Instanz ausführen können. Für gleichzeitige Instanzen müssen mehr Ports zugewiesen werden.

 # Load the TensorBoard notebook extension
%load_ext tensorboard
 

Importieren Sie TensorFlow, datetime und os:

 import tensorflow as tf
import datetime, os
 

TensorBoard in Notizbüchern

Laden Sie den FashionMNIST- Datensatz herunter und skalieren Sie ihn:

 fashion_mnist = tf.keras.datasets.fashion_mnist

(x_train, y_train),(x_test, y_test) = fashion_mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
 
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
32768/29515 [=================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
26427392/26421880 [==============================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
8192/5148 [===============================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz
4423680/4422102 [==============================] - 0s 0us/step

Erstellen Sie ein sehr einfaches Modell:

 def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])
 

Trainieren Sie das Modell mit Keras und dem TensorBoard-Rückruf:

 def train_model():
  
  model = create_model()
  model.compile(optimizer='adam',
                loss='sparse_categorical_crossentropy',
                metrics=['accuracy'])

  logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
  tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)

  model.fit(x=x_train, 
            y=y_train, 
            epochs=5, 
            validation_data=(x_test, y_test), 
            callbacks=[tensorboard_callback])

train_model()
 
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 11s 182us/sample - loss: 0.4976 - accuracy: 0.8204 - val_loss: 0.4143 - val_accuracy: 0.8538
Epoch 2/5
60000/60000 [==============================] - 10s 174us/sample - loss: 0.3845 - accuracy: 0.8588 - val_loss: 0.3855 - val_accuracy: 0.8626
Epoch 3/5
60000/60000 [==============================] - 10s 175us/sample - loss: 0.3513 - accuracy: 0.8705 - val_loss: 0.3740 - val_accuracy: 0.8607
Epoch 4/5
60000/60000 [==============================] - 11s 177us/sample - loss: 0.3287 - accuracy: 0.8793 - val_loss: 0.3596 - val_accuracy: 0.8719
Epoch 5/5
60000/60000 [==============================] - 11s 178us/sample - loss: 0.3153 - accuracy: 0.8825 - val_loss: 0.3360 - val_accuracy: 0.8782

Starten Sie TensorBoard im Notizbuch mit Magie :

 %tensorboard --logdir logs
 

Sie können jetzt Dashboards wie Skalare, Diagramme, Histogramme und andere anzeigen. Einige Dashboards sind in Colab noch nicht verfügbar (z. B. das Profil-Plugin).

Die %tensorboard magic hat genau das gleiche Format wie der TensorBoard-Befehlszeilenaufruf, jedoch mit einem % -Zeichen davor.

Sie können TensorBoard auch vor dem Training starten, um den laufenden Vorgang zu überwachen:

 %tensorboard --logdir logs
 

Das gleiche TensorBoard-Backend wird durch Ausgabe des gleichen Befehls wiederverwendet. Wenn ein anderes Protokollverzeichnis ausgewählt wurde, wird eine neue Instanz von TensorBoard geöffnet. Ports werden automatisch verwaltet.

Beginnen Sie mit dem Training eines neuen Modells und beobachten Sie, wie TensorBoard alle 30 Sekunden automatisch aktualisiert wird, oder aktualisieren Sie es mit der Schaltfläche oben rechts:

 train_model()
 
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 11s 184us/sample - loss: 0.4968 - accuracy: 0.8223 - val_loss: 0.4216 - val_accuracy: 0.8481
Epoch 2/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3847 - accuracy: 0.8587 - val_loss: 0.4056 - val_accuracy: 0.8545
Epoch 3/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3495 - accuracy: 0.8727 - val_loss: 0.3600 - val_accuracy: 0.8700
Epoch 4/5
60000/60000 [==============================] - 11s 179us/sample - loss: 0.3282 - accuracy: 0.8795 - val_loss: 0.3636 - val_accuracy: 0.8694
Epoch 5/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3115 - accuracy: 0.8839 - val_loss: 0.3438 - val_accuracy: 0.8764

Sie können die tensorboard.notebook APIs für etwas mehr Kontrolle verwenden:

 from tensorboard import notebook
notebook.list() # View open TensorBoard instances
 
Known TensorBoard instances:

  - port 6006: logdir logs (started 0:00:54 ago; pid 265)

 # Control TensorBoard display. If no port is provided, 
# the most recently launched TensorBoard is used
notebook.display(port=6006, height=1000)