Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Использование TensorBoard в ноутбуках

Посмотреть на TensorFlow.org Запустить в Google Colab Посмотреть источник на GitHub

TensorBoard можно использовать непосредственно в ноутбуках, таких как Colab и Jupyter . Это может быть полезно для обмена результатами, интеграции TensorBoard в существующие рабочие процессы и использования TensorBoard без установки чего-либо локально.

Настроить

Начните с установки TF 2.0 и загрузки расширения ноутбука TensorBoard:

Для пользователей Jupyter: Если вы установили Jupyter и TensorBoard в один и тот же virtualenv, то вам стоит пойти дальше. Если вы используете более сложную установку, такую ​​как глобальная установка Jupyter и ядра для различных сред Conda / virtualenv, то вы должны убедиться, что tensorboard файл tensorboard находится в вашей PATH в контексте ноутбука Jupyter. Один из способов сделать это - изменить kernel_spec каталог bin среды в PATH , как описано здесь .

Если вы используете образ Docker сервера Jupyter Notebook, используя ночной TensorFlow , необходимо предоставить не только порт ноутбука, но и порт TensorBoard.

Таким образом, запустите контейнер с помощью следующей команды:

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

где -p 6006 является портом по умолчанию TensorBoard. Это выделит вам порт для запуска одного экземпляра TensorBoard. Чтобы иметь одновременные экземпляры, необходимо выделить больше портов.

 # Load the TensorBoard notebook extension
%load_ext tensorboard
 

Импортируйте TensorFlow, datetime и os:

 import tensorflow as tf
import datetime, os
 

Тензорборд в тетрадях

Загрузите набор данных FashionMNIST и масштабируйте его:

 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

Создайте очень простую модель:

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

Обучите модель, используя Keras и обратный вызов 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

Запустите TensorBoard внутри ноутбука, используя магию :

 %tensorboard --logdir logs
 

Теперь вы можете просматривать информационные панели, такие как скаляры, графики, гистограммы и другие. Некоторые инструментальные панели еще не доступны в Colab (например, плагин профиля).

Магия %tensorboard имеет тот же формат, что и вызов командной строки TensorBoard, но с символом % перед ним.

Вы также можете запустить TensorBoard перед тренировкой, чтобы отслеживать его:

 %tensorboard --logdir logs
 

Тот же самый бэкэнд TensorBoard используется повторно, выполнив ту же команду. Если был выбран другой каталог журналов, будет открыт новый экземпляр TensorBoard. Порты управляются автоматически.

Начните обучение новой модели и следите за автоматическим обновлением TensorBoard каждые 30 секунд или обновите ее кнопкой справа вверху:

 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

Вы можете использовать API tensorboard.notebook для большего контроля:

 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)