PyTorch / دليل حلول تحريري
تتبع أخطاء الشكل والبث وأقنعة الانتباه
افحص الأبعاد غير المختزلة والاعتمادات المسموحة قبل الثقة بخسارة مفردة أو خرج انتباه معقول.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
تكون الخسارة منتهية لكنها كبيرة دون توقع، أو يغير الحشو التنبؤات الصالحة، أو يبدو استعلام سابق متأثراً بقيم مستقبلية. احفظ معنى محاور الموتر وشكل الهدف ونوع القناع وشكله واسم الواجهة ووضع الوحدة والتدرج قبل استبدال الخسارة أو المعمارية.
افهم الأسباب المحتملة
- قد يبث متجه هدف مقابل عمود تنبؤ إلى أخطاء بين كل الأزواج، أو يختلط محور دفعة بتسلسل، أو يستخدم القناع المنطقي اصطلاحاً معكوساً للواجهة المستقبلة. قد يؤثر الحشو في التمثيلات أيضاً قبل تطبيق قناع على الخسارة وحدها. هذه عيوب معلومات ومحاذاة منفصلة.
1. اكتب عقد المحاور والهدف الكامل
حدد معنى كل بعد عند حدود المجموعة والتجميع والوحدة والتنبؤ والخسارة غير المختزلة. استخدم مثالاً غير مربع وهويات مشاهدات مميزة حتى يظهر نقل أو جمع بين الأمثلة. ميز محور الفئة من محور المثال للخسارة الفهرسية وتحقق من نوع الوسم وخريطته. اطلب للانحدار شكل تنبؤ وهدف مزدوجين مقصودين صراحة. لا تستنتج صحة الاقتران من متوسط مفرد؛ فقد يمحو التجميع دليلاً على محور إضافي. افحص القيم المعلومة والهوية إلى جانب الأبعاد.
2. قارن الحساب المزدوج والموسع مستقلاً
يعطي المرافق تنبؤات وأهدافاً متطابقة، لذلك متوسط المربع المزدوج المشروع صفر. أما مصفوفة كل أزواج التنبؤ والهدف فمتوسطها 1.333333. قد يقع الاختلاف مع كون الحسابين منتهيين ولهما خرج عددي معقول. افحص في إعادة PyTorch مدعومة الموتر غير المختزل والعملية التي أدخلت المحور الإضافي. حاذ الشكل المقصود بدلاً من إعادة تشكيل عمياء حتى يختفي تحذير. أظهر أوزان الفئات والأهداف المتجاهلة والأطوال الصالحة وسياسة المقام عند فحص الاختزال الناتج.
predictions, targets = [1.0,2.0,3.0], [1.0,2.0,3.0]
paired = [(a-b)**2 for a,b in zip(predictions,targets)]
pairwise = [[(a-b)**2 for b in targets] for a in predictions]
blocked = [[j>i for j in range(3)] for i in range(3)]
wrong_direct = [j for j,value in enumerate(blocked[0]) if value]
converted = [j for j,value in enumerate(blocked[0]) if not value]
print(f"paired mean={sum(paired)/len(paired):.6f}")
print(f"pairwise mean={sum(map(sum,pairwise))/9:.6f}")
print("wrong direct first keys", wrong_direct)
print("converted first keys", converted)
paired mean=0.000000
pairwise mean=1.333333
wrong direct first keys [1, 2]
converted first keys [0]
تكشف القوائم فشلين دلاليين مختلفين: أخطاء كل الأزواج بدلاً من المزدوجة، ومجموعة سماح معكوسة. ولا ينفذ بث موتر أو وحدة انتباه.
3. عد مواضع الانتباه المسموحة
سم الواجهة الدقيقة. تعني True في attn_mask المنطقي لـMultiheadAttention مواضع محجوبة، وفي scaled_dot_product_attention المباشرة مواضع مشاركة. يسمح أول صف حجب في المثال بالمفتاحين المستقبليين واحد واثنين خطأً إذا مرر دون تغيير للقاعدة المباشرة؛ ويتيح العكس المفتاح صفر وحده. للأقنعة العائمة دلالات إضافة درجات ولا تعكس كأقنعة منطقية اعتباطية. تحقق من شكل البث وأي دمج لقناع الحشو منفصلين. لا يحدد قناع المفتاح تلقائياً خرج استعلام غير صالح أو أهليته للخسارة، وتحتاج كل مفاتيح مستبعدة سياسة مدعومة صريحة.
4. أعد اختبار الحشو والوضع وتدفق المعلومات
قارن البادئة الصالحة نفسها بأطوال حشو وقيم مختلفة، وغير قيم مستقبل يجب ألا تؤثر في خرج سببي سابق. افحص تخطيط الوحدة والدالة، ومنها أبعاد الرؤوس ونطاق batch_first. يتبع إسقاط الانتباه المباشر dropout_p، فلا تكفي eval على الوحدة المحيطة إلا إذا غير غلافها الوسيط كما ينبغي. احفظ أول حد محور أو اعتماد أصلح كمثال تراجع. أعد تقييم الحساب المتأثر كله؛ فلا يثبت قناع مصحح بأثر رجعي تقريراً سابقاً نتج من سياق مستقبلي متسرب.
تحقق من نجاح الإصلاح
يتطلب التحقق الشكل غير المختزل المقصود وأهدافاً محاذية للهوية ومقاماً معلناً ومجموعات استعلام ومفتاح مسموحة وفق الواجهة الدقيقة. نُفذ حساب القوائم المعطى فقط؛ ولم ينفذ بث موتر أو دالة خسارة أو توسعة قناع أو نواة انتباه أو نموذج أو فحص بيئة PyTorch.
امنع تكرار المشكلة
- احفظ أمثلة شكل غير متماثل وقيم سلسلة مميزة وقطبية قناع صريحة وأطوالاً صالحة غير متساوية في فحوص المكونات. أصدر عقود الخسارة والمعلومات، وافصل الصحة العددية عن سياق التنبؤ المشروع زمنياً وجودة النموذج الخارجية.