[PYTHON] Überwachen Sie das Trainingsmodell mit TensorBord auf Jupyter Notebook

Überblick

Wenn Sie ein Modell mit TensorFlow trainieren, möchten Sie sehen, ob das Training funktioniert. Durch Angabe des Arguments "verbose = 1" an "model.fit ()" ist es möglich, den Fortschritt des Trainings wie unten gezeigt zu überprüfen.

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

Aus dieser Ausgabe ist jedoch schwer zu verstehen, ob das Training erfolgreich ist.

Betrachten wir daher die Visualisierung mit TensorBord. TensorBord visualisiert den Trainingsfortschritt wie in der folgenden Abbildung dargestellt und hilft Ihnen, visuell zu verstehen, ob das Training erfolgreich ist oder nicht.

Hier sind die Genauigkeit und der Verlust eines erfolgreichen und erfolglosen Trainings in der Grafik dargestellt.

In TensorBord können neben Genauigkeit und Verlust auch Verzerrungen und Histogramme visualisiert und bestätigt werden.

image.png image.png
Visualisierung von Distributionen Visualisierung des Histogramms

Bei der Überwachung des Trainingsmodells können Genauigkeit und Verlust durch Drücken der Aktualisierungstaste von TensorBord überprüft werden, Verteilungen und Histogramme jedoch nicht. Ich habe nach dieser Methode gesucht, sie aber nicht auf Japanisch gefunden, deshalb schreibe ich sie hier auf.

Umgebung

Ziehen Sie das nächtliche Bild von TensorFlow mit Docker. Als die Version von TensorFlow ausgegeben wurde, war es "2.1.0-dev20200101".

docker pull tensorflow/tensorflow:nightly-gpu-py3-jupyter

Starten Sie dies. Zu diesem Zeitpunkt ist die Portweiterleitung wichtig. Leiten Sie zuerst den Port 8888 weiter, um den Jupiter zu starten. Außerdem müssen Sie den Port 6006 weiterleiten, den TensorBoard standardmäßig verwendet. Verwenden Sie die Option -p für die Portweiterleitung.

docker run --gpus all -it -v `pwd`:/tf -p 8888:8888 -p 6006:6006 tensorflow/tensorflow:nightly-gpu-py3-jupyter

Wenn Sie den obigen Befehl ausführen, wird ein Link zum Öffnen des Jupyter-Notizbuchs angezeigt. Greifen Sie darauf zu und öffnen Sie das Jupyter-Notizbuch.

Danach werde ich entsprechend mit TensorFlow programmieren.

Vorbereitung zur Verwendung von Tensor Bord

Es scheint, dass Sie die Erweiterung laden müssen, um TensorBord verwenden zu können. Wenn Sie versuchen, die Erweiterung zu laden, werden Sie aufgefordert, den Cloud-TPU-Client zu installieren. Daher wird empfohlen, Folgendes zu tun.

!pip install cloud-tpu-client
%load_ext tensorboard

Erstellen Sie als Nächstes einen Rückruf, der die Protokolldatei schreibt, die während des Trainings angezeigt werden soll. Sie müssen es nicht selbst implementieren, um es zu erstellen. Erstellen Sie einfach eine Instanz der Klasse "tensorflow.keras.callbacks.TensorBoard".

tb_cb = tf.keras.callbacks.TensorBoard(
    log_dir=log_dir,
    histogram_freq=1,
    write_images=True
)

Eine Protokolldatei wird generiert, indem diese Instanz an das Argument "model.fit ()" übergeben wird.

history=model.fit(
        datagen_train,
        steps_per_epoch=len(x_train) // batch_size,
        validation_data=datagen_validate,
        validation_steps=len(x_validate) // batch_size,
        epochs=epochs,
        shuffle=False,
        callbacks=[tb_cb] 
    )

Starten Sie TensorBord auf dem Jupyter Notebook

Dies ist ein sehr wichtiger Punkt. Es ist einfach, TensorBoard auf einem Juoyter-Notebook zu starten. Wenn Sie die Optionen jedoch nicht richtig einstellen, können Sie während des Lernens keine Verteilungen oder Verlaufsdaten anzeigen. In meinem Fall hat das Schreiben des Folgenden gut funktioniert.

%tensorboard --logdir log --bind_all --port 6006 --reload_multifile true

Grundsätzlich kann TensorBoard durch Angabe des Verzeichnisses, in dem die Protokolldatei gespeichert ist, mit der Option "-logdir" gestartet werden. In meinem Fall (vielleicht eine Kombination aus Docker + Jupyter Notebook?) Wurde es nicht gestartet, ohne --bind_all und --port 6006 hinzuzufügen. Beim Start kann das TensorBoard in der Ausgangszelle betrieben werden.

Jetzt ist es wichtig, das endgültige --reload_multifile true hinzuzufügen. Wenn Sie dies entfernen, können Sie während des Lernens keine Verteilungen und keinen Verlauf sehen.

Beachten Sie, dass dieses TensorBoard vor model.fit () gestartet werden muss. Dies liegt daran, dass das Jupyter-Notizbuch jeweils nur eine Zelle ausführen kann.

Zusammenfassung

Lassen Sie uns abschließend den Gesamtfluss zusammenfassen.

  1. Erstellen Sie bei Bedarf eine Umgebung

docker pull tensorflow/tensorflow:nightly-gpu-py3-jupyter docker run --gpus all -it -v pwd:/tf -p 8888:8888 -p 6006:6006 tensorflow/tensorflow:nightly-gpu-py3-jupyter ```

  1. Lesen Sie die Erweiterungen

!pip install cloud-tpu-client %load_ext tensorboard ```

  1. Datenvorverarbeitung und Training Modellbau Da es von Person zu Person unterschiedlich ist, wird es hier weggelassen.

  2. Erstellen Sie eine Instanz der Klasse tensorflow.keras.callbacks.TensorBoard

tb_cb = tf.keras.callbacks.TensorBoard( log_dir=log_dir, histogram_freq=1, write_images=True ) ```

  1. Starten Sie TensorBoard

%tensorboard --logdir log --bind_all --port 6006 --reload_multifile true ```

  1. Beginnen Sie mit dem Training

history=model.fit( datagen_train, steps_per_epoch=len(x_train) // batch_size, validation_data=datagen_validate, validation_steps=len(x_validate) // batch_size, epochs=epochs, shuffle=False, callbacks=[tb_cb] ) ```

das ist alles.

Referenz

  1. https://www.tensorflow.org/tensorboard/tensorboard_in_notebooks So starten Sie TensorBoard auf Ihrem Jupyter-Notebook.

  2. https://github.com/tensorflow/tensorboard Der Abschnitt "Häufig gestellte Fragen" in README.md enthält eine Beschreibung der Option "--reload_multifile".

Recommended Posts

Überwachen Sie das Trainingsmodell mit TensorBord auf Jupyter Notebook
Versuchen Sie, mit einem gemischten Gaußschen Modell auf Jupyter Notebook zu gruppieren
Probieren Sie SVM mit scikit-learn auf Jupyter Notebook aus
Klonen Sie das Github-Repository auf dem Jupyter-Notizbuch
Aktivieren Sie Jupyter Notebook mit conda auf dem Remote-Server
Füllen Sie die Breite des Jupyter-Notizbuchs, um den Browser zu füllen
Öffnen Sie das auf dem Server gestartete Jupyter-Notizbuch aus der Ferne
EC2-Bereitstellung mit Vagrant + Jupyter (IPython Notebook) auf Docker
Lesen Sie die CSV-Datei mit dem Jupiter-Notizbuch und schreiben Sie die Grafik übereinander
Verwenden von Graphviz mit Jupyter Notebook
Verwenden Sie pip mit Jupyter Notebook
Hohe Charts im Jupyter-Notizbuch
PDF auf Jupyter Notebook anzeigen
Verwenden Sie Cython mit Jupyter Notebook
Spielen Sie mit Jupyter Notebook (IPython Notebook)
Kalibrieren Sie das Modell mit PyCaret
Führen Sie Jupyter Notebook unter Windows aus
Memo, um den Wert auf der HTML-Javascript-Seite mit Jupiter zu erhalten
Reflektieren Sie die von Miniconda erstellte virtuelle Umgebung im Jupyter-Notizbuch
Die übliche Art, einen Kernel mit Jupyter Notebook hinzuzufügen
Verbinden Sie den Jupyter Notebook-Kernel mit aktiviertem Jupytext mit Spyder
Schreiben Sie Diagramme in Echtzeit mit Matplotlib auf dem Jupyter-Notizbuch
Wie man mit dem Phänomen umgeht, dass Python (Jupyter Notebook) auf WSL ausgeführt wird, wird abgebrochen
Visualisieren Sie den Entscheidungsbaum mit einem Jupyter-Notizbuch
Machen Sie einen Sound mit Jupyter Notebook
Zeigen Sie einfach die Jupyter-Notizbuchdatei an
Markdown mit Jupyter-Notebook verwenden (mit Verknüpfung)
Fügen Sie mit Jupyter Notebook weitere Kernel hinzu
Bequeme Analyse mit Pandas + Jupyter Notebook
Versuchen Sie, Jupyter Notebook auf einem Mac auszuführen
Validieren Sie das Trainingsmodell mit Pylearn2
Starten Sie das Jupyter Notebook ~ Esper-Training
Geben Sie den Browser an, der mit Jupyter Notebook verwendet werden soll. Besonders Mac. (Und Vivaldi)
Einstellungen zum Lesen von S3-Dateien mit Pandas aus Jupyter Notebook unter AWS
Verwenden Sie nbextensions mit Anacondas Jupyter-Notizbuch
Lassen Sie uns die Hyperparameter des Modells mit scikit-learn abstimmen!
Verwenden von Apache Spark mit Jupyter Notebook (IPython Notebook)
Ich möchte einen Blog mit Jupyter Notebook schreiben
Verwenden Sie Jupyter Lab und Jupyter Notebook mit EC2
Machen Sie Jupyter Notebook zu einem Dienst unter CentOS
Starten Sie das Jupiter-Notebook auf dem GPU-Server (Remote-Server).
Achtung Seq2 Führen Sie das Dialogmodell mit Seq aus
Zeigen Sie das Diagramm von tensorBoard auf jupyter an
Laden Sie mit Python Dateien im Web herunter
Verwendung des Jupyter-Notebooks mit ABCI
PC-GPU-Prüfung am Jupyter-Notebook
Histogramm / Streudiagramm auf Jupyter Notebook anzeigen
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
Erstellen Sie ein Jupyter-Notebook auf einem Remote-Server (CentOS).
Verwenden Sie vim-Tastenkombinationen in Jupyter Notebook, das mit Docker gestartet wurde
[Jupyter Notebook Memo] Kanji mit Matplotlib anzeigen
Führen Sie Jupyter Notebook auf einem Remote-Server aus
Reichhaltige Zellenausgabe mit Jupyter Notebook (IPython)
So geben Sie mit Jupyter Notebook einen Wert in der Mitte einer Zelle aus
Erstellen einer R-Umgebung mit Jupyter (ehemals IPython-Notebook) (unter OS X El Capitan 10.11.3)
Ein Modell, das die Gitarre mit fast.ai identifiziert
Installieren Sie matplotlib und zeigen Sie das Diagramm in Jupyter Notebook an
Probieren Sie das Zustandsraummodell aus (Jupyter Notebook + IR-Kernel).
So debuggen Sie mit Jupyter oder iPython Notebook