Kiểm tra đồ thị TensorFlow

Xem trên TensorFlow.org Chạy trong Google Colab Xem nguồn trên GitHub Tải xuống sổ ghi chép

Tổng quat

Bảng điều khiển đồ thị TensorBoard là một công cụ mạnh mẽ để kiểm tra mô hình TensorFlow của bạn. Bạn có thể nhanh chóng xem biểu đồ khái niệm về cấu trúc mô hình của mình và đảm bảo nó phù hợp với thiết kế dự kiến ​​của bạn. Bạn cũng có thể xem biểu đồ op-level để hiểu cách TensorFlow hiểu chương trình của bạn. Việc xem xét biểu đồ op-level có thể cung cấp cho bạn thông tin chi tiết về cách thay đổi mô hình của bạn. Ví dụ: bạn có thể thiết kế lại mô hình của mình nếu quá trình đào tạo diễn ra chậm hơn dự kiến.

Hướng dẫn này trình bày tổng quan nhanh về cách tạo dữ liệu chẩn đoán biểu đồ và trực quan hóa dữ liệu đó trong bảng điều khiển Đồ thị của TensorBoard. Bạn sẽ xác định và đào tạo một mô hình Tuần tự Keras đơn giản cho tập dữ liệu Fashion-MNIST và học cách ghi nhật ký và kiểm tra đồ thị mô hình của bạn. Bạn cũng sẽ sử dụng một API truy tìm để tạo ra dữ liệu đồ thị cho các chức năng tạo ra bằng cách sử dụng mới tf.function chú thích.

Thành lập

# 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/

Xác định mô hình Keras

Trong ví dụ này, trình phân loại là một mô hình Tuần tự bốn lớp đơn giản.

# 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'])

Tải xuống và chuẩn bị dữ liệu đào tạo.

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

Đào tạo mô hình và dữ liệu nhật ký

Trước khi đào tạo, xác định các callback Keras TensorBoard , chỉ định thư mục log. Bằng cách chuyển lệnh gọi lại này tới Model.fit (), bạn đảm bảo rằng dữ liệu biểu đồ được ghi lại để hiển thị trong 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>

Biểu đồ cấp op

Khởi động TensorBoard và đợi vài giây để giao diện người dùng tải. Chọn trang tổng quan Đồ thị bằng cách nhấn vào “Đồ thị” ở trên cùng.

%tensorboard --logdir logs

Bạn cũng có thể tùy chọn sử dụng TensorBoard.dev để tạo thử nghiệm được lưu trữ, có thể chia sẻ.

!tensorboard dev upload \
  --logdir logs \
  --name "Sample op-level graph" \
  --one_shot

Theo mặc định, TensorBoard hiển thị đồ thị op cấp. (Ở bên trái, bạn có thể thấy thẻ “Mặc định” được chọn.) Lưu ý rằng biểu đồ bị đảo ngược; dữ liệu chảy từ dưới lên trên, vì vậy nó bị lộn ngược so với mã. Tuy nhiên, bạn có thể thấy rằng biểu đồ khớp chặt chẽ với định nghĩa mô hình Keras, với các cạnh phụ cho các nút tính toán khác.

Đồ thị thường rất lớn, vì vậy bạn có thể thao tác trực quan hóa đồ thị:

  • Scroll để phóng to trong và ngoài
  • Kéo để chảo
  • Nhấp đúp Toggles mở rộng nút (một nút có thể là một container cho các nút khác)

Bạn cũng có thể xem siêu dữ liệu bằng cách nhấp vào một nút. Điều này cho phép bạn xem đầu vào, đầu ra, hình dạng và các chi tiết khác.

Đồ thị khái niệm

Ngoài các biểu đồ thực hiện, TensorBoard cũng sẽ hiển thị một biểu đồ khái niệm. Đây chỉ là một cái nhìn của mô hình Keras. Điều này có thể hữu ích nếu bạn đang sử dụng lại một mô hình đã lưu và bạn muốn kiểm tra hoặc xác thực cấu trúc của nó.

Để xem biểu đồ khái niệm, hãy chọn thẻ “keras”. Trong ví dụ này, bạn sẽ thấy một nút tuần tự sụp đổ. Nhấp đúp vào nút để xem cấu trúc của mô hình:


Đồ thị của tf.functions

Các ví dụ cho đến nay đã mô tả đồ thị của mô hình Keras, trong đó đồ thị được tạo bằng cách xác định các lớp Keras và gọi Model.fit ().

Bạn có thể gặp phải một tình huống mà bạn cần phải sử dụng tf.function chú thích để "xin chữ ký" , tức là biến đổi, một chức năng tính toán Python vào một TensorFlow đồ thị hiệu suất cao. Đối với những tình huống này, bạn sử dụng TensorFlow Tóm tắt Trace API để đăng nhập chức năng chữ ký cho hình dung trong TensorBoard.

Để sử dụng API theo dõi tóm tắt:

  • Xác định và chú thích một chức năng với tf.function
  • Sử dụng tf.summary.trace_on() ngay lập tức trước khi trang web chức năng cuộc gọi của bạn.
  • Thêm thông tin hồ sơ (bộ nhớ, thời gian CPU) để đồ thị bằng cách thông qua profiler=True
  • Với một nhà văn tập Tóm tắt, gọi tf.summary.trace_export() để lưu các dữ liệu đăng nhập

Sau đó, bạn có thể sử dụng TensorBoard để xem chức năng của bạn hoạt động như thế nào.

# 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

Bây giờ bạn có thể thấy cấu trúc hàm của mình như được hiểu bởi TensorBoard. Nhấp vào nút radio "Hồ sơ" để xem thống kê CPU và bộ nhớ.