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

با تشکر

دسته بندی ها

0 امتیاز

عرض ادب خدمت اساتید محترم
بنده در نظر دارم شبکه کانولوشن معمولی رو از پایه و با در نظر گرفتن فراپارامترهای متداول طراحی کنم و آموزش بدم. در این راه تعدادی سوال برام پیش اومده که هر کدوم رو در قالب سوال های مجزا مطرح کردم.
در نظر دارم با یک لایه کانولوشن و یک لایه max Pool و یک لایه FC و Softmax شروع کنم. با توجه به این معماری :
1- هنگام محاسبه فاکتور L2 Regularization در خطای Cross Entropy، وزن های تمامی لایه ها (که در این مورد میشه وزن های لایه کانولوشن بعلاوه لایه FC ) به صورت یکجا حساب میشه یا اینکه هنگام بروزرسانی وزن های هر لایه با روش BackProp، فاکتور L2 برای وزن های همون لایه حساب شده و روی وزن های همون لایه اعمال میشه؟
2- در جایی اشاره شده بود مقدار تصحیح محاسبه شده برای وزن های نورون، معادل حاصلضرب "ورودی آن نورون" در "خطای آن نورون" در "نرخ یادگری" است (بدون در نظر گرفتن مومنتوم و ...)، حال با توجه به این تعریف ابتدایی و ساده، در تصحیح وزن های لایه کانولوشن، با در نظر گرفتن حالت اشتراک ویژگی (Parameter Sharing)، تصحیح وزن ها به چه صورتی هست؟ چون که در اینجا یک نورون (یک فیلتر) در یک iteration، برای یک تصویر چندین ورودی مختلفی خواهد داشت! (بدلیل لغزش فیلتر در تمامی سطح تصویر) تصحیح وزن های ورودی به این نورون (فیلتر) به چه صورت خواهد بود؟ ( البته نت های cs231n رو کامل خوندم، ولی در اونجا اشاره ای به این قضیه نشده، مقاله ای هم پیدا نکردم راجع به این موضوع، به همین خاطر از اساتید درخواست کمک کردم).
در ضمن ممنون میشم مقاله یا مطلبی رو درباره آموزش دادن شبکه به مدل SGDM به اشتراک گذاشته بشه!
بسیار ممنون از وقتی که میگذارید.

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

1 پاسخ

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

سلام .
لایه به لایه حساب میشه . برای weight decay شما میتونید برای هر لایه یک ضریب مشخص کنید که تاثیر رگیولایزر لایه با لایه متفاوت باشه.
برای این میتونید اینجا رو ببینید که کامل توضیح داده

توسط (4.3k امتیاز)
انتخاب شده توسط
اول از هر چیز، خیلی ممنونم بابت وقتی که گذاشتید.
1-  منظور شما از ضریب، همون فاکتور لاندایی هست که به مجموع مربعات وزن ها ضرب میشه!؟
و اما لینکی که گذاشته بودید رو کامل مطالعه کردم حتی لینکهای داخل همون مطلب رو هم مطالعه کردم که یکیش فصل دو کتاب آقای نیلسن بود. ولی جوابی برای سوال دومم پیدا نکردم! ببینید در متد BP، در رابطه محاسبه مقدار بروزرسانی وزن ها، متغیری به نام Z (که برابر W * X است) موجوده. یعنی این که ورودی تاثیر مستقیم روی این مقدار داره. حالا سوال من اینجاس ( شاید هم من Parameter sharing رو بد متوجه شدم!) که اگر منظور ما از Parameter Sharing این هست که بجای استفاده از بفرض مثال 20 تا نورون با وزن های متفاوت در هر برش از عمق فیلتر ها،20 نورون با وزن مشترک بکار ببریم، پس تو بروزرسانی وزن ها به یک تناقض میخورم. تناقض اینجاست که در صورت استفاده از یک نورون، میاییم نورون رو روی عکس لغزش میدیم (با فاکتور Stride). پس عملا برای هر وزن نورون، موقع پیمایش یک عکس چند تا ورودی خواهیم داشت. امیدوارم منظورم رو تونستم برسونم! یعنی اینکه پس توی رابطه مقدار بروزرسانی وزن(Delta W)، بجای Z (که ورودی هست) چه چیزی رو قرار میدیم؟ میانگین ورودی به اون نورون یا ... ؟؟
باز هم ممنون از وقتی که میذارید.
سلام .
من وقتی صحبت از ضریب کردم اشاره به امکانات خود کفی داشتم . شما وقتی یک رگیولایزر مشخص میکنید در تعریف اپدیت شما لحاظ میشه . در حالت کلی این برای همه لایه ها یکیه اما شما میتونید همین رگیولایزر رو ، همین عدد یا بقول شما لاندا رو ، باز در لایه های مختلف کم و زیادش کنید.
درمورد پارامتر شیرینگ هم یک نکته رو دقت کنید . هر فیچرمپ توسط یک نورون ایجاد میشه . تعداد نورون های شما هم کلا برابر تعداد فیچر مپ های شماست . مثلا وقتی برای یک لایه کانولوشن مشخص میکنید  128 تا کرنل داشته باشه در اصل این تعداد نورون هست. اینکه میبینید ما وقتی صحبت از نورون ها میکنیم میاییم میگیم یک توده سه بعدی در نظر بگیرید که همه نورونهای موجود در یک برش عمقی یک وزن دارن ، این بحث پیاده سازی هست . فقط برای اینکه پیاده سازی موازی داشته باشیم به بهترین صورت ممکن به این شکل پیاده شدن . برای همین همه یک وزن دارن همه یک تابع تبدیل دارن و کلا همه یک نورون هستن.
برای درک بهتر بهتره پیاده سازی مبتنی بر سی پی یو کفی رو ببینید فکر کنم کاملا متوجه بشید.
...