ترجمت واجهة 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 إلى "توقيع" ، أي تحويل وظيفة حساب Python إلى رسم بياني TensorFlow عالي الأداء. لهذه المواقف ، يمكنك استخدام TensorFlow Summary Trace API لتسجيل الوظائف الموقعة من أجل التصور في TensorBoard.

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

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