Tutoriel TensorBoard : Visualisation de graphes TensorFlow

โšก Rรฉsumรฉ intelligent

TensorBoard est l'interface visuelle des entraรฎnements TensorFlow, permettant de tracer les courbes de perte, les graphiques du modรจle, les histogrammes de poids et les plongements lexicaux. Ce tutoriel explique comment gรฉnรฉrer des fichiers d'รฉvรฉnements avec un estimateur, puis ouvrir le tableau de bord sur le port 6006.

  • (I.e. Cinq tableaux de bord : Les scalaires, les graphiques, les distributions, les histogrammes et le projecteur lisent chacun un type de rรฉsumรฉ diffรฉrent.
  • โ˜‘๏ธ Rรฉpertoire des journaux : L'argument model_dir dรฉtermine l'emplacement oรน TensorFlow รฉcrit les fichiers events.out.tfevents.
  • โœ… Commande de lancement : Exรฉcutez la commande tensorboard โ€“logdir=PATH, puis ouvrez http://localhost:6006 dans n'importe quel navigateur.
  • ๐Ÿงช Taux d'apprentissage : Une courbe de perte irrรฉguliรจre signale un taux trop รฉlevรฉ pour que le modรจle converge.
  • ๏ธ TensorFlow 2 : Le rappel Keras TensorBoard remplace la journalisation de l'estimateur prรฉsentรฉe dans l'exemple original.
  • โš ๏ธ Dรฉpannage: Un tableau de bord vide signifie presque toujours que le chemin d'accรจs au rรฉpertoire des journaux ne correspond pas ร  l'exรฉcution de l'entraรฎnement.

Tutoriel TensorBoard : Visualisation de graphes TensorFlow

Qu'est-ce que TensorBoard ?

TensorBoard est l'interface utilisรฉe pour visualiser le graphe et d'autres outils permettant de comprendre, de dรฉboguer et d'optimiser le modรจle. C'est un outil qui fournit des mesures et des visualisations pour un flux de travail d'apprentissage automatique. Il aide track mรฉtriques telles que la perte et la prรฉcision, visualisent le graphe du modรจle et projettent les plongements dans des espaces de dimension infรฉrieure.

TensorBoard est livrรฉ avec TensorFlow et fonctionne comme un petit serveur web local qui lit les fichiers d'รฉvรฉnements qu'un travail d'entraรฎnement รฉcrit sur le disque.

Exemple de visualisation de graphes TensorFlow ร  l'aide de TensorBoard

L'image ci-dessous provient du graphique TensorBoard que vous gรฉnรฉrerez dans ce tutoriel. Il s'agit du panneau principal :

Tableau de bord TensorBoard Scalars affichant la courbe de perte moyenne du rรฉgresseur DNN entraรฎnรฉ

Dans l'image ci-dessous, vous pouvez voir le panneau de visualisation graphique TensorBoard. Le panneau contient diffรฉrents onglets, liรฉs au niveau d'informations que vous ajoutez lorsque vous exรฉcutez le modรจle.

Barre de navigation de TensorBoard avec les onglets Scalaires, Graphiques, Distributions, Histogrammes et Projecteur

  • Scalaires : Afficher diffรฉrentes informations utiles pendant l'entraรฎnement du modรจle
  • Graphes: Afficher le modรจle
  • Histogramme : Afficher les poids sous forme d'histogramme
  • Distribution: Afficher la rรฉpartition du poids
  • Projecteur: Prรฉsentez l'analyse en composantes principales et l'algorithme T-SNE. Technique utilisรฉe pour la rรฉduction de dimensionnalitรฉ.

Dans ce tutoriel TensorBoard, vous entraรฎnerez un modรจle simple. l'apprentissage en profondeur Le modรจle, et le graphique qu'il produit, se lit de bas en haut.

Le graphique permet de comprendre le fonctionnement du modรจle. Les badges numรฉrotรฉs dans la capture d'รฉcran ci-dessous indiquent ces quatre รฉtapes :

  1. Mettez les donnรฉes en file d'attente dans le modรจle : envoyez une quantitรฉ de donnรฉes รฉgale ร  la taille du lot vers le modรจle, c'est-ร -dire le nombre de flux de donnรฉes aprรจs chaque itรฉration.
  2. Alimenter les donnรฉes vers les Tensors
  3. Former le modรจle
  4. Afficher le nombre de lots pendant la formation. Enregistrez le modรจle sur le disque.

Graphique TensorFlow dans TensorBoard avec des nล“uds numรฉrotรฉs pour la file d'attente d'entrรฉe, le bloc DNN et l'opรฉration de sauvegarde

L'idรฉe de base de TensorBoard est qu'un rรฉseau neuronal peut se comporter comme une boรฎte noire, et qu'il faut un outil pour en explorer le fonctionnement interne. On peut comparer TensorBoard ร  une lampe torche permettant de plonger au cล“ur du rรฉseau.

Il aide ร  comprendre les dรฉpendances entre les opรฉrations, la faรงon dont les poids sont calculรฉs, affiche la fonction de perte et bien d'autres informations utiles. Lorsque vous rassemblez toutes ces informations, vous disposez dโ€™un excellent outil pour dรฉboguer et trouver comment amรฉliorer le modรจle.

Pour vous donner une idรฉe de l'utilitรฉ du graphique TensorBoard, regardez les deux courbes de perte ci-dessous :

Deux courbes de perte TensorBoard cรดte ร  cรดte, comparant un modรจle qui n'apprend pas avec un modรจle qui converge.

Un rรฉseau de neurones dรฉtermine comment connecter les diffรฉrents neurones et le nombre de couches nรฉcessaires avant que le modรจle puisse prรฉdire un rรฉsultat. Une fois l'architecture dรฉfinie, il faut non seulement entraรฎner le modรจle, mais aussi une mรฉtrique qui mesure la prรฉcision de la prรฉdiction. Cette mรฉtrique est appelรฉe fonction de perte, et l'objectif est de la minimiser, ce qui signifie simplement que le modรจle commet moins d'erreurs.

Chaque algorithme d'apprentissage rรฉpรจte le calcul de nombreuses fois jusqu'ร  ce que la perte se stabilise. Minimiser la perte nรฉcessite รฉgalement un taux d'apprentissage, qui correspond ร  la vitesse ร  laquelle le modรจle apprend. Si ce taux est trop รฉlevรฉ, le modรจle n'a jamais le temps d'apprendre : c'est ce qu'illustre le graphique de gauche, oรน la courbe oscille car le modรจle procรจde par tรขtonnements. Le graphique de droite montre la perte qui diminue au fil des itรฉrations jusqu'ร  ce que la courbe s'aplatisse, indiquant ainsi que le modรจle a trouvรฉ une solution.

TensorBoard est un outil prรฉcieux pour visualiser ces indicateurs et identifier les problรจmes potentiels. Un rรฉseau neuronal peut mettre des heures, voire des semaines, ร  trouver une solution, et TensorBoard actualise les indicateurs pendant l'exรฉcution. Vous n'avez donc pas besoin d'attendre la fin de l'entraรฎnement pour vรฉrifier son bon dรฉroulement : ouvrez TensorBoard, suivez l'avancement de l'entraรฎnement et apportez les modifications nรฉcessaires.

Comment utiliser TensorBoard ?

Dans cette section, vous apprendrez comment ouvrir TensorBoard depuis le terminal. macOS et ร  partir de la ligne de commande sur WindowsL'accent est mis ici sur l'outil plutรดt que sur le modรจle, c'est pourquoi le code d'entraรฎnement est volontairement court.

Vous devez tout d'abord importer les bibliothรจques que vous utiliserez pendant la formation.

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

Vous crรฉez les donnรฉes. Il s'agit d'un tableau de 10 000 lignes et 5 colonnes.

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

Sortie

(10000, 5)

Le code ci-dessous transforme les donnรฉes et crรฉe le modรจle.

Notez que le taux d'apprentissage est รฉgal ร  0.1. Si vous augmentez ce taux, le modรจle ne trouvera pas de solution. C'est ce qui s'est produit ร  gauche de l'image ci-dessus.

Cet exemple utilise un estimateur TensorFlow, l'API de haut niveau qui encapsule les calculs mathรฉmatiques. Les estimateurs appartiennent ร  l'API TensorFlow 1.x ; par consรฉquent, les deux extraits de code ci-dessous s'exรฉcutent sous une installation 1.x ou viaโ€ฆ tf.compat.v1 espace de noms.

Pour crรฉer les fichiers journaux, vous devez spรฉcifier le chemin d'accรจs. Cela se fait avec l'argument. model_dir.

Dans l'exemple TensorBoard ci-dessous, vous stockez le modรจle dans le rรฉpertoire de travail, c'est-ร -dire lร  oรน vous stockez le notebook ou Python Dans ce chemin, TensorFlow crรฉera un dossier appelรฉ train contenant un sous-dossier nommรฉ 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    
      )
)

Sortie

INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {&#x27;_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}

La derniรจre รฉtape de cet exemple de visualisation de graphes avec TensorFlow consiste ร  entraรฎner le modรจle. Durant l'entraรฎnement, TensorFlow enregistre les informations dans le rรฉpertoire du modรจle.

# 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)

Sortie

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>

Sur TensorFlow 2, le mรชme travail est effectuรฉ par le rappel Keras TensorBoard, qui รฉcrit le graphe et les mรฉtriques par รฉpoque sans aucun code d'estimation :

logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

model.fit(train_images, train_labels, epochs=5,
          callbacks=[tensorboard_callback])

Une fois l'exรฉcution terminรฉe, le rรฉpertoire journal contient un fichier de point de contrรดle, un graph.pbtxt fichier et un ou plusieurs events.out.tfevents fichiers โ€” exactement ce que TensorBoard lit.

Pour macOS des opportunitรฉs

La capture d'รฉcran ci-dessous montre le nouveau dossier train/linreg crรฉรฉ dans le rรฉpertoire de travail.

macOS Liste des fichiers montrant les dossiers de journalisation train et linreg avec les fichiers checkpoint, events et graph.pbtxt

Pour Windows des opportunitรฉs

On Windows Les mรชmes fichiers apparaissent sous le chemin que vous avez indiquรฉ ร  model_dir, comme indiquรฉ dans la barre d'adresse.

Windows Vue explorateur du dossier train linreg contenant les fichiers d'รฉvรฉnements et de points de contrรดle TensorFlow

Le mรชme format de fichier d'รฉvรฉnements est produit par PyTorchLe tableau de bord n'est donc pas limitรฉ aux exรฉcutions TensorFlow.

Maintenant que les รฉvรฉnements de journalisation sont enregistrรฉs, vous pouvez ouvrir TensorBoard. TensorBoard est accessible par dรฉfaut sur le port 6006 (Jupyter utilise le port 8888). Utilisez le Terminal sur macOS ou l'invite Anaconda sur Windows.

Pour macOS des opportunitรฉs

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

Le bloc-notes est stockรฉ dans le rรฉpertoire /Users/Guru99/tuto_TF

Pour Windows des opportunitรฉs

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

Le notebook est stockรฉ dans le chemin C:\Users\Admin\Anaconda3

Pour lancer TensorBoard, exรฉcutez la commande suivante depuis ce rรฉpertoire.

Pour macOS des opportunitรฉs

tensorboard --logdir=./train/linreg

Pour Windows des opportunitรฉs

tensorboard --logdir=.\train\linreg

TensorBoard est alors accessible ร  l'adresse http://localhost:6006

chaise Ce qu'il contrรดle
--logdir Rรฉpertoire contenant les fichiers d'รฉvรฉnements. C'est le seul paramรจtre requis.
--port Port ร  utiliser. Par dรฉfaut : 6006 ; modifiez-le si une session prรฉcรฉdente utilise encore ce port.
--bind_all Servir sur chaque interface rรฉseau. Par dรฉfaut, TensorBoard se lie uniquement ร  localhost ; lโ€™accรจs distant nรฉcessite donc cette option, et elle ne peut รชtre combinรฉe avecโ€ฆ --host.
--reload_interval Frรฉquence, en secondes, de rรฉanalyse du rรฉpertoire journal pour dรฉtecter de nouvelles donnรฉes.
--logdir_spec Solution de repli hรฉritรฉe acceptant plusieurs chemins sรฉparรฉs par des virgules ; --logdir ne prend plus en charge ce formulaire.

Le tensorboard dev La sous-commande ne fonctionne plus : le service hรฉbergรฉ TensorBoard.dev a รฉtรฉ arrรชtรฉ le 1er janvier 2024. Lโ€™utilisation locale nโ€™est pas affectรฉe.

Sur certaines machines, la console affiche le nom d'hรดte au lieu de localhost, comme dans l'invite Anaconda ci-dessous. Les deux adresses ouvrent le mรชme tableau de bord.

L'invite de commande Anaconda exรฉcute la commande tensorboard et affiche l'adresse du serveur sur le port 6006.

Copiez et collez l'adresse dans votre navigateur prรฉfรฉrรฉ. Le tableau de bord Scalars devrait s'afficher ci-dessous.

Le tableau de bord TensorBoard Scalars s'ouvre correctement dans un navigateur une fois le rรฉpertoire des journaux chargรฉ.

Si vous voyez plutรดt quelque chose comme ceci :

Page d'erreur TensorBoard : Aucun fichier de dรฉfinition de graphe n'a รฉtรฉ trouvรฉ.

Cela signifie que TensorBoard ne trouve pas le fichier journal. Assurez-vous de bien l'indiquer. cd Vรฉrifiez que vous รชtes sur la bonne voie ou revรฉrifiez que l'รฉvรฉnement de journalisation a bien รฉtรฉ crรฉรฉ. Si ce n'est pas le cas, relancez le code d'entraรฎnement.

Pour fermer TensorBoard, appuyez sur CTRL+C dans la fenรชtre du terminal.

Conseil : vรฉrifiez votre invite de commande Anaconda pour connaรฎtre le rรฉpertoire de travail actuel.

Invite de commande Anaconda affichant l'environnement hello-tf actif et le rรฉpertoire de travail actuel

Dans la capture d'รฉcran ci-dessus, l'invite de commande se trouve ร  l'emplacement C:\Users\Admin ; le fichier journal devrait donc รชtre crรฉรฉ dans ce dossier.

FAQ

Une exรฉcution terminรฉe gรฉnรจre un index de point de contrรดle, un ou plusieurs fichiers model.ckpt, un fichier graph.pbtxt et au moins un fichier events.out.tfevents. TensorBoard ne lit que les fichiers d'รฉvรฉnements ; les points de contrรดle permettent de reprendre l'entraรฎnement lร  oรน il s'est arrรชtรฉ.

Oui. PyTorch navires un rรฉsumรฉWriter Le format des fichiers d'รฉvรฉnements est identique, la commande `tensorboard --logdir` permet donc d'afficher le tableau de bord sans problรจme. Rien ne change cรดtรฉ serveur : seule la bibliothรจque qui gรฉnรจre les rรฉsumรฉs diffรจre.

Non. Le service hรฉbergรฉ a fermรฉ le 1er janvier 2024 et la sous-commande tensorboard dev renvoie dรฉsormais une erreur. Partagez vos rรฉsultats en exรฉcutant TensorBoard dans un notebook, par exemple : Google Colab, ou en exportant les graphiques au format CSV ou JSON.

Attribuez ร  chaque exรฉcution son propre sous-dossier sous un dossier parent commun, puis spรฉcifiez le chemin du dossier parent avec l'option `--logdir`. Chaque sous-dossier apparaรฎt comme une exรฉcution distincte dans le panneau de gauche, et les courbes sont tracรฉes sur les mรชmes axes, chacune รฉtant associรฉe ร  une case ร  cocher.

Le graphique au niveau des opรฉrations est la vue par dรฉfaut et illustre la maniรจre dont TensorFlow interprรจte le programme, selon une approche ascendante. La sรฉlection de l'รฉtiquette Keras permet d'afficher le graphique conceptuel, qui prรฉsente uniquement les couches du modรจle et facilite la vรฉrification par rapport ร  votre conception.

Les analyses automatisรฉes gรฉnรจrent des dizaines d'exรฉcutions simultanรฉment ; le tableau de bord devient alors un outil de comparaison plutรดt qu'un outil de suivi d'exรฉcution unique. Le plugin HParams enregistre chaque configuration ainsi que ses mรฉtriques, ce qui permet de trier les essais au lieu de lire les courbes une par une.

Copilote GitHub Gรฉnรฉrez rapidement le code de rappel et le modรจle de rรฉsumรฉ. Considรฉrez le rรฉsultat comme une รฉbauche : il mรฉlange souvent les API TensorFlow 1.x et 2.x ; vรฉrifiez donc chaque nom par rapport ร  la documentation actuelle avant dโ€™exรฉcuter le code.

Soit aucun fichier d'รฉvรฉnements n'a รฉtรฉ crรฉรฉ, soit le chemin d'accรจs passรฉ ร  โ€“logdir ne correspond pas ร  celui utilisรฉ par la tรขche d'entraรฎnement. Vรฉrifiez qu'un fichier events.out.tfevents existe dans ce dossier, et sur Windows Dรฉmarrez TensorBoard depuis la mรชme lettre de lecteur.

Rรฉsumez cet article avec :