تقنية

مقارنة مخرجات النموذج: هل تطابق الأرقام يخفي اختلاف الشكل؟

متجه من عنصرين وعمود من صفين وعمود واحد يتصلان بمجال مقارنة ذي صفين وعمودين، مع بقاء اختلاف الشكل الأصلي رغم تساوي الأرقام
مخطط من إعداد بحر العلوم؛ مجال المقارنة ليس أربعة تنبؤات فعلية.

شكل مخرجات النموذج قبل المقارنة مهم لأن allclose في NumPy يستخدم قواعد البث المعتادة؛ يمكن أن يعيد True لمصفوفتين مختلفتي الشكل. [1]

الخلاصة السريعة

افحص الشكل الذي تطلبه المهمة أولًا، ثم قارن القيم بمعيار معلن؛ نجاح مقارنة عددية تستعمل البث لا يثبت وحده تطابق عقد المخرج.

  • يوثق allclose المقارنة العددية مع البث، فلا يشترط تساوي الشكلين لإرجاع True؛ شكل المخرج شرط مستقل في عقدنا. [1]
  • في مثالنا المتجه [1، 1] شكله (2،)، والعمود [[1]، [1]] شكله (2، 1)؛ قيمهما متشابهة لكن ترتيب الأبعاد مختلف.
  • وفق البث المعتاد يصبح مجال المقارنة (2، 2): أربع مقارنات متساوية في المثال اليدوي، وليس دليلًا على قبول الشكل المطلوب.
  • اكتب هل المطلوب متجه من نتيجتين أم عمود ذو صفين، وافحص الشكل ثم القيم؛ لم نشغل NumPy أو نموذجًا، ولا نعمم على قيم أخرى.

ما الذي يقبله فحص الأرقام؟

توضح NumPy أن allclose يستخدم البث المعتاد، وقد تكون نتيجته True حتى إن اختلف شكلا المدخلين. لذلك ليست هذه الدالة وحدها فحصًا لتطابق الشكل. [1]

نحدد هنا عقدًا لمخرج مهمة: متجه يحمل درجتين، واحدة لكل بطاقة. ليس مجرد وجود رقمين كافيًا لو كان المستهلك التالي يتوقع بُعدًا بعينه. الشكل يصف تنظيم القيم، بينما معيار القرب يصف علاقة عددية بينها.

نراجع التنظيم قبل أن نسأل هل الأرقام قريبة. لا نعيد في هذا المقال حساب مرجع التصدير أو إثبات صحة النموذج؛ السؤال أصغر: هل فحص القيم الذي اخترناه يغطي أيضًا شرط الشكل المعلن؟

ارسم المتجه والعمود منفصلين

نؤلف مخرجًا مرجعيًا [1، 1]، ونصف شكله بأنه (2،): بعد واحد يحوي عنصرين. ونؤلف مخرجًا آخر [[1]، [1]] شكله (2، 1): صفان، وفي كل صف عنصر واحد.

المخرجان يحملان قيمتين تساويان 1 قبل أي بث. لكن وجود البعد الثاني في الآخر حقيقة تنظيمية لم نعلنها في العقد الأول. لا نسميهما الشكل نفسه لأن مجموع العناصر متساوٍ.

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

ما الذي يفعله البث في هذه الحالة؟

في الحساب اليدوي وفق البث المعتاد، يوافق طول المتجه العمود الأخير، ويتوسع البعد المفرد في العمود. يصبح مجال المقارنة صفين وعمودين، أي الشكل (2، 2). القيم المقابلة في الخانات الأربع كلها 1.

لا نعد الخانات الأربع أربع تنبؤات أنتجها النموذج؛ إنها مجال مقارنة نشأ عند مواءمة الشكلين. كانت بطاقة المخرج الأصلي تحتوي عنصرين. لهذا نفرق بين حجم الناتج المسجل ومجال عملية لاحقة عليه.

القيم المتساوية تجعل كل مقارنة هنا ناجحة، لكنها لا تصلح شرط الشكل المخالف لعقد المتجه. ولم ننفذ allclose في بيئة فعلية؛ نقرأ قاعدة موثقة ونبين أثرها على أعداد اخترناها.

كيف تكتب اختبارًا يغطي العقد؟

نقترح بندين واضحين: تحقق أن شكل المخرج هو (2،) كما طلبت المهمة، ثم افحص القيم المرجعية بمعيار عددي اختير مسبقًا. لا تستبدل البند الأول بنتيجة مقارنة تسمح بالبث.

إذا كان عقد آخر يطلب عمودًا من صفين، فاكتب (2، 1) بدل تغيير المعنى بعد ظهور نتيجة. قد يسمح تصميم معلوم بتحويل شكل مقصود؛ عندئذ نسمي التحويل ونحفظ علاقة كل موضع ببطاقته، دون إخفائه داخل كلمة «متطابق».

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

المصادر ومتابعة القراءة

  1. NumPy: numpy.allclose (يفتح في نافذة جديدة)numpy.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.