Cette page a été traduite par l'API Cloud Translation.
Switch to English

Utilisation de TensorBoard dans les ordinateurs portables

Voir sur TensorFlow.org Exécuter dans Google Colab Afficher la source sur GitHub

TensorBoard peut être utilisé directement dans des expériences de notebook telles que Colab et Jupyter . Cela peut être utile pour partager les résultats, intégrer TensorBoard dans les flux de travail existants et utiliser TensorBoard sans rien installer localement.

Installer

Commencez par installer TF 2.0 et charger l'extension de notebook TensorBoard:

Pour les utilisateurs de Jupyter: si vous avez installé Jupyter et TensorBoard dans le même virtualenv, vous devriez être prêt à partir. Si vous utilisez une configuration plus compliquée, comme une installation globale de Jupyter et des noyaux pour différents environnements Conda / virtualenv, vous devez vous assurer que le binaire tensorboard est sur votre PATH dans le contexte du notebook Jupyter. Une manière de faire ceci est de modifier le kernel_spec pour kernel_spec le répertoire bin l'environnement à PATH , comme décrit ici .

Dans le cas où vous exécutez une image Docker du serveur Jupyter Notebook à l'aide de TensorFlow la nuit , il est nécessaire d'exposer non seulement le port du notebook, mais le port de TensorBoard.

Ainsi, exécutez le conteneur avec la commande suivante:

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

-p 6006 est le port par défaut de TensorBoard. Cela vous attribuera un port pour exécuter une instance TensorBoard. Pour avoir des instances simultanées, il est nécessaire d'allouer plus de ports.

 # Load the TensorBoard notebook extension
%load_ext tensorboard
 

Importez TensorFlow, datetime et os:

 import tensorflow as tf
import datetime, os
 

TensorBoard dans les cahiers

Téléchargez le jeu de données FashionMNIST et mettez -le à l'échelle:

 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

Créez un modèle très simple:

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

Entraînez le modèle à l'aide de Keras et du rappel 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

Démarrez TensorBoard dans le notebook en utilisant la magie :

 %tensorboard --logdir logs
 

Vous pouvez désormais afficher des tableaux de bord tels que des scalaires, des graphiques, des histogrammes et autres. Certains tableaux de bord ne sont pas encore disponibles dans Colab (comme le plugin de profil).

La magie %tensorboard a exactement le même format que l'invocation de la ligne de commande TensorBoard, mais avec un signe % devant lui.

Vous pouvez également démarrer TensorBoard avant l'entraînement pour le surveiller en cours:

 %tensorboard --logdir logs
 

Le même backend TensorBoard est réutilisé en émettant la même commande. Si un répertoire de journaux différent était choisi, une nouvelle instance de TensorBoard serait ouverte. Les ports sont gérés automatiquement.

Commencez à entraîner un nouveau modèle et regardez la mise à jour automatique de TensorBoard toutes les 30 secondes ou actualisez-le avec le bouton en haut à droite:

 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

Vous pouvez utiliser les API tensorboard.notebook pour un peu plus de contrôle:

 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)