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.
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.
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.
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]
)
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.
Lassen Sie uns abschließend den Gesamtfluss zusammenfassen.
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
```
Lesen Sie die Erweiterungen
!pip install cloud-tpu-client %load_ext tensorboard ```
Datenvorverarbeitung und Training Modellbau Da es von Person zu Person unterschiedlich ist, wird es hier weggelassen.
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 ) ```
Starten Sie TensorBoard
%tensorboard --logdir log --bind_all --port 6006 --reload_multifile true ```
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.
https://www.tensorflow.org/tensorboard/tensorboard_in_notebooks So starten Sie TensorBoard auf Ihrem Jupyter-Notebook.
https://github.com/tensorflow/tensorboard Der Abschnitt "Häufig gestellte Fragen" in README.md enthält eine Beschreibung der Option "--reload_multifile".
Recommended Posts