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

จากภาพด้านล่าง คุณจะเห็นแผงการแสดงภาพกราฟ TensorBoard แผงประกอบด้วยแท็บต่างๆ ซึ่งเชื่อมโยงกับระดับข้อมูลที่คุณเพิ่มเมื่อคุณรันโมเดล
- สเกลาร์: แสดงข้อมูลที่เป็นประโยชน์ต่างๆ ในระหว่างการฝึกโมเดล
- กราฟ: แสดงโมเดล
- Histogram: แสดงน้ำหนักด้วยฮิสโตแกรม
- การกระจาย: แสดงการกระจายน้ำหนัก
- เครื่องฉาย: แสดงการวิเคราะห์องค์ประกอบหลักและอัลกอริทึม T-SNE เทคนิคที่ใช้ในการลดขนาด
ในระหว่างบทช่วยสอน 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
สำหรับ 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