انتقل إلى المحتوى الرئيسي

المراجعة والاختبار النهائي

عشر وحدات للانتقال من تنسور معزول إلى نموذج تخدمه HTTP. هذه هي الدورة مُكثَّفة، ثمّ الخيوط التي تعبرها.

الدورة في لمحة

الوحدةالجوهر الواجب حفظه
1. التنسورات والرسومتنسور غير قابل للتغيير، ومتغيّر قابل؛ tf.function يتتبّع مرّة ثمّ لا يُشغّل بايثون
2. الواجهة التتابعيةالخسارة تُستنتَج من صيغة الوسوم؛ predict يُخرج احتمالات لا أصنافًا
3. الواجهة الوظيفيةإنشاء الطبقة وتطبيقها فعلان مختلفان؛ loss_weights إلزامية لمخرجات متعدّدة
4. طبقات مخصّصةالأوزان داخل build بـadd_weight؛ وأعِد تعريف train_step قبل الحلقة الكاملة
5. خطوط tf.datashuffle قبل batch، وprefetch أخيرًا؛ ومصدّ صغير يُنتج حزمًا أُحادية الصنف
6. الاستدعاءاتsave_best_only=True وrestore_best_weights=True، وكلاهما غير مفعّل افتراضيًّا
7. TensorBoardدليل واحد لكلّ تشغيل؛ والمدرّجات التكرارية تكشف علّات صامتة
8. التعلّم بالنقلtrainable=False لا يُجمّد التطبيع بالحزم؛ ولا بدّ من training=False عند الاستدعاء
9. التدريب الموزّعbatch_size عامّ ومعدّل التعلّم يجب أن يتبعه
10. SavedModel والخدمةالمعالجة المسبقة يجب أن تكون طبقة، وإلّا اختفت من التصدير

الخيوط التي تعبر الدورة

التدريب والاستدلال نظامان متمايزان، وTensorFlow لا يُحذّرك. الإسقاط يُفعَّل في أحدهما لا في الآخر. والتطبيع بالحزم يستعمل إحصائيات الحزمة، ثمّ متوسّطاته الجارية. هذا التبديل تلقائي داخل fit، لكنّه يصبح مسؤوليّتك بمجرّد أن تكتب طبقة مخصّصة (الوحدة 4) أو تُجمّد قاعدة مُدرَّبة مسبقًا (الوحدة 8). ولا يرفع أيٌّ من الخطأين استثناءً: بل يُدهور النتائج بصمت. وهو أشيع علّة في هذه الدورة، ويحمل اسمًا مختلفًا حسب الموضع الذي يظهر فيه.

ما لم يوجد داخل المصنوع فهو غير موجود. معالجة مسبقة مكتوبة داخل سكربت التدريب، أو tf.Variable مُنشأ دون add_weight، أو طبقة مخصّصة بلا get_config: في الحالات الثلاث، شيء ضروري يعيش خارج الكائن الذي يُفترض به احتواء الكلّ. العَرَض يختلف — تنبّؤات متدهورة، أو وزن لا يتعلّم، أو تعذّر إعادة التحميل — لكنّ السبب واحد. قبل التصدير، السؤال الذي يجب أن يُطرَح هو دومًا: هل يكفي هذا المصنوع لشخص لا يمتلك سكربتي؟

العُنق ليس تقريبًا هناك حيث تُفتّش عنه. ردّ الفعل التلقائي أمام تدريب بطيء هو إضافة عتاد. تقترح الوحدات 5 و7 و9 الترتيب المقلوب: قِس بالمُنقّح، ثمّ صحّح خطّ البيانات، ثمّ فعِّل الدقّة المختلطة، ولا تُوزّع إلّا بعد ذلك. فالخطوتان الأوليان لا تكلّفان شيئًا، وتُعطيان في الغالب أكثر من الثالثة التي تُضاعف الفاتورة.

يمنح Keras نقاط دخول وسيطة، ولا بدّ من معرفتها كي لا تُعيد كتابة كلّ شيء. بين fit وحلقة يدويّة كاملة يوجد train_step. وبين طبقة قياسية ومُشغِّل منخفض المستوى توجد فئة فرعية من Layer. كلّ مرّة تُغريك فكرة التخلّي عن البنية التحتيّة، ابحث عن نقطة التوسيع: فهي ما يُبقي على الاستدعاءات وTensorBoard والتوزيع.

الامتحان النهائي

يتضمّن الامتحان 40 سؤالًا تشمل الوحدات العشر: التمييز بين التنسور والمتغيّر، والسلوك الدقيق لـtf.function وأسباب إعادة التتبّع، واختيار الخسارة حسب صيغة الوسوم، وبناء معماريّات بمداخل ومخارج متعدّدة، وكتابة طبقة بدوالّها الثلاث، وتركيب خطّ tf.data وترتيبه، وضبط الاستدعاءات، وقراءة المدرّجات التكرارية، وإجراءات النقل في مرحلتين، وتحجيم الحزمة والمعدّل في التوزيع، والتصدير للخدمة.

تعرض عدّة أسئلة حالاتٍ للتشخيص: print لا يظهر إلّا مرّة، أو تنبّؤات تتغيّر من استدعاء لآخر، أو دقّة تحقّق تتراجع أثناء ضبط دقيق، أو نموذج مُقدَّم يُجيب غير ما يُجيبه النموذج المحلّي، أو تدريب يتباطأ بعد الانتقال إلى أربعة مسرّعات. المُقيَّم هنا هو الحُكم، لا استظهار توقيعات الواجهة.

في حال النجاح، تُمنح شهادة الإتمام فورًا؛ ورقمها قابل للتحقّق من أيّ طرف على المنصّة.

قبل أن تبدأ

استعِد الجدول أعلاه، واسأل نفسك عن كلّ سطر: «ما العَرَض الذي سأراه لو أخطأت هنا؟». فإن عرفت أن تشرح لماذا لا يظهر print داخل دالّة مُتَتبَّعة إلّا مرّة واحدة، ولماذا لا يكفي تجميد قاعدة عندما تحتوي تطبيعًا بالحزم، ولماذا يمكن لنموذج مُقدَّم أن يُجيب غير ما يُجيبه النموذج المحلّي، فأنت مستعدّ. حظًّا موفّقًا!

الامتحان النهائي

هل أنت مستعدّ لاعتماد هذه الدورة؟

40 سؤالًا تُختار عشوائيًّا من بنك أسئلة الدورة · حدّ النجاح 70 % · شهادة PDF قابلة للتحقّق تُصدَر فورًا عند النجاح.

ابدأ الامتحان

يلزم تسجيل الدخول إلى حسابك في InSkillML مع اشتراك نشط. يمكنك أيضًا بدء الامتحان من دوراتي.