Как можно интерпретировать гистограммы, данные TensorFlow в TensorBoard?

23

Недавно я бегал и изучал тензорный поток и получил несколько гистограмм, которые я не знал, как интерпретировать. Обычно я думаю о высоте столбцов как о частоте (или относительной частоте / числе). Тем не менее, тот факт, что в обычной гистограмме нет столбцов, и то, что все заштриховано, меня смущает. также кажется, что много линий / высот одновременно?

Кто-нибудь знает, как интерпретировать следующие графики (и, возможно, дать хороший совет, который может помочь в целом при чтении гистограмм в тензорном потоке):

введите описание изображения здесь

может быть, есть еще кое-что, что интересно обсудить: если исходные переменные были векторами, матрицами или тензорами, то что на самом деле показывает тензорный поток, как гистограмма для каждой координаты? Кроме того, возможно, было бы неплохо сослаться на то, как получить эту информацию, чтобы сделать людей самодостаточными, потому что у меня были некоторые трудно находящие полезные вещи в документах прямо сейчас. Может быть, какой-то учебный пример и т. Д.? Может быть, некоторые советы по манипулированию ими тоже были бы хорошими.


В качестве ссылки, вот выдержка из кода, который дал это:

(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)
Пиноккио
источник
2
Каковы бы ни были эти графики, они определенно не являются гистограммами! По определению гистограмма отображает вероятность с помощью областей .
whuber
1
Дело в том, что, называя их «гистограммами», вы вводите себя в заблуждение, рискуете ввести в заблуждение своих читателей и теряете возможность исследовать происходящее, потому что вы будете использовать неправильные ключевые слова в своих поисках. Первое , что вы должны сделать , это обратиться к документации , чтобы узнать, что он называет эти участки.
whuber
1
@whuber Я не называю их гистограммами, они называют себя гистограммами! Это одна из команд, которые я использовал для сбора этой информации W1_hist = tf.histogram_summary("W1", W1). Там написано гистограмма, как еще мне это назвать? Я не знаю, почему они назвали бы это гистограммой, когда это что-то еще.
Буратино
1
Я предполагаю, что разработчик программного обеспечения может назвать ее функции как угодно. Независимо от названия функции, они просто не являются гистограммами в любой форме. Мы можем надеяться, что в документации используются узнаваемые, условные имена или, как минимум, описывается, как строятся эти графики.
whuber
2
@Pinocchio, две минуты поиска в Google привели меня к github.com/tensorflow/tensorflow/blob/master/tensorflow/… где вы можете прокрутить вниз, чтобы прочитать о "гистограммах". Вы уже видели эту документацию?
говорит амеба: восстанови монику

Ответы:

21

В настоящее время название "гистограмма" является неправильным. Вы можете найти доказательства этого в README . Значение интерфейса гистограммы может измениться однажды, как они там сказали. Тем не менее, это то, что он в настоящее время означает.

Графики в вашем вопросе смешивают разные прогоны TensorFlow. Вместо этого посмотрите на следующие графики, которые показывают только один прогон:

введите описание изображения здесь

Во-первых, я хотел бы сказать, что сами кривые представляют процентили . Я заимствую картину отсюда :

введите описание изображения здесь

это означает, что кривая, обозначенная 93%, является 93-м процентилем, а это означает, что 93% наблюдений были ниже значения ~ 0,130 на временном шаге 1,00k. Таким образом, график дает 3 вещи информации, процент наблюдений ниже определенного значения согласно некоторой кривой мышления на каждом временном шаге вычисления обучения нейронной сети (по крайней мере, в этом случае, что означают эти шаги). Это дает вам представление о распределении ценностей вашей сети.

Существуют также минимальные и максимальные значения, чтобы получить представление о диапазоне значений во время тренировки.

Таким образом, ось Y показывает интересующее вас значение, а кривая - процентиль и ось X на шаге. Так что если у вас есть:

(Икс,ея(Икс)знак равноY)

яя

Пиноккио
источник