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.
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.
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.
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]
)
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.
Enfin, résumons le flux global.
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
```
Lire les extensions
!pip install cloud-tpu-client %load_ext tensorboard ```
Prétraitement des données et construction de modèles de formation Puisqu'il varie d'une personne à l'autre, il est omis ici.
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 ) ```
Lancez TensorBoard
%tensorboard --logdir log --bind_all --port 6006 --reload_multifile true ```
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.
https://www.tensorflow.org/tensorboard/tensorboard_in_notebooks Voici comment lancer TensorBoard sur votre bloc-notes Jupyter.
https://github.com/tensorflow/tensorboard
La section Foire aux questions de README.md contient ici une description de l'option --reload_multifile
.
Recommended Posts