راه
۶ کیو· متوسطمتوسطPYTHON۴ ثانیه · ۲۵۶ مگابایت

شکل‌ها و پارامترهای یک CNN

یک شبکه‌ی کانولوشنی به‌صورت جدولی از لایه‌ها داده می‌شود؛ هر سطر [نوع, خروجی, k, s, p]:

  • نوع 0: nn.Conv2d با خروجی فیلتر، هسته‌ی k×kk \times k، گام ss و حاشیه‌ی pp. پارامترها: خروجی×(Ck2+1)\text{خروجی} \times (C k^2 + 1) با CC کانال ورودی.
  • نوع 1: nn.MaxPool2d(k, stride=s)؛ ستون خروجی بی‌استفاده است. پارامتر ندارد و تعداد کانال‌ها را عوض نمی‌کند.
  • نوع 2: لایه‌ی کاملاً متصل با خروجی واحد. اگر ورودی‌اش هنوز سه‌بعدی است، اول صاف می‌شود (C×H×WC \times H \times W ورودی). پارامترها: خروجی×(ورودی+1)\text{خروجی} \times (\text{ورودی} + 1).

برای کانولوشن و ادغام، اندازه‌ی هر محور مکانی ⌊(n+2p−k)/s⌋+1\lfloor (n + 2p - k)/s \rfloor + 1 است (برای ادغام p=0p = 0).

تابع cnn_shapes(input_shape, layers) با input_shape = [C,H,W][C, H, W]، شکل خروجی هر لایه را به‌صورت سه عدد [C,H,W][C, H, W] پشت‌سرهم می‌گذارد — برای لایه‌ی کاملاً متصل [خروجی,1,1][\text{خروجی}, 1, 1] — و در آخر تعداد کل پارامترهای شبکه را.

یکی از ورودی‌ها همان شبکه‌ی کتاب ISLP برای CIFAR100 است: چهار بلوک کانولوشن ۳ در ۳ و ادغام، و دو لایه‌ی کاملاً متصل.

نمونه‌ها

ورودی نمونه ۱
[[1, 28, 28], [[0, 6, 5, 1, 2], [1, 0, 2, 2, 0], [0, 16, 5, 1, 0], [1, 0, 2, 2, 0], [2, 120, 0, 0, 0], [2, 84, 0, 0, 0], [2, 10, 0, 0, 0]]]
خروجی نمونه ۱
[6.0, 28.0, 28.0, 6.0, 14.0, 14.0, 16.0, 10.0, 10.0, 16.0, 5.0, 5.0, 120.0, 1.0, 1.0, 84.0, 1.0, 1.0, 10.0, 1.0, 1.0, 61706.0]

برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.

ورود