Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Utilizzo di TensorBoard nei notebook

Visualizza su TensorFlow.org Esegui in Google Colab Visualizza sorgente su GitHub

TensorBoard può essere utilizzato direttamente nelle esperienze di notebook come Colab e Jupyter . Ciò può essere utile per condividere i risultati, integrare TensorBoard nei flussi di lavoro esistenti e utilizzare TensorBoard senza installare nulla a livello locale.

Impostare

Inizia installando TF 2.0 e caricando l'estensione per notebook TensorBoard:

Per gli utenti di Jupyter: se hai installato Jupyter e TensorBoard nella stessa virtualenv, allora dovresti essere pronto. Se stai usando una configurazione più complicata, come un'installazione Jupyter globale e kernel per diversi ambienti Conda / virtualenv, allora devi assicurarti che il binario tensorboard sia sul tuo PATH all'interno del contesto del notebook Jupyter. Un modo per farlo è modificare kernel_spec per kernel_spec la directory bin dell'ambiente a PATH , come descritto qui .

Nel caso in cui si esegua un'immagine Docker del server Notebook Jupyter utilizzando TensorFlow di notte , è necessario esporre non solo la porta del notebook, ma la porta di TensorBoard.

Pertanto, eseguire il contenitore con il seguente comando:

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

dove -p 6006 è la porta predefinita di TensorBoard. Questo assegnerà una porta per l'esecuzione di un'istanza TensorBoard. Per avere istanze simultanee, è necessario allocare più porte.

 # Load the TensorBoard notebook extension
%load_ext tensorboard
 

Importa TensorFlow, datetime e os:

 import tensorflow as tf
import datetime, os
 

TensorBoard in quaderni

Scarica il set di dati FashionMNIST e ridimensionalo:

 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

Crea un modello molto semplice:

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

Addestra il modello usando Keras e il callback 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

Avvia TensorBoard all'interno del notebook usando magics :

 %tensorboard --logdir logs
 

Ora puoi visualizzare dashboard come scalari, grafici, istogrammi e altri. Alcuni dashboard non sono ancora disponibili in Colab (come il plug-in del profilo).

La magia %tensorboard ha esattamente lo stesso formato dell'invocazione della riga di comando TensorBoard, ma con un segno % davanti.

Puoi anche avviare TensorBoard prima dell'allenamento per monitorarlo in corso:

 %tensorboard --logdir logs
 

Lo stesso backend TensorBoard viene riutilizzato emettendo lo stesso comando. Se si scegliesse una directory dei registri diversa, verrà aperta una nuova istanza di TensorBoard. Le porte sono gestite automaticamente.

Inizia ad allenare un nuovo modello e guarda TensorBoard aggiornarsi automaticamente ogni 30 secondi o aggiornalo con il pulsante in alto a destra:

 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

Puoi usare le API tensorboard.notebook per un po 'più di controllo:

 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)