Zobacz na TensorFlow.org | Uruchom w Google Colab | Wyświetl źródło na GitHub | Pobierz notatnik |
TensorBoard może być stosowany bezpośrednio w doświadczeniach przenośnych takich jak Colab i Jupyter . Może to być pomocne przy udostępnianiu wyników, integracji TensorBoard z istniejącymi przepływami pracy i używaniu TensorBoard bez instalowania czegokolwiek lokalnie.
Ustawiać
Zacznij od zainstalowania TF 2.0 i załadowania rozszerzenia notebooka TensorBoard:
Dla użytkowników Jupyter: Jeśli zainstalowałeś Jupyter i TensorBoard do tego samego virtualenv, wtedy powinno być dobrze iść. Jeśli używasz bardziej skomplikowanych konfiguracji, takich jak globalny instalacji Jupyter i jądrach różnych Conda / virtualenv środowiskach, trzeba upewnić się, że tensorboard
binarny jest na PATH
wewnątrz kontekście notebooka Jupyter. Jednym ze sposobów, aby to zrobić, aby zmodyfikować kernel_spec
do poprzedzić środowiska za bin
katalogu do PATH
, jak opisano tutaj .
Dla użytkowników Döcker: W przypadku używasz Docker obraz Jupyter serwerze Notebook korzystając TensorFlow na nocnej , konieczne jest, aby odsłonić nie tylko port notebooka, ale portu na TensorBoard użytkownika. Dlatego uruchom kontener za pomocą następującego polecenia:
docker run -it -p 8888:8888 -p 6006:6006 \
tensorflow/tensorflow:nightly-py3-jupyter
gdzie -p 6006
jest portem domyślnym TensorBoard. To przydzieli Ci port do uruchomienia jednej instancji TensorBoard. Aby mieć współbieżne instancje, konieczne jest przydzielenie większej liczby portów. Również przejść --bind_all
do %tensorboard
aby odsłonić otwór na zewnątrz pojemnika.
# Load the TensorBoard notebook extension
%load_ext tensorboard
Importuj TensorFlow, datetime i system operacyjny:
import tensorflow as tf
import datetime, os
TensorBoard w zeszytach
Pobierz FashionMNIST zbiór danych i skalować go:
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
Stwórz bardzo prosty model:
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')
])
Wytrenuj model za pomocą Keras i wywołania zwrotnego 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
Zacznij TensorBoard w notatniku przy użyciu magii :
%tensorboard --logdir logs
Możesz teraz wyświetlać pulpity nawigacyjne, takie jak skalary, wykresy, histogramy i inne. Niektóre pulpity nawigacyjne nie są jeszcze dostępne w Colab (np. wtyczka profilu).
%tensorboard
magia ma dokładnie taki sam format jak linia wywołania polecenia TensorBoard, ale z %
-znak przed nim.
Możesz również uruchomić TensorBoard przed treningiem, aby monitorować jego postęp:
%tensorboard --logdir logs
Ten sam backend TensorBoard jest ponownie używany, wydając to samo polecenie. Jeśli wybrano inny katalog logów, zostanie otwarta nowa instancja TensorBoard. Porty są zarządzane automatycznie.
Rozpocznij trenowanie nowego modelu i obserwuj automatyczną aktualizację TensorBoard co 30 sekund lub odśwież ją za pomocą przycisku w prawym górnym rogu:
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
Można użyć tensorboard.notebook
API dla kontroli nieco więcej:
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)