web-dev-qa-db-fra.com

Comment "réinitialiser" les données de tensorboard après avoir tué l'instance de tensorflow

Je teste différents hyperparamètres pour un modèle cnn que j'ai construit, mais je suis légèrement dérangé lors de l'affichage des résumés dans Tensorboard. Le problème semble être que les données sont juste "ajoutées" dans des exécutions consécutives, donc les fonctions produisent une superposition bizarre à moins que je ne considère les informations comme "relatives" au lieu de "par étape". Vois ici:

X Type: Step

X Type: Relative

J'ai essayé de tuer le processus de tensorboard et d'effacer les fichiers journaux, mais il semble que cela ne soit pas suffisant.

La question est donc de savoir comment réinitialiser cette information?

Merci!!

50
mathetes

Remarque: la solution que vous avez publiée (effacer les fichiers journaux de TensorBoard et tuer le processus) fonctionnera, mais ce n'est pas préférable, car elle détruit les informations historiques relatives à votre formation.

Au lieu de cela, vous pouvez avoir chaque nouvelle tâche de formation écrire dans un nouveau sous-répertoire (de votre répertoire de journal de niveau supérieur). Ensuite, TensorBoard considérera chaque travail comme une nouvelle "exécution" et créera une vue de comparaison Nice afin que vous puissiez voir en quoi la formation diffère entre les itérations de votre modèle.

Pour un exemple, voir: https://www.tensorflow.org/tensorboard/

31
dandelion

Ok, pour une raison quelconque, cela ne fonctionnait pas avant, mais maintenant, cela a fonctionné:

Vous devez effacer les fichiers de log de Tensorboard ET tuer son processus

Après avoir tué le processus, lancez fuser 6006/tcp -k pour libérer le port 6006 (si vous êtes sous Linux) et relancez le tenseur du support.

19
mathetes

Oui, je crois que cet aspect est finalement positif.
Par exemple, dans mon script, j'automatise les nouveaux journaux d'exécution via datetime:

from datetime import datetime
now = datetime.now()
logdir = "tf_logs/.../" + now.strftime("%Y%m%d-%H%M%S") + "/"

Ensuite, lors de l'exécution de TensorBoard, vous pouvez cliquer sur les différentes exécutions, à condition que vous ayez exécuté TensorBoard dans le répertoire parent.

Si vous savez vous ne vous souciez pas d'une précédente exécution et vous voulez en sortir, alors oui, vous devez supprimer les fichiers d'événements et supporter le processus inhabituellement long de tuer et de redémarrer TensorBoard.

16
SuaveSouris

J'ai eu un problème similaire, mais avec une duplication de graphes de calcul: ils ont simplement ajouté dans tensorboard lorsque j'ai appelé

writer.add_graph(graph=sess.graph)

Dans mon cas, il ne s'agissait pas de fichiers journaux, mais du contexte de Jupyter Notebook.

J'ai compris qu'après plusieurs exécutions d'une cellule de Jupyter avec une définition de graphe, le graphe n'avait pas été réinitialisé, mais apparaissait dans le contexte sous forme de duplicata. J'ai donc ajouté

tf.reset_default_graph()

avant le début de la construction d'un graphique de calcul.

J'espère que ça va aider.

5
Стас Цепа

Je viens de comprendre la solution à ce problème. Il suffit de placer chaque fichier Events.out dans un dossier distinct de votre répertoire de journal. Et vous obtiendrez une belle visualisation en tableau de bord avec chaque passage dans une couleur différente.

4
Abdo Eldesokey

Ajoutez l'extrait suivant à votre code et il devrait réinitialiser automatiquement votre tensorboard.

if tf.gfile.Exists(dirpath):
   tf.gfile.DeleteRecursively(dirpath) 

Cela supprimera les journaux précédents.

1
Prakash Vanapalli

Avait un problème similaire, qui a jeté une erreur: ' Vous devez fournir une valeur pour le tenseur d'espace réservé' dense_input 'avec dtype float et shape '. Cette question spécifique a été discutée ici . La suggestion qui a fonctionné pour moi utilisé:

from keras.backend import clear_session
# Before instantiating a tf.data.Dataset obj & before model creation, call:
clear_session()

Assurez-vous également que vous utilisez des noms uniques pour le log_dir TensorBoard de chaque modèle. Ensuite, pour afficher tous les modèles, exécutez TensorBoard à partir du terminal, dans le répertoire parent des fichiers journaux, à savoir:

tensorboard --logdir <projDir>/logs/tf_log
0
CubeBot88