¿Cómo se interpretan los histogramas proporcionados por TensorFlow en TensorBoard?

23

Recientemente estaba corriendo y aprendiendo el flujo del tensor y obtuve algunos histogramas que no sabía cómo interpretar. Por lo general, pienso en la altura de las barras como la frecuencia (o frecuencia / recuento relativo). Sin embargo, el hecho de que no haya barras como en un histograma habitual y el hecho de que las cosas estén sombreadas me confunde. ¿También parece haber muchas líneas / alturas a la vez?

¿Alguien sabe cómo interpretar los siguientes gráficos (y tal vez proporcionar buenos consejos que pueden ayudar en general a leer histogramas en flujo de tensor):

ingrese la descripción de la imagen aquí

quizás otras cosas que son interesantes para discutir es, si las variables originales eran vectores o matrices o tensores, entonces, ¿qué muestra el flujo de tensor de hecho, como un histograma para cada coordenada? Además, tal vez hacer referencia a cómo obtener esta información para que las personas sean autosuficientes sería bueno porque he tenido dificultades para encontrar cosas útiles en los documentos en este momento. Tal vez algunos tutoriales ejemplo, etc. Quizás algún consejo sobre manipularlos también sería bueno.


Como referencia, aquí un extracto del código que dio esto:

(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)
Pinocho
fuente
2
¡Cualesquiera que sean estas tramas, definitivamente no son histogramas! Por definición, un histograma representa la probabilidad por medio de áreas .
whuber
1
El punto es que al referirse a ellos como "histogramas", se engaña a sí mismo, corre el riesgo de engañar a sus lectores y pierde oportunidades de investigar lo que está sucediendo, porque usará las palabras clave incorrectas en sus búsquedas. Lo primero que debe hacer es consultar su documentación para descubrir cómo se denominan estos gráficos.
whuber
1
@whuber No los llamo histogramas, ¡se llaman a sí mismos histogramas! Este es uno de los comandos que utilicé para recopilar esa información W1_hist = tf.histogram_summary("W1", W1). Dice histograma, ¿cómo se supone que debo llamarlo? No sé por qué lo llamarían histograma cuando es otra cosa.
Pinocho
1
Supongo que un desarrollador de software puede nombrar sus funciones como quiera. Sin embargo, independientemente del nombre de la función, estos simplemente no son histogramas de ninguna forma. Podemos esperar que la documentación use nombres reconocibles y convencionales o, como mínimo, describa cómo se construyen estas parcelas.
whuber
2
@Pinocchio, dos minutos de búsqueda en Google me llevaron a github.com/tensorflow/tensorflow/blob/master/tensorflow/… donde puedes desplazarte hacia abajo para leer sobre "histogramas". ¿Ya has visto esta documentación?
ameba dice Reinstate Monica

Respuestas:

21

Actualmente el nombre "histograma" es un nombre inapropiado. Puede encontrar evidencia de eso en el archivo README . El significado de la interfaz del histograma podría cambiar algún día, como dijeron allí. Sin embargo, esto es lo que significa actualmente.

Los gráficos en su pregunta mezclan diferentes ejecuciones de TensorFlow. En cambio, mire los siguientes gráficos que muestran solo una ejecución:

ingrese la descripción de la imagen aquí

Primero, lo que me gustaría decir es que las curvas mismas representan percentiles . Tomaré prestada la foto de aquí :

ingrese la descripción de la imagen aquí

lo que significa que la curva etiquetada 93% es el percentil 93, lo que significa que el 93% de las observaciones estaban por debajo del valor ~ 0.130 en el paso de tiempo 1.00k. Entonces, el gráfico proporciona 3 elementos de información, el porcentaje de observaciones debajo de un cierto valor de acuerdo con alguna curva de pensamiento en cada paso de tiempo del cálculo del entrenamiento de la red neuronal (al menos en este caso es lo que significan los pasos). Esto le da una idea de la distribución de valores de su red.

También existen los valores mínimos y máximos para tener una idea del rango de valores durante el entrenamiento.

Entonces, el eje y le dice el valor que le interesa y la curva le dice el percentil y el eje x en el paso. Entonces si tienes:

(x,fi(x)=y)

ii

Pinocho
fuente