Menggunakan TensorBoard di Notebook

Lihat di TensorFlow.org Jalankan di Google Colab Lihat sumber di GitHub Unduh buku catatan

TensorBoard dapat digunakan secara langsung dalam pengalaman notebook seperti CoLab dan Jupyter . Ini dapat membantu untuk membagikan hasil, mengintegrasikan TensorBoard ke dalam alur kerja yang ada, dan menggunakan TensorBoard tanpa menginstal apa pun secara lokal.

Mempersiapkan

Mulailah dengan menginstal TF 2.0 dan memuat ekstensi notebook TensorBoard:

Untuk pengguna Jupyter: Jika Anda telah menginstal Jupyter dan TensorBoard ke virtualenv yang sama, maka Anda harus baik untuk pergi. Jika Anda menggunakan setup yang lebih rumit, seperti instalasi Jupyter global dan kernel untuk berbagai Conda / virtualenv lingkungan, maka Anda harus memastikan bahwa tensorboard biner adalah pada Anda PATH dalam konteks notebook Jupyter. Salah satu cara untuk melakukannya adalah dengan memodifikasi kernel_spec prepend lingkungan ini bin direktori untuk PATH , seperti dijelaskan di sini .

Untuk pengguna Docker: Dalam kasus Anda menjalankan Docker citra Server Notebook Jupyter menggunakan TensorFlow ini setiap malam , perlu untuk mengekspos tidak hanya pelabuhan notebook, tapi port TensorBoard ini. Jadi, jalankan wadah dengan perintah berikut:

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

dimana -p 6006 adalah port default dari TensorBoard. Ini akan mengalokasikan port untuk Anda menjalankan satu instans TensorBoard. Untuk memiliki instance bersamaan, perlu untuk mengalokasikan lebih banyak port. Juga, lulus --bind_all untuk %tensorboard untuk mengekspos pelabuhan di luar wadah.

# Load the TensorBoard notebook extension
%load_ext tensorboard

Impor TensorFlow, datetime, dan os:

import tensorflow as tf
import datetime, os

TensorBoard di notebook

Download FashionMNIST dataset dan skala itu:

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

Buat model yang sangat sederhana:

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')
  ])

Latih model menggunakan panggilan balik Keras dan TensorBoard:

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

Mulai TensorBoard dalam notebook menggunakan Magics :

%tensorboard --logdir logs

Anda sekarang dapat melihat dasbor seperti skalar, grafik, histogram, dan lainnya. Beberapa dasbor belum tersedia di Colab (seperti plugin profil).

The %tensorboard magic memiliki tepat format yang sama seperti baris perintah TensorBoard doa, tetapi dengan % -tanda di depannya.

Anda juga dapat memulai TensorBoard sebelum pelatihan untuk memantaunya berlangsung:

%tensorboard --logdir logs

Backend TensorBoard yang sama digunakan kembali dengan mengeluarkan perintah yang sama. Jika direktori log yang berbeda dipilih, instance baru TensorBoard akan dibuka. Port dikelola secara otomatis.

Mulai latih model baru dan lihat TensorBoard diperbarui secara otomatis setiap 30 detik atau segarkan dengan tombol di kanan atas:

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

Anda dapat menggunakan tensorboard.notebook API untuk kontrol sedikit lebih:

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)