Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Korzystanie z TensorBoard w notebookach

Zobacz na TensorFlow.org Uruchom w Google Colab Wyświetl źródło na GitHub

TensorBoard może być używany bezpośrednio w środowiskach notebooków, takich jak Colab i Jupyter . Może to być pomocne przy udostępnianiu wyników, integracji TensorBoard z istniejącymi przepływami pracy i korzystaniu z 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 w tym samym virtualenv, powinieneś być gotowy. 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 na to jest zmodyfikowanie kernel_spec aby kernel_spec katalog bin środowiska do PATH , jak opisano tutaj .

W przypadku, gdy używasz obrazu Docker serwera Jupyter Notebook przy użyciu nightly TensorFlow , konieczne jest ujawnienie nie tylko portu notebooka, ale także portu TensorBoard.

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 domyślnym portem TensorBoard. Spowoduje to przydzielenie portu do uruchomienia jednej instancji TensorBoard. Aby mieć współbieżne instancje, konieczne jest przydzielenie większej liczby portów.

 # Load the TensorBoard notebook extension
%load_ext tensorboard
 

Importuj TensorFlow, datetime i OS:

 import tensorflow as tf
import datetime, os
 

TensorBoard w notatnikach

Pobierz zestaw danych FashionMNIST i skaluj 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

Utwó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

Uruchom TensorBoard w notatniku za pomocą 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 (na przykład wtyczka profilu).

Magia %tensorboard ma dokładnie taki sam format jak wywołanie wiersza poleceń TensorBoard, ale z znakiem % -sign przed nim.

Możesz także uruchomić TensorBoard przed treningiem, aby monitorować jego postęp:

 %tensorboard --logdir logs
 

Ten sam backend TensorBoard jest używany ponownie poprzez wydanie tego samego polecenia. Jeśli wybrano inny katalog dzienników, zostanie otwarta nowa instancja TensorBoard. Porty są zarządzane automatycznie.

Zacznij trenować nowy model i oglądaj aktualizację TensorBoard automatycznie co 30 sekund lub odświeżaj ją przyciskiem 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żesz użyć interfejsów API tensorboard.notebook aby uzyskać nieco większą kontrolę:

 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)