หนึ่งตีความฮิสโตแกรมที่ 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
@ เมื่อฉันไม่ได้เรียกพวกเขาฮิสโตแกรมพวกเขาเรียกตัวเองว่าฮิสโตแกรม! นี่เป็นหนึ่งในคำสั่งที่ฉันใช้เพื่อรวบรวมข้อมูลW1_hist = tf.histogram_summary("W1", W1)นั้น มันบอกว่าฮิสโตแกรมฉันจะเรียกมันว่าอะไรนะ? ฉันไม่รู้ว่าทำไมพวกเขาถึงเรียกมันว่าฮิสโตแกรมเมื่อมันเป็นอย่างอื่น
Pinocchio

1
ฉันคิดว่านักพัฒนาซอฟต์แวร์สามารถตั้งชื่อฟังก์ชั่นของเธอได้ทุกอย่างที่เธอชอบ แม้ว่าจะไม่คำนึงถึงชื่อฟังก์ชัน แต่สิ่งเหล่านี้ไม่ใช่ฮิสโตแกรมในรูปแบบใด ๆ เราหวังว่าเอกสารจะใช้ชื่อที่เป็นที่รู้จักทั่วไปหรืออย่างน้อยที่สุดอธิบายวิธีการสร้างแปลงเหล่านี้
whuber

2
@Pinocchio googling สองนาทีพาฉันไปที่github.com/tensorflow/tensorflow/blob/master/tensorflow/ ......ที่คุณสามารถเลื่อนลงเพื่ออ่านเกี่ยวกับ "ฮิสโทแกรม" คุณเห็นเอกสารนี้แล้วหรือยัง?
อะมีบาพูดว่า Reinstate Monica

คำตอบ:


21

ปัจจุบันชื่อ "ฮิสโตแกรม" เป็นชื่อเรียกที่ไม่ถูกต้อง คุณสามารถหาหลักฐานที่อยู่ในREADME ความหมายของอินเทอร์เฟซฮิสโตแกรมอาจเปลี่ยนแปลงได้ในบางวันตามที่กล่าวไว้ อย่างไรก็ตามนี่คือความหมายในปัจจุบัน

กราฟในคำถามของคุณผสมผสานการวิ่งที่แตกต่างกันของ TensorFlow ให้ดูกราฟต่อไปนี้ที่แสดงการวิ่งเพียงครั้งเดียวแทน

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งแรกที่ฉันอยากจะพูดก็คือเส้นโค้งนั้นแสดงถึงเปอร์เซ็นไทล์ ฉันจะยืมภาพจากที่นี่ :

ป้อนคำอธิบายรูปภาพที่นี่

ซึ่งหมายความว่าเส้นโค้งที่ติดป้าย 93% เป็นเปอร์เซ็นไทล์ 93 ซึ่งหมายความว่า 93% ของการสำรวจอยู่ต่ำกว่าค่า ~ 0.130 ในขั้นตอนเวลา 1.00k ดังนั้นกราฟให้ข้อมูล 3 สิ่งเปอร์เซ็นต์ของการสังเกตมีค่าที่แน่นอนตามเส้นโค้งการคิดในทุกขั้นตอนของการคำนวณของการฝึกอบรมโครงข่ายประสาทเทียม (อย่างน้อยในกรณีนี้คือความหมายของขั้นตอน) สิ่งนี้จะทำให้คุณรู้สึกถึงการกระจายคุณค่าของเครือข่ายของคุณ

นอกจากนี้ยังมีค่าต่ำสุดและค่าสูงสุดในการรับรู้ช่วงของค่าในระหว่างการฝึกอบรม

ดังนั้นแกน y จะบอกค่าที่คุณสนใจและกราฟจะบอกเปอร์เซ็นต์และแกน x ในขั้นตอนนี้ ดังนั้นถ้าคุณมี:

(x,ผม(x)=Y)

ผมผม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.