บทช่วยสอน TensorBoard: การแสดงภาพกราฟด้วย TensorFlow

⚡ สรุปอย่างชาญฉลาด

TensorBoard คือส่วนติดต่อผู้ใช้แบบกราฟิกสำหรับการฝึกโมเดลด้วย TensorFlow โดยจะแสดงกราฟเส้นโค้งการสูญเสีย กราฟโมเดล ฮิสโตแกรมของน้ำหนัก และการฝังข้อมูล ตัวอย่างนี้จะเขียนไฟล์เหตุการณ์ด้วยตัวประมาณค่า จากนั้นเปิดแดชบอร์ดบนพอร์ต 6006

  • 🔘 แดชบอร์ดห้าอัน: ค่าสเกลาร์ กราฟ การแจกแจง ฮิสโตแกรม และโปรเจคเตอร์ แต่ละแบบอ่านข้อมูลสรุปประเภทต่างกัน
  • ☑️ ไดเร็กทอรีบันทึก: อาร์กิวเมนต์ model_dir จะกำหนดว่า TensorFlow จะเขียนไฟล์ events.out.tfevents ไว้ที่ใด
  • คำสั่งเริ่มต้น: เรียกใช้คำสั่ง `tensorboard –logdir=PATH` จากนั้นเปิด `http://localhost:6006` ในเบราว์เซอร์ใดก็ได้
  • 🧪 อัตราการเรียนรู้: เส้นกราฟการสูญเสียที่ไม่เรียบแสดงให้เห็นว่าอัตราการสูญเสียสูงเกินไปจนแบบจำลองไม่สามารถลู่เข้าสู่จุดที่เหมาะสมได้
  • 🛠️ เทนเซอร์โฟล์ว์ 2: ฟังก์ชัน callback ของ Keras TensorBoard จะเข้ามาแทนที่การบันทึกข้อมูลของตัวประมาณค่าที่แสดงในตัวอย่างเดิม
  • ⚠️ การแก้ไขปัญหา: หากแดชบอร์ดว่างเปล่า มักหมายความว่าเส้นทางของไดเร็กทอรีบันทึกไม่ตรงกับการรันการฝึกอบรม

บทช่วยสอน TensorBoard: การแสดงภาพกราฟด้วย TensorFlow

TensorBoard คืออะไร?

TensorBoard คืออินเทอร์เฟซที่ใช้ในการแสดงภาพกราฟและเครื่องมืออื่นๆ เพื่อทำความเข้าใจ แก้ไขข้อผิดพลาด และปรับปรุงประสิทธิภาพของโมเดล เป็นเครื่องมือที่ให้การวัดและการแสดงภาพสำหรับเวิร์กโฟลว์การเรียนรู้ของเครื่อง ช่วยให้... tracใช้ตัวชี้วัด k ตัว เช่น ค่าความสูญเสียและความแม่นยำ แสดงภาพกราฟของแบบจำลอง และฉายภาพฝังตัวลงในพื้นที่ที่มีมิติต่ำกว่า

TensorBoard มาพร้อมกับ TensorFlow และทำงานเป็นเว็บเซิร์ฟเวอร์ขนาดเล็กในเครื่อง ซึ่งอ่านไฟล์เหตุการณ์ที่งานฝึกอบรมเขียนลงดิสก์

ตัวอย่างการแสดงภาพกราฟ TensorFlow โดยใช้ TensorBoard

ภาพด้านล่างนี้มาจากกราฟ TensorBoard ที่คุณจะสร้างในบทเรียนนี้ นี่คือแผงหลัก:

แดชบอร์ด TensorBoard Scalars แสดงเส้นโค้ง average_loss ของตัวถดถอย DNN ที่ได้รับการฝึกฝนแล้ว

จากภาพด้านล่าง คุณจะเห็นแผงการแสดงภาพกราฟ TensorBoard แผงประกอบด้วยแท็บต่างๆ ซึ่งเชื่อมโยงกับระดับข้อมูลที่คุณเพิ่มเมื่อคุณรันโมเดล

แถบนำทาง TensorBoard พร้อมแท็บ Scalars, Graphs, Distributions, Histograms และ Projector

  • ค่าสเกลาร์: แสดงข้อมูลที่เป็นประโยชน์ต่างๆ ระหว่างการฝึกโมเดล
  • กราฟ: แสดงแบบจำลอง
  • ฮิสโตแกรม: แสดงน้ำหนักด้วยฮิสโตแกรม
  • การกระจาย: แสดงการกระจายของน้ำหนัก
  • โปรเจ็กเตอร์: แสดงการวิเคราะห์ส่วนประกอบหลัก (Principal Component Analysis) และอัลกอริธึม T-SNE ซึ่งเป็นเทคนิคที่ใช้ในการลดมิติข้อมูล

ในบทเรียน TensorBoard นี้ คุณจะได้ฝึกฝนโมเดลอย่างง่ายๆ การเรียนรู้ลึก ๆ แบบจำลองนี้ และกราฟที่สร้างขึ้นจะถูกอ่านจากล่างขึ้นบน

หากคุณดูที่กราฟ คุณจะเข้าใจว่าแบบจำลองทำงานอย่างไร ป้ายกำกับตัวเลขในภาพหน้าจอด้านล่างแสดงถึงสี่ขั้นตอนเหล่านี้:

  1. จัดคิวข้อมูลให้กับโมเดล: พุชข้อมูลจำนวนเท่ากับขนาดแบตช์ให้กับโมเดล เช่น จำนวนฟีดข้อมูลหลังจากการวนซ้ำแต่ละครั้ง
  2. ป้อนข้อมูลไปยังเทนเซอร์
  3. ฝึกโมเดล
  4. แสดงจำนวนชุดระหว่างการฝึกอบรม บันทึกโมเดลลงบนดิสก์

กราฟ TensorFlow ใน TensorBoard พร้อมโหนดที่มีหมายเลขกำกับสำหรับคิวอินพุต บล็อก dnn และการดำเนินการบันทึก

แนวคิดพื้นฐานของ TensorBoard คือ เครือข่ายประสาทเทียมอาจทำงานเหมือนกล่องดำ และคุณจำเป็นต้องมีเครื่องมือเพื่อตรวจสอบสิ่งที่อยู่ภายในกล่องนั้น ลองนึกถึง TensorBoard ในฐานะไฟฉายสำหรับส่องสำรวจเข้าไปในเครือข่าย

ช่วยให้เข้าใจความสัมพันธ์ระหว่างการดำเนินการ วิธีการคำนวณน้ำหนัก การแสดงฟังก์ชันการสูญเสีย และข้อมูลที่มีประโยชน์อื่นๆ อีกมากมาย เมื่อคุณนำข้อมูลทั้งหมดเหล่านี้มารวมกัน คุณจะมีเครื่องมือที่ยอดเยี่ยมในการแก้ไขข้อบกพร่องและค้นหาวิธีปรับปรุงโมเดล

เพื่อให้คุณเห็นภาพว่ากราฟ TensorBoard มีประโยชน์มากแค่ไหน ลองดูเส้นกราฟแสดงค่าความสูญเสียสองเส้นด้านล่างนี้:

กราฟแสดงค่าความสูญเสีย (loss curve) ของ TensorBoard สองกราฟวางเคียงข้างกัน เปรียบเทียบโมเดลที่ไม่เรียนรู้กับโมเดลที่ลู่เข้าสู่จุดบรรจบ (convergence)

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

อัลกอริทึมการฝึกฝนทุกตัวจะทำการคำนวณซ้ำหลายครั้งจนกว่าค่าความสูญเสียจะมีลักษณะเป็นเส้นตรงที่ราบเรียบ การลดค่าความสูญเสียให้เหลือน้อยที่สุดยังต้องอาศัยอัตราการเรียนรู้ ซึ่งเป็นความเร็วในการเรียนรู้ของแบบจำลอง หากตั้งอัตราการเรียนรู้สูงเกินไป แบบจำลองจะไม่มีเวลาเรียนรู้สิ่งใดเลย นั่นคือแผนภูมิทางซ้ายมือ ซึ่งเส้นกราฟจะเคลื่อนที่ขึ้นลงเนื่องจากแบบจำลองกำลังเดาอยู่ แผนภูมิทางขวามือแสดงให้เห็นว่าค่าความสูญเสียลดลงเรื่อยๆ ในแต่ละรอบการฝึกฝนจนกระทั่งเส้นโค้งราบเรียบ ซึ่งหมายความว่าแบบจำลองได้พบคำตอบแล้ว

TensorBoard เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการแสดงภาพข้อมูลตัวชี้วัดต่างๆ และชี้ให้เห็นปัญหาที่อาจเกิดขึ้น เครือข่ายประสาทเทียมอาจใช้เวลาหลายชั่วโมงหรือหลายสัปดาห์กว่าจะพบวิธีแก้ปัญหา และ TensorBoard จะอัปเดตข้อมูลตัวชี้วัดในขณะที่งานยังคงทำงานอยู่ ดังนั้นคุณไม่จำเป็นต้องรอจนกว่าจะเสร็จสิ้นเพื่อดูว่าโมเดลฝึกฝนได้อย่างถูกต้องหรือไม่ เพียงแค่เปิด TensorBoard ตรวจสอบว่าการฝึกฝนดำเนินไปอย่างไร และทำการเปลี่ยนแปลงที่เหมาะสมหากจำเป็น

วิธีใช้งาน TensorBoard?

ในส่วนนี้ คุณจะได้เรียนรู้วิธีเปิด TensorBoard จากเทอร์มินัลบน macOS และจากบรรทัดคำสั่งบน Windowsจุดเน้นอยู่ที่เครื่องมือมากกว่าตัวแบบ ดังนั้นโค้ดสำหรับการฝึกฝนจึงถูกทำให้สั้นโดยเจตนา

ขั้นแรก คุณต้องนำเข้าไลบรารีที่คุณจะใช้ระหว่างการฝึกอบรมก่อน

## Import the library
import tensorflow as tf
import numpy as np

คุณเป็นผู้สร้างข้อมูล ข้อมูลนี้เป็นอาร์เรย์ที่มี 10000 แถวและ 5 คอลัมน์

X_train = (np.random.sample((10000,5)))
y_train =  (np.random.sample((10000,1)))
X_train.shape

เอาท์พุต

(10000, 5)

โค้ดด้านล่างนี้จะแปลงข้อมูลและสร้างแบบจำลอง

โปรดสังเกตว่าอัตราการเรียนรู้เท่ากับ 0.1 หากคุณเปลี่ยนอัตรานี้เป็นค่าที่สูงกว่านี้ โมเดลจะไม่สามารถหาคำตอบได้ ซึ่งเป็นสิ่งที่เกิดขึ้นทางด้านซ้ายของภาพด้านบน

ตัวอย่างนี้ใช้ TensorFlow estimator ซึ่งเป็น API ระดับสูงที่ห่อหุ้มการคำนวณทางคณิตศาสตร์ Estimator เป็นส่วนหนึ่งของ TensorFlow 1.x API ดังนั้นโค้ดสองส่วนด้านล่างจึงทำงานได้ภายใต้การติดตั้ง 1.x หรือผ่านทาง tf.compat.v1 เนมสเปซ

ในการสร้างไฟล์บันทึก คุณต้องระบุพาธ โดยทำได้ด้วยอาร์กิวเมนต์ model_dir.

ในตัวอย่าง TensorBoard ด้านล่าง คุณจะจัดเก็บโมเดลไว้ในไดเร็กทอรีการทำงาน กล่าวคือ ที่ที่คุณจัดเก็บโน้ตบุ๊กหรือไฟล์อื่นๆ Python ไฟล์นี้จะสร้างโฟลเดอร์ชื่อ train ภายในพาธนี้ โดยมีโฟลเดอร์ย่อยชื่อ linreg อยู่ภายใน

feature_columns = [
      tf.feature_column.numeric_column('x', shape=X_train.shape[1:])]
DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns,
# Indicate where to store the log file    
     model_dir='train/linreg',    
     hidden_units=[500, 300],    
     optimizer=tf.train.ProximalAdagradOptimizer(      
          learning_rate=0.1,      
          l1_regularization_strength=0.001    
      )
)

เอาท์พุต

INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {&#x27;_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}

ขั้นตอนสุดท้ายของตัวอย่างการแสดงภาพกราฟด้วย TensorFlow นี้คือการฝึกฝนโมเดล ในระหว่างการฝึกฝน TensorFlow จะเขียนข้อมูลลงในไดเร็กทอรีของโมเดล

# Train the estimator
train_input = tf.estimator.inputs.numpy_input_fn(    
     x={"x": X_train},    
     y=y_train, shuffle=False,num_epochs=None)
DNN_reg.train(train_input,steps=3000)

เอาท์พุต

INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt.
INFO:tensorflow:loss = 40.060104, step = 1
INFO:tensorflow:global_step/sec: 197.061
INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec)
INFO:tensorflow:global_step/sec: 172.487
INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec)
INFO:tensorflow:global_step/sec: 193.295
INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec)
INFO:tensorflow:global_step/sec: 175.378
INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec)
INFO:tensorflow:global_step/sec: 209.737
INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec)
INFO:tensorflow:global_step/sec: 171.646
INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec)
INFO:tensorflow:global_step/sec: 192.269
INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec)
INFO:tensorflow:global_step/sec: 198.264
INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec)
INFO:tensorflow:global_step/sec: 226.842
INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec)
INFO:tensorflow:global_step/sec: 152.929
INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec)
INFO:tensorflow:global_step/sec: 166.745
INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec)
INFO:tensorflow:global_step/sec: 161.854
INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec)
INFO:tensorflow:global_step/sec: 179.074
INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec)
INFO:tensorflow:global_step/sec: 202.776
INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec)
INFO:tensorflow:global_step/sec: 144.161
INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec)
INFO:tensorflow:global_step/sec: 154.144
INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec)
INFO:tensorflow:global_step/sec: 151.094
INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec)
INFO:tensorflow:global_step/sec: 193.644
INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec)
INFO:tensorflow:global_step/sec: 189.707
INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec)
INFO:tensorflow:global_step/sec: 176.423
INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec)
INFO:tensorflow:global_step/sec: 213.066
INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec)
INFO:tensorflow:global_step/sec: 220.975
INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec)
INFO:tensorflow:global_step/sec: 219.289
INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec)
INFO:tensorflow:global_step/sec: 215.123
INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec)
INFO:tensorflow:global_step/sec: 175.65
INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec)
INFO:tensorflow:global_step/sec: 206.962
INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec)
INFO:tensorflow:global_step/sec: 229.627
INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec)
INFO:tensorflow:global_step/sec: 195.792
INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec)
INFO:tensorflow:global_step/sec: 176.803
INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec)
INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt.
INFO:tensorflow:Loss for final step: 10.73032.

<tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>

ใน TensorFlow 2 ฟังก์ชันเดียวกันนี้ทำงานโดยใช้ callback ของ Keras TensorBoard ซึ่งจะเขียนกราฟและเมตริกต่อรอบโดยไม่ต้องเขียนโค้ดประมาณการใดๆ:

logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

model.fit(train_images, train_labels, epochs=5,
          callbacks=[tensorboard_callback])

เมื่อการทำงานเสร็จสิ้น โฟลเดอร์บันทึกจะเก็บไฟล์จุดตรวจสอบ (checkpoint file) ไว้ graph.pbtxt ไฟล์และอย่างน้อยหนึ่งไฟล์ events.out.tfevents ไฟล์เหล่านั้นเป็นไฟล์ที่ TensorBoard อ่านโดยตรง

ใช้เพื่อการ macOS ผู้ใช้

ภาพจาก Finder ด้านล่างแสดงโฟลเดอร์ train/linreg ใหม่ที่สร้างขึ้นภายในไดเร็กทอรีการทำงาน

macOS รายการไฟล์ที่แสดงโฟลเดอร์บันทึก train และ linreg พร้อมไฟล์ checkpoint, events และ graph.pbtxt

ใช้เพื่อการ Windows ผู้ใช้

On Windows ไฟล์เดียวกันจะปรากฏอยู่ภายใต้เส้นทางที่คุณระบุให้กับ model_dir ดังที่ไฮไลต์ไว้ในแถบที่อยู่

Windows มุมมอง Explorer ของโฟลเดอร์ train linreg ซึ่งประกอบด้วยไฟล์เหตุการณ์และจุดตรวจสอบของ TensorFlow

รูปแบบไฟล์เหตุการณ์เดียวกันนี้ถูกสร้างขึ้นโดย PyTorchดังนั้นแดชบอร์ดจึงไม่ได้จำกัดเฉพาะการทำงานของ TensorFlow เท่านั้น

เมื่อคุณบันทึกเหตุการณ์เสร็จเรียบร้อยแล้ว คุณสามารถเปิด TensorBoard ได้ TensorBoard ให้บริการบนพอร์ต 6006 โดยค่าเริ่มต้น (Jupyter (ใช้พอร์ต 8888) ใช้เทอร์มินัลบน macOS หรือข้อความแจ้งเตือน Anaconda บน Windows.

ใช้เพื่อการ macOS ผู้ใช้

# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!

สมุดบันทึกถูกจัดเก็บไว้ในพาธ /Users/Guru99/tuto_TF

ใช้เพื่อการ Windows ผู้ใช้

cd C:\Users\Admin\Anaconda3
activate hello-tf

สมุดบันทึกถูกจัดเก็บไว้ในพาธ C:\Users\Admin\Anaconda3

หากต้องการเรียกใช้ TensorBoard ให้รันคำสั่งต่อไปนี้จากไดเร็กทอรีนั้น

ใช้เพื่อการ macOS ผู้ใช้

tensorboard --logdir=./train/linreg

ใช้เพื่อการ Windows ผู้ใช้

tensorboard --logdir=.\train\linreg

จากนั้น TensorBoard จะถูกให้บริการที่ http://localhost:6006

ธง สิ่งที่มันควบคุม
--logdir ไดเร็กทอรีที่เก็บไฟล์เหตุการณ์ นี่เป็นแฟล็กที่จำเป็นเพียงอย่างเดียว
--port พอร์ตที่จะใช้ในการให้บริการ ค่าเริ่มต้นคือ 6006 เปลี่ยนพอร์ตนี้หากเซสชันก่อนหน้ายังคงใช้พอร์ตนั้นอยู่
--bind_all ให้บริการบนทุกอินเทอร์เฟซเครือข่าย TensorBoard จะเชื่อมต่อกับ localhost เท่านั้นโดยค่าเริ่มต้น ดังนั้นการเข้าถึงระยะไกลจึงต้องใช้แฟล็กนี้ และไม่สามารถใช้ร่วมกับ --host.
--reload_interval ความถี่ในการสแกนไดเร็กทอรีบันทึกเพื่อค้นหาข้อมูลใหม่ (หน่วยเป็นวินาที)
--logdir_spec รูปแบบสำรองแบบเดิมที่ยอมรับเส้นทางหลายเส้นที่คั่นด้วยเครื่องหมายจุลภาค; --logdir ไม่รองรับรูปแบบนั้นอีกต่อไปแล้ว

การขอ tensorboard dev คำสั่งย่อยดังกล่าวใช้งานไม่ได้อีกต่อไปแล้ว: บริการ TensorBoard.dev ที่ให้บริการอยู่บนเซิร์ฟเวอร์ได้ปิดตัวลงเมื่อวันที่ 1 มกราคม 2024 การใช้งานในเครื่องยังคงปกติ

ในบางเครื่อง คอนโซลจะแสดงชื่อโฮสต์แทนที่จะเป็น localhost ดังเช่นในข้อความแจ้งเตือนของ Anaconda ด้านล่าง ไม่ว่าจะใช้ที่อยู่ใดก็จะเปิดแดชบอร์ดเดียวกัน

หน้าต่าง Anaconda แสดงข้อความแจ้งเตือนขณะรันคำสั่ง tensorboard และพิมพ์ที่อยู่เซิร์ฟเวอร์บนพอร์ต 6006

คัดลอกและวางที่อยู่ลงในเบราว์เซอร์ที่คุณใช้เป็นประจำ คุณจะเห็นแดชบอร์ด Scalars ดังที่แสดงด้านล่าง

แดชบอร์ด TensorBoard Scalars จะเปิดในเบราว์เซอร์หลังจากโหลดไดเร็กทอรีบันทึกอย่างถูกต้อง

หากคุณเห็นอะไรแบบนี้แทน:

หน้าแสดงข้อผิดพลาดของ TensorBoard ระบุว่า ไม่พบไฟล์คำจำกัดความกราฟ

หมายความว่า TensorBoard หาไฟล์บันทึกไม่พบ โปรดตรวจสอบให้แน่ใจว่าคุณได้ระบุไฟล์บันทึกอย่างถูกต้องแล้ว cd ไปยังเส้นทางที่ถูกต้อง หรือตรวจสอบอีกครั้งว่ามีการสร้างเหตุการณ์บันทึก (log event) ขึ้นจริงหรือไม่ หากไม่มี ให้รันโค้ดการฝึกอบรมอีกครั้ง

หากต้องการปิด TensorBoard ให้กด CTRL+C ในหน้าต่างเทอร์มินัล

เคล็ดลับ: ตรวจสอบไดเร็กทอรีการทำงานปัจจุบันในพรอมต์ Anaconda ของคุณ

พร้อมท์ Anaconda แสดงสภาพแวดล้อม hello-tf ที่ใช้งานอยู่และไดเร็กทอรีการทำงานปัจจุบัน

ในภาพหน้าจอข้างต้น พรอมต์จะอยู่ที่ C:\Users\Admin ดังนั้นไฟล์บันทึกควรถูกสร้างขึ้นในโฟลเดอร์นั้น

คำถามที่พบบ่อย

เมื่อการรันเสร็จสิ้น จะสร้างดัชนีจุดตรวจสอบ ไฟล์ model.ckpt อย่างน้อยหนึ่งไฟล์ ไฟล์ graph.pbtxt และไฟล์ events.out.tfevents อย่างน้อยหนึ่งไฟล์ TensorBoard จะอ่านเฉพาะไฟล์เหตุการณ์เท่านั้น ส่วนจุดตรวจสอบนั้นมีไว้เพื่อให้การฝึกฝนสามารถดำเนินต่อจากจุดที่หยุดไปได้

ใช่. PyTorch บทสรุปของเรือWriter ซึ่งส่งไฟล์เหตุการณ์ในรูปแบบเดียวกัน ดังนั้นคำสั่ง tensorboard –logdir ที่เหมือนกันจึงแสดงผลแดชบอร์ดได้ ไม่มีอะไรเปลี่ยนแปลงเกี่ยวกับเซิร์ฟเวอร์ มีเพียงไลบรารีที่สร้างข้อมูลสรุปเท่านั้นที่เปลี่ยนไป

ไม่ บริการโฮสติ้งปิดตัวลงเมื่อวันที่ 1 มกราคม 2024 และคำสั่งย่อย tensorboard dev จะแสดงข้อผิดพลาด แชร์ผลลัพธ์โดยการเรียกใช้ TensorBoard ภายในโน้ตบุ๊ก เช่น Google โดยใช้ Colab หรือส่งออกแผนภูมิเป็นไฟล์ CSV หรือ JSON

สร้างโฟลเดอร์ย่อยสำหรับแต่ละรอบการทำงานภายใต้โฟลเดอร์หลักที่ใช้ร่วมกัน จากนั้นกำหนดคำสั่ง –logdir ให้ชี้ไปยังโฟลเดอร์หลักนั้น โฟลเดอร์ย่อยแต่ละโฟลเดอร์จะปรากฏเป็นรอบการทำงานแยกต่างหากในแผงด้านซ้าย และกราฟจะถูกวาดบนแกนเดียวกันโดยมีช่องทำเครื่องหมายให้เลือกแต่ละกราฟ

กราฟระดับการทำงาน (op-level graph) เป็นมุมมองเริ่มต้นและแสดงให้เห็นว่า TensorFlow เข้าใจโปรแกรมอย่างไร โดยวาดจากล่างขึ้นบน การเลือกแท็ก keras จะเปลี่ยนไปใช้กราฟเชิงแนวคิด (conceptual graph) ซึ่งแสดงเฉพาะเลเยอร์ของโมเดลและตรวจสอบกับแบบร่างของคุณได้ง่ายกว่า

การสแกนอัตโนมัติจะสร้างผลลัพธ์หลายสิบรายการในคราวเดียว ดังนั้นแดชบอร์ดจึงกลายเป็นเครื่องมือเปรียบเทียบมากกว่าการตรวจสอบผลลัพธ์ทีละรายการ ปลั๊กอิน HParams จะบันทึกการกำหนดค่าแต่ละรายการพร้อมกับตัวชี้วัดต่างๆ ทำให้คุณสามารถจัดเรียงการทดลองแทนที่จะอ่านกราฟทีละรายการ

นักบิน GitHub ร่างโค้ดสำหรับเรียกกลับและสรุปผลอย่างรวดเร็ว โปรดพิจารณาผลลัพธ์เป็นเพียงร่าง เนื่องจากมักมีการผสมผสาน API ของ TensorFlow เวอร์ชัน 1.x และ 2.x ดังนั้นควรตรวจสอบชื่อแต่ละชื่อกับเอกสารประกอบฉบับปัจจุบันก่อนเรียกใช้โค้ด

อาจเป็นไปได้ว่าไม่มีการเขียนไฟล์เหตุการณ์ หรือเส้นทางที่ส่งไปยัง –logdir ไม่ตรงกับเส้นทางที่งานฝึกอบรมใช้ โปรดตรวจสอบให้แน่ใจว่ามีไฟล์ events.out.tfevents อยู่ในโฟลเดอร์นั้น และตรวจสอบอีกครั้ง Windows เริ่มใช้งาน TensorBoard จากไดรฟ์ที่มีตัวอักษรเดียวกัน

สรุปโพสต์นี้ด้วย: