Bagaimana cara menafsirkan histogram yang diberikan oleh TensorFlow di TensorBoard?

23

Saya baru-baru ini berlari dan belajar aliran tensor dan mendapat beberapa histogram yang saya tidak tahu bagaimana menafsirkannya. Biasanya saya menganggap tinggi batang sebagai frekuensi (atau frekuensi / jumlah relatif). Namun, kenyataan bahwa tidak ada balok seperti pada histogram biasa dan fakta bahwa banyak hal yang diarsir membuat saya bingung. tampaknya juga ada banyak garis / ketinggian sekaligus?

Apakah ada yang tahu cara menafsirkan grafik berikut (dan mungkin memberikan saran bagus yang dapat membantu secara umum untuk membaca histogram di tensorflow):

masukkan deskripsi gambar di sini

mungkin beberapa hal lain yang menarik untuk dibahas adalah, jika variabel asli adalah vektor atau matriks atau tensor, lalu apa yang sebenarnya ditampilkan tensorflow, seperti histogram untuk setiap koordinat? Juga, mungkin merujuk cara mendapatkan informasi ini untuk membuat orang mandiri akan menyenangkan karena saya sudah kesulitan menemukan hal-hal berguna pada dokumen saat ini. Mungkin beberapa contoh tutorial dll? Mungkin beberapa saran tentang memanipulasi mereka akan menyenangkan juga.


Sebagai referensi, di sini ekstrak kode yang memberikan ini:

(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)
Pinokio
sumber
2
Apa pun plot ini, pastilah itu bukan histogram! Menurut definisi, histogram menggambarkan probabilitas melalui area .
whuber
1
Intinya adalah bahwa dengan menyebut mereka sebagai "histogram" Anda menyesatkan diri sendiri, Anda berisiko menyesatkan pembaca Anda, dan Anda kehilangan peluang untuk meneliti apa yang sedang terjadi, karena Anda akan menggunakan kata kunci yang salah dalam pencarian Anda. Hal pertama yang harus Anda lakukan adalah berkonsultasi dengan dokumentasi Anda untuk mengetahui apa yang disebut plot ini.
whuber
1
@whuber saya tidak menyebut mereka histogram, mereka menyebut diri mereka histogram! Ini adalah salah satu perintah yang saya gunakan untuk mengumpulkan informasi itu W1_hist = tf.histogram_summary("W1", W1). Dikatakan histogram, apa lagi yang harus saya sebut? Saya tidak tahu mengapa mereka menyebutnya histogram ketika itu sesuatu yang lain.
Pinocchio
1
Saya kira seorang pengembang perangkat lunak dapat memberi nama fungsinya apa saja yang dia suka. Apa pun nama fungsinya, ini bukan histogram dalam bentuk apa pun. Kita dapat berharap bahwa dokumentasi tersebut menggunakan nama konvensional yang dapat dikenali atau - setidaknya - menggambarkan bagaimana plot ini dibangun.
whuber
2
@Pinocchio, dua menit googling membawa saya ke github.com/tensorflow/tensorflow/blob/master/tensorflow/… di mana Anda dapat menggulir ke bawah untuk membaca tentang "histogram". Sudahkah Anda melihat dokumentasi ini?
Amoeba berkata Reinstate Monica

Jawaban:

21

Saat ini nama "histogram" adalah nama yang salah. Anda dapat menemukan bukti itu di README . Arti antarmuka histogram mungkin berubah suatu hari seperti yang mereka katakan di sana. Namun, inilah artinya saat ini.

Grafik dalam pertanyaan Anda mencampur berbagai berjalan TensorFlow. Alih-alih, lihat grafik berikut yang hanya menampilkan sekali proses:

masukkan deskripsi gambar di sini

Pertama yang ingin saya katakan adalah bahwa kurva itu sendiri mewakili persentil . Saya akan meminjam gambar dari sini :

masukkan deskripsi gambar di sini

yang berarti bahwa kurva berlabel 93% adalah persentil ke-93, yang berarti bahwa 93% dari pengamatan berada di bawah nilai ~ 0,130 pada langkah waktu 1,00 k. Jadi grafik memberikan 3 hal informasi, persentase pengamatan di bawah nilai tertentu menurut beberapa kurva berpikir pada setiap langkah perhitungan pelatihan jaringan saraf (setidaknya dalam hal ini apa artinya langkah-langkahnya). Ini memberi Anda nuansa distribusi nilai-nilai jaringan Anda.

Ada juga nilai minimum dan maksimum untuk merasakan kisaran nilai selama pelatihan.

Jadi sumbu y memberi tahu Anda nilai yang Anda minati dan kurva memberi tahu Anda persentil dan sumbu x pada langkah. Jadi, jika Anda memiliki:

(x,fsaya(x)=y)

sayasaya

Pinokio
sumber