ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

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

نظرة عامة

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

يقدم هذا البرنامج التعليمي نظرة عامة سريعة حول كيفية إنشاء بيانات تشخيص الرسم البياني وتصورها في لوحة بيانات الرسوم البيانية في TensorBoard. ستقوم بتحديد وتدريب نموذج Keras Sequential البسيط لمجموعة بيانات Fashion-MNIST وستتعلم كيفية تسجيل وفحص الرسوم البيانية للنموذج. ستستخدم أيضًا واجهة برمجة تطبيقات التتبع لإنشاء بيانات الرسم البياني للوظائف التي تم إنشاؤها باستخدام التعليق التوضيحي الجديد 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 الرسم البياني لمستوى التشغيل . (على اليسار ، يمكنك رؤية علامة "افتراضي" محددة). لاحظ أن الرسم البياني معكوس ؛ تتدفق البيانات من الأسفل إلى الأعلى ، لذا فهي مقلوبة مقارنةً بالكود. ومع ذلك ، يمكنك أن ترى أن الرسم البياني يتطابق تمامًا مع تعريف نموذج Keras ، مع حواف إضافية للعقد الحسابية الأخرى.

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

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

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

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

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

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


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

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

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

لاستخدام API Trace Summary:

  • تحديد وظيفة tf.function باستخدام وظيفة 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. انقر على زر الراديو "الملف الشخصي" لرؤية إحصائيات وحدة المعالجة المركزية والذاكرة.