اذهب إلى المحتوى

السؤال

نشر

كيف يمكننا متابعة قراءات الدقة وال loss أثناء عملية التدريب من خلال الأداة Tensorboard؟ حيث أنني قمت ببناء النموذج التالي لتصنيف الصور (الأرقام المكتوبة بخط اليد) وأريد مراقبة الدقة من خلالها:

import tensorflow as tf
import datetime
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')
  ])
model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
model.fit(x=x_train, 
          y=y_train, 
          epochs=2, 
          validation_data=(x_test, y_test))


 

Recommended Posts

  • 1
نشر

tensorboard_callback هي أداة تسمح لك بمراقبة أداء النموذج من خلال رسم بياني يوضح حالة التدريب. ويمكنك استخدامها مع نموذجك أو أي نموذج آخر بنفس الطريقة كالتالي:

%load_ext tensorboard # tensorboard نقوم بتحميل الإضافة  
# الآن سنعرف نموذج
import tensorflow as tf
import datetime
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')
  ])

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)
# نقوم بتمرير الكولباكس إلى دالة التدريب 
model.fit(x=x_train, 
          y=y_train, 
          epochs=2, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])

الآن لعرض الرسم البياني نقوم بتنفيذ الأمر التالي ضمن ال nootebook:

# لعرض الغراف
%tensorboard --logdir logs/fit  # حيث نضع مسار المجلد السابق

أو من خلال ال commandline استخدم نفس الأمر السابق لكن من دون استخدام المعامل % أي:

tensorboard --logdir logs/fit

وبهذه الطريقة يمكنك عرض معلومات الدقة والتكلفة loss ضمن نموذجك خلال عملية تدريب نموذجك.

  • 1
نشر (معدل)

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

 

#استدعاء البينات وتقسيمها
import tensorflow_datasets as tfds
tfds.disable_progress_bar()
(ds_train, ds_test), ds_info = tfds.load(
    'mnist',
    split=['train', 'test'],
    shuffle_files=True,
    as_supervised=True,
    with_info=True,
)

#بناء النموذج
def normalize_img(image, label):
  """Normalizes images: `uint8` -> `float32`."""
  return tf.cast(image, tf.float32) / 255., label

ds_train = ds_train.map(normalize_img)
ds_train = ds_train.batch(128)
ds_test = ds_test.map(normalize_img)
ds_test = ds_test.batch(128)
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28, 1)),
  tf.keras.layers.Dense(128,activation='relu'),
  tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(
    loss='sparse_categorical_crossentropy',
    optimizer=tf.keras.optimizers.Adam(0.001),
    metrics=['accuracy']
)
# حفظ بيانات التدريب وبدء التدريب
logs = "logs/" + datetime.now().strftime("%Y%m%d-%H%M%S")

tboard_callback = tf.keras.callbacks.TensorBoard(log_dir = logs,
                                                 histogram_freq = 1,
                                                 profile_batch = '500,520')

model.fit(ds_train,
          epochs=2,
          validation_data=ds_test,
          callbacks = [tboard_callback])


بعد ذلك يقوم ببداء عملية التدريب، عقب النتهاء منها يمكننا استدعاء TensorBoard notebook extension كالتالي:

%load_ext tensorboard

ثم بدء عرض احصائيات التدريب هكذا:

%tensorboard --logdir=logs

ستظهر لك الإحصائيات على الشاشة هكذا:

profiler_overview_page_bad_ip.thumb.png.38d09dd42666c7497a71e094b433b148.png

تم التعديل في بواسطة Ahmed Sharshar

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...