بررسی نمودار TensorFlow

مشاهده در TensorFlow.org در Google Colab اجرا شود مشاهده منبع در GitHub دانلود دفترچه یادداشت

بررسی اجمالی

نمودارهای داشبورد TensorBoard یک ابزار قدرتمند برای بررسی مدل TensorFlow شما است. شما می توانید به سرعت یک نمودار مفهومی از ساختار مدل خود را مشاهده کنید و مطمئن شوید که با طرح مورد نظر شما مطابقت دارد. شما همچنین می توانید یک نمودار سطح op را مشاهده کنید تا بفهمید TensorFlow چگونه برنامه شما را درک می کند. بررسی نمودار سطح op می تواند به شما بینشی در مورد چگونگی تغییر مدل خود بدهد. به عنوان مثال، اگر تمرین کندتر از حد انتظار پیشرفت می کند، می توانید مدل خود را دوباره طراحی کنید.

این آموزش یک نمای کلی از نحوه تولید داده های تشخیصی نمودار و تجسم آن در داشبورد Graphs 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/

مدل کراس را تعریف کنید

در این مثال، طبقه‌بندی‌کننده یک مدل متوالی چهار لایه ساده است.

# 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 ، مشخص دایرکتوری وارد شوید. با ارسال این callback به 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>

نمودار سطح عملیاتی

TensorBoard را راه اندازی کنید و چند ثانیه صبر کنید تا رابط کاربری بارگیری شود. داشبورد Graphs را با ضربه زدن روی "Graphs" در بالا انتخاب کنید.

%tensorboard --logdir logs

همچنین می توانید به صورت اختیاری از TensorBoard.dev برای ایجاد یک آزمایش میزبانی شده و قابل اشتراک گذاری استفاده کنید.

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

به طور پیش فرض، TensorBoard نمایش نمودار سطح عملیات. (در سمت چپ، می توانید برچسب "پیش فرض" را انتخاب شده ببینید.) توجه داشته باشید که نمودار معکوس است. داده ها از پایین به بالا جریان می یابد، بنابراین در مقایسه با کد، وارونه است. با این حال، می‌توانید ببینید که نمودار کاملاً با تعریف مدل Keras مطابقت دارد، با لبه‌های اضافی با سایر گره‌های محاسباتی.

نمودارها اغلب بسیار بزرگ هستند، بنابراین می توانید تجسم نمودار را دستکاری کنید:

  • حرکت به زوم در داخل و خارج
  • برای حرکت بکشید
  • دوبار کلیک کردن پستی گسترش گره (گره می تواند یک ظرف برای سایر گره)

همچنین می توانید با کلیک بر روی یک گره، متادیتا را مشاهده کنید. این به شما امکان می دهد ورودی ها، خروجی ها، اشکال و جزئیات دیگر را ببینید.

نمودار مفهومی

علاوه بر نمودار اعدام، TensorBoard نیز یک گراف مفهومی است. این فقط نمایی از مدل کراس است. اگر از یک مدل ذخیره شده مجدد استفاده می کنید و می خواهید ساختار آن را بررسی یا اعتبار سنجی کنید، این ممکن است مفید باشد.

برای دیدن نمودار مفهومی، تگ "keras" را انتخاب کنید. برای این مثال، شما یک گره متوالی سقوط را ببینید. برای مشاهده ساختار مدل روی گره دوبار کلیک کنید:


نمودارهای tf.functions

نمونه‌هایی که تاکنون ارائه شده است، نمودارهای مدل‌های Keras را توصیف کرده‌اند، که در آن نمودارها با تعریف لایه‌های Keras و فراخوانی Model.fit() ایجاد شده‌اند.

شما ممکن است یک وضعیت روبرو می شوند که در آن شما نیاز به استفاده از tf.function حاشیه نویسی به "دستخط" ، یعنی، تبدیل، یک تابع محاسبه پایتون را به یک گراف TensorFlow با عملکرد بالا. برای این شرایط، شما با استفاده TensorFlow خلاصه ردیابی API برای ورود توابع امضا برای تجسم در TensorBoard.

برای استفاده از Summary Trace API:

  • تعریف و حاشیه نویسی یک تابع با tf.function
  • استفاده از tf.summary.trace_on() بلافاصله قبل از سایت تابع پاسخ خود را.
  • اضافه کردن اطلاعات پروفایل (حافظه، زمان پردازنده) به نمودار با عبور 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 و حافظه روی دکمه رادیویی "Profile" کلیک کنید.