Visualizza su TensorFlow.org | Esegui in Google Colab | Visualizza la fonte su GitHub | Scarica taccuino |
TensorBoard può essere utilizzato direttamente all'interno di esperienze di notebook quali Colab e Jupyter . Questo può essere utile per condividere i risultati, integrare TensorBoard nei flussi di lavoro esistenti e utilizzare TensorBoard senza installare nulla in locale.
Impostare
Inizia installando TF 2.0 e caricando l'estensione per notebook TensorBoard:
Per gli utenti Jupyter: Se avete installato Jupyter e TensorBoard nella stessa virtualenv, allora si dovrebbe essere pronti per partire. Se stai usando una configurazione più complicata, come un'installazione globale Jupyter e kernel per diversi Conda / virtualenv ambienti, quindi è necessario assicurarsi che il tensorboard
binario è sul vostro PATH
all'interno del contesto notebook Jupyter. Un modo per farlo è quello di modificare il kernel_spec
anteporre dell'ambiente di bin
directory a PATH
, come descritto qui .
Per gli utenti Docker: Nel caso in cui si esegue un Docker immagine del server di Notebook Jupyter utilizza di tensorflow notte , è necessario esporre non solo la porta del notebook, ma la porta del TensorBoard. Quindi, esegui il contenitore con il seguente comando:
docker run -it -p 8888:8888 -p 6006:6006 \
tensorflow/tensorflow:nightly-py3-jupyter
dove il -p 6006
è la porta di default TensorBoard. Questo ti assegnerà una porta per eseguire un'istanza TensorBoard. Per avere istanze simultanee, è necessario allocare più porte. Inoltre, passare --bind_all
al %tensorboard
per esporre la porta di fuori del contenitore.
# Load the TensorBoard notebook extension
%load_ext tensorboard
Importa TensorFlow, datetime e os:
import tensorflow as tf
import datetime, os
TensorBoard nei quaderni
Scarica il FashionMNIST set di dati e scalarla:
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')
])
Addestrare il modello utilizzando 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
Avviare TensorBoard all'interno del notebook usando magie :
%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).
L' %tensorboard
magia ha esattamente lo stesso formato come la linea di richiamo del comando TensorBoard, ma con una %
-sign di fronte ad essa.
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 fosse stata scelta una directory di log diversa, verrebbe aperta una nuova istanza di TensorBoard. Le porte sono gestite automaticamente.
Inizia ad addestrare un nuovo modello e guarda TensorBoard aggiornarsi automaticamente ogni 30 secondi o aggiornarlo 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
È possibile utilizzare le tensorboard.notebook
API per un controllo po 'di più:
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)