TensorBoard - Parcelle de formation et de validation des pertes sur le même graphique?
Est-il un moyen de tracer à la fois la formation des pertes et de la validation des pertes sur le même graphique?
Il est facile d'avoir deux scalaires des résumés pour chacun d'eux individuellement, mais ce qui les met sur des graphiques. Si les deux sont affichés dans le même graphique, il est beaucoup plus facile de voir la différence entre eux et qu'ils aient ou non commencer à diverger en raison de surapprentissage.
Est-il intégré dans la façon de le faire? Si non, un travail autour de la sorte? Merci beaucoup!
- En ce moment (5/24) il n'y a pas officiellement pris en charge de façon de le faire. Mais nous sommes à la recherche en ajoutant un cadre plus général du système de liaison différentes sources de données afin de visualiser l'ensemble, et ce sera pris en charge par ce système.
- est-ce encore actuellement non pris en charge?
- voici une solution à l'aide de keras
Vous devez vous connecter pour publier un commentaire.
Travail, j'ai été faire est d'utiliser deux
SummaryWriter
avec différents journaux dir pour l'ensemble de formation et de validation croisée définir respectivement. Et vous verrez quelque chose comme ceci:Loss
etLoss_1
tensorboard
, c'est à dire, quelle est la--logdir
paramètre?Plutôt que d'afficher les deux lignes séparément, vous pouvez au lieu de tracer la différence entre la validation et de la formation des pertes comme son propre scalaire résumé de suivre la divergence.
Cela ne donne pas autant d'informations sur une seule parcelle (en comparaison avec l'ajout de deux résumés), mais il aide à être en mesure de comparer plusieurs pistes (et non pas à l'ajout de plusieurs résumés par run).
Pour l'exhaustivité, depuis tensorboar 1.5.0 c'est désormais possible.
Vous pouvez utiliser l'outil de scalaires plugin. Pour cela, vous devez d'abord faire tensorboard mise en page de configuration et de les écrire sur le cas du fichier. À partir de la tensorboard exemple:
Un
Category
est le groupe desChart
s. ChaqueChart
correspond à une seule parcelle, qui affiche plusieurs scalaires ensemble. LeChart
peut parcelle de simples scalaires (MultilineChartContent
) ou des zones remplies (MarginChartContent
, par exemple, lorsque vous voulez tracer la déviation d'une certaine valeur). Letag
membre deMultilineChartContent
doit être une liste de regex-es qui correspondent à latag
s de la scalaires que vous voulez de groupe dans le Graphique. Pour plus d'informations, consultez le proto définitions des objets dans https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/custom_scalar/layout.proto. Notez que si vous avez plusieursFileWriter
s écrit dans le même répertoire, vous devez écrire la mise en page dans un seul des fichiers. Écrire dans un fichier séparé fonctionne également.Pour afficher les données dans TensorBoard, vous devez ouvrir le gestionnaire de Scalaires onglet. Voici un exemple d'image de ce à quoi s'attendre https://user-images.githubusercontent.com/4221553/32865784-840edf52-ca19-11e7-88bc-1806b1243e0d.png
Un grand merci à niko pour l'astuce sur les Scalaires.
J'ai été confondu par le fonctionnaire
custom_scalar_demo.py
car il y a tellement de choses à faire, et j'ai dû l'étudier pendant un bon moment avant que je compris comment ça fonctionnait.Pour montrer exactement ce qui doit être fait pour créer un scalaire graphique pour un modèle déjà existant, j'ai mis en place la suite de l'exemple complet:
Le dessus se compose d'un "modèle original" complétée par trois blocs de code indiqué par
Mon "modèle original" a ces scalaires:
et ce graphique:
Mon modèle modifié a la même scalaires et graphique, ainsi que les éléments suivants personnalisé scalaire:
Cette coutume scalaire graphique est tout simplement une mise en page qui combine les deux scalaires tableaux.
Malheureusement, le graphe obtenu est difficile à lire parce que les deux valeurs ont la même couleur. (Ils se distinguent uniquement par le marqueur.) Ce n'est cependant cohérente avec TensorBoard de la convention d'avoir une couleur pour chaque journal.
Explication
L'idée est la suivante. Vous avez un groupe de variables que vous voulez tracer à l'intérieur d'une seule carte. Comme condition préalable, TensorBoard devrait être traçage de chaque variable individuellement dans le cadre du "SCALAIRES" en-tête. (Ceci est accompli par la création d'un scalaire résumé pour chaque variable, et puis l'écriture de ces résumés pour le journal. Rien de nouveau ici.)
De tracer plusieurs variables dans le même tableau, nous dire TensorBoard laquelle de ces résumés de groupe ensemble. Le spécifiée résumés sont ensuite combinés en un seul graphique en vertu de la "COUTUME SCALAIRES" en-tête. Nous accomplissons cela en écrivant une "Mise en page" une fois au début du journal. Une fois TensorBoard reçoit la mise en page, il produit automatiquement un tableau combiné dans la section "CUSTOM SCALAIRES" comme à l'ordinaire "SCALAIRES" sont mis à jour.
En supposant que votre "modèle original" est en train d'envoyer vos variables (comme scalaire résumés) à TensorBoard, la seule modification nécessaire, consiste à injecter de la mise en page avant votre principale itération de la boucle commence. Chaque scalaire graphique permet de sélectionner les résumés de l'intrigue par le biais d'une expression régulière. Ainsi, pour chaque groupe de variables qui doivent être représentés ensemble, il peut être utile de placer les variables respectives des résumés dans un nom de champ. (De cette façon, votre regex suffit de sélectionner tous les résumés sous ce nom l'étendue).
Remarque importante: L'op qui génère le résumé d'une variable est distincte de la variable elle-même. Par exemple, si j'ai une variable
ns1/my_var
, je peux créer un résuméns2/summary_op_for_myvar
. La coutume scalaires mise en page graphique ne se préoccupe que de la synthèse de l'op, pas le nom ou la portée de la variable d'origine.Tensorboard est vraiment bon outil, mais de par sa nature déclarative peut rendre difficile de lui faire faire exactement ce que vous voulez.
Je vous recommande la caisse Losswise (https://losswise.com) pour le traçage et de suivi de la perte de fonctions comme une alternative à Tensorboard. Avec Losswise vous préciser exactement ce qui doit être représentée graphiquement ensemble:
Et puis, vous obtenez quelque chose qui ressemble à:
Remarquez comment les données sont envoyées à un graphique explicitement via le
loss_graph.append
appel, les données qui s'affiche alors dans votre projet de tableau de bord.En outre, pour l'exemple ci-dessus Losswise serait de générer automatiquement une table avec des colonnes pour
min(training_loss)
etmin(validation_loss)
de sorte que vous pouvez comparer facilement les statistiques de résumé à travers vos expériences. Très utile pour comparer les résultats sur un grand nombre d'expériences.Voici un exemple, la création de deux
tf.summary.FileWriter
s qui partagent le même répertoire racine. La création d'untf.summary.scalar
partagé par les deuxtf.summary.FileWriter
s. À chaque pas de temps, obtenir lesummary
et mise à jour chaquetf.summary.FileWriter
.Voici le résultat:
La ligne orange indique le résultat de l'étape de l'évaluation, et, en conséquence, la ligne bleue illustre les données de suivre la formation.
Aussi, il est très utile post par la TF de l'équipe à laquelle vous pouvez vous référer.