تقنية

بُعد مدخل ديناميكي: هل يحرر بقية الأبعاد من العقد؟

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

البعد الديناميكي وشروط المدخل يمكن أن يتعايشا في عقد واحد. يتيح torch.export تعريف أبعاد مسماة لها حدود وعلاقات، مع أبعاد أخرى ثابتة. [1] كلمة «ديناميكي» لا تزيل هذه الشروط.

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

لا؛ التغير يخص الأبعاد التي عينتها وشروطها، بينما تبقى الأبعاد الثابتة والمدى والعلاقات بين المدخلات جزءا من العقد.

  • الأبعاد المسماة في torch.export تسمح بحدين وعلاقات خطية وأبعاد ثابتة؛ وقد ترفع مخالفة القيود خطأ أثناء التتبع. [1]
  • عقدنا اليدوي لمدخلين: لكل منهما 3 أعمدة وN صفوف، وN عدد صحيح من 2 إلى 6 شاملًا؛ الرمز نفسه يلزم تساوي عدد الصفوف.
  • صفوف 4 مع 4 وثلاثة أعمدة لكل مدخل توافق هذا الفحص؛ صفوف 4 مع 5 تخالف المشاركة، و 7 مع 7 تخالف الحد الأعلى.
  • تبديل عدد الأعمدة إلى 4 أو إضافة محور لا يبرره تغير N. اجتياز ورقتنا لا يثبت قبول export أو صحة النموذج؛ لم نصدر برنامجا.

ما الذي يصفه الرمز المسمى؟

يعرض دليل torch.export أبعادا مسماة ذات مدى وعلاقات خطية، مع أبعاد ثابتة في المدخل نفسه. وقد يرفع ConstraintViolation إذا خالفت قيود التتبع الوصف المعلن. [1]

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

عندما تقرأ مواصفة، اسأل ما الذي عُيّن تحديدا: هذا المحور أم كل المحاور؟ وما المدى؟ وهل يوجد رمز مشترك؟ هذه أسئلة مستقلة؛ إغفال واحد منها يجعل وصف «الشكل متغير» أقل دقة مما يحتاجه المراجع.

اكتب عقدا يمكن فحصه يدويا

نؤلف مدخلين س وص، كلاهما جدول ثنائي الأبعاد. لكل منهما ثلاثة أعمدة ثابتة، وعدد الصفوف N عدد صحيح محصور بين 2 و 6، والحدان داخل المجال. نعلن استعمال N نفسه في الاثنين، لا رمزين مستقلين.

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

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

ثلاث حالات تفصل الشروط

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

بطاقة ب تعطي صفوف س 4 وصفوف ص 5، مع الأعمدة نفسها. يقع كلا العددين داخل المدى، لكنهما غير متساويين، فتخالف البطاقة المشاركة. لو اكتفينا بفحص الحد الأدنى والأعلى لأضعنا هذا الشرط.

بطاقة ج تعطي 7 صفوف في الاثنين. تحافظ على المساواة، لكنها تتجاوز الحد الأعلى 6. لا تصلح المساواة مخالفة المدى. يبين الفصل لماذا نراجع قائمة شروط بدل وضع علامة قبول عامة بناء على شرط واحد.

ما الذي لم يصبح ديناميكيا؟

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

لا نستنتج قبول أي من البطاقتين من مرونة N. كذلك قد تمر بطاقة أ بفحص الأشكال اليدوي بينما تبقى القيم أو نوعها أو بقية قيود البرنامج غير مفحوصة. نطاق ما راجعناه هو هذا العقد المحدد.

الرسم يجمع حد N ومحور الأعمدة والمشاركة لتفسير الفحص. لم ننفذ export أو نجمع برنامجا أو نراجع إعادة تجميع. احفظ كل محور وعلاقاته، ثم افصل موافقة الشكل لما كتبته عن قبول أداة فعلية ونجاح المهمة.

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

  1. PyTorch: torch.export Tutorial — Named Dims (يفتح في نافذة جديدة)docs.pytorch.org

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