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)