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.
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 :
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.
- 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 :
- 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.
- Alimenter les donnรฉes vers les Tensors
- Former le modรจle
- Afficher le nombre de lots pendant la formation. Enregistrez le modรจle sur le disque.
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 :
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: {'_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.
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.
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.
Copiez et collez l'adresse dans votre navigateur prรฉfรฉrรฉ. Le tableau de bord Scalars devrait s'afficher ci-dessous.
Si vous voyez plutรดt quelque chose comme ceci :
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.
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.










