TensorBoard คือชุดเว็บแอปพลิเคชันสำหรับตรวจสอบและทำความเข้าใจการทำงานและกราฟของ TensorFlow
README นี้ให้ภาพรวมของแนวคิดหลักใน TensorBoard รวมถึงวิธีตีความการแสดงภาพข้อมูลที่ TensorBoard มอบให้ หากต้องการตัวอย่างเชิงลึกของการใช้ TensorBoard โปรดดูบทแนะนำ: TensorBoard: เริ่มต้นใช้งาน เอกสารเกี่ยวกับวิธีใช้ TensorBoard เพื่อทำงานกับรูปภาพ กราฟ พารามิเตอร์ไฮเปอร์ และอื่นๆ จะเชื่อมโยงจากที่นั่น พร้อมด้วยคำแนะนำแบบทีละขั้นใน Colab
TensorBoard ได้รับการออกแบบมาให้ทำงานแบบออฟไลน์โดยสมบูรณ์ โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต ตัวอย่างเช่น สิ่งนี้อาจอยู่บนเครื่องของคุณ หลังไฟร์วอลล์ขององค์กร หรือในศูนย์ข้อมูล
ก่อนที่จะเรียกใช้ TensorBoard ตรวจสอบให้แน่ใจว่าคุณได้สร้างข้อมูลสรุปในไดเร็กทอรีบันทึกโดยการสร้างตัวเขียนสรุป:
# sess.graph contains the graph definition; that enables the Graph Visualizer.
file_writer = tf . summary . FileWriter ( '/path/to/logs' , sess . graph )
สำหรับรายละเอียดเพิ่มเติม โปรดดูบทแนะนำ TensorBoard เมื่อคุณมีไฟล์เหตุการณ์แล้ว ให้เรียกใช้ TensorBoard และระบุไดเร็กทอรีบันทึก หากคุณใช้แพ็คเกจ TensorFlow ที่คอมไพล์แล้ว (เช่น คุณติดตั้งผ่าน pip) ให้รัน:
tensorboard --logdir path/to/logs
หรือหากคุณกำลังสร้างจากแหล่งที่มา:
bazel build tensorboard:tensorboard
./bazel-bin/tensorboard/tensorboard --logdir path/to/logs
# or even more succinctly
bazel run tensorboard -- --logdir path/to/logs
สิ่งนี้ควรแสดงว่า TensorBoard เริ่มต้นแล้ว จากนั้นเชื่อมต่อกับ http://localhost:6006
TensorBoard ต้องใช้ logdir
เพื่ออ่านบันทึก สำหรับข้อมูลเกี่ยวกับการกำหนดค่า TensorBoard ให้เรียกใช้ tensorboard --help
TensorBoard สามารถใช้ใน Google Chrome หรือ Firefox เบราว์เซอร์อื่นๆ อาจใช้งานได้ แต่อาจมีข้อบกพร่องหรือปัญหาด้านประสิทธิภาพ
ขั้นตอนแรกในการใช้ TensorBoard คือการรับข้อมูลจากการทำงาน TensorFlow สำหรับสิ่งนี้ คุณต้องมีการดำเนินการโดยสรุป Ops สรุปก็คือ ops เช่นเดียวกับ tf.matmul
และ tf.nn.relu
ซึ่งหมายความว่าพวกมันรับเทนเซอร์ สร้างเทนเซอร์ และได้รับการประเมินจากภายในกราฟ TensorFlow อย่างไรก็ตาม การดำเนินการสรุปมีการเปลี่ยนแปลง: Tensor ที่พวกเขาสร้างขึ้นมีโปรโตบุฟแบบอนุกรม ซึ่งเขียนลงดิสก์และส่งไปยัง TensorBoard หากต้องการแสดงภาพข้อมูลสรุปใน TensorBoard คุณควรประเมิน op สรุป รับผลลัพธ์ จากนั้นเขียนผลลัพธ์นั้นลงดิสก์โดยใช้ summary.FileWriter คำอธิบายแบบเต็มพร้อมตัวอย่างอยู่ในบทช่วยสอน
การดำเนินการสรุปที่รองรับได้แก่:
tf.summary.scalar
tf.summary.image
tf.summary.audio
tf.summary.text
tf.summary.histogram
เมื่อคุณทำสรุป op คุณจะต้องให้ tag
ด้วย โดยพื้นฐานแล้วแท็กนั้นเป็นชื่อของข้อมูลที่บันทึกโดย op นั้น และจะใช้ในการจัดระเบียบข้อมูลในส่วนหน้า แดชบอร์ดสเกลาร์และฮิสโตแกรมจัดระเบียบข้อมูลตามแท็ก และจัดกลุ่มแท็กลงในโฟลเดอร์ตามไดเร็กทอรี/ไลค์/ลำดับชั้น หากคุณมีแท็กจำนวนมาก เราขอแนะนำให้จัดกลุ่มแท็กเหล่านั้นด้วยเครื่องหมายทับ
summary.FileWriters
รับข้อมูลสรุปจาก TensorFlow แล้วเขียนลงในไดเร็กทอรีที่ระบุ ซึ่งเรียกว่า logdir
โดยเฉพาะอย่างยิ่ง ข้อมูลถูกเขียนลงในการถ่ายโอนข้อมูลบันทึกแบบผนวกเท่านั้นที่จะมี "tfevents" ในชื่อไฟล์ TensorBoard อ่านข้อมูลจากไดเรกทอรีแบบเต็ม และจัดระเบียบไว้ในประวัติของการดำเนินการ TensorFlow เดียว
เหตุใดจึงอ่านไดเร็กทอรีทั้งหมด แทนที่จะอ่านทีละไฟล์ คุณอาจใช้ supervisor.py เพื่อรันโมเดลของคุณ ซึ่งในกรณีนี้หาก TensorFlow ขัดข้อง หัวหน้างานจะรีสตาร์ทโมเดลจากจุดตรวจสอบ เมื่อรีสตาร์ท ระบบจะเริ่มเขียนลงในไฟล์เหตุการณ์ใหม่ และ TensorBoard จะต่อไฟล์เหตุการณ์ต่างๆ เข้าด้วยกันเพื่อสร้างประวัติที่สอดคล้องกันของสิ่งที่เกิดขึ้น
คุณอาจต้องการเปรียบเทียบการดำเนินการหลายรายการของโมเดลของคุณด้วยภาพ ตัวอย่างเช่น สมมติว่าคุณได้เปลี่ยนไฮเปอร์พารามิเตอร์และต้องการดูว่าไฮเปอร์พารามิเตอร์มาบรรจบกันเร็วขึ้นหรือไม่ TensorBoard เปิดใช้งานสิ่งนี้ผ่านการ "รัน" ที่แตกต่างกัน เมื่อ TensorBoard ส่งผ่าน logdir
เมื่อเริ่มต้น ระบบจะเดินซ้ำในแผนผังไดเร็กทอรีที่รูทที่ logdir
เพื่อค้นหาไดเร็กทอรีย่อยที่มีข้อมูล tfevents ทุกครั้งที่พบไดเรกทอรีย่อยดังกล่าว จะโหลดเป็น new run
และส่วนหน้าจะจัดระเบียบข้อมูลตามนั้น
ตัวอย่างเช่น นี่คือไดเร็กทอรีบันทึกของ TensorBoard ที่จัดระเบียบอย่างดี โดยมีการรันสองครั้งคือ "run1" และ "run2"
/some/path/mnist_experiments/
/some/path/mnist_experiments/run1/
/some/path/mnist_experiments/run1/events.out.tfevents.1456525581.name
/some/path/mnist_experiments/run1/events.out.tfevents.1456525585.name
/some/path/mnist_experiments/run2/
/some/path/mnist_experiments/run2/events.out.tfevents.1456525385.name
/tensorboard --logdir /some/path/mnist_experiments
คุณยังอาจส่งรายการไดเรกทอรีบันทึกที่คั่นด้วยเครื่องหมายจุลภาค และ TensorBoard จะดูแต่ละไดเรกทอรี คุณยังสามารถกำหนดชื่อให้กับไดเร็กทอรีบันทึกแต่ละรายการได้โดยการใส่เครื่องหมายโคลอนระหว่างชื่อและเส้นทาง เช่นเดียวกับใน
tensorboard --logdir_spec name1:/path/to/logs/1,name2:/path/to/logs/2
ไม่สนับสนุนแฟล็กนี้ ( --logdir_spec
) และโดยปกติสามารถหลีกเลี่ยงได้ TensorBoard เดินไดเรกทอรีบันทึกแบบวนซ้ำ สำหรับการควบคุมที่ละเอียดยิ่งขึ้น แนะนำให้ใช้แผนผังสัญลักษณ์ คุณลักษณะบางอย่างอาจไม่ทำงานเมื่อใช้ --logdir_spec
แทน --logdir
Scalar Dashboard ของ TensorBoard จะแสดงภาพสถิติสเกลาร์ที่เปลี่ยนแปลงไปตามช่วงเวลา ตัวอย่างเช่น คุณอาจต้องการติดตามการสูญเสียหรืออัตราการเรียนรู้ของโมเดล ตามที่อธิบายไว้ใน แนวคิดหลัก คุณสามารถเปรียบเทียบการทำงานหลายครั้ง และข้อมูลจะถูกจัดระเบียบตามแท็ก แผนภูมิเส้นมีการโต้ตอบดังต่อไปนี้:
การคลิกไอคอนสีฟ้าเล็กๆ ที่มุมซ้ายล่างของแต่ละแผนภูมิจะเป็นการขยายแผนภูมิ
การลากพื้นที่สี่เหลี่ยมบนแผนภูมิจะซูมเข้า
การคลิกสองครั้งที่แผนภูมิจะซูมออก
การเลื่อนเมาส์ไปเหนือแผนภูมิจะทำให้เกิดเส้นเล็ง โดยมีค่าข้อมูลที่บันทึกไว้ในตัวเลือกการวิ่งทางด้านซ้าย
นอกจากนี้ คุณสามารถสร้างโฟลเดอร์ใหม่เพื่อจัดระเบียบแท็กโดยการเขียนนิพจน์ทั่วไปลงในช่องด้านซ้ายบนของแดชบอร์ด
แดชบอร์ดฮิสโตแกรมจะแสดงให้เห็นว่าการกระจายทางสถิติของเทนเซอร์เปลี่ยนแปลงไปอย่างไรเมื่อเวลาผ่านไป โดยแสดงภาพข้อมูลที่บันทึกผ่าน tf.summary.histogram
แต่ละแผนภูมิจะแสดง "ส่วน" ของข้อมูลชั่วคราว โดยแต่ละส่วนคือฮิสโตแกรมของเมตริกซ์ในขั้นตอนที่กำหนด โดยจัดเรียงโดยให้จับเวลาที่เก่าแก่ที่สุดอยู่ด้านหลัง และจับเวลาล่าสุดอยู่ข้างหน้า เมื่อเปลี่ยนโหมดฮิสโตแกรมจาก "ออฟเซ็ต" เป็น "โอเวอร์เลย์" มุมมองจะหมุนเพื่อให้ทุกส่วนของฮิสโตแกรมแสดงผลเป็นเส้นและซ้อนทับกัน
แดชบอร์ดการกระจายเป็นอีกวิธีหนึ่งในการแสดงภาพข้อมูลฮิสโตแกรมจาก tf.summary.histogram
มันแสดงสถิติระดับสูงเกี่ยวกับการแจกแจง แต่ละบรรทัดบนแผนภูมิแสดงถึงเปอร์เซ็นไทล์ในการกระจายของข้อมูล เช่น บรรทัดล่างสุดจะแสดงการเปลี่ยนแปลงของค่าต่ำสุดเมื่อเวลาผ่านไป และเส้นตรงกลางจะแสดงการเปลี่ยนแปลงของค่ามัธยฐาน เมื่ออ่านจากบนลงล่าง บรรทัดต่างๆ มีความหมายดังนี้: [maximum, 93%, 84%, 69%, 50%, 31%, 16%, 7%, minimum]
เปอร์เซ็นไทล์เหล่านี้ยังสามารถใช้เป็นขอบเขตส่วนเบี่ยงเบนมาตรฐานในการแจกแจงแบบปกติ: [maximum, μ+1.5σ, μ+σ, μ+0.5σ, μ, μ-0.5σ, μ-σ, μ-1.5σ, minimum]
เพื่อให้ขอบเขตสีที่อ่านจากภายในสู่ภายนอกมีความกว้าง [σ, 2σ, 3σ]
ตามลำดับ
Image Dashboard สามารถแสดง PNG ที่บันทึกไว้ผ่าน tf.summary.image
แดชบอร์ดได้รับการตั้งค่าเพื่อให้แต่ละแถวสอดคล้องกับแท็กที่แตกต่างกัน และแต่ละคอลัมน์สอดคล้องกับการเรียกใช้ เนื่องจากแดชบอร์ดรูปภาพรองรับ PNG ที่กำหนดเอง คุณจึงใช้สิ่งนี้เพื่อฝังการแสดงภาพที่กำหนดเอง (เช่น Matplotlib Scatterplots) ลงใน TensorBoard ได้ แดชบอร์ดนี้จะแสดงรูปภาพล่าสุดสำหรับแต่ละแท็กเสมอ
แดชบอร์ดเสียงสามารถฝังวิดเจ็ตเสียงที่สามารถเล่นได้สำหรับเสียงที่บันทึกผ่าน tf.summary.audio
แดชบอร์ดได้รับการตั้งค่าเพื่อให้แต่ละแถวสอดคล้องกับแท็กที่แตกต่างกัน และแต่ละคอลัมน์สอดคล้องกับการเรียกใช้ แดชบอร์ดนี้จะฝังเสียงล่าสุดสำหรับแต่ละแท็กเสมอ
Graph Explorer จะแสดงกราฟ TensorBoard ได้ ทำให้สามารถตรวจสอบโมเดล TensorFlow ได้ เพื่อให้ใช้งานโปรแกรมสร้างภาพกราฟให้เกิดประโยชน์สูงสุด คุณควรใช้ขอบเขตชื่อเพื่อจัดกลุ่มการดำเนินการในกราฟของคุณตามลำดับชั้น ไม่เช่นนั้นกราฟอาจถอดรหัสได้ยาก สำหรับข้อมูลเพิ่มเติม รวมถึงตัวอย่าง โปรดดูบทช่วยสอนกราฟ TensorFlow
Embedding Projector ช่วยให้คุณเห็นภาพข้อมูลที่มีมิติสูง ตัวอย่างเช่น คุณอาจดูข้อมูลอินพุตของคุณหลังจากที่แบบจำลองของคุณฝังอยู่ในพื้นที่มิติสูง โปรเจ็กเตอร์ที่ฝังจะอ่านข้อมูลจากไฟล์จุดตรวจสอบโมเดลของคุณ และอาจกำหนดค่าด้วยข้อมูลเมตาเพิ่มเติม เช่น ไฟล์คำศัพท์หรือภาพสไปรท์ สำหรับรายละเอียดเพิ่มเติม โปรดดูบทช่วยสอนการฝังโปรเจ็กเตอร์
แดชบอร์ดข้อความจะแสดงตัวอย่างข้อความที่บันทึกผ่าน tf.summary.text
รองรับฟีเจอร์ Markdown รวมถึงไฮเปอร์ลิงก์ รายการ และตารางทั้งหมด
แดชบอร์ดอนุกรมเวลาจะแสดงอินเทอร์เฟซแบบรวมที่มีสเกลาร์ ฮิสโตแกรม และรูปภาพทั้งหมดของคุณที่บันทึกผ่าน tf.summary.scalar
, tf.summary.image
หรือ tf.summary.histogram
ช่วยให้สามารถดูแผนภูมิเส้น 'ความแม่นยำ' ของคุณเคียงข้างกันด้วยฮิสโตแกรมการเปิดใช้งานและรูปภาพตัวอย่างการฝึกอบรม เป็นต้น
คุณสมบัติได้แก่:
สีการวิ่งแบบกำหนดเอง: คลิกที่วงกลมสีในตัวเลือกการวิ่งเพื่อเปลี่ยนสีของการวิ่ง
การ์ดที่ปักหมุด: คลิกไอคอน 'ปักหมุด' บนการ์ดใดก็ได้เพื่อเพิ่มลงในส่วนที่ปักหมุดไว้ด้านบนเพื่อการเปรียบเทียบอย่างรวดเร็ว
การตั้งค่า: บานหน้าต่างด้านขวามีการตั้งค่าสำหรับแผนภูมิและการแสดงภาพอื่นๆ การตั้งค่าที่สำคัญจะยังคงอยู่ในเซสชัน TensorBoard เมื่อโฮสต์ไว้ที่ต้นทาง URL เดียวกัน
เติมข้อความอัตโนมัติในตัวกรองแท็ก: ค้นหาแผนภูมิที่ต้องการได้ง่ายขึ้น
ขั้นแรก ตรวจสอบว่าไดเร็กทอรีที่ส่งไปยัง --logdir
นั้นถูกต้อง คุณสามารถตรวจสอบสิ่งนี้ได้โดยไปที่แดชบอร์ด Scalars (ใต้เมนู "ไม่ใช้งาน") และมองหาเส้นทางไดเร็กทอรีบันทึกที่ด้านล่างของแถบด้านข้างซ้าย
หากคุณกำลังโหลดจากเส้นทางที่ถูกต้อง ตรวจสอบให้แน่ใจว่ามีไฟล์เหตุการณ์อยู่ TensorBoard จะดำเนินการบันทึก logdir ซ้ำๆ เป็นเรื่องปกติหากข้อมูลซ้อนอยู่ใต้ไดเรกทอรีย่อย ตรวจสอบให้แน่ใจว่าสิ่งต่อไปนี้แสดงผลลัพธ์อย่างน้อยหนึ่งรายการ:
find DIRECTORY_PATH | grep tfevents
คุณยังตรวจสอบได้ว่าไฟล์เหตุการณ์มีข้อมูลจริงหรือไม่โดยการเรียกใช้เทนเซอร์บอร์ดในโหมดตรวจสอบเพื่อตรวจสอบเนื้อหาของไฟล์เหตุการณ์ของคุณ
tensorboard --inspect --logdir DIRECTORY_PATH
เอาต์พุตสำหรับไฟล์เหตุการณ์ที่สอดคล้องกับ TensorBoard เปล่าอาจยังคงแสดงขั้นตอนบางส่วนอยู่ ซึ่งแสดงถึงเหตุการณ์เริ่มต้นบางอย่างที่ TensorBoard ไม่ได้แสดง (เช่น เมื่อใช้การเรียกกลับ Keras TensorBoard):
tensor
first_step 0
last_step 2
max_step 2
min_step 0
num_steps 2
outoforder_steps [(2, 0), (2, 0), (2, 0)]
ในทางตรงกันข้าม เอาต์พุตสำหรับไฟล์เหตุการณ์ที่มีข้อมูลเพิ่มเติมอาจมีลักษณะดังนี้:
tensor
first_step 0
last_step 55
max_step 250
min_step 0
num_steps 60
outoforder_steps [(2, 0), (2, 0), (2, 0), (2, 0), (50, 9), (100, 19), (150, 29), (200, 39), (250, 49)]
อัปเดต: หลังจากเปิดตัว 2.3.0 TensorBoard จะไม่โหลดซ้ำอัตโนมัติทุกๆ 30 วินาทีอีกต่อไป หากต้องการเปิดใช้งานการทำงานนี้อีกครั้ง โปรดเปิดการตั้งค่าโดยคลิกไอคอนรูปเฟืองที่มุมขวาบนของอินเทอร์เฟซเว็บ TensorBoard และเปิดใช้งาน "โหลดข้อมูลซ้ำ"
อัปเดต: ขณะนี้ตัวเลือกทดลอง
--reload_multifile=true
สามารถใช้เพื่อสำรวจไฟล์ "ที่ใช้งานอยู่" ทั้งหมดในไดเร็กทอรีเพื่อหาข้อมูลใหม่ แทนที่จะเป็นไฟล์ล่าสุดตามที่อธิบายไว้ด้านล่าง ไฟล์จะ "ใช้งานอยู่" ตราบใดที่ได้รับข้อมูลใหม่ภายใน--reload_multifile_inactive_secs
วินาทีที่แล้ว โดยค่าเริ่มต้นเป็น 86400
ปัญหานี้มักเกิดขึ้นเนื่องจากวิธีที่ TensorBoard วนซ้ำผ่านไฟล์ tfevents
โดยจะดำเนินไปตามไฟล์เหตุการณ์ตามลำดับการประทับเวลา และอ่านได้ครั้งละหนึ่งไฟล์เท่านั้น สมมติว่าเรามีไฟล์ที่มีการประทับเวลา a
และ b
โดยที่ a เมื่อ TensorBoard อ่านเหตุการณ์ทั้งหมดใน
a
แล้ว มันจะไม่กลับมาอ่านอีก เนื่องจากถือว่ามีการเขียนเหตุการณ์ใหม่ในไฟล์ที่ใหม่กว่า ซึ่งอาจทำให้เกิดปัญหาได้ ตัวอย่างเช่น คุณมี FileWriters
สองตัวที่เขียนไปยังไดเร็กทอรีเดียวกันพร้อมกัน หากคุณมีผู้เขียนสรุปหลายคน แต่ละคนควรเขียนลงในไดเร็กทอรีแยกกัน
อัปเดต: ขณะนี้สามารถใช้ตัวเลือกทดลอง
--reload_multifile=true
เพื่อสำรวจไฟล์ "ใช้งานอยู่" ทั้งหมดในไดเร็กทอรีสำหรับข้อมูลใหม่ ซึ่งกำหนดเป็นไฟล์ใด ๆ ที่ได้รับข้อมูลใหม่ภายใน--reload_multifile_inactive_secs
วินาทีที่แล้ว โดยค่าเริ่มต้นเป็น 86400
ไม่ TensorBoard คาดว่าจะเขียนไฟล์กิจกรรมได้ครั้งละ 1 ไฟล์เท่านั้น และผู้เขียนสรุปหลายคนหมายถึงไฟล์กิจกรรมหลายไฟล์ หากคุณใช้งานอินสแตนซ์ TensorFlow แบบกระจาย เราขอแนะนำให้คุณกำหนดผู้ปฏิบัติงานเพียงคนเดียวเป็น "หัวหน้า" ที่รับผิดชอบการประมวลผลสรุปทั้งหมด ดู supervisor.py เป็นตัวอย่าง
หากคุณเห็นข้อมูลที่ดูเหมือนจะเดินทางย้อนเวลากลับไปและซ้อนทับกับตัวเอง มีคำอธิบายที่เป็นไปได้บางประการ
คุณอาจมีการดำเนินการ TensorFlow หลายครั้งซึ่งทั้งหมดเขียนลงในไดเร็กทอรีบันทึกเดียวกัน โปรดให้การรัน TensorFlow แต่ละครั้งเขียนไปยัง logdir ของตัวเอง
อัปเดต: ขณะนี้สามารถใช้ตัวเลือกทดลอง
--reload_multifile=true
เพื่อสำรวจไฟล์ "ใช้งานอยู่" ทั้งหมดในไดเร็กทอรีสำหรับข้อมูลใหม่ ซึ่งกำหนดเป็นไฟล์ใด ๆ ที่ได้รับข้อมูลใหม่ภายใน--reload_multifile_inactive_secs
วินาทีที่แล้ว โดยค่าเริ่มต้นเป็น 86400
คุณอาจมีข้อบกพร่องในโค้ดของคุณที่ตัวแปร global_step (ส่งผ่านไปยัง FileWriter.add_summary
) ได้รับการดูแลอย่างไม่ถูกต้อง
อาจเป็นไปได้ว่างาน TensorFlow ของคุณขัดข้อง และรีสตาร์ทจากจุดตรวจสอบก่อนหน้านี้ ดู วิธีจัดการการรีสตาร์ท TensorFlow ด้านล่าง
วิธีแก้ปัญหาเบื้องต้น ให้ลองเปลี่ยนการแสดงผลแกน x ใน TensorBoard จาก steps
เป็น wall_time
การดำเนินการนี้มักจะช่วยแก้ไขปัญหา
TensorFlow ได้รับการออกแบบโดยมีกลไกสำหรับการกู้คืนอย่างนุ่มนวลหากงานขัดข้องหรือถูกหยุดทำงาน: TensorFlow สามารถเขียนไฟล์จุดตรวจสอบโมเดลเป็นระยะ ซึ่งช่วยให้คุณสามารถรีสตาร์ท TensorFlow โดยไม่สูญเสียความคืบหน้าในการฝึกทั้งหมด
อย่างไรก็ตาม สิ่งนี้อาจทำให้ TensorBoard ซับซ้อนขึ้นได้ ลองนึกภาพว่า TensorFlow เขียนจุดตรวจสอบที่ขั้นตอน a
จากนั้นทำงานต่อไปจนถึงขั้นตอน b
จากนั้นขัดข้องและรีสตาร์ทที่ประทับเวลา a
กิจกรรมทั้งหมดที่เขียนระหว่าง a
และ b
นั้น "ถูกละเลย" จากเหตุการณ์การรีสตาร์ท และควรถูกลบออก
เพื่ออำนวยความสะดวกในเรื่องนี้ เรามีข้อความ SessionLog
ใน tensorflow/core/util/event.proto
ซึ่งสามารถบันทึก SessionStatus.START
เป็นกิจกรรมได้ เช่นเดียวกับเหตุการณ์อื่นๆ อาจมี step
ที่เกี่ยวข้องด้วย หาก TensorBoard ตรวจพบเหตุการณ์ SessionStatus.START
ที่มีขั้นตอน a
ระบบจะถือว่าทุกเหตุการณ์ที่มีขั้นตอนที่มากกว่า a
นั้นไม่มีผู้ดูแล และจะละทิ้งเหตุการณ์เหล่านั้น ลักษณะการทำงานนี้อาจถูกปิดใช้งานด้วยแฟล็ก --purge_orphaned_data false
(ในเวอร์ชันหลัง 0.7)
Scalar Dashboard รองรับการส่งออกข้อมูล คุณสามารถคลิกตัวเลือก "เปิดใช้งานลิงก์ดาวน์โหลด" ในแถบด้านซ้ายมือได้ จากนั้นแต่ละพล็อตจะมีลิงก์ดาวน์โหลดสำหรับข้อมูลที่มีอยู่
หากคุณต้องการเข้าถึงชุดข้อมูลทั้งหมด คุณสามารถอ่านไฟล์เหตุการณ์ที่ TensorBoard ใช้โดยใช้เมธอด summary_iterator
ใช่! คุณสามารถโคลนและปรับแต่งด้วยหนึ่งในตัวอย่างและสร้างการแสดงภาพข้อมูลที่น่าทึ่งของคุณเองได้ เอกสารประกอบเพิ่มเติมเกี่ยวกับระบบปลั๊กอินมีการอธิบายไว้ในคำแนะนำ ADDING_A_PLUGIN อย่าลังเลที่จะยื่นคำขอคุณลักษณะหรือคำถามเกี่ยวกับฟังก์ชันการทำงานของปลั๊กอิน
เมื่อพอใจกับปลั๊กอินใหม่ที่ก้าวล้ำของคุณเองแล้ว โปรดดูส่วนการเผยแพร่เกี่ยวกับวิธีการเผยแพร่ไปยัง PyPI และแบ่งปันกับชุมชน
การใช้ปลั๊กอินสเกลาร์ที่กำหนดเอง คุณสามารถสร้างพล็อตสเกลาร์พร้อมบรรทัดสำหรับคู่แท็กรันที่กำหนดเองได้ อย่างไรก็ตาม ภายในแดชบอร์ดสเกลาร์ดั้งเดิม แต่ละพล็อตสเกลาร์จะสอดคล้องกับข้อมูลสำหรับแท็กเฉพาะ และมีบรรทัดสำหรับการเรียกใช้แต่ละครั้งที่มีแท็กนั้น
แผนการมาร์จิ้น (ที่แสดงขอบเขตล่างและบน) อาจถูกสร้างขึ้นด้วยปลั๊กอินสเกลาร์แบบกำหนดเอง ปลั๊กอินสเกลาร์ดั้งเดิมไม่รองรับการแสดงระยะขอบ
นี่ยังเป็นไปไม่ได้ วิธีแก้ปัญหาชั่วคราว คุณสามารถสร้างพล็อตแบบกำหนดเองในโค้ดของคุณเอง (เช่น matplotlib) จากนั้นเขียนลงใน SummaryProto
( core/framework/summary.proto
) และเพิ่มลงใน FileWriter
ของคุณ จากนั้น โครงเรื่องที่คุณกำหนดเองจะปรากฏในแท็บรูปภาพของ TensorBoard
TensorBoard ใช้การสุ่มตัวอย่างแบบอ่างเก็บน้ำเพื่อลดขนาดข้อมูลของคุณเพื่อให้สามารถโหลดลงใน RAM ได้ คุณสามารถแก้ไขจำนวนองค์ประกอบที่จะเก็บไว้ต่อแท็กได้โดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง --samples_per_plugin
(เช่น --samples_per_plugin=scalars=500,images=20
) ดูคำถาม Stack Overflow นี้สำหรับข้อมูลเพิ่มเติม
เวอร์ชันของ TensorBoard ก่อน TensorBoard 2.0 โดยค่าเริ่มต้นจะให้บริการบนโฮสต์ 0.0.0.0
ซึ่งสามารถเข้าถึงได้โดยสาธารณะ สำหรับ TensorBoard เวอร์ชันเหล่านั้น คุณสามารถหยุดป๊อปอัปได้โดยระบุ --host localhost
เมื่อเริ่มต้นระบบ
ใน TensorBoard 2.0 ขึ้นไป --host localhost
เป็นค่าเริ่มต้น ใช้ --bind_all
เพื่อคืนค่าลักษณะการทำงานเก่าของการให้บริการไปยังเครือข่ายสาธารณะทั้งบน IPv4 และ IPv6
tensorboard
โดยไม่ต้องติดตั้ง TensorFlow ได้หรือไม่TensorBoard 1.14+ สามารถทำงานได้โดยมีชุดฟีเจอร์ลดลง หากคุณไม่ได้ติดตั้ง TensorFlow ข้อจำกัดหลักคือ ณ เวอร์ชัน 1.14 รองรับเฉพาะปลั๊กอินต่อไปนี้เท่านั้น: สเกลาร์, สเกลาร์แบบกำหนดเอง, รูปภาพ, เสียง, กราฟ, โปรเจ็กเตอร์ (บางส่วน), การแจกแจง, ฮิสโตแกรม, ข้อความ, เส้นโค้ง PR, เมช นอกจากนี้ ไม่มีการรองรับไดเร็กทอรีบันทึกบน Google Cloud Storage
ดูการพัฒนา.md
ขั้นแรก ลองค้นหาปัญหา GitHub และ Stack Overflow ของเรา อาจเป็นได้ว่ามีคนอื่นมีปัญหาหรือคำถามเดียวกันอยู่แล้ว
คำถามเกี่ยวกับการใช้งานทั่วไป (หรือปัญหาที่อาจเฉพาะกับการตั้งค่าในเครื่องของคุณ) ควรไปที่ Stack Overflow
หากคุณพบข้อบกพร่องใน TensorBoard โปรดยื่นปัญหา GitHub พร้อมข้อมูลสนับสนุนให้มากที่สุดเท่าที่จะทำได้ (เช่น การแนบไฟล์เหตุการณ์ รวมถึงผลลัพธ์ของ tensorboard --inspect
ฯลฯ)