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:

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.
- 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.
- 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
- Fornisci i dati ai tensori
- Allena il modello
- Visualizza il numero di lotti durante l'addestramento. Salvare il modello sul disco.
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:
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
Da 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.
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.
Se vedi qualcosa del genere:
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,
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