Tutorial TensorBoard: visualizzazione del grafico TensorFlow [esempio]

Cos'è TensorBoard?

Scheda Tensor è l'interfaccia utilizzata per visualizzare il grafico e altri strumenti per comprendere, eseguire il debug e ottimizzare il modello. È uno strumento che fornisce misurazioni e visualizzazioni per il flusso di lavoro di apprendimento automatico. Aiuta a tenere traccia di parametri come perdita e precisione, visualizzazione del grafico del modello, incorporamento del progetto in spazi di dimensione inferiore, ecc.

Visualizzazione del grafico TensorFlow utilizzando l'esempio di Tensorboard

L'immagine seguente proviene dal grafico TensorBoard che genererai in questo tutorial TensorBoard. È il pannello principale:

Visualizzazione del grafico TensorFlow
Visualizzazione del grafico TensorFlow

Dall'immagine sotto potete vedere il pannello di visualizzazione dei grafici di TensorBoard. Il pannello contiene diverse schede, collegate al livello di informazioni aggiunte quando si esegue il modello.

Grafici TensorBoard

Grafici TensorBoard
  • scalari: mostra diverse informazioni utili durante l'addestramento del modello
  • Grafici: Mostra il modello
  • Istogramma: Visualizza i pesi con un istogramma
  • Distribuzione: Visualizza la distribuzione del peso
  • Proiettore: Mostra l'analisi delle componenti principali e l'algoritmo T-SNE. La tecnica utilizzata per la riduzione della dimensionalità

Durante questo tutorial di TensorBoard, addestrerai un semplice modello di deep learning. Imparerai come funziona in un prossimo tutorial.

Se guardi il grafico, puoi capire come funziona il modello.

  1. Accoda i dati al modello: invia al modello una quantità di dati pari alla dimensione del batch, ovvero il numero di feed di dati dopo ogni iterazione
  2. Fornisci i dati ai tensori
  3. Allena il modello
  4. Visualizza il numero di lotti durante l'addestramento. Salvare il modello sul disco.

Visualizzazione del grafico TensorFlow utilizzando l'esempio di Tensorboard

L'idea di base dietro tensorboard è che la rete neurale può essere qualcosa di noto come una scatola nera e abbiamo bisogno di uno strumento per ispezionare cosa c'è dentro questa scatola. Puoi immaginare tensorboard come una torcia elettrica per iniziare a immergerti nella rete neurale.

Aiuta a comprendere le dipendenze tra le operazioni, come vengono calcolati i pesi, visualizza la funzione di perdita e molte altre informazioni utili. Quando riunisci tutte queste informazioni, hai un ottimo strumento per eseguire il debug e scoprire come migliorare il modello.

Per darti un'idea di quanto possa essere utile il grafico TensorBoard, guarda l'immagine qui sotto:

Grafici TensorBoard
Grafico TensorBoard

Una rete neurale decide come collegare i diversi "neuroni" e quanti strati prima che il modello possa prevedere un risultato. Una volta definita l'architettura, non solo è necessario addestrare il modello, ma anche una metrica per calcolare l'accuratezza della previsione. Questa metrica è definita come funzione di perdita. L’obiettivo è minimizzare la funzione di perdita. In altre parole, significa che il modello sta commettendo meno errori. Tutti gli algoritmi di apprendimento automatico ripeteranno più volte i calcoli finché la perdita non raggiunge una linea più piatta. Per minimizzare questa funzione di perdita, è necessario definire a tasso di apprendimento. È la velocità con cui vuoi che il modello impari. Se imposti un tasso di apprendimento troppo alto, il modello non avrà il tempo di apprendere nulla. Questo è il caso della foto a sinistra. La linea si muove su e giù, il che significa che il modello prevede il risultato con pura ipotesi. L'immagine a destra mostra che la perdita diminuisce nel corso dell'iterazione finché la curva non si appiattisce, il che significa che il modello ha trovato una soluzione.

TensorBoard è un ottimo strumento per visualizzare tali parametri ed evidenziare potenziali problemi. La rete neurale può impiegare ore o settimane prima di trovare una soluzione. TensorBoard aggiorna le metriche molto spesso. In questo caso non è necessario aspettare fino alla fine per vedere se il modello si allena correttamente. Puoi aprire TensorBoard per verificare come sta andando la formazione e apportare le modifiche appropriate, se necessario.

Come utilizzare TensorBoard?

In questo tutorial imparerai come aprire TensorBoard dal terminale per MacOS e dalla riga di comando TensorBoard per Windows.

Il codice verrà spiegato in un tutorial futuro, il focus qui è su TensorBoard.

Innanzitutto, devi importare le librerie che utilizzerai durante la formazione

## Import the library
import tensorflow as tf
import numpy as np

Tu crei i dati. È un array di 10000 righe e 5 colonne

X_train = (np.random.sample((10000,5)))
y_train =  (np.random.sample((10000,1)))
X_train.shape

Uscita

(10000, 5)

I codici seguenti trasformano i dati e creano il modello.

Si noti che il tasso di apprendimento è pari a 0.1. Se si modifica questo tasso su un valore più alto, il modello non troverà una soluzione. Questo è quello che è successo sul lato sinistro dell'immagine sopra.

Durante la maggior parte del Tutorial TensorFlow, utilizzerai lo stimatore TensorFlow. Questa è l'API TensorFlow che contiene tutti i calcoli matematici.

Per creare i file di registro, è necessario specificare il percorso. Questo viene fatto con l'argomento model_dir.

Nell'esempio TensorBoard riportato di seguito, memorizzi il modello all'interno della directory di lavoro, ovvero dove memorizzi il notebook o il file python. All'interno di questo percorso, TensorFlow creerà una cartella chiamata train con una cartella secondaria denominata linreg.

feature_columns = [
      tf.feature_column.numeric_column('x', shape=X_train.shape[1:])]
DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns,
# Indicate where to store the log file    
     model_dir='train/linreg',    
     hidden_units=[500, 300],    
     optimizer=tf.train.ProximalAdagradOptimizer(      
          learning_rate=0.1,      
          l1_regularization_strength=0.001    
      )
)

Uscita

INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}

L'ultimo passaggio di questo esempio di grafico di visualizzazione TensorFlow consiste nell'addestrare il modello. Durante l'addestramento, TensorFlow scrive le informazioni nella directory del modello.

# Train the estimator
train_input = tf.estimator.inputs.numpy_input_fn(    
     x={"x": X_train},    
     y=y_train, shuffle=False,num_epochs=None)
DNN_reg.train(train_input,steps=3000)

Uscita

INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt.
INFO:tensorflow:loss = 40.060104, step = 1
INFO:tensorflow:global_step/sec: 197.061
INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec)
INFO:tensorflow:global_step/sec: 172.487
INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec)
INFO:tensorflow:global_step/sec: 193.295
INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec)
INFO:tensorflow:global_step/sec: 175.378
INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec)
INFO:tensorflow:global_step/sec: 209.737
INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec)
INFO:tensorflow:global_step/sec: 171.646
INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec)
INFO:tensorflow:global_step/sec: 192.269
INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec)
INFO:tensorflow:global_step/sec: 198.264
INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec)
INFO:tensorflow:global_step/sec: 226.842
INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec)
INFO:tensorflow:global_step/sec: 152.929
INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec)
INFO:tensorflow:global_step/sec: 166.745
INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec)
INFO:tensorflow:global_step/sec: 161.854
INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec)
INFO:tensorflow:global_step/sec: 179.074
INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec)
INFO:tensorflow:global_step/sec: 202.776
INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec)
INFO:tensorflow:global_step/sec: 144.161
INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec)
INFO:tensorflow:global_step/sec: 154.144
INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec)
INFO:tensorflow:global_step/sec: 151.094
INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec)
INFO:tensorflow:global_step/sec: 193.644
INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec)
INFO:tensorflow:global_step/sec: 189.707
INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec)
INFO:tensorflow:global_step/sec: 176.423
INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec)
INFO:tensorflow:global_step/sec: 213.066
INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec)
INFO:tensorflow:global_step/sec: 220.975
INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec)
INFO:tensorflow:global_step/sec: 219.289
INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec)
INFO:tensorflow:global_step/sec: 215.123
INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec)
INFO:tensorflow:global_step/sec: 175.65
INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec)
INFO:tensorflow:global_step/sec: 206.962
INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec)
INFO:tensorflow:global_step/sec: 229.627
INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec)
INFO:tensorflow:global_step/sec: 195.792
INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec)
INFO:tensorflow:global_step/sec: 176.803
INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec)
INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt.
INFO:tensorflow:Loss for final step: 10.73032.

<tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>

Per gli utenti MacOS

Tutorial TensorBoard per utenti MacOS

Da Windows Utente

Tutorial TensorBoard per Windows Utente

Puoi vedere queste informazioni nel filePyTorch TensorBoard.

Ora che hai scritto gli eventi del log, puoi aprire Tensorboard. Tensorboard Keras funziona sulla porta 6006 (Jupyter gira sulla porta 8888). Puoi usare il Terminale per gli utenti MacOs o il prompt di Anaconda per Windows utente.

Per gli utenti MacOS

# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!

Il notebook è archiviato nel percorso /Users/Guru99/tuto_TF

Da Windows utenti

cd C:\Users\Admin\Anaconda3
activate hello-tf

Il notebook è archiviato nel percorso C:\Users\Admin\Anaconda3

Per avviare Tensorboard, puoi utilizzare questo codice

Per gli utenti MacOS

tensorboard --logdir=./train/linreg

Da Windows utenti

tensorboard --logdir=.\train\linreg

Tensorboard si trova in questo URL: http://localhost:6006

Potrebbe anche trovarsi nella seguente posizione.

Usa TensorBoard

Copia e incolla l'URL nel tuo browser preferito. Dovresti vedere questo:

Tieni presente che impareremo a leggere il grafico nel tutorial dedicato al apprendimento profondo.

Usa TensorBoard

Se vedi qualcosa del genere:

Usa TensorBoard

Significa che Tensorboard non riesce a trovare il file di log. Assicurati di puntare il cd al percorso corretto o di controllare due volte se l'evento di log è stato creato. In caso contrario, esegui nuovamente il codice.

Se vuoi chiudere TensorBoard premi CTRL+C

Suggerimento: controlla il prompt di anaconda per la directory di lavoro corrente,

Usa TensorBoard

Il file di registro deve essere creato in C:\Users\Admin

Sintesi

TensorBoard è un ottimo strumento per visualizzare il tuo modello. Inoltre, durante l'allenamento vengono visualizzati molti parametri, come la perdita, la precisione o i pesi.

Per attivare Tensorboard, devi impostare il percorso del tuo file:

cd /Users/Guru99/tuto_TF

Attiva l'ambiente di Tensorflow

activate hello-tf

Avvia Tensorboard

tensorboard --logdir=.+ PATH