بدء التشغيل السريع TensorFlow 2 للمبتدئين

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

تستخدم هذه المقدمة القصيرة Keras من أجل:

  1. قم بتحميل مجموعة بيانات مُنشأة مسبقًا.
  2. بناء نموذج التعلم الآلي للشبكة العصبية الذي يصنف الصور.
  3. تدريب هذه الشبكة العصبية.
  4. تقييم دقة النموذج.

هذا البرنامج التعليمي عبارة عن دفتر ملاحظات Google Colaboratory . يتم تشغيل برامج Python مباشرة في المتصفح - وهي طريقة رائعة لتعلم واستخدام TensorFlow. لمتابعة هذا البرنامج التعليمي ، قم بتشغيل الكمبيوتر الدفتري في Google Colab بالنقر فوق الزر الموجود أعلى هذه الصفحة.

  1. في Colab ، اتصل بوقت تشغيل Python: في أعلى يمين شريط القائمة ، حدد CONNECT .
  2. قم بتشغيل جميع خلايا التعليمات البرمجية للكمبيوتر الدفتري: حدد وقت التشغيل > تشغيل الكل .

قم بإعداد TensorFlow

قم باستيراد TensorFlow إلى برنامجك لتبدأ:

import tensorflow as tf
print("TensorFlow version:", tf.__version__)
TensorFlow version: 2.8.0-rc1

إذا كنت تتابع في بيئة التطوير الخاصة بك ، بدلاً من Colab ، فراجع دليل التثبيت لإعداد TensorFlow للتطوير.

قم بتحميل مجموعة بيانات

قم بتحميل وإعداد مجموعة بيانات MNIST . تحويل البيانات النموذجية من الأعداد الصحيحة إلى أرقام الفاصلة العائمة:

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

بناء نموذج التعلم الآلي

أنشئ نموذجًا tf.keras.Sequential عن طريق تكديس الطبقات.

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

لكل مثال ، يعرض النموذج متجهًا من درجات السجلات أو احتمالات السجل ، بمعدل واحد لكل فئة.

predictions = model(x_train[:1]).numpy()
predictions
array([[ 0.2760778 , -0.39324787, -0.17098302,  1.2016621 , -0.03416392,
         0.5461229 , -0.7203061 , -0.41886678, -0.59480035, -0.7580608 ]],
      dtype=float32)

تحول الدالة tf.nn.softmax هذه السجلات إلى احتمالات لكل فئة:

tf.nn.softmax(predictions).numpy()
array([[0.11960829, 0.06124588, 0.0764901 , 0.30181262, 0.08770514,
        0.15668967, 0.04416083, 0.05969675, 0.05006609, 0.04252464]],
      dtype=float32)

حدد True خسارة للتدريب باستخدام losses.SparseCategoricalCrossentropy .

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

هذه الخسارة تساوي احتمالية السجل السالب للفئة الحقيقية: تكون الخسارة صفرًا إذا كان النموذج متأكدًا من الفئة الصحيحة.

يعطي هذا النموذج غير المدرب احتمالات قريبة من عشوائية (1/10 لكل فئة) ، لذلك يجب أن تكون الخسارة الأولية قريبة من -tf.math.log(1/10) ~= 2.3 .

loss_fn(y_train[:1], predictions).numpy()
1.8534881

قبل أن تبدأ التدريب ، قم بتكوين النموذج وتجميعه باستخدام Keras Model.compile . عيّن فئة optimizer على adam ، واضبط loss على وظيفة loss_fn التي حددتها سابقًا ، وحدد مقياسًا ليتم تقييمه للنموذج عن طريق تعيين معلمة metrics على accuracy .

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

تدريب وتقييم النموذج الخاص بك

استخدم طريقة Model.fit لضبط معلمات النموذج وتقليل الخسارة:

model.fit(x_train, y_train, epochs=5)
Epoch 1/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.2950 - accuracy: 0.9143
Epoch 2/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1451 - accuracy: 0.9567
Epoch 3/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1080 - accuracy: 0.9668
Epoch 4/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0906 - accuracy: 0.9717
Epoch 5/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0749 - accuracy: 0.9761
<keras.callbacks.History at 0x7f062c606850>

تتحقق طريقة Model.evaluate من أداء النماذج ، عادةً على " مجموعة التحقق من الصحة " أو " مجموعة الاختبار ".

model.evaluate(x_test,  y_test, verbose=2)
313/313 - 1s - loss: 0.0783 - accuracy: 0.9755 - 588ms/epoch - 2ms/step
[0.07825208455324173, 0.9754999876022339]

تم تدريب مصنف الصور الآن على دقة تصل إلى 98٪ على مجموعة البيانات هذه. لمعرفة المزيد ، اقرأ دروس TensorFlow .

إذا كنت تريد أن يقوم نموذجك بإرجاع احتمال ، فيمكنك لف النموذج المدرب وإرفاق softmax به:

probability_model = tf.keras.Sequential([
  model,
  tf.keras.layers.Softmax()
])
probability_model(x_test[:5])
<tf.Tensor: shape=(5, 10), dtype=float32, numpy=
array([[2.72807270e-08, 2.42517650e-08, 7.75602894e-06, 1.28684027e-04,
        7.66215633e-11, 3.54162950e-07, 3.04894151e-14, 9.99857187e-01,
        2.32766553e-08, 5.97762892e-06],
       [7.37396704e-08, 4.73638036e-04, 9.99523997e-01, 7.20633352e-07,
        4.54133671e-17, 1.42298268e-06, 5.96959016e-09, 1.23534145e-13,
        7.77225608e-08, 6.98619169e-16],
       [1.95462448e-07, 9.99295831e-01, 1.02249986e-04, 1.86699708e-05,
        5.65737491e-06, 1.12115902e-06, 5.32719559e-06, 5.22767776e-04,
        4.79981136e-05, 1.76624681e-07],
       [9.99649286e-01, 1.80224735e-09, 3.73612856e-05, 1.52324446e-07,
        1.30824594e-06, 2.82781020e-05, 6.99703523e-05, 3.30940424e-07,
        2.13184350e-07, 2.13106396e-04],
       [1.53770895e-06, 1.72272063e-08, 1.98980865e-06, 3.97882580e-08,
        9.97192323e-01, 1.10544443e-05, 1.54713348e-06, 2.81727880e-05,
        3.48721733e-06, 2.75991508e-03]], dtype=float32)>

استنتاج

تهانينا! لقد دربت نموذجًا للتعلم الآلي باستخدام مجموعة بيانات مُنشأة مسبقًا باستخدام Keras API.

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