Che cosa e TensorBoard?

TensorBoard è uno strumento di visualizzazione fornito con TensorFlow, una popolare libreria di machine learning sviluppata da Google.

TensorBoard aiuta gli sviluppatori e i ricercatori a comprendere, debuggare e ottimizzare i programmi TensorFlow.

Ecco alcune delle funzionalità principali di TensorBoard:

  1. Grafici Computazionali: Permette di visualizzare la struttura del modello TensorFlow, mostrando nodi e tensori come un grafo computazionale.
  2. Curva di Apprendimento: Puoi monitorare l'andamento delle metriche di allenamento e validazione, come la funzione di perdita o l'accuratezza, nel corso del tempo.
  3. Istogrammi di Distribuzione: Visualizza la distribuzione di valori per tensori nel tempo, come pesi o gradienti.
  4. Visualizzazione delle Immagini: Se stai addestrando un modello su immagini, puoi visualizzare esempi di immagini dal set di dati direttamente in TensorBoard.
  5. Visualizzazione degli Embedding: Permette di esplorare embedding (come quelli generati da modelli come Word2Vec) in uno spazio tridimensionale.
  6. Profiling: Aiuta a identificare colli di bottiglia nelle operazioni, mostrando dove il tuo modello trascorre la maggior parte del tempo.
  7. Eventi Personalizzati: Puoi loggare e visualizzare metriche o valori personalizzati.
  8. Audio e Testo: Oltre alle immagini, TensorBoard supporta anche la visualizzazione di dati audio e testo.
  9. Integrazione con altri Strumenti: TensorBoard può essere integrato con altre librerie e strumenti, come PyTorch, grazie a tensorboardX e altre estensioni simili.

Per utilizzare TensorBoard, durante l'allenamento di un modello TensorFlow, dovresti registrare i dati che desideri visualizzare su TensorBoard utilizzando un tf.summary.FileWriter (nelle versioni precedenti di TensorFlow) o metodi simili nelle versioni più recenti. Una volta che questi dati sono stati registrati, puoi avviare TensorBoard e navigare attraverso una interfaccia web per esplorare le visualizzazioni.

Di seguito aggiungo uno script di esempio:

import tensorflow as tf
from tensorflow.keras.datasets import mnist

# Importiamo i dati MNIST
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Convertiamo i dati in float32
x_train = x_train.astype("float32")
x_test = x_test.astype("float32")

# Normalizziamo i dati
x_train /= 255
x_test /= 255

# Definiamo il modello
model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation="relu"),
    tf.keras.layers.Dense(10, activation="softmax")
])

# Compiliamo il modello
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])

# Addiamo il callback di TensorBoard
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir="./logs")

# Alleniamo il modello
model.fit(x_train, y_train, epochs=10, callbacks=[tensorboard_callback])

# Valutiamo il modello
model.evaluate(x_test, y_test)

# Avvia TensorBoard
# tensorboard --logdir ./logs

    

Questo codice crea un modello di classificazione per il dataset MNIST. Il modello è costituito da due strati nascosti di 128 neuroni ciascuno, con una funzione di attivazione ReLU. Il modello viene compilato con l'ottimizzatore Adam, la funzione di perdita "sparse_categorical_crossentropy" e la metrica "accuracy".

Per aggiungere il callback di TensorBoard, utilizziamo la funzione tf.keras.callbacks.TensorBoard(). Il callback registra i dati di allenamento e valutazione in un file di log. Per visualizzare i dati in TensorBoard, possiamo avviare il comando seguente: tensorboard --logdir ./logs

Una volta avviato TensorBoard, possiamo accedere alla dashboard in un browser web. La dashboard mostra una serie di visualizzazioni che possono aiutarci a comprendere l'andamento dell'allenamento del modello.

Ecco alcune delle visualizzazioni che possiamo trovare in TensorBoard:

  • Grafo del modello: Mostra il grafico del modello TensorFlow.
  • Curve di perdita e accuratezza: Mostra le curve di perdita e accuratezza per l'allenamento e la valutazione.
  • Histogrammi: Mostra gli istogrammi dei pesi e dei bias del modello.
  • Embedding: Visualizza gli embeddings del modello in uno spazio a bassa dimensionalità.