این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

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

مشاهده در TensorFlow.org در Google Colab اجرا کنید مشاهده منبع در GitHub

بررسی اجمالی

داشبورد TensorBoard's Graphs ابزاری قدرتمند برای بررسی مدل TensorFlow شما است. شما می توانید به سرعت نمودار مفهومی ساختار مدل خود را مشاهده کرده و اطمینان حاصل کنید که آن با طرح مورد نظر شما مطابقت دارد. همچنین می توانید برای درک چگونگی درک برنامه از TensorFlow ، یک نمودار سطح op را مشاهده کنید. بررسی نمودار سطح 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/ 
 

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

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

 # 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 نمودار سطح op را نشان می دهد. (در سمت چپ ، می توانید برچسب "پیش فرض" را انتخاب کنید.) توجه داشته باشید که نمودار معکوس شده است. جریان داده ها از پایین به بالا ، بنابراین در مقایسه با کد وارونه است. با این حال ، می بینید که نمودار از نزدیک با مدل مدل Keras مطابقت دارد ، با لبه های اضافی به سایر گره های محاسباتی.

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

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

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

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

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

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


نمودار tf.functions

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

ممکن است با موقعیتی روبرو شوید که نیاز به استفاده از حاشیه نویسی tf.function برای "autograph" داشته باشید ، یعنی تبدیل کنید ، یک تابع محاسبات پایتون را به یک نمودار TensorFlow با کارایی بالا تبدیل کنید. برای این شرایط ، شما از TensorFlow Summary Trace API استفاده می کنید تا توابع نگارشی را برای تجسم در TensorBoard وارد کنید.

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

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