TensorFlow: ทำความเข้าใจอาร์กิวเมนต์ `collections` ใน tf.summary.scalar

ฉันกำลังทำงานร่วมกับ TensorBoard โดยเฉพาะ tf.summary.scalar ใน เอกสารประกอบ มีข้อโต้แย้ง collections=None ซึ่งอธิบายว่า:

collections: รายการทางเลือกของคีย์คอลเลกชันกราฟ op สรุปใหม่จะถูกเพิ่มไปยังคอลเลกชันเหล่านี้ ค่าเริ่มต้นคือ [GraphKeys.SUMMARIES]

ฉันไม่เข้าใจคำอธิบายนี้ และ collections ใช้เพื่ออะไร ใครช่วยอธิบายเรื่องนี้ให้ฉันฟังหน่อยได้ไหม และอาจชี้ให้ฉันดูกรณีการใช้งานตัวอย่างที่ดีได้ไหม


person Toke Faurby    schedule 30.01.2017    source แหล่งที่มา


คำตอบ (1)


มันเป็นอัญมณีที่ซ่อนอยู่! คุณสามารถระบุรายการสตริงที่คุณเลือกเพื่อระบุโหนดสรุป เช่น

tf.summary.scalar('learning_rate', p_lr, collections=['train'])
tf.summary.scalar('loss', t_loss, collections=['train', 'test'])

แล้วดึงข้อมูลสรุปตามป้ายกำกับ เช่น ชอบอย่างนั้น:

s_training = tf.summary.merge_all('train')
s_test = tf.summary.merge_all('test')

ฉันทำอย่างนั้นเพราะฉันมักจะต้องการบันทึกข้อมูลเพิ่มเติมในระหว่างขั้นตอนการตรวจสอบ ในตัวอย่างข้างต้น ฉันไม่จำเป็นต้องระบุค่าสำหรับตัวยึดตำแหน่งอัตราการเรียนรู้ p_lr เมื่อประเมิน (และเขียน) ความแม่นยำ เป็นต้น หรือสิ่งใดก็ตามที่ส่วนอนุมานของกราฟต้องอาศัยจริงๆ

การระบุหมวดหมู่ที่กำหนดเอง (เท่านั้น) ยังมีผลข้างเคียงที่ดีจากการซ่อนโหนดจาก Supervisor เป็นต้น หากคุณต้องการควบคุมเวลาที่คุณจะเขียนสรุปได้อย่างชัดเจน (เช่น ใช้ sv.summary_computed() ในกรณีของ Supervisor) นั่นเป็นวิธีที่ง่าย

person sunside    schedule 30.01.2017
comment
คำอธิบายที่ยอดเยี่ยม! collections สามารถใช้ได้โดยทั่วไปมากขึ้นเมื่อคุณต้องการเข้าถึงทุกสิ่งที่กระจายอยู่ทั่ว เช่น หากคุณต้องการให้มีอคติทั้งหมดในกราฟ ก็สามารถใช้ได้ พูดคุยที่นี่ ดูเอกสารประกอบ get_collection ที่นี่ - person Toke Faurby; 01.02.2017