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

با تشکر

دسته بندی ها

0 امتیاز

سلام و من با دیتاستی که تقریبا10000 نمونه دارد کار می کنم و سایز عکس ها هم 96 در96 است . می خواستم یک قانون کلی و یا بهینه ترین حالت را برای بدست آوردن تعداد نورون در و تعداد لایه در لایه های denseرادر معماری کانولوشن به دست آورم. در شبکه های عصبی معمولی می دانیم که معمولا 2 برابر تعداد ویژگی ها ما نورون در لایه مخفی قرار می دادیم و تقریبا بهینه ترین حالت بود.
اما برای معماری کانولوشن چه طور می توان این فرا پارامتر مهم را بدست آورد؟

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

1 پاسخ

+2 امتیاز

سلام
قانون کلی وجود نداره اینطور که شما مدنظرتون هست.
ولی چندتا اصل هست که رعایت اونها باعث میشه عموما بهترین نتیجه رو بگیرین
1. معماری شما بصورت (pyramid ) شکل طراحی بشه . یعنی با افزایش عمق تعداد فیجر مپ ها افزایش پیدا کنه
2. بیشتر اوقات این معماری نیست که باعث میشه شما دقت خوبی نگیری بلکه سیاست بهینه سازی شماس. یعنی انتخاب سیاست نرخ یادگیری (sgd, adadelta,rmsprop,etc ) تاثیر بسیار زیادی داره .
3. از لایه تماما متصل استفاده نکنید برای لایه های اخر . بجاش از لایه کانولوشن استفاده کنید برای پیاده سازی اون. این کار اولا باعث میشه جلوی اورفیتیتنگ گرفته بشه تا حدودی از طرفی سرعت اموزش رو بسیار زیادی ترمیکنه تعداد پارامترها رو هم بشدت کم میکنه و همینطور تعمیم خیلی بهتری رو ارائه میکنه .
4.برای طراحی معماری چند شیوه رو میتونید در پیش بگیرید .
1.یک معماری کارآمد مثل ResNet یا WRN یا اخیرا DensNet یا حتی SimpleNet رو انتخاب کنید . بعد با تنظیمات پیشفرض شروع به آموزش شبکه کنید با رسم نمودار دقت /خطا سعی کنید شبکه رو تنظیم کنید . قدم اول اینجا استفاده از سیاست های یادگیری متفاوت و ثبت هر دقتی که میگیرید هست. بعد با توجه به نمودار مشخص میکنید دارید اورفیت میکنید یا اندرفیت . در صورت اورفیت از دراپ اوت استفاده کنید و L2-regularization . اگر باز اورفیت دارید سعی کنید از لایه های شبگه بصورت یکسان کاهش فیچر مپ داشته باشید . تست کنید و دقت جدید رو ثبت کنید . یادتون باشه فیچرمپ زیاد برای لایه های اولی ضروری نیست یعنی اگر هم بزارید کار خاصی انجام نمیدن . لایه های وسطی و خصوصا انتهایی خیلی تاثیر گذار هستن .
2. یک معماری عمیق خیلی کم عرض طراحی کنید و آموزش بدید و کم کم بع عرض شبکه اضافه کنید
3. یک معماری کم عمق با دو لایه ابتدا ایجاد کنید بعد برای افزایش کارایی عرض شبکه رو افزایش بدید . تا جایی که دیگه تاثیری نبینید . حالا لایه جدید اضافه کنید و عرض رو نصف کنید و به همین شکل تست ها رو ادامه بدید .

از این طریق میتونید به دقت مناسب برسید .
یادتون باشه من تکرار میکنم به همون اندازه که معماری مهم هست بهینه سازی هم مهمه . چه بسا یه معماری ایده آل بدست بیارید برای کارتون اما با انتخاب سیاست بهینه سازی نادرست فک کنید مناسب نیست و خرابش کنید و نهایتا از یه معماری غیربهینه شروع به استفاده کنید و خودتون هم خبر نداشته باشید چی رو ا زدست دادید .
این مقاله رو هم بخونید شاید بد نباشه براتون(اینم البته باید گفته بشه که شیوه های طراحی بیشتری وجود داره اما اینا ساده ترین و سر راست ترین شیوه هایی هستن که من الان به ذهنم میرسه)

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