[PYTHON] Surveiller le modèle d'entraînement avec TensorBord sur Jupyter Notebook

Aperçu

Lors de l'entraînement d'un modèle avec TensorFlow, vous voulez voir si l'entraînement fonctionne. En donnant l'argument «verbose = 1» à «model.fit ()», il est possible de vérifier la progression de l'entraînement comme indiqué ci-dessous.

Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 11s 184us/sample - loss: 0.4968 - accuracy: 0.8223 - val_loss: 0.4216 - val_accuracy: 0.8481
Epoch 2/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3847 - accuracy: 0.8587 - val_loss: 0.4056 - val_accuracy: 0.8545
Epoch 3/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3495 - accuracy: 0.8727 - val_loss: 0.3600 - val_accuracy: 0.8700
Epoch 4/5
60000/60000 [==============================] - 11s 179us/sample - loss: 0.3282 - accuracy: 0.8795 - val_loss: 0.3636 - val_accuracy: 0.8694
Epoch 5/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3115 - accuracy: 0.8839 - val_loss: 0.3438 - val_accuracy: 0.8764

Cependant, il est difficile de comprendre à partir de ce résultat si la formation est réussie.

Par conséquent, considérons la visualisation à l'aide de TensorBord. TensorBord visualise la progression de la formation comme indiqué dans la figure ci-dessous et vous aide à comprendre visuellement si la formation est réussie ou non.

Ici, la précision et la perte de la formation réussie et non réussie sont représentées sur le graphique.

Dans TensorBord, en plus de la précision et de la perte, la distorsion et l'histogramme peuvent également être visualisés et confirmés.

image.png image.png
Visualisation des distributions Visualisation de l'histogramme

Lors de la surveillance du modèle pendant l'entraînement, la précision et la perte peuvent être vérifiées en appuyant sur le bouton de mise à jour de TensorBord, mais les distributions et l'histogramme ne le sont pas. J'ai recherché cette méthode mais je n'ai pas pu la trouver en japonais, je vais donc l'écrire ici.

environnement

Tirez l'image nocturne de TensorFlow avec Docker. Lorsque la version de TensorFlow a été sortie, il s'agissait de «2.1.0-dev20200101».

docker pull tensorflow/tensorflow:nightly-gpu-py3-jupyter

Commencez ceci. À ce stade, la redirection de port est importante. Tout d'abord, transférez le port 8888 pour démarrer jupyter. De plus, vous devez rediriger le port 6006, que TensorBoard utilise par défaut. Utilisez l'option -p pour la redirection de port.

docker run --gpus all -it -v `pwd`:/tf -p 8888:8888 -p 6006:6006 tensorflow/tensorflow:nightly-gpu-py3-jupyter

Lorsque vous exécutez la commande ci-dessus, un lien pour ouvrir le bloc-notes Jupyter s'affiche. Accédez-y et ouvrez le bloc-notes Jupyter.

Après cela, je programmerai avec TensorFlow le cas échéant.

Préparation à l'utilisation de Tensor Bord

Il semble que vous deviez charger l'extension pour utiliser TensorBord. De plus, lorsque vous essayez de charger l'extension, il vous sera demandé d'installer cloud-tpu-client. Par conséquent, il est recommandé de faire ce qui suit.

!pip install cloud-tpu-client
%load_ext tensorboard

Ensuite, créez un rappel qui écrit le fichier journal à visualiser pendant l'entraînement. Vous n'avez pas à l'implémenter vous-même pour le créer, créez simplement une instance de la classe tensorflow.keras.callbacks.TensorBoard.

tb_cb = tf.keras.callbacks.TensorBoard(
    log_dir=log_dir,
    histogram_freq=1,
    write_images=True
)

Un fichier journal est généré en passant cette instance à l'argument de model.fit ().

history=model.fit(
        datagen_train,
        steps_per_epoch=len(x_train) // batch_size,
        validation_data=datagen_validate,
        validation_steps=len(x_validate) // batch_size,
        epochs=epochs,
        shuffle=False,
        callbacks=[tb_cb] 
    )

Lancez TensorBord sur Jupyter Notebook

C'est un point très important. Il est facile de lancer TensorBoard sur un Juoyter Notebook, mais si vous ne définissez pas correctement les options, vous ne pourrez pas voir les distributions ou l'historique tout en apprenant. Dans mon cas, écrire ce qui suit a bien fonctionné.

%tensorboard --logdir log --bind_all --port 6006 --reload_multifile true

Fondamentalement, TensorBoard peut être démarré en spécifiant le répertoire dans lequel le fichier journal est enregistré avec l'option -logdir. Dans mon cas (peut-être une combinaison de Docker + Jupyter Notebook?), Cela n'a pas commencé sans ajouter --bind_all et --port 6006. Une fois démarré, le TensorBoard peut être utilisé dans la cellule de sortie.

Maintenant, il est important d'ajouter le dernier --reload_multifile true. Si vous supprimez cela, vous ne pourrez pas voir les distributions et l'historique pendant l'apprentissage.

Notez que ce TensorBoard doit être démarré avant model.fit (). En effet, le bloc-notes Jupyter ne peut exécuter qu'une seule cellule à la fois.

Résumé

Enfin, résumons le flux global.

  1. Créez un environnement si nécessaire

docker pull tensorflow/tensorflow:nightly-gpu-py3-jupyter docker run --gpus all -it -v pwd:/tf -p 8888:8888 -p 6006:6006 tensorflow/tensorflow:nightly-gpu-py3-jupyter ```

  1. Lire les extensions

!pip install cloud-tpu-client %load_ext tensorboard ```

  1. Prétraitement des données et construction de modèles de formation Puisqu'il varie d'une personne à l'autre, il est omis ici.

  2. Créez une instance de la classe tensorflow.keras.callbacks.TensorBoard

tb_cb = tf.keras.callbacks.TensorBoard( log_dir=log_dir, histogram_freq=1, write_images=True ) ```

  1. Lancez TensorBoard

%tensorboard --logdir log --bind_all --port 6006 --reload_multifile true ```

  1. Commencer la formation

history=model.fit( datagen_train, steps_per_epoch=len(x_train) // batch_size, validation_data=datagen_validate, validation_steps=len(x_validate) // batch_size, epochs=epochs, shuffle=False, callbacks=[tb_cb] ) ```

c'est tout.

référence

  1. https://www.tensorflow.org/tensorboard/tensorboard_in_notebooks Voici comment lancer TensorBoard sur votre bloc-notes Jupyter.

  2. https://github.com/tensorflow/tensorboard La section Foire aux questions de README.md contient ici une description de l'option --reload_multifile.

Recommended Posts

Surveiller le modèle d'entraînement avec TensorBord sur Jupyter Notebook
Essayez le clustering avec un modèle gaussien mixte sur Jupyter Notebook
Essayez SVM avec scikit-learn sur Jupyter Notebook
Cloner le référentiel github sur le notebook Jupyter
Activer Jupyter Notebook avec conda sur un serveur distant
Remplissez la largeur du bloc-notes Jupyter pour remplir le navigateur
Notebook Jupyter ouvert à distance lancé sur le serveur
Approvisionnement EC2 avec Vagrant + Jupyter (IPython Notebook) sur Docker
Lisez le fichier csv avec le notebook jupyter et écrivez le graphique l'un sur l'autre
Utilisation de Graphviz avec Jupyter Notebook
Utiliser pip avec Jupyter Notebook
Graphiques élevés dans le notebook Jupyter
Afficher le PDF sur Jupyter Notebook
Utiliser Cython avec Jupyter Notebook
Jouer avec Jupyter Notebook (IPython Notebook)
Calibrer le modèle avec PyCaret
Exécutez Jupyter Notebook sous Windows
Mémo pour obtenir la valeur côté html-javascript avec jupyter
Refléter l'environnement virtuel créé par Miniconda dans le notebook Jupyter
La façon habituelle d'ajouter un noyau avec Jupyter Notebook
Connectez le noyau Jupyter Notebook à Spyder avec Jupytext activé
Écrivez des graphiques en temps réel avec Matplotlib sur le notebook Jupyter
Comment gérer le phénomène que Python (notebook Jupyter) exécuté sur WSL devient abandonné
Visualisez l'arbre de décision avec le notebook Jupyter
Faites un son avec le notebook Jupyter
Affichez simplement le fichier du notebook Jupyter
Utiliser Markdown avec le notebook Jupyter (avec raccourci)
Ajouter plus de noyaux avec Jupyter Notebook
Analyse pratique avec Pandas + notebook Jupyter
Essayez d'exécuter Jupyter Notebook sur Mac
Validez le modèle d'entraînement avec Pylearn2
Essayez de démarrer Jupyter Notebook ~ Formation Esper
Spécifiez le navigateur à utiliser avec Jupyter Notebook. Surtout Mac. (Et Vivaldi)
Paramètres de lecture de fichiers S3 avec des pandas depuis Jupyter Notebook sur AWS
Utiliser nbextensions avec le notebook Jupyter d'Anaconda
Affinons les hyper paramètres du modèle avec scikit-learn!
Utilisation d'Apache Spark avec le notebook Jupyter (notebook IPython)
Je veux écrire un blog avec Jupyter Notebook
Utiliser Jupyter Lab et Jupyter Notebook avec EC2
Faire de Jupyter Notebook un service sur CentOS
Démarrez le notebook jupyter sur le serveur GPU (serveur distant)
Attention Seq2 Exécutez le modèle de dialogue avec Seq
Afficher le graphique de tensorBoard sur Jupyter
Télécharger des fichiers sur le Web avec Python
Comment utiliser le notebook Jupyter avec ABCI
Vérification du GPU du PC sur le notebook Jupyter
Afficher l'histogramme / diagramme de dispersion sur Jupyter Notebook
Lier Python et JavaScript avec le notebook Jupyter
Construire un notebook jupyter sur un serveur distant (CentOS)
Utiliser les raccourcis clavier vim dans Jupyter Notebook lancé avec Docker
[Mémo Jupyter Notebook] Afficher les kanji avec matplotlib
Exécuter le notebook Jupyter sur un serveur distant
Sortie de cellule riche avec Jupyter Notebook (IPython)
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
Création d'un environnement R avec Jupyter (anciennement notebook IPython) (sous OS X El Capitan 10.11.3)
Un modèle qui identifie la guitare avec fast.ai
Installer matplotlib et afficher le graphique dans Jupyter Notebook
Essayez le modèle d'espace d'état (Jupyter Notebook + noyau IR)
Comment déboguer avec Jupyter ou iPython Notebook