فحص الرسم البياني TensorFlow

عرض على TensorFlow.org تشغيل في Google Colab عرض المصدر على جيثب تحميل دفتر

ملخص

الرسوم البيانية لوحة أجهزة القياس TensorBoard هو أداة قوية لفحص نموذج TensorFlow الخاص بك. يمكنك بسرعة عرض رسم بياني مفاهيمي لهيكل نموذجك والتأكد من مطابقته للتصميم المقصود. يمكنك أيضًا عرض رسم بياني على مستوى المرجع لفهم كيفية فهم TensorFlow لبرنامجك. يمكن أن يمنحك فحص الرسم البياني على مستوى المرجع نظرة ثاقبة حول كيفية تغيير نموذجك. على سبيل المثال ، يمكنك إعادة تصميم النموذج الخاص بك إذا كان التدريب يتقدم بشكل أبطأ من المتوقع.

يقدم هذا البرنامج التعليمي نظرة عامة سريعة على كيفية إنشاء بيانات تشخيص الرسم البياني وتصورها في لوحة معلومات الرسوم البيانية في 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>

الرسم البياني على مستوى المرجع

ابدأ TensorBoard وانتظر بضع ثوانٍ حتى يتم تحميل واجهة المستخدم. حدد لوحة تحكم الرسوم البيانية من خلال النقر على "الرسوم البيانية" في الأعلى.

%tensorboard --logdir logs

يمكنك أيضًا استخدام TensorBoard.dev اختياريًا لإنشاء تجربة مستضافة وقابلة للمشاركة.

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

افتراضيا، يعرض TensorBoard الرسم البياني على مستوى المرجع. (على اليسار ، يمكنك رؤية علامة "افتراضي" المحددة). لاحظ أن الرسم البياني معكوس ؛ تتدفق البيانات من أسفل إلى أعلى ، لذا فهي مقلوبة مقارنة بالكود. ومع ذلك ، يمكنك أن ترى أن الرسم البياني يتطابق بشكل وثيق مع تعريف نموذج Keras ، مع وجود حواف إضافية لعقد الحساب الأخرى.

غالبًا ما تكون الرسوم البيانية كبيرة جدًا ، لذا يمكنك معالجة التمثيل البياني للرسم البياني:

  • انتقل إلى تكبير والتصغير
  • اسحب لعموم
  • النقر المزدوج تبديل التوسع العقدة (عقدة يمكن أن يكون وعاء لالعقد الأخرى)

يمكنك أيضًا مشاهدة البيانات الوصفية بالنقر فوق عقدة. يتيح لك ذلك رؤية المدخلات والمخرجات والأشكال والتفاصيل الأخرى.

الرسم البياني المفاهيمي

بالإضافة إلى الرسم البياني التنفيذ، يعرض TensorBoard أيضا رسم بياني المفاهيمي. هذه طريقة عرض لنموذج Keras فقط. قد يكون هذا مفيدًا إذا كنت تعيد استخدام نموذج محفوظ وتريد فحص بنيته أو التحقق من صحتها.

لمشاهدة الرسم البياني المفاهيمي ، حدد علامة "keras". على سبيل المثال، سترى عقدة متتابعة انهارت. انقر نقرًا مزدوجًا فوق العقدة لرؤية بنية النموذج:


الرسوم البيانية لوظائف tf

وصفت الأمثلة حتى الآن الرسوم البيانية لنماذج Keras ، حيث تم إنشاء الرسوم البيانية من خلال تحديد طبقات Keras واستدعاء Model.fit ().

قد واجهت وضعا حيث كنت في حاجة إلى استخدام tf.function الشرح إلى "توقيعه" ، أي تحويل، وهي وظيفة حساب بيثون إلى رسم بياني TensorFlow عالية الأداء. لهذه الحالات، يمكنك استخدام API TensorFlow ملخص تتبع لتسجيل وظائف موقعة التصور في TensorBoard.

لاستخدام Summary Trace 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. انقر فوق الزر الراديوي "الملف الشخصي" لمشاهدة إحصائيات وحدة المعالجة المركزية والذاكرة.