به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

سلام و وقت بخیر
و تشکر از زحمات تمامی دوستان
لطفا پیرامون معماری Mobilenet و نحوه کار آن به زبان ساده، اگر اطلاعاتی دارید در اختیار بنده قرار دهید.

باتشکر

توسط (219 امتیاز)

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

سلام
موبایل نت یکی از جدیدترین معماری های این حوزه اس که دقتی در حد vgg16 ارائه میکنه با 4.5 میلیون پارامتر و 28 لایه کانولوشن . البته ورژنهای مختلفی داره که با پارامترهای الفا و فی بدست میاد. یکی برای تنظیم عرض شبکه و دیگری هم رزولوشن ورودی شبکه اس(اندازه توده ورودی چقدر باشه).
نکته جالب توجهی که این مقاله بهش پرداخته بحث depth wise seperable convolution و point wise convolution هست.
ایده هم ایده خیلی ساده و در عین حال جالبیه که البته قبلا هم پرداخته شده بود بهش اما این مقاله خیلی خوب بهش پرداخت و خروجی خیلی خوبی هم گرفت.
بطور خلاصه دراین معماری اومدن هر لایه کانولوشن رو با دو لایه کانولوشن پیاده سازی کردن. در حالت معمول یک لایه کانولوشن عمل فیلترینگ و بعد تجمیع فیچرمپها رو به تنهایی انجام میده . اینجا کاری که کردن این بوده گفتن ما اول میاییم هر فیلتر کانولوشن رو فقط روی هر فیچرمپ به تنهایی اعمال میکنیم . مثلا فرض کنید توده ورودی شما 20 فیچرمپ داره. اگه شما از کانولوشن معمولی استفاده کنید اول فیلتر روی هرکدوم از این 20تا اعمال میشه و بعد نتایج با هم تجمیع میشن و خروجی میشه یه فیچرمپ.
در اینجا لایه کانولوشن با 20تا فیچرمپ اعمال میشه . 20 تا فیچرمپ حاصل میشه(به این میگن depthwise seperable convolution یا depthwise convolution). این 20 تا از لایه Batchnormalization و relu میگذرن و بعدش توسط یک لایه کانولوشن 1x1 باهم تجمیع میشن (به این میگن poinwise convolution ).
با این کار بشدت از تعداد پارامترها کاسته میشه و از طرفی چون کانولوشن 1در1 رو میشه از طریق GEMM بصورت بهینه ای پیاده سازی کرد و باز چون 75% تمامی پارامترها در همین لایه های کانولوشن 1در1 وجود دارن تعداد عملیات محاساباتی هم بشدت کاهش پیدا میکنه .
این دوتا رو بزارید کنار هم و شما با یک معماری سبک از نظر تعداد پارامتر و محاسبات اعشاری مواجه میشید .

بحث چرایی کاهش تعداد پارامتر ها رو هم من دیگه نیاوردم چون بخوبی تو خود مقاله اومده . همون 3 4 تا رابطه اول رو ببینید مشخصه

توسط (4.3k امتیاز)
انتخاب شده توسط
سلام
تعداد سطرهای جدول رو هم که می شمارم 21 سطره تازه اگه یکی از سطرها رو هم معادل 10 لایه در نظر بگریم که می شه 31 . آیا بعضی از سطر ها را به عنوان لایه در نظر نمی گیرد ؟
سلام . بله همینطوره.
سطر 14 ام نوشته شده 5x و دوتا لایه یکی معرف depth wise و دیگری point wise در یک بلاک قرار داده شده یعنی این بلاک 5 بار تکرار میشه (5 تا دوتا لایه میشه کلا 10 لایه) .
در مقاله تعداد لایه های کانولوشن مطرح شده که اگر حساب کنید میبینید دقیقا 28 لایه به این شکل وجود داره (لایه کانولوشن )
لایه pooling و لایه fcو سافتمکس هم کلا برای دسته بندی هستند و حساب نمیشن. 31 - 3 = 28
همون پس ، اگر 3 لایه آخر رو در نظر نگیریم درست می شه .
بسیار ممنون
...