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

PyTorch / حالة التدريب وواجهات المعمارية / الدرس 9

الالتفاف وتخطيط الأبعاد المكانية

صرح باصطلاح قنوات PyTorch واتصال النواة والمحاذاة المكانية.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • قراءة أبعاد مدخل Conv2d ووزنه بصورة صحيحة.
  • تمييز ترتيب المحاور المنطقي من صيغة ذاكرة القنوات أخيراً.
  • حساب هندسة الخرج وفحص استجابة محلية ثابتة.

تصف الأبعاد المنطقية الواجهة

تقبل Conv2d في الحالة المجمعة هنا الشكل المنطقي (N,Cin,H,W)، وتعيد (N,Cout,Hout,Wout). لوزن الموتر أبعاد قناة خرج وقنوات مدخل متصلة ونواة وفق قاعدة groups الموثقة. قد يحفظ نقل محور قناة إلى محور صورة عدد العناصر ويغير العملية بالكامل. سجل معنى كل قناة وكيف لائم تطبيع المدخل. تغير صيغة channels_last خطوات التخزين لموتر منطقي NCHW؛ ولا تسمح بتمرير NHWC اعتباطي إلى واجهة تتوقع NCHW. افصل دلالات التخطيط عن تحسين التخزين.

تجعل النواة الثابتة الفهرسة قابلة للفحص

يقدم البرنامج التوضيحي صورة واحدة وقناة واحدة ونواة اثنين في اثنين مسندة صراحة. تستخدم Conv2d فهرسة الارتباط المتقاطع، فتكون أول استجابة واحداً ناقص خمسة، لا نتيجة عكس النواة. تعطي النوافذ الصالحة الأربع سالب أربعة. شكل الخرج (1,1,2,2)، ويعطي التجميع الأقصى على الاستجابة كلها قيمة واحدة بشكل (1,1,1,1). تزيل الأوزان الصريحة عدم يقين التهيئة. يبين المثال المؤثر المحلي الموثق دون تدريب نموذج صور أو الادعاء بكشف النواة جسماً حقيقياً ذا معنى.

python برنامج توضيحي للمعالج المركزي وفق وثائق PyTorch 2.14؛ لم تتوفر torch والخرج المتوقع مشتق
import torch
from torch import nn
x = torch.tensor([[[[1.0,2.0,3.0],[4.0,5.0,6.0],[7.0,8.0,9.0]]]],dtype=torch.float64,device="cpu")
layer = nn.Conv2d(1,1,kernel_size=2,bias=False,dtype=torch.float64,device="cpu")
with torch.no_grad():
    layer.weight.copy_(torch.tensor([[[[1.0,0.0],[0.0,-1.0]]]],dtype=torch.float64,device="cpu"))
y = layer(x)
pooled = nn.MaxPool2d(kernel_size=2)(y)
print("convolution shape", tuple(y.shape))
print("response", y[0,0].tolist())
print("pool shape", tuple(pooled.shape), "value", pooled.item())
الناتج المتوقع
convolution shape (1, 1, 2, 2)
response [[-4.0, -4.0], [-4.0, -4.0]]
pool shape (1, 1, 1, 1) value -4.0

تتبع نواة Conv2d الثابتة فهرسة الارتباط المتقاطع ولا تعكس. مخارج الالتفاف والتجميع على CPU توقعات مشتقة لا نوى منفذة.

تشمل الهندسة الحشو والخطوة والتمدد

في اصطلاح محور قياسي يقرب إلى الأسفل يكون طول الخرج floor((N+2P-D(K-1)-1)/S)+1. يفحص المرافق مثال حشو وخطوة والاستجابة المحسوبة يدوياً. تحتاج أوضاع الحشو المسماة والحدود غير المتماثلة وceil_mode في التجميع قواعدها الموثقة الخاصة. تحقق من إحداثيات المدخل المؤثرة في كل خرج، لا حجمه النهائي فقط. قد ينزاح هدف تنبؤ كثيف عن الخرج رغم تطابق الأبعاد. استخدم شبكة مرقمة أو مثال نبضة لكشف المحاذاة وسلوك الحدود قبل الثقة بنتيجة معقولة تشبه صورة.

python مثال مرافق حتمي بالمكتبة القياسية نُفذ فعلياً
image = [[1.0,2.0,3.0],[4.0,5.0,6.0],[7.0,8.0,9.0]]
kernel = [[1.0,0.0],[0.0,-1.0]]
response = [[sum(image[i+a][j+b]*kernel[a][b] for a in range(2) for b in range(2))
             for j in range(2)] for i in range(2)]
def size(n,k,p=0,s=1,d=1):
    return (n+2*p-d*(k-1)-1)//s+1
print("response", response)
print("padded stride size", size(7,3,p=1,s=2))
print("kernel weights", 1*1*2*2)
الناتج المتوقع
response [[-4.0, -4.0], [-4.0, -4.0]]
padded stride size 4
kernel weights 4

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

تغير المجموعات اتصال القنوات وعدد المعاملات

عند groups=1 تجمع كل قناة خرج جميع قنوات المدخل عبر نواة مكانية. يقسم الالتفاف المجمع الاتصال، ويجب أن تحقق أعداد قنوات المدخل والخرج شروط القسمة الموثقة. يتبع عدد المعاملات الاتصالات الفعلية والانحيازات الاختيارية، لا حجم الدفعة أو عرض الصورة. تقلل عمليات التجميع والخطوات الكبيرة الدقة وقد تفقد بنى صغيرة تحتاجها المهمة. يصف حقل استقبال نظري أكبر مدى اعتماد ممكناً، لا تفسيراً مقاساً لما تستخدمه الأوزان المدربة. قارن متطلبات المهمة والتقييم قبل اختيار نمط خفض الدقة.

افحص حد الوحدة كاملاً

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

الأخطاء الشائعة وإصلاحها

أنتج موتر صحيح عدد العناصر التفافاً غير متعلق

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

أعطى الحساب اليدوي استجابة محلية معكوسة الإشارة

لماذا يحدث؟
عكس النواة بينما استخدمت Conv2d الارتباط المتقاطع.
كيف تصلحه؟
وحّد اصطلاح المؤثر قبل مقارنة القيم.
كيف تتجنب تكراره؟
استخدم نواة غير متماثلة على شبكة مرقمة.

خلط التسطيح المشاهدات

لماذا يحدث؟
أُدرج محور الدفعة في تسطيح السمات.
كيف تصلحه؟
احفظ محور المشاهدة واحسب عرض مدخل الرأس صراحة.
كيف تتجنب تكراره؟
افحص شكل الخرج وهويته لمثالين مختلفين على الأقل.

اختبر فهمك

1. احسب معاملات Conv2d بثلاث قنوات مدخل وقناتي خرج ونواة 3 في 3 وgroups=1 مع انحيازات.

اعرض الحل المشروح

لكل قناة خرج ثلاثة في تسعة أوزان، أي سبعة وعشرون، وانحياز واحد. لذلك لقناتين 2*(27+1)=56 معاملاً. لا يغير حجم الدفعة أو أبعاد الصورة العدد، لكنهما يغيران تخزين التنشيطات والحساب.

2. لماذا لا تعني channels_last تحول الشكل المنطقي إلى (N,H,W,C)؟

اعرض الحل المشروح

تخص صيغة الذاكرة خطوات الوصول والتخزين الفعلي مع احتفاظ الموتر بعقد محاوره المنطقي. تظل واجهة Conv2d المجمعة تفسر الأبعاد N,C,H,W. التبديل إلى NHWC عملية أخرى يجب أن تطابق مستهلكاً يتوقع تلك الواجهة فعلاً.

أهم ما تعلمته

  • المحاور المنطقية وصيغة الذاكرة عقدان مختلفان.
  • تحتاج الفهرسة المحلية والإحداثيات المكانية أمثلة صريحة.
  • حلل الاتصال والهندسة وفقد معلومات المهمة بصورة مستقلة.

المراجع الرسمية