หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

ตรวจสอบกราฟ TensorFlow

ดูบน TensorFlow.org ทำงานใน Google Colab ดูแหล่งที่มาบน GitHub

ภาพรวม

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

บทช่วยสอนนี้นำเสนอภาพรวมโดยย่อเกี่ยวกับวิธีสร้างข้อมูลการวินิจฉัยกราฟและแสดงภาพในแดชบอร์ดกราฟของ TensorBoard คุณจะกำหนดและฝึกอบรมโมเดล Keras Sequential อย่างง่ายสำหรับชุดข้อมูล Fashion-MNIST และเรียนรู้วิธีการบันทึกและตรวจสอบกราฟโมเดลของคุณ คุณจะใช้ API การติดตามเพื่อสร้างข้อมูลกราฟสำหรับฟังก์ชั่นที่สร้างขึ้นโดยใช้คำอธิบายประกอบแบบ tf.function ใหม่

ติดตั้ง

 # Load the TensorBoard notebook extension.
%load_ext tensorboard
 
 from datetime import datetime
from packaging import version

import tensorflow as tf
from tensorflow import keras

print("TensorFlow version: ", tf.__version__)
assert version.parse(tf.__version__).release[0] >= 2, \
    "This notebook requires TensorFlow 2.0 or above."
 
TensorFlow version:  2.2.0

 import tensorboard
tensorboard.__version__
 
'2.2.1'
 # Clear any logs from previous runs
!rm -rf ./logs/ 
 

กำหนดรูปแบบ Keras

ในตัวอย่างนี้ตัวจําแนกเป็นแบบจําลองสี่ชั้นอย่างง่าย

 # Define the model.
model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(32, activation='relu'),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10, activation='softmax')
])

model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])
 

ดาวน์โหลดและเตรียมข้อมูลการฝึกอบรม

 (train_images, train_labels), _ = keras.datasets.fashion_mnist.load_data()
train_images = train_images / 255.0
 

ฝึกโมเดลและบันทึกข้อมูล

ก่อนการฝึกอบรมให้กำหนดการ โทรกลับ Keras TensorBoard โดยระบุไดเรกทอรีบันทึก ด้วยการส่งการเรียกกลับไปที่ Model.fit () คุณมั่นใจได้ว่าข้อมูลกราฟได้รับการบันทึกสำหรับการสร้างภาพข้อมูลใน TensorBoard

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

# Train the model.
model.fit(
    train_images,
    train_labels, 
    batch_size=64,
    epochs=5, 
    callbacks=[tensorboard_callback])
 
Epoch 1/5
938/938 [==============================] - 2s 2ms/step - loss: 0.6955 - accuracy: 0.7618
Epoch 2/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4877 - accuracy: 0.8296
Epoch 3/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4458 - accuracy: 0.8414
Epoch 4/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4246 - accuracy: 0.8476
Epoch 5/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4117 - accuracy: 0.8508

<tensorflow.python.keras.callbacks.History at 0x7f656ecc3fd0>

กราฟระดับ Op

เริ่มต้น TensorBoard และรอสักครู่เพื่อให้ UI โหลด เลือกแดชบอร์ดกราฟโดยแตะ“ กราฟ” ที่ด้านบน

 %tensorboard --logdir logs
 

โดยค่าเริ่มต้น TensorBoard จะแสดง กราฟระดับปฏิบัติการ (ทางซ้ายคุณจะเห็นแท็ก“ ค่าเริ่มต้น” ที่เลือก) โปรดทราบว่ากราฟกลับด้าน ข้อมูลไหลจากล่างขึ้นบนดังนั้นมันจึงกลับหัวเมื่อเทียบกับรหัส อย่างไรก็ตามคุณจะเห็นว่ากราฟนั้นตรงกับคำจำกัดความของโมเดล Keras โดยมีขอบพิเศษกับโหนดการคำนวณอื่น ๆ

กราฟมักจะมีขนาดใหญ่มากดังนั้นคุณสามารถจัดการการสร้างภาพกราฟได้:

  • เลื่อนเพื่อ ซูมเข้า และออก
  • ลากเพื่อ เลื่อน
  • การคลิกสองครั้งเพื่อสลับ การขยายโหนด (โหนดสามารถเป็นคอนเทนเนอร์สำหรับโหนดอื่น)

คุณยังสามารถดูข้อมูลเมตาได้โดยคลิกที่โหนด สิ่งนี้ช่วยให้คุณเห็นอินพุต, เอาต์พุต, รูปร่างและรายละเอียดอื่น ๆ

กราฟแนวคิด

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

หากต้องการดูกราฟแนวคิดให้เลือกแท็ก“ keras” สำหรับตัวอย่างนี้คุณจะเห็นโหนด ลำดับที่ ยุบตัว ดับเบิลคลิกที่โหนดเพื่อดูโครงสร้างของโมเดล:


กราฟของ tf.functions

ตัวอย่างจนถึงกราฟที่อธิบายของโมเดล Keras ซึ่งกราฟได้ถูกสร้างขึ้นโดยการกำหนดเลเยอร์ Keras และเรียก Model.fit ()

คุณอาจพบสถานการณ์ที่คุณต้องใช้คำอธิบายประกอบ tf.function เพื่อ "autograph" เช่นการแปลงฟังก์ชันการคำนวณ Python ลงในกราฟ TensorFlow ที่มีประสิทธิภาพสูง สำหรับสถานการณ์เหล่านี้คุณใช้ TensorFlow Summary Trace API เพื่อบันทึกฟังก์ชั่นลายเซ็นต์เพื่อสร้างภาพข้อมูลใน TensorBoard

หากต้องการใช้ API การติดตามสรุป:

  • กำหนดและใส่คำอธิบายประกอบฟังก์ชั่นด้วย tf.function
  • ใช้ tf.summary.trace_on() ทันทีก่อนไซต์การเรียกใช้ฟังก์ชันของคุณ
  • เพิ่มข้อมูลโปรไฟล์ (หน่วยความจำ, เวลา CPU) เพื่อสร้างกราฟโดยผ่านตัวสร้าง profiler=True
  • ด้วยตัวเขียนไฟล์สรุปโทร tf.summary.trace_export() เพื่อบันทึกข้อมูลบันทึก

จากนั้นคุณสามารถใช้ TensorBoard เพื่อดูว่าการทำงานของคุณเป็นอย่างไร

 # The function to be traced.
@tf.function
def my_func(x, y):
  # A simple hand-rolled layer.
  return tf.nn.relu(tf.matmul(x, y))

# Set up logging.
stamp = datetime.now().strftime("%Y%m%d-%H%M%S")
logdir = 'logs/func/%s' % stamp
writer = tf.summary.create_file_writer(logdir)

# Sample data for your function.
x = tf.random.uniform((3, 3))
y = tf.random.uniform((3, 3))

# Bracket the function call with
# tf.summary.trace_on() and tf.summary.trace_export().
tf.summary.trace_on(graph=True, profiler=True)
# Call only one tf.function when tracing.
z = my_func(x, y)
with writer.as_default():
  tf.summary.trace_export(
      name="my_func_trace",
      step=0,
      profiler_outdir=logdir)
 
 %tensorboard --logdir logs/func
 

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