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

با تشکر

دسته بندی ها

0 امتیاز

سلام عرض ادب
دوستانی که بیشتر با معماری های دیپ آشنا هستید بنظرتون چرا لایه های تمام اتصال رو در بخش طبقه بندی با لایه های کانالوشن عوض نمیکنند چرا اینکار صورت نمیگیرد ؟ وقتی مزیت هایی که کانالوشن در برای تمام اتصال ها دارد بخصوص در معماری های دتکشن لایه های تمام اتصال نسبت به تسک کلاسیفیکیشن زیاد هست چرا اینها رو تغییر نمیدهند؟

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

3 پاسخ

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

ابتدا بایستی این نکته رو بگم که لایه تماما متصل دقیقا معادل یک لایه کانولوشن با اندازه فیلتر ۱×۱ هست .

خروجی لایه های کانولوشن نشان دهنده ویژگی های سطح بالا در داده ها هست ، به عبارت ساده هدف لایه های کانولوشن در پردازش عکس ساختن ویژگی ها از داده های خام هست ، اونها به دنبال اشیا موجود در عکس می‌کردند اما هیچ تصمیم گیری در مورد طبقه بندی انجام نمیدن . فلت کردن این ویژگی ها در انتهای شبکه و اتصال آنها به یکی دو لایه تماما متصل معمولا یک روش ارزان «از لحاظ بار محاسباتی» برای یادگیری ترکیبات غیر خطی این ویژگی ها هست .

ایده تبدیل لایه عایق تماما متصل به لایه کانولوشن شاید برای اولین بار در مقاله NIN مطرح شد . در معماری VGG تعداد پارامتر ها 133 میلیون است که بیش از 90 درصد این پارامتر ها در دو لایه تماما متصل این مدل قرار گرفته اند . این لایه ها عموما باعث بیش بر ارزش شدن شبکه میشوند . در NIN، Min Lin و همکارانش به جای استفاده از لایه های سنتی تماما متصل لایه از global average pooling استفاده کردند.

در این مقاله به جای استفاده از لایه تماما متصل سنتی آنها روشی به نام global average pooling را پیشنهاد دادند ، در شبکه هایی که از لایه تماما متصل برای کلاسهای بندی استفاده میکنند خروجی feature maps بعد از الحاق به یکدیگر به sofmax داده میشوند اما در این روش به ازای هر کلاس یک feature map بعد از آخرین لایه mlpcov تولید می‌شود به جای اضافه کردن یک لایه تماما متصل در بالای feature map ها آنها از feature map ها سود می‌برند و نتایج بردار ویژگی مستقیما به softmax داده میشوند . یکی از ویژگی هایش این لایه نبودن مشکل بیش بر ارزش به علت عدم وجود پارامتری برای بهینه سازی است و از طرفی این لایه نسبت به تغییرات محلی مقاوم تر و با اصل شبکه هایش کانولوشن سازگارتر است.

قبلاً در این لینک توضیحات دادم :

بایستی گفت تنها تفاوت بین یک لایه تماما متصل و لایه کانولوشن اسپارسیتی کانکشن ها و اشتراک پارامترهاست ، هر چند نرون ها در هر دو لایه ضرب نقطه‌ای رو محاسبه می‌کنند ، پس فرم تابعی اونها یکسان هست .

جزییات بیشتر :

توسط (415 امتیاز)
انتخاب شده توسط
+1 امتیاز

سلام
برای اهداف بازشناسی اشیا و اهدافی از این قبیل که در نهایت به یک برچسب نیاز دارند در انتهای شبکه به یک لایه‌ای نیازمندیم که هم بتواند کل فضای ورودی را ببیند و هم یک خروجی یکه ایجاد کند. (ملاحظه کنید که یک تصویر دو بعدی در نهایت باید به خروجی یک نورون تبدل شود) پس لایه‌های تمام اتصال مناسب به نظر میرسند البته از هر نوع کلاسیفایر دیگری هم میشه استفاده کرد اما در اینجا به دلیل الگوریتم موجود برای آموزش، این کلاسیفایر مناسبتر است.
همچنین برای اهداف تقسیم‌بندی تصویر (segmentation) می‌توان لایه کلاسیفایر را حذف کرد.

توسط (125 امتیاز)
سلام
فرقی نداره فرضا من لایه تمام اتصال دارم 4096 نرون داره این رو میشه با کانالوشن 1*1 و 4096 کرنل تغییر داد خوبی که این روش داره این هست اگر در زمان تست به تصویر بزرگتر برخورد کردیم اینجا از نظر sharing computation مزیت خوبی حساب میشود و استنباط خودم این هست زمان تریننیگ با تمام اتصال احتمالا کاهش پیدا میکند
+1 امتیاز

سلام
منظور شما اینه که چرا در انتهای شبکه ها چندتا لایه fc وجود داره ؟ یا اینکه چرا لایه ماقبل از سافتمکس یه لایه fc یه ؟
اگر اولیه که الان اکثرا(اگر نه همه) معماری ها اینکار رو نمیکنن و این در معماری های قبل وجود داره حتی این معماری ها هم الان اگر بخوان استفاده بشن بعضی ها تبدیل رو انجام میدن تا سربار رو کاهش بدن.
اگر منظور شما بخش دوم باشه، اون هم انجام شده و میشه اما شاید زیاد رایج نباشه . بطور کلی الان برای اینکه fc رو بردارن و اصطلاحا یک شبکه فولی کانولوشنال داشته باشن از یک لایه global pooling (مکس یا اورج (عموما اورج ) ) استفاده میکنن که تعدد فیچرمپهاش برابر با تعداد دسته هاست و بعد خروجی رو میدن به سافتمکس .
اینکه چرا تغییر نمیدن در بعضی شبکه ها دیگه بر میگرده به اینتویشن طراح شبکه که داره چطوری نگاه میکنه به مساله یکی میگه من با گلوبال پولینگی که میزنم اینطور نگاه میکنم که هر فیچرمپ نمایانگر یک کلاس باشه و از طرفی چون پارامتر قابل یادگیری نداره بعنوان نوعی رگیولایزر عمل کنه و باز علاوه بر اینها بخاطر اینکه اطلاعات مکانی در هر فیچرمپ رو جمع میکنه نسبت به تغییرات مکانی در ورودی کمتر تاثیر میپذیره و این بهتره یکی میگه نه من خودم میخوام یک سطح پردازشی دیگه داشته باشم
و این اینتویشن رو قبول ندارم (در عمل برای من اینطور عمل نمیکنه یا اینکه خلاف این مسیر نتیجه بهتری ارائه میکنه).
من خودم جزو این دسته دوم هستم چون در عمل اون اینتویشن اولیه رو کارامد ندیدم تو کارهای خودم .
برای خیلی از کاربردها هم اون لایه اگر فولی کانتکد هم باشه حذف میشه و کلا فرقی نداره باز شما هر چیزی مد نظرتون باشه میتونید داشته باشید چون ماقبل اون لایه فولی کانکتد یک فیچرمپ وجود داره که دست شما رو باز میزاره .

توسط (4.3k امتیاز)
...