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

Посмотреть на TensorFlow.org Запустить в Google Colab Посмотреть исходный код на GitHub Скачать блокнот

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

Настраивать

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

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

Для пользователей Docker: В случае , если вы работаете в Докер образ сервера Notebook Jupyter с помощью TensorFlow - х еженощно , необходимо подвергать не только порт ноутбука, но порт TensorBoard в. Таким образом, запустите контейнер с помощью следующей команды:

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

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

# Load the TensorBoard notebook extension
%load_ext tensorboard

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

import tensorflow as tf
import datetime, os

TensorBoard в тетрадях

Скачать 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

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

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)