Come si interpretano gli istogrammi dati da TensorFlow in TensorBoard?


23

Recentemente stavo correndo e imparando il flusso del tensore e ho ottenuto alcuni istogrammi che non sapevo interpretare. Di solito penso all'altezza delle barre come alla frequenza (o frequenza / conteggi relativi). Tuttavia, il fatto che non ci siano barre come in un normale istogramma e il fatto che le cose siano ombreggiate mi confonde. sembra che ci siano anche molte linee / altezze contemporaneamente?

Qualcuno sa come interpretare i seguenti grafici (e forse fornire buoni consigli che possono aiutare in generale a leggere gli istogrammi in tensorflow):

inserisci qui la descrizione dell'immagine

forse alcune altre cose che sono interessanti da discutere sono, se le variabili originali erano vettori o matrici o tensori, allora cosa mostra in realtà tensorflow, come un istogramma per ciascuna coordinata? Inoltre, forse fare riferimento a come ottenere queste informazioni per rendere le persone autosufficienti sarebbe bello perché ho avuto alcune difficoltà a trovare cose utili sui documenti in questo momento. Forse alcuni tutorial esempio ecc? Forse anche qualche consiglio su come manipolarli sarebbe carino.


Come riferimento, qui un estratto del codice che ha dato questo:

(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
Qualunque cosa siano queste trame, sicuramente non sono istogrammi! Per definizione, un istogramma mostra la probabilità per mezzo di aree .
whuber

1
Il punto è che riferendoti a loro come "istogrammi" induci in errore te stesso, rischi di fuorviare i tuoi lettori e perdi opportunità di ricercare ciò che sta accadendo, perché nelle tue ricerche utilizzerai parole chiave sbagliate. La prima cosa che dovresti fare è consultare la tua documentazione per scoprire come si chiama queste trame.
whuber

1
@whuber Non li chiamo istogrammi, si chiamano istogrammi! Questo è uno dei comandi che ho usato per raccogliere tali informazioni W1_hist = tf.histogram_summary("W1", W1). Dice istogramma, cos'altro dovrei chiamarlo? Non so perché lo chiamerebbero istogramma quando è qualcos'altro.
Pinocchio,

1
Suppongo che uno sviluppatore di software possa nominare le sue funzioni come le piace. Indipendentemente dal nome della funzione, tuttavia, questi semplicemente non sono istogrammi in nessuna forma. Possiamo sperare che la documentazione usi nomi riconoscibili e convenzionali o, come minimo, descriva come sono costruiti questi grafici.
whuber

2
@Pinocchio, due minuti di googling mi hanno portato su github.com/tensorflow/tensorflow/blob/master/tensorflow/… dove puoi scorrere verso il basso per leggere "istogrammi". Hai già visto questa documentazione?
ameba dice Ripristina Monica il

Risposte:


21

Attualmente il nome "istogramma" è un termine improprio. Puoi trovare prove di ciò nel README . Il significato dell'interfaccia dell'istogramma potrebbe cambiare un giorno come dicevano lì. Tuttavia, questo è ciò che attualmente significa.

I grafici nella tua domanda mescolano diverse serie di TensorFlow. Invece, guarda i seguenti grafici che mostrano solo una corsa:

inserisci qui la descrizione dell'immagine

Innanzitutto, vorrei dire che le curve stesse rappresentano percentili . Prenderò in prestito l'immagine da qui :

inserisci qui la descrizione dell'immagine

ciò significa che la curva etichettata 93% è il 93 ° percentile, il che significa che il 93% delle osservazioni era inferiore al valore ~ ​​0,130 nella fase temporale 1,00k. Quindi il grafico fornisce 3 elementi di informazione, la percentuale di osservazioni sotto un certo valore secondo una curva di pensiero in ogni fase del calcolo dell'allenamento della rete neurale (almeno in questo caso è ciò che significano i passi). Questo ti dà un'idea della distribuzione dei valori della tua rete.

Esistono anche i valori minimo e massimo per avere un'idea dell'intervallo di valori durante l'allenamento.

Quindi l'asse y ti dice il valore che ti interessa e la curva ti dice il percentile e l'asse x al passo. Quindi se hai:

(X,fio(X)=y)

ioio

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.