Tutoriel TensorBoard : Visualisation de graphiques TensorFlow [Exemple]

Qu'est-ce que TensorBoard ?

Tableau Tenseur est l'interface utilisée pour visualiser le graphique et d'autres outils pour comprendre, déboguer et optimiser le modèle. Il s'agit d'un outil qui fournit des mesures et des visualisations pour le flux de travail d'apprentissage automatique. Il permet de suivre des mesures telles que la perte et la précision, la visualisation du graphique du modèle, l'intégration du projet dans des espaces de dimension inférieure, etc.

Visualisation de graphique TensorFlow à l'aide de l'exemple Tensorboard

L'image ci-dessous provient du graphique TensorBoard que vous générerez dans ce didacticiel TensorBoard. C'est le panneau principal :

Visualisation du graphique TensorFlow
Visualisation du graphique TensorFlow

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.

Graphiques TensorBoard

Graphiques TensorBoard
  • Scalaires: Afficher différentes informations utiles lors de la formation du modèle
  • Graphiques: Afficher le modèle
  • Histogramme: Afficher les poids avec un histogramme
  • Distribution: Afficher la répartition du poids
  • Projecteur: Afficher l'analyse en composantes principales et l'algorithme T-SNE. La technique utilisée pour la réduction de dimensionnalité

Au cours de ce didacticiel TensorBoard, vous entraînerez un modèle simple d'apprentissage en profondeur. Vous apprendrez comment cela fonctionne dans un prochain tutoriel.

Si vous regardez le graphique, vous pouvez comprendre comment fonctionne le modèle.

  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.

Visualisation de graphique TensorFlow à l'aide de l'exemple Tensorboard

L'idée de base derrière Tensorboard est que le réseau neuronal peut être ce qu'on appelle un réseau noir. box et nous avons besoin d'un outil pour inspecter ce qu'il y a à l'intérieur box. Vous pouvez imaginer le Tensorboard comme une lampe de poche pour commencer à plonger dans le réseau neuronal.

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 l'image ci-dessous :

Graphiques TensorBoard
Graphique TensorBoard

Un réseau de neurones décide comment connecter les différents « neurones » et combien de couches avant que le modèle puisse prédire un résultat. Une fois que vous avez défini l'architecture, vous devez non seulement entraîner le modèle mais également des métriques pour calculer la précision de la prédiction. Cette métrique est appelée un fonction de perte. L’objectif est de minimiser la fonction de perte. En d’autres termes, cela signifie que le modèle fait moins d’erreurs. Tous les algorithmes d’apprentissage automatique répéteront les calculs plusieurs fois jusqu’à ce que la perte atteigne une ligne plus plate. Pour minimiser cette fonction de perte, vous devez définir une taux d'apprentissage. C'est la vitesse à laquelle vous souhaitez que le modèle apprenne. Si vous fixez un taux d’apprentissage trop élevé, le modèle n’aura pas le temps d’apprendre quoi que ce soit. C'est le cas sur l'image de gauche. La ligne monte et descend, ce qui signifie que le modèle prédit le résultat avec une simple supposition. L'image de droite montre que la perte diminue au fil des itérations jusqu'à ce que la courbe s'aplatisse, ce qui signifie que le modèle a trouvé une solution.

TensorBoard est un excellent outil pour visualiser ces métriques et mettre en évidence les problèmes potentiels. Le réseau neuronal peut prendre des heures, voire des semaines, avant de trouver une solution. TensorBoard met à jour les métriques très souvent. Dans ce cas, vous n'avez pas besoin d'attendre la fin pour voir si le modèle s'entraîne correctement. Vous pouvez ouvrir TensorBoard pour vérifier le déroulement de la formation et apporter les modifications appropriées si nécessaire.

Comment utiliser TensorBoard ?

Dans ce didacticiel, vous apprendrez comment ouvrir TensorBoard à partir du terminal pour MacOS et de la ligne de commande TensorBoard pour Windows.

Le code sera expliqué dans un prochain tutoriel, l'accent est ici mis sur TensorBoard.

Tout d'abord, vous devez 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. C'est un tableau de 10000 5 lignes et colonnes

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

Sortie

(10000, 5)

Les codes ci-dessous transforment les données et créent le modèle.

A noter que le taux d'apprentissage est égal à 0.1. Si vous modifiez ce taux pour une valeur plus élevée, le modèle ne trouvera pas de solution. C'est ce qui s'est passé sur le côté gauche de l'image ci-dessus.

Pendant la majeure partie de la Tutoriels TensorFlow, vous utiliserez l'estimateur TensorFlow. Il s'agit de l'API TensorFlow qui contient tous les calculs mathématiques.

Pour créer les fichiers journaux, vous devez spécifier le chemin. 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 le fichier python. À l'intérieur de ce chemin, TensorFlow créera un dossier appelé train avec un nom de dossier enfant 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: {'_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 graphique de visualisation TensorFlow consiste à entraîner le modèle. Pendant la formation, TensorFlow écrit des 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>

Pour les utilisateurs de MacOS

Tutoriel TensorBoard pour les utilisateurs de MacOS

Pour l'utilisateur Windows

Tutoriel TensorBoard pour l'utilisateur Windows

Vous pouvez voir ces informations dans lePyTorch TensorBoard.

Maintenant que les événements du journal sont écrits, vous pouvez ouvrir Tensorboard. Tensorboard Keras fonctionne sur le port 6006 (Jupyter fonctionne sur le port 8888). Vous pouvez utiliser le Terminal pour les utilisateurs MacOs ou l'invite Anaconda pour les utilisateurs Windows.

Pour les utilisateurs de MacOS

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

Le notebook est stocké dans le chemin /Users/Guru99/tuto_TF

Pour les utilisateurs de Windows

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

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

Pour lancer Tensorboard, vous pouvez utiliser ce code

Pour les utilisateurs de MacOS

tensorboard --logdir=./train/linreg

Pour les utilisateurs de Windows

tensorboard --logdir=.\train\linreg

Tensorboard se trouve à cette URL : http://localhost:6006

Il pourrait également être situé au suivantwing emplacement.

Utiliser TensorBoard

Copiez et collez l'URL dans votre navigateur préféré. Vous devriez voir ceci :

A noter que, nous apprendrons à lire le graphique dans le tutoriel dédié au l'apprentissage en profondeur.

Utiliser TensorBoard

Si vous voyez quelque chose comme ça :

Utiliser TensorBoard

Cela signifie que Tensorboard ne trouve pas le fichier journal. Assurez-vous de pointer le CD vers le bon chemin ou vérifiez si l'événement de journal a été créé. Sinon, réexécutez le code.

Si vous souhaitez fermer TensorBoard, appuyez sur CTRL+C.

Astuce : vérifiez votre invite anaconda pour le répertoire de travail actuel,

Utiliser TensorBoard

Le fichier journal doit être créé dans C:\Users\Admin

Résumé

TensorBoard est un excellent outil pour visualiser votre modèle. De plus, de nombreuses mesures sont affichées pendant l'entraînement, comme la perte, la précision ou les poids.

Pour activer Tensorboard, vous devez définir le chemin de votre fichier :

cd /Users/Guru99/tuto_TF

Activer l'environnement de Tensorflow

activate hello-tf

Lancer le Tensorboard

tensorboard --logdir=.+ PATH