Comment interpréter les histogrammes donnés par TensorFlow dans TensorBoard?

23

Récemment, je courais et j'apprenais le flux tenseur et j'ai obtenu quelques histogrammes que je ne savais pas interpréter. Habituellement, je pense à la hauteur des barres comme à la fréquence (ou fréquence relative / comptes). Cependant, le fait qu'il n'y ait pas de barres comme dans un histogramme habituel et le fait que les choses soient ombrées me confond. il semble également y avoir plusieurs lignes / hauteurs à la fois?

Est-ce que quelqu'un sait comment interpréter les graphiques suivants (et peut-être fournir de bons conseils qui peuvent aider en général à lire les histogrammes dans tensorflow):

entrez la description de l'image ici

Peut-être que d'autres choses intéressantes à discuter sont, si les variables d'origine étaient des vecteurs ou des matrices ou des tenseurs, alors qu'est-ce que le tensorflow montre en fait, comme un histogramme pour chaque coordonnée? De plus, peut-être que faire référence à la façon d'obtenir ces informations pour rendre les gens autonomes serait bien parce que j'ai eu du mal à trouver des choses utiles sur les documents en ce moment. Peut-être quelques exemples de tutoriels, etc.? Peut-être que quelques conseils pour les manipuler seraient bien aussi.


À titre de référence, voici un extrait du code qui a donné ceci:

(X_train, Y_train, X_cv, Y_cv, X_test, Y_test) = data_lib.get_data_from_file(file_name='./f_1d_cos_no_noise_data.npz')
(N_train,D) = X_train.shape
D1 = 24
(N_test,D_out) = Y_test.shape
W1 = tf.Variable( tf.truncated_normal([D,D1], mean=0.0, stddev=std), name='W1') # (D x D1)
S1 = tf.Variable( tf.constant(100.0, shape=[]), name='S1') # (1 x 1)
C1 = tf.Variable( tf.truncated_normal([D1,1], mean=0.0, stddev=0.1), name='C1' ) # (D1 x 1)
W1_hist = tf.histogram_summary("W1", W1)
S1_scalar_summary = tf.scalar_summary("S1", S1)
C1_hist = tf.histogram_summary("C1", C1)
Pinocchio
la source
2
Quels que soient ces graphiques, ils ne sont définitivement pas des histogrammes! Par définition, un histogramme représente la probabilité au moyen de zones .
whuber
1
Le fait est qu'en les qualifiant d '«histogrammes», vous vous induisez en erreur, vous risquez d'induire vos lecteurs en erreur et vous perdez des opportunités de rechercher ce qui se passe, car vous utiliserez les mauvais mots-clés dans vos recherches. La première chose que vous devez faire est de consulter votre documentation pour savoir ce qu'elle appelle ces tracés.
whuber
1
@whuber Je ne les appelle pas des histogrammes, ils s'appellent eux-mêmes des histogrammes! Il s'agit de l'une des commandes que j'ai utilisées pour collecter ces informations W1_hist = tf.histogram_summary("W1", W1). Il dit histogramme, comment puis-je l'appeler autrement? Je ne sais pas pourquoi ils l'appelleraient histogramme alors que c'est autre chose.
Pinocchio
1
Je suppose qu'un développeur de logiciels peut nommer ses fonctions comme bon lui semble. Quel que soit le nom de la fonction, cependant, ce ne sont tout simplement pas des histogrammes sous aucune forme. Nous pouvons espérer que la documentation utilise des noms conventionnels reconnaissables ou - au minimum - décrit comment ces parcelles sont construites.
whuber
2
@Pinocchio, deux minutes de recherche sur Google m'ont amené à github.com/tensorflow/tensorflow/blob/master/tensorflow/… où vous pouvez faire défiler vers le bas pour lire sur les "histogrammes". Avez-vous déjà vu cette documentation?
amibe dit Réintégrer Monica le

Réponses:

21

Actuellement, le nom "histogramme" est impropre. Vous pouvez trouver des preuves de cela dans le README . La signification de l'interface d'histogramme pourrait changer un jour comme ils l'ont dit. Cependant, c'est ce que cela signifie actuellement.

Les graphiques de votre question mélangent différentes exécutions de TensorFlow. Regardez plutôt les graphiques suivants qui affichent une seule exécution:

entrez la description de l'image ici

Tout d'abord, je voudrais dire que les courbes elles-mêmes représentent des centiles . Je vais emprunter la photo d' ici :

entrez la description de l'image ici

ce qui signifie que la courbe étiquetée 93% est le 93e centile, ce qui signifie que 93% des observations étaient inférieures à la valeur ~ 0,130 au pas de temps 1,00k. Le graphique donne donc 3 éléments d'information, le pourcentage d'observations sous une certaine valeur selon une courbe de réflexion à chaque pas de temps du calcul de la formation du réseau neuronal (du moins dans ce cas, c'est ce que signifient les étapes). Cela vous donne une idée de la répartition des valeurs de votre réseau.

Il existe également des valeurs minimales et maximales pour avoir une idée de la plage de valeurs pendant l'entraînement.

Ainsi, l'axe des y vous indique la valeur qui vous intéresse et la courbe vous indique le centile et l'axe des x à l'étape. Donc si vous avez:

(x,fi(x)=y)

ije

Pinocchio
la source