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

با تشکر

دسته بندی ها

0 امتیاز

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

توسط (219 امتیاز)
ویرایش شده توسط
لینک به مقاله رو هم لطفا قرار بدید
لینک مقاله مورد نظر:
https://arxiv.org/abs/1707.01083

1 پاسخ

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

سلام pointwise group convolution همون group convolutionیی هست که روی کرنلهای با اندازه 1در1 اعمال میشه
pointwise convolution هم اشاره به همون کانولوشن 1در1 داره .
در معماری هایی مثل موبایل نت و... گروپ کانولوشن یا همون depth wise convolution روی کرنل های 1در1 اعمال نمیشدن اینجا اومدن این کارو انجام دادن و اینطور سربار محاسباتی رو بیشتر کاهش دادن

توسط (4.3k امتیاز)
انتخاب شده توسط
سلام
 با توجه به اینکه در کانولوشن بر حسب کانال یا همون depth wise convolution, عملیات کانولوشن در مسیر ابعاد نقشه ویژگی برای هر کدام از کانال ها به صورت مجزا انجام می شود و پیچیدگی محاسباتی برابر با W*H*N*K*K   دارد و در نتیجه تعداد پارامتر ها N*K*K است. با این توصیف تعداد پارامترها باید فقط و فقط N تا شود چون در واقع مقدار K یک شده است . درسته؟
سلام. بله درسته
یه سوال برام پیش اومده . خب اگر این اتفاق بیافته ! چی می شه یک پیکسل مستقما و بدون هیچ تغییری به یک پیکسل در خروجی نگاشت می شه؟خوب این چه کاریه ؟؟ اگر یک کرنل با سایز 1*1 رو روی سه کانال (r,G,B)  اعمال کنیم و روی آن میانگین گیری کنیم تعداد کانال ها را از 3 به 1 تقلیل داده این و تعداد ابعاد کم خواهد شد ولی اگه درست متوجه شده باشم تو ی کانولوشن گروهی نقطه ای یک کرنل با سایز 1*1 رو روی یکی از سه کانال اعمال می کنه ! خب این چه تاثیر مثبتی داره ؟( عمق کانال که تغییری نکرده )
سلام. در مقاله دلیلی نیاوردن که ایده اصلی پشت این کار چیه. صرفا اومدن دیدن قبلیا از کانو 1در1 استفاده نکردن وگفتن خب ما هم تست میکنیم و تست کردن و جواب مناسب رو رگفتن.
 کانو 1در1 دوتا کار انجام میداد 1. ازش میشد برای کاهش یا افزایش ابعاد استفاده کرد. 2. nonelinearity شبکه رو افزایش میداد.  در بحث اول میشد تعداد فیچرهای داده ورودی رو کاهش داد اگر شما فیلترهاتون ازتعداد کانالهای ورودی (تعداد فیچرمپهای ورودی) کمتر بود میشد بحث اول و به همین ترتیب بحث دوم. (ضمنا کانو 1در1 معمولی میانگین نمیگیره از ورودی.)
همون نگاشت شدن که شما فرمایش میکنید از یک فضا به یک فضای جدید هست این حالتی که ما اینجا داریم یک حالت خاص از همین کانو 1در1 معمولی هست که کانال ورودی و خروجی هر دو 1 هست یعنی ما نه افزایش نه کاهش ابعاد داریم. اینجا از خصیصه nonlinearity اون داره استفاده میشه. مثل این میمونه جداگانه هر فیچرمپ رو به یک شبکه عصبی بدیم و خروجی اون رو برای پردازش به لایه های بعدی ارائه کنیم .
در یک واحد شافل نت بعد از اعمال این کار فیچرمپهای بدست اومده شافل میشن و دوباره به یک depth wise convolution ارائه میشن و بعد باز یه کانو 1در1 روی اونها اعمال میشه و ارسال میشه به لایه بعدی
آقای حسن پور خسته نباشید
بنده مقاله مربوط  به شافل نت رو چندین مرتبه خوندم ولی هنوز خیلی برام گنگه از آخرین جوابی که بهم دادی متوجه شدم شما می تونید به بنده کمک کنید . سوالات خودمو رو می پرسم لطفا کمکم کنید .
1-    ببینید شکل شماره دو مقاله در قسمت سوم که واحد شافل نت رو معرفی کرده رو درست متوجه شدم. یک مسیر میانبر داریم و یک مسیر اصلی, در مسیر میانبر فقط یک ادغام کننده میانگیر(ave pooling) با گام 2 قرار داده(stride)، در مسیر اصلی مثلا اگر فرض کنیم تصویر ورودی ما 7*7 با عمق 5 باشد خروجی بلوک اول که یک کانولوشن نقطه ای است یک تصویر 5*5 با عمق یک خواهد بود بعد از نرمالسازی مقادیر این خروجی و عبور آن  از یک تابع غیر خطی ؛ مقادیر این ماتریس بر (shuffel)می خورند(به صورت تصادفی قاطی می شوند) خروجی آن نیز یک ماتریس با سایز 7×7 با عمق یک است سپس کانولوشن گروهی با سایز 3×3 و با طول گام 2 روی آن اعمال می شود که نتیجه یک ماتریس 2×2 خواهد بود که مجددا نرمالسازی شده و بعد از آن یکبار دیگر کانولوشن نقطه ای رو اعمال کرده تا بگفته خودش از لحاظ اندازه با مسیر میانبر انطباق داشته باشه . ولی الان که اینطور نیست میانبر تصویر 5×5 با عمق 3 است در حالیکه مسیر اصلی یک تصویر 2×2 با عمق یک است؟ (فکر کنم مفهوم Gconv چیزه دیگه ای می شه توضیحش بدید)
2-    Concat  یا پیوند زدن به چه مفهومی است؟ یعنی دو خروجی را درون یک ماتریس می ریزد؟
3-    می شه لطفا یه توضیح هم راجع به جدول 1 بدید
3-1- سایز K  چیه؟
3-2- منظورش از اون شماره 2 ،3و 4 ی که جلوی استیج گذاشته چیه؟ اگه منظور طول گام اون کانولوشن عمقی است پس اون طول گامی که توی یک ستون مجزا نوشته چیه ؟
3-3- منظورش از g تعداد کدوم گروهه؟ ایا همون عمق است ؟
4-    ویه سوال دیگه ،این مدل شبکه الان در دسترس هست که بشه فقط با یه تیون کردن و یه سری تغییرات کوچیک روی واحد های شافلش اون رو استفاده کرد؟
لینک مقاله
https://arxiv.org/abs/1707.01083
بسیار ممنون
سلام. وقت شما بخیر. ببخشید من این چند روزه سرم خیلی شلوغ بود فرصت نکردم به ایمیل و سایت سر بزنم و جواب بدم .
----------
سلام اول اجازه بدید از سوال 2 به بعد شروع کنیم بعد برسیم به سوال اول شما:
2- Concat یعنی ادغام کردن این ادغام کردن میتونه در راستای عمق (تعدادکانال) ها باشه میتونه در راستای ابعاد مکانی باشه . دوتا ماتریس رو فرض کنید وقتی کانکت کنیم دوتا رو یا اونا رو پشت سر هم قرا رمیدیم مثلا یکی 10 کانال دیگری 5 کانال داره ماتریس نتیجه میشه ماتریسی با اندازه مکانی دوتا ماتریس قبل  و15 کانال . یا اینکه کانکت در راستای ابعاد مکانی هست در این حالت تعداد کانالها باید یکی باشه .
3-جدول 1 داره بحث گروپ کانولوشن رو توضیح میده . میگه ما کانال های ورودی رو به چند گروه تقسیم میکنیم . (مثلا 3 تا 4 یا 8 تا یا ...) بعد میگه اگه قرار بر این باشه که هر ورودی فقط به یک گروه بره این خوب نیست خصوصا وقتی چندگروه پشت سر هم قرار بگیرن اتفاقی که میوفته اینه که فقط به یک ناحیه خاص از ورودی وصل هستن و اطلاعاتی از بقیه بدست نمیارن برای همین گفتن ما کانال های ورودی رو شافل میکنیم یعنی بصورت رندوم ورودی ها تغییر میکنن تا این مشکل هم برطرف بشه . دوتا تصویر بعدی همین شافل شدن رو نشون میده و پیاده سازی های مختلفش رو
3-1 سایز k منظور همون اندازه کرنل هست
3-2 منظور از g همون گروه بندی هست که بالا عرض کردم .
3-3 نه عمق نیست گروه بندیه ورودی هست . مثلا ورودی شما اگه 100 فیچرمپ یا چنل باشه وقتی گروپ برابر 4 باشه 25 تا فیچرمپ به هر گروه اختصاص داده میشه
4- این رو اطلاع ندارم باید سرچ کنید . تنسورفلو یا پای تورچ یا حتی کراس شاید داشته باشن .
در موردسوال 1 : شکل شماره 2 نحوه ایجاد شافل یونیت رو گفته . گفته شما ماجول رزنت رو بببیند ما کاری که کردیم اول بجای کانو 3در3 از دپس وایز سپربل کانولوشن استفاده کردیم که سربار محاسباتی بیاد پایین . بالا و پاینش هم کانو یک در یک بود باز برای کاهش بیشتر سربار . حالا ما اومدیم برای کاهش بیشتر باز اون کانو یک در یک رو با یک گروپ کانولوشن و یک لایه شافل جایگزین کردیم که بازاین لایه های 1در1 رو محاسباتش رو کم کنیم (یک نکته داره اونم اینکه برای لایه کانولوشن 1در1 دوم (گروپ کانولوشن بقول خودشون ) دیگه لایه شافل نذاشتیم (بالایه بعدش یه شافل هست و اخریه چیزی نیست) دلیلش هم این بود که گفتن تاثیری نداشت  و نخواستیم سربار بیخود بره بالا چون نتیجه همون میشد . در بخش سوم هم گفتن خب حالا اگه تو خود دپس وایز سپربر کسی بخواد از استراید استفاده کنه چی ؟ مثلا استراید 2در2 . گفتن خب ما کاری که میکنیم اینه در لایه اسکیپ (مسیرفرعی) یه پولینگ 2 در2 میزاریم تا ابعاد مکانی که با توجه به اون استرایدی که در مسیر اصلی تو بخش دپس وایز سپربل کانوولشن زدن یکی بشه .  تو اون تصویر سوم هم هیچ اطلاعاتی در مورد گروه نداده که شما فرض کردید توده با عمق 1 میشه. علاوه بر اون اندازه مکانی توده ورودی با کانولوشن 1 در 1 میتونه ثابت بمونه و فرض اینجا هم همینه. یعنی پدینگ صفر و استراید 1 شما در نظر بگیرید توده ورودی شما همونه . که نهایتا میشه مثل مسیر سمپ چپیش
سلام . خب خدمتتون جواب دادم . کامنت قبلی رو ببینید لطفا
سلام ممنونم.با عرض شرمندگی ولی
۱-منظور از کانال همون عمقه؟. اینکه می گه کانال ها رو شافل می کنه یعنی عمقها رو دسته بندی و شافل می کنه؟؟؟؟
من هر چه قدر سعی می کنم نمی تونم مفهوم اعداد درون جدول یک رو بفهمم.
۱-ردیف اول سایز تصویر رو ۲۲۴در۲۲۴ داده با عمق ۳
۲-در ردیف دوم بعد از اعمال یه کرنل ۳در۳ با طول گام ۲ والبته با یک بار انجام ان خروجی ما ابعد ۱۱۲در۱۱۲ پیدا می کنه تا ایمجا درست ولی اون ۲۴ از کجا اومده؟؟؟؟
۳- ردیف سوم maxpool زده با کرنل ۳ در ۳ که جواب شده ۵۶ در۵۶ و اون ۲۴ تغییر نکرده!!!!!
۴-توی ردیف stage2 چه اتفاقی افتاده؟؟؟ یعنی در واقع یه ورودی ۵۶ در ۵۶ وارد یک واحد شافل شده؟؟؟؟(همون شکل دوم قسمتc)
۵-خروجی بلوک شافل ( استج۲)۲۸ در۲۸ بوده که دوباره وارد یه بلوک مشابه شده؟؟؟؟
سلام . بله عمق یک توده مساوی تعداد کانال ها یا تعداد فیچرمپ های اون توده  است . و وقتی صحبت از شافل میکنه منظورش شافل همین فیچرمپهاست.
اون عددها تعداد کانال خروجی هستن . مثلا یک عکس ۳ کانال داره. لایه کانولوشن اول ۲۴ فیچرمپ تولید میکنه
به همین ترتیب در ادامه ۱۴۴ در استیج  ۲ تعداد فیچرمپها رو نشون میده و الی اخر
اون ۲۴ هم تعداد فیچرمپهای اون لایه اس که بالا عرض کردم
ردیف سوم منظور چیه ؟‌همونایی که همه ۲۴ هستن ؟ اونا همه تعداد فیچرمپ ها هستن. بالای هرکدوم از اون ۲۴ ها رو که نگاه کنید میبینید هرکدوم اونا مخصوص یه پیکربندی جداگانه اس. یکی g=1 یکی g=2 و همینطور الی اخر که اخری g=8 هست
بله اونا همه شافل یونیت هستن که پشت سر هم قرار گفتن
بله خروجی اون واحد ۲۸در۲۸ بوده که رفته به یونیت بعدی و الی اخر
نتیجه ای که من گرفتم اینکه اعداد زیر ستونی مثل g=3 که عبارتند از 3,24,240,480و960در واقع تعداد فیلترهایی است که اعمال کرده(این درسته که بگم 24 تا گروه 3 تایی یا باید بگم 3 تا گروه 24 تایی , یا مثلا 240 تا گروه 3 تایی یا 3 تا گروه 240 تایی) و البته در مورد  چرایی و چگونگی (بر چه اساسی) انتخاب این تعداد فیلترحرفی زده نشده است . درسته؟
نه گروه شما مشخص هست . ۳ تا ست . اما ورودی اونها تقسیم میشن . مثلا ۲۴ تا بین سه گروه تقسیم بشه ۸ تا کانال ورودی به هر گروه وارد میشه . بقیه هم به همین شکل.
شما بخش 3.3 Network Architecture رو بخونید مشخص هست کاملا فیلترهای هر لایه رو دو برابر لایه قبلی انتخاب کرده. تقلید از resnet کرده و در ادامه هم خودشم توضیح داده اونجا که داستان چیه
...