บทช่วยสอน TensorBoard: การแสดงกราฟ TensorFlow [ตัวอย่าง]

TensorBoard คืออะไร?

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

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

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

การแสดงกราฟ TensorFlow
การแสดงกราฟ TensorFlow

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

กราฟเทนเซอร์บอร์ด

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

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

หากคุณดูกราฟ คุณจะเข้าใจวิธีการทำงานของโมเดลได้

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

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

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

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

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

กราฟเทนเซอร์บอร์ด
กราฟเทนเซอร์บอร์ด

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

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

วิธีใช้ TensorBoard

ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีเปิด TensorBoard จากเทอร์มินัลสำหรับ MacOS และบรรทัดคำสั่ง TensorBoard สำหรับ Windows.

โค้ดจะมีการอธิบายในบทช่วยสอนในอนาคต โดยเน้นที่ TensorBoard

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

## 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คุณจะใช้เครื่องมือประมาณค่า TensorFlow นี่คือ TensorFlow API ที่มีการคำนวณทางคณิตศาสตร์ทั้งหมด

หากต้องการสร้างไฟล์บันทึก คุณต้องระบุเส้นทาง นี้จะกระทำด้วยอาร์กิวเมนต์ model_dir

ในตัวอย่าง TensorBoard ด้านล่าง คุณจัดเก็บโมเดลไว้ในไดเร็กทอรีการทำงาน เช่น ที่ที่คุณเก็บโน้ตบุ๊กหรือไฟล์ Python ภายในเส้นทางนี้ TensorFlow จะสร้างโฟลเดอร์ชื่อ 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: {'_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>

สำหรับผู้ใช้ MacOS

บทช่วยสอน TensorBoard สำหรับผู้ใช้ MacOS

สำหรับ Windows ผู้ใช้งาน

บทช่วยสอน TensorBoard สำหรับ Windows ผู้ใช้งาน

คุณสามารถดูข้อมูลนี้ได้ในไพทอร์ช เทนเซอร์บอร์ด.

เมื่อคุณเขียนเหตุการณ์บันทึกแล้ว คุณเปิด Tensorboard ได้เลย Tensorboard Keras ทำงานบนพอร์ต 6006 (Jupyter ทำงานบนพอร์ต 8888) คุณสามารถใช้ Terminal สำหรับผู้ใช้ 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 อยู่ใน URL นี้: http://localhost:6006

อาจตั้งอยู่ ณ ตำแหน่งต่อไปนี้ก็ได้

ใช้เทนเซอร์บอร์ด

คัดลอกและวาง URL ลงในเบราว์เซอร์ที่คุณชื่นชอบ คุณควรเห็นสิ่งนี้:

โปรดทราบว่าเราจะได้เรียนรู้วิธีการอ่านกราฟในบทช่วยสอนที่ทุ่มเทให้กับ การเรียนรู้ลึก ๆ.

ใช้เทนเซอร์บอร์ด

หากคุณเห็นสิ่งนี้:

ใช้เทนเซอร์บอร์ด

หมายความว่า Tensorboard ไม่พบไฟล์บันทึก โปรดตรวจสอบว่าคุณชี้ซีดีไปยังเส้นทางที่ถูกต้องหรือตรวจสอบซ้ำอีกครั้งว่ามีการสร้างเหตุการณ์บันทึกหรือไม่ หากไม่พบ ให้เรียกใช้โค้ดอีกครั้ง

หากคุณต้องการปิด TensorBoard ให้กด CTRL+C

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

ใช้เทนเซอร์บอร์ด

ควรสร้างไฟล์บันทึกที่ C:\Users\Admin

สรุป

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

หากต้องการเปิดใช้งาน Tensorboard คุณต้องกำหนดเส้นทางของไฟล์:

cd /Users/Guru99/tuto_TF

เปิดใช้งานสภาพแวดล้อมของ Tensorflow

activate hello-tf

เปิดตัวเทนเซอร์บอร์ด

tensorboard --logdir=.+ PATH