خطوات الاستخدام
الخطوة 1: فهم المدخلات - inChannels و outChannels و kernelSize. inChannels هو عدد قنوات الإدخال (مثل 3 لصور RGB، أو 64 لطبقة من ResNet). outChannels هو عدد قنوات الإخراج (مرشحات الالتفاف). kernelSize هو حجم نواة الالتفاف (عادة 3×3 أو 1×1). هذه القيم تحدد عدد المعلمات في كل طبقة التفافية. كل معلمة تمثل وزناً قابلاً للتعلم يساعد الشبكة في استخراج الميزات.
الخطوة 2: حساب معلمات الطبقة الالتفافية الأولى. تحتوي الطبقة الأولى على مرشحات عددها outChannels، كل مرشح بحجم kernelSize × kernelSize × inChannels. لذا عدد الأوزان = kernelSize² × inChannels × outChannels. بالإضافة إلى انحياز (bias) لكل مرشح، وهو outChannels. وبالتالي معلمات الطبقة الأولى = (kernelSize² × inChannels × outChannels) + outChannels.
الخطوة 3: حساب معلمات الطبقة الالتفافية الثانية. الطبقة الثانية تأخذ outChannels كمدخل (لأن الطبقة الأولى تخرج outChannels) وتنتج outChannels أيضاً. لذا عدد الأوزان = kernelSize² × outChannels × outChannels، والانحيازات = outChannels. إجمالي الطبقة الثانية = (kernelSize² × outChannels²) + outChannels.
الخطوة 4: جمع المعلمات وإضافة معلمات الاختصار (اختياري). المعلمات الكلية للكتلة المتبقية الأساسية = معلمات الطبقة الأولى + معلمات الطبقة الثانية = kernelSize² × outChannels × (inChannels + outChannels) + 2 × outChannels. إذا تم استخدام اختصار إسقاط (projection shortcut) مثل التفاف 1×1 لتغيير الأبعاد، فيجب إضافة معلماته: (1×1 × inChannels × outChannels) + outChannels. لكن في معظم كتل ResNet القياسية (مثل ResNet-34) لا يوجد اختصار إسقاط إلا عند تغيير عدد القنوات، وعندها يتم إضافته.
أمثلة محلولة
تطبيقات عملية على معاملات الكتلة المتبقية بخطوات الحل كاملة.
الحل
لدينا inChannels = 64، outChannels = 64، kernelSize = 3. باستخدام الصيغة: ك = 3² = 9. معلمات الطبقة الأولى = (9 × 64 × 64) + 64 = 36864 + 64 = 36928. الطبقة الثانية = (9 × 64 × 64) + 64 = 36928. المجموع = 36928 + 36928 = 73856 معلمة. بدون أي اختصار إسقاط لأن الأبعاد متطابقة. هذا العدد يمثل حوالي 0.07 مليون معلمة فقط، مما يفسر كفاءة ResNet-34 حيث يبلغ عدد معلمات الشبكة الكلية حوالي 21 مليوناً.
الحل
لدينا inChannels = 256، outChannels = 512، kernelSize = 3. معلمات الطبقة الأولى (التفاف 3×3 من 256 إلى 512): (9 × 256 × 512) + 512 = 9 × 131072 + 512 = 1,179,648 + 512 = 1,180,160. الطبقة الثانية (التفاف 3×3 من 512 إلى 512): (9 × 512 × 512) + 512 = 9 × 262,144 + 512 = 2,359,296 + 512 = 2,359,808. المجموع بدون اختصار = 1,180,160 + 2,359,808 = 3,539,968. ولكن لأن inChannels ≠ outChannels، نضيف اختصار إسقاط (التفاف 1×1): (1 × 256 × 512) + 512 = 131,072 + 512 = 131,584. إذن الإجمالي = 3,539,968 + 131,584 = 3,671,552 معلمة. هذا مثال عملي على كتلة في المراحل العميقة من ResNet.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة معاملات الكتلة المتبقية.
مثال 1: كتلة ResNet-34 (64→64، نواة 3) = 73,856 معلمًا
- قنوات الإدخال
- 64
- قنوات الإخراج
- 64
- حجم النواة
- 3
مثال 2: كتلة انتقال 256→512 = 3,671,552 مع اختصار 1×1
- قنوات الإدخال
- 256
- قنوات الإخراج
- 512
- حجم النواة
- 3
كتلة 64→128: 229,760 معلمًا و8,320 للاختصار
- قنوات الإدخال
- 64
- قنوات الإخراج
- 128
- حجم النواة
- 3
كتلة من 3 إلى 64 قناة: 38,976 معلمًا
- قنوات الإدخال
- 3
- قنوات الإخراج
- 64
- حجم النواة
- 3
نواة 1×1: 8,320 معلمًا (8,192 وزنًا + 128 انحيازًا)
- قنوات الإدخال
- 64
- قنوات الإخراج
- 64
- حجم النواة
- 1