كيفية بناء نموذج تصنيف باستخدام TensorFlow في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 19 ديسمبر 2024

محتوى المقال

كيفية بناء نموذج تصنيف باستخدام TensorFlow في Python

تعد مكتبة TensorFlow واحدة من أقوى مكتبات التعلم العميق المستخدمة لبناء وتدريب نماذج التعلم الآلي. في هذا المقال، سنتعرف على كيفية بناء نموذج تصنيف باستخدام TensorFlow في Python. سنقوم بإعداد البيانات، بناء النموذج، تدريبه، ومن ثم تقييم أدائه.

ما هو TensorFlow؟

TensorFlow هو إطار عمل مفتوح المصدر تم تطويره بواسطة فريق Google Brain. يتيح TensorFlow للمطورين والباحثين بناء وتدريب نماذج التعلم الآلي والتعلم العميق باستخدام واجهات برمجة التطبيقات (APIs) عالية المستوى مثل Keras. يستخدم TensorFlow بشكل واسع في تطبيقات مختلفة تشمل التعرف على الصور، معالجة اللغة الطبيعية، وأنظمة التوصيات.

تثبيت TensorFlow

لتثبيت TensorFlow، يمكنك استخدام pip. قم بتشغيل الأمر التالي في بيئة Python الخاصة بك:

pip install tensorflow

بعد تثبيت TensorFlow، يمكنك البدء في بناء نموذج تصنيف.

إعداد البيانات

قبل بناء النموذج، نحتاج إلى إعداد البيانات. في هذا المثال، سنستخدم مجموعة بيانات Fashion MNIST التي تتألف من صور لملابس مصنفة إلى 10 فئات مختلفة مثل القمصان والأحذية والحقائب.

تحميل البيانات ومعالجتها

يمكنك تحميل بيانات Fashion MNIST باستخدام مكتبة TensorFlow مباشرة:

import tensorflow as tf
from tensorflow.keras.datasets import fashion_mnist

# تحميل البيانات وتقسيمها إلى مجموعات تدريب واختبار
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

# معاينة شكل البيانات
print("شكل بيانات التدريب:", train_images.shape)
print("شكل بيانات الاختبار:", test_images.shape)

ستلاحظ أن كل صورة في مجموعة بيانات Fashion MNIST هي مصفوفة 28x28 من القيم العددية. قبل استخدام هذه الصور لتدريب النموذج، يجب علينا تحجيم القيم إلى نطاق [0, 1] بدلاً من [0, 255].

تحجيم البيانات

يمكننا بسهولة تحجيم القيم العددية للصور كما يلي:

# تحجيم القيم إلى نطاق [0, 1]
train_images, test_images = train_images / 255.0, test_images / 255.0

الآن أصبحت البيانات جاهزة للاستخدام في بناء وتدريب النموذج.

بناء نموذج التصنيف

سنقوم الآن ببناء نموذج تصنيف بسيط باستخدام واجهة Keras عالية المستوى المتاحة ضمن TensorFlow.

إنشاء النموذج

سنستخدم نموذجًا بسيطًا مكونًا من عدة طبقات Dense (طبقات كاملة الاتصال) مع طبقة Softmax في النهاية لتحديد الفئة النهائية:

from tensorflow.keras import Sequential, layers

# بناء النموذج
model = Sequential([
    layers.Flatten(input_shape=(28, 28)),
    layers.Dense(128, activation='relu'),
    layers.Dense(10, activation='softmax')
])

يتكون النموذج من ثلاث طبقات:

  • طبقة Flatten: تقوم بتحويل مصفوفة 28x28 إلى مصفوفة مسطحة تحتوي على 784 عنصرًا.
  • طبقة Dense: تحتوي على 128 وحدة عصبية مع دالة تنشيط ReLU.
  • طبقة Dense الأخيرة: تحتوي على 10 وحدات عصبية (واحدة لكل فئة) مع دالة تنشيط Softmax لتحديد الفئة التي تنتمي إليها الصورة.

تجميع النموذج

قبل تدريب النموذج، يجب علينا تجميعه باستخدام محددات مثل دالة الخسارة (loss function)، والمُحسِّن (optimizer)، ومقياس الأداء (metrics):

# تجميع النموذج
model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy']
)

في هذا المثال، استخدمنا المُحسِّن Adam ودالة الخسارة sparse_categorical_crossentropy التي تناسب مشكلات التصنيف متعدد الفئات.

تدريب النموذج

بعد تجميع النموذج، يمكننا تدريبه باستخدام بيانات التدريب. سنستخدم دالة fit() لتنفيذ عملية التدريب:

# تدريب النموذج
model.fit(train_images, train_labels, epochs=10)

في هذا المثال، حددنا 10 فترات (epochs) لتدريب النموذج. يمكنك ضبط عدد الفترات حسب الحاجة.

تقييم أداء النموذج

بعد اكتمال التدريب، يمكننا تقييم أداء النموذج على بيانات الاختبار باستخدام دالة evaluate():

# تقييم النموذج على بيانات الاختبار
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print('\nدقة النموذج على بيانات الاختبار:', test_acc)

ستحصل على دقة النموذج على بيانات الاختبار، والتي تعطيك فكرة عن مدى كفاءة النموذج في تصنيف الصور التي لم يرها من قبل.

استخدام النموذج للتنبؤ

يمكنك الآن استخدام النموذج المدرب للتنبؤ بالفئة التي تنتمي إليها صورة جديدة. سنستخدم دالة predict() لهذا الغرض:

# الحصول على التنبؤات من النموذج
predictions = model.predict(test_images)

# عرض أول تنبؤ
print(predictions[0])
print("الفئة المتوقعة:", tf.argmax(predictions[0]))

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

الخاتمة

في هذا المقال، تعلمنا كيفية بناء نموذج تصنيف باستخدام TensorFlow في Python. قمنا بإعداد البيانات، بناء النموذج، تدريبه، وتقييم أدائه. يعد TensorFlow أداة قوية لبناء وتدريب نماذج التعلم الآلي، ويمكنك استخدامه لحل مجموعة متنوعة من مشاكل التعلم العميق. نأمل أن يكون هذا المقال قد قدم لك فهماً جيداً لكيفية استخدام TensorFlow لبناء نموذج تصنيف فعال.

طور مهاراتك: مقالات يجب قراءتها في البرمجة