Voir sur TensorFlow.org | Exécuter dans Google Colab | Voir la source sur GitHub | Télécharger le cahier |
TensorBoard peut être utilisé directement dans les expériences d'ordinateurs portables tels que Colab et Jupyter . Cela peut être utile pour partager les résultats, intégrer TensorBoard dans des flux de travail existants et utiliser TensorBoard sans rien installer localement.
Installer
Commencez par installer TF 2.0 et chargez l'extension TensorBoard pour notebook :
Pour les utilisateurs Jupyter: Si vous avez installé Jupyter et TensorBoard dans le même virtualenv, alors vous devriez être bon d'aller. Si vous utilisez une configuration plus compliquée, comme une installation globale Jupyter et noyaux pour différents environnements Conda / virtualenv, vous devez vous assurer que le tensorboard
binaire est sur votre PATH
dans le contexte de bloc - notes Jupyter. Une façon de le faire est de modifier le kernel_spec
préfixer de l'environnement bin
répertoire de PATH
, comme décrit ici .
Pour les utilisateurs Docker: Si vous utilisez une Docker image de Jupyter serveur portable à l' aide de la nuit tensorflow , il est nécessaire d'exposer non seulement le port de l'ordinateur portable, mais le port du TensorBoard. Ainsi, exécutez le conteneur avec la commande suivante :
docker run -it -p 8888:8888 -p 6006:6006 \
tensorflow/tensorflow:nightly-py3-jupyter
où l' -p 6006
est le port par défaut de TensorBoard. Cela vous allouera un port pour exécuter une instance TensorBoard. Pour avoir des instances concurrentes, il est nécessaire d'allouer plus de ports. En outre, passer --bind_all
à %tensorboard
pour exposer l'orifice extérieur du récipient.
# 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écharger le FashionMNIST ensemble de données et agrandissez:
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 bloc - notes à l' aide magies :
%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).
Le %tensorboard
magique a exactement le même format que l'appel de la ligne de commande TensorBoard, mais avec un %
--sign devant elle.
Vous pouvez également démarrer TensorBoard avant l'entraînement pour suivre sa progression :
%tensorboard --logdir logs
Le même backend TensorBoard est réutilisé en émettant la même commande. Si un autre répertoire de journaux é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 TensorBoard se mettre à jour automatiquement 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 tensorboard.notebook
API 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)