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

ابدأ مع TensorBoard

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

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

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

# Load the TensorBoard notebook extension
%load_ext tensorboard
import tensorflow as tf
import datetime
# Clear any logs from previous runs
!rm -rf ./logs/ 

باستخدام مجموعة بيانات MNIST كمثال ، قم بتطبيع البيانات واكتب دالة تنشئ نموذج Keras بسيطًا لتصنيف الصور إلى 10 فئات.

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step

استخدام TensorBoard مع Keras Model.fit ()

عند التدريب باستخدام Model.fit () من Keras ، فإن إضافة رد tf.keras.callbacks.TensorBoard يضمن إنشاء السجلات وتخزينها. بالإضافة إلى ذلك ، قم بتمكين حساب المدرج التكراري في كل فترة باستخدام histogram_freq=1 (يتم إيقاف هذا افتراضيًا)

ضع السجلات في دليل فرعي مختوم زمنيًا للسماح بتحديد سهل لعمليات التدريب المختلفة.

model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 15s 246us/sample - loss: 0.2217 - accuracy: 0.9343 - val_loss: 0.1019 - val_accuracy: 0.9685
Epoch 2/5
60000/60000 [==============================] - 14s 229us/sample - loss: 0.0975 - accuracy: 0.9698 - val_loss: 0.0787 - val_accuracy: 0.9758
Epoch 3/5
60000/60000 [==============================] - 14s 231us/sample - loss: 0.0718 - accuracy: 0.9771 - val_loss: 0.0698 - val_accuracy: 0.9781
Epoch 4/5
60000/60000 [==============================] - 14s 227us/sample - loss: 0.0540 - accuracy: 0.9820 - val_loss: 0.0685 - val_accuracy: 0.9795
Epoch 5/5
60000/60000 [==============================] - 14s 228us/sample - loss: 0.0433 - accuracy: 0.9862 - val_loss: 0.0623 - val_accuracy: 0.9823

<tensorflow.python.keras.callbacks.History at 0x7fc8a5ee02e8>

ابدأ TensorBoard من خلال سطر الأوامر أو من خلال تجربة استخدام الكمبيوتر المحمول. الواجهتان متماثلتان بشكل عام. في أجهزة الكمبيوتر المحمولة ، استخدم سحر خط %tensorboard . في سطر الأوامر ، قم بتشغيل نفس الأمر بدون "٪".

%tensorboard --logdir logs/fit

نظرة عامة مختصرة على لوحات المعلومات المعروضة (علامات التبويب في شريط التنقل العلوي):

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

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

استخدام TensorBoard مع طرق أخرى

عند التدريب باستخدام طرق مثل tf.GradientTape() ، استخدم tf.summary لتسجيل المعلومات المطلوبة.

استخدم نفس مجموعة البيانات المذكورة أعلاه ، ولكن قم بتحويلها إلى tf.data.Dataset للاستفادة من إمكانيات التجميع:

ج 15 ب 483000

يتبع رمز التدريب البرنامج التعليمي المتقدم لبدء التشغيل السريع ، ولكنه يوضح كيفية تسجيل المقاييس في TensorBoard. اختر الخسارة والمحسن:

loss_object = tf.keras.losses.SparseCategoricalCrossentropy()
optimizer = tf.keras.optimizers.Adam()

قم بإنشاء مقاييس ذات حالة يمكن استخدامها لتجميع القيم أثناء التدريب وتسجيلها في أي وقت:

# Define our metrics
train_loss = tf.keras.metrics.Mean('train_loss', dtype=tf.float32)
train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('train_accuracy')
test_loss = tf.keras.metrics.Mean('test_loss', dtype=tf.float32)
test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('test_accuracy')

تحديد وظائف التدريب والاختبار:

def train_step(model, optimizer, x_train, y_train):
  with tf.GradientTape() as tape:
    predictions = model(x_train, training=True)
    loss = loss_object(y_train, predictions)
  grads = tape.gradient(loss, model.trainable_variables)
  optimizer.apply_gradients(zip(grads, model.trainable_variables))

  train_loss(loss)
  train_accuracy(y_train, predictions)

def test_step(model, x_test, y_test):
  predictions = model(x_test)
  loss = loss_object(y_test, predictions)

  test_loss(loss)
  test_accuracy(y_test, predictions)

قم بإعداد مؤلفي الملخصات لكتابة الملخصات على القرص في دليل سجلات مختلف:

current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
train_log_dir = 'logs/gradient_tape/' + current_time + '/train'
test_log_dir = 'logs/gradient_tape/' + current_time + '/test'
train_summary_writer = tf.summary.create_file_writer(train_log_dir)
test_summary_writer = tf.summary.create_file_writer(test_log_dir)

ابدأ التدريب. استخدم tf.summary.scalar() لتسجيل المقاييس (الخسارة والدقة) أثناء التدريب / الاختبار ضمن نطاق كتاب الملخصات لكتابة الملخصات على القرص. يمكنك التحكم في المقاييس التي يجب تسجيلها وعدد مرات القيام بذلك. tf.summary وظائف tf.summary الأخرى تسجيل أنواع أخرى من البيانات.

model = create_model() # reset our model

EPOCHS = 5

for epoch in range(EPOCHS):
  for (x_train, y_train) in train_dataset:
    train_step(model, optimizer, x_train, y_train)
  with train_summary_writer.as_default():
    tf.summary.scalar('loss', train_loss.result(), step=epoch)
    tf.summary.scalar('accuracy', train_accuracy.result(), step=epoch)

  for (x_test, y_test) in test_dataset:
    test_step(model, x_test, y_test)
  with test_summary_writer.as_default():
    tf.summary.scalar('loss', test_loss.result(), step=epoch)
    tf.summary.scalar('accuracy', test_accuracy.result(), step=epoch)
  
  template = 'Epoch {}, Loss: {}, Accuracy: {}, Test Loss: {}, Test Accuracy: {}'
  print (template.format(epoch+1,
                         train_loss.result(), 
                         train_accuracy.result()*100,
                         test_loss.result(), 
                         test_accuracy.result()*100))

  # Reset metrics every epoch
  train_loss.reset_states()
  test_loss.reset_states()
  train_accuracy.reset_states()
  test_accuracy.reset_states()
Epoch 1, Loss: 0.24321186542510986, Accuracy: 92.84333801269531, Test Loss: 0.13006582856178284, Test Accuracy: 95.9000015258789
Epoch 2, Loss: 0.10446818172931671, Accuracy: 96.84833526611328, Test Loss: 0.08867532759904861, Test Accuracy: 97.1199951171875
Epoch 3, Loss: 0.07096975296735764, Accuracy: 97.80166625976562, Test Loss: 0.07875105738639832, Test Accuracy: 97.48999786376953
Epoch 4, Loss: 0.05380449816584587, Accuracy: 98.34166717529297, Test Loss: 0.07712937891483307, Test Accuracy: 97.56999969482422
Epoch 5, Loss: 0.041443776339292526, Accuracy: 98.71833038330078, Test Loss: 0.07514958828687668, Test Accuracy: 97.5

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

%tensorboard --logdir logs/gradient_tape

هذا هو! لقد رأيت الآن كيفية استخدام TensorBoard من خلال رد الاتصال Keras ومن خلال tf.summary لمزيد من السيناريوهات المخصصة.

TensorBoard.dev: استضافة وتبادل نتائج تجربة ML

TensorBoard.dev هي خدمة عامة مجانية تمكّنك من تحميل سجلات TensorBoard الخاصة بك والحصول على رابط ثابت يمكن مشاركته مع الجميع في الأوراق الأكاديمية ومنشورات المدونات ووسائل التواصل الاجتماعي وما إلى ذلك. وهذا يمكن أن يتيح إمكانية إعادة الإنتاج والتعاون بشكل أفضل.

لاستخدام TensorBoard.dev ، قم بتشغيل الأمر التالي:

!tensorboard dev upload \
  --logdir logs/fit \
  --name "(optional) My latest experiment" \
  --description "(optional) Simple comparison of several hyperparameters" \
  --one_shot

لاحظ أن هذا الاستدعاء يستخدم بادئة التعجب ( ! ) لاستدعاء الغلاف بدلاً من بادئة % ( % ) لاستدعاء سحر كولاب. عند استدعاء هذا الأمر من سطر الأوامر ، ليست هناك حاجة لأي من البادئة.

عرض مثال هنا .

لمزيد من التفاصيل حول كيفية استخدام TensorBoard.dev ، راجع https://tensorboard.dev/#get-started