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

با تشکر

دسته بندی ها

0 امتیاز

سلام دوستان...من چند تا سوال داشتم ...ممنون میشم که لطف کنید و من رو راهنمایی کنید...
من با حدود ۲۰۰۰ داده پزشکی که ۴ نوع لیبل خورده اند دیتاست به فرمت lmdb خودم رو ایجاد کردم
۱- آیا باید تعداد تصاویر هر دسته با هم برابر باشند؟ (مثلا از هر کلاس ۲۵۰ تا عکس باشند؟)
۲-دیتاست من داده val نداره و فقط خودم آنها رو به دو دسته train و test تقسیم کردم و در معماری الکس نت بجای داده val آدرس ‌داده test رو دادم...آیا این کار من درست هست؟
۳- با توجه به کم بودن تعداد تصاویر دیتاست من با این تصاویر روی معماری الکس نت فاین تین کردم (لایه fc8 و fc 7 رو تغییر دادم ) اما به دقت خوبی نرسیدم...ممکنه منو راهنمایی کنید که چه لایه هایی رو تغییر بدهم ممکنه دقت بهتری بگیرم...(با توجه به تفاوت خیلی زیاد دیتاست من و مدل pretarin....)(و اینکه آیا مجاز هستم مثلا نام لایه con رو هم تغییر بدهم؟ )
۴-ایا با تغییر به معماری های پیش آموزش داده شده دیگر ممکنه دقت بهتری بگیرم ؟ (مثلا به vgg یا res )( تغییر سیاست بهینه سازی دادم اما نتیجه خوبی بدست نیامد)...آیا معماری pretrain شده خوبی برای تصاویر پزشکی هست که استفاده کنم؟ و اینکه چه معماری رو برای کار من پیشنهاد میکنید؟
۵-دقتی که من پس از مرحله فاین تیون بدست میارم چه فرقی با دقتی که در مرحله تست میگیرم دارد؟ (همینطور دقت در مرحله تست مداوم تغییر میکند مثلا ۲۰ ٪ و ۱۵٪ و ۳۰٪ اما در مرحله آموزش در انتها مقدار دقت معمولا یک مقدار ثابتی هست مثلا ۶4٪)
خیلی متشکرم از عزیزان...(عذر میخوام اگر شاید سوالاتم ابتدایی باشند چون رشته من هوش نیست)
واقعا لطف میکنید

توسط (215 امتیاز)
سلام .
جناب فرهناک توضیحات خوبی دادن من دیگه تکرار مکررات نمیکنم و تو کامنت فقط یکسری توضیحات اضافی میدم).
1.اول اینکه ما چندتا سوال مشابه در مورد فاین تونینگ داشتیم اونجا بحثهای خوبی انجام شده یک سرچ کنید حتما
2.اینکه تعداد تصاویر کم و زیاد باشه برای هر دسته مشکلی نیست ولی زیاد نباید باشه که اگر باشه دردسر بیشتری در طراحی معماری پیدا میکنید.
3.وقتی تصاویر کم هستن سعی کنید با دیتا اگمنتیشن زیادشون کنید. برای فاین تون الکس نت ساده تره اما معماری هایی مثل رزنت و squeezenet هم هستن که تعداد پارامتر خیلی کمتری دارن و میتونید استفاده کنید (البته اینا بخاطر شکل معماریشون مثل الکس نت و وی جی جی نت شاید خیلی بدیهی بنظر نیان و سرو کله زدن باهاشون مثل الکس نت و وی جی جی نت سر راست نباشه برای تازه کارها ) .
ضمنا به مدل از پیش ترین شده الکس نت روی ایمیج نت بسنده نکنید بگردید یه دیتاست شبیه تصاویر خودتون یا ماهیت خودتون پیدا کنید و شبکه رو ترین کنید بعد دیتای خودتون رو روی اون فاین تون کنید. لیست تقریبا کاملی از دیتاست های پزشکی تو بخش دیتاست های سایت هست. یه نگاه بهش بندازید.
شما رو همون الکس نت یکم بیشتر سعی کنید نشد سویچ کنید رو squeezenet فک کنم مناسب باشه.
موقع فاین تون توجه خیلی زیادی به weight decay کنید. مقدار زیاد اون باعث اندرفیتینگ شبکه میشه و نمیزاره یا شبکه اصلا اموزش ببینه یا بخوبی اموزش ببینه . لایه کانولوشن رو هم میتونید تغییر بدید.
سعی کنید حتما دیتاستتون رو نرمالایز کنید که تاثیر مثبتی داره . zero mean حتما کنید. باید شاهد بهبودهایی باشید.
میتونید برای ترینینگ از squeeznet هم استفاده کنید (بدون فاین تون) و به همراه دیتا اگمنتیشن و همون پیش پردازش اولیه نتایج مناسب رو بگیرید.
سلام...خیلی متشکرم سیدجان...لطف کردی
دیتاستو حداقل به چند عدد  تصویر برسونم خوبه؟ الان 2000 تا هست...چه روش های دیتا اگمنتیشن به کار ببرم که تاثیر منفی نذاره ؟  (مثلا چرخش های مختلف یا تغییر روشنایی تصویر ویا اضافه کردن نویز)
در squeezenet  در حالت اموزش از ابتدا  مقدار max_iter رو چه مقدار تنظیم کنم تا آموزش به خوبی انجام بشه؟مقدار دیفالتش ؟    آیا در الکس نت با زیاد کردن max_iter  امکان افزایش دقت هست؟
تصاویر من ام ار ای کمر هستند ، در بخش دیتاست پزشکی تصاویر ام ار ای مغز رو پیدا کردم...مشکلی نیست ؟
متشکرم
سلام .
بهترین کاری که میتونید بکنید اینه که مراجعه کنید به مقالات مشابه زمینه کاری خودتون و ببینید اونا از چه روشهایی استفاده کردن . قضیه پیش پردازش و دیتا اگمنتیشن رو همینطور رندوم نباید انتخاب کنید چون ممکنه اثر نداشته باشه و یا حتی بدتر کنه نتیجه رو. برای تصاویر طبیعی خب دست شما خیلی بازه اما این حوزه چون من کار نکردم همون ارجاع میدم به مقالات . (خودتون هم میتونید استارت بزنید با روتیشن و تنظیم شدت و انعکاس افقی (horizontal mirroring) و scale و zoom و...  برید جلو و تست کنید ببینید کدوم نتیجه بهتری میده ولی مطمئنا همه یا بعضی ا زاینها برای تصاویر شما ممکنه منطقی نباشه . و باز بهترین کار مراجعه به مقالات مشابه و تبعیت از اوناس تا دوباره کاری نکنید)
squeezenet از نرخ یادگیری خطی استفاده میکنه که در اکثر اوقات نتیجه نهایی خوبی میده اما خیلی زمانبرتر هست. برای فاین تون و اینجور چیزا بنظرم نرخ یادگیری خطی انتخاب بهتری باشه.
مکس ایتر به خودی خود ارزش خاصی نداره چیزی که تاثیرگذاره اون نرخ یادگیری و weight decay هست. اگه اینا خوب تنظیم نشده باشن وقت بیخود حروم کردنه . مثلا نرخ یادگیری بالا باشه و هی دایورج کنه شما 2 میلیون بار هم بری باز تاثیری نداره . اما مثلا اگه نرخ یادگیری شما خوب باشه و شما ببینی پیشرفت رو اینجا بله .  معمولا maxiter رو بالا بزارید که دستتون باز باشه . هروقت نیاز به کنسل کردن اموزش داشت میتونید خودتون کنسل کنید .
 والله خودم منم اطلاع دقیقی ندارم. ترجیحا بگردید دنبال تصاویر mri کمر اگرنبود اون تصاویر رو تست کنید.
سلام سید جان...واقعا ازت ممنونم...توضیحات خیلی خوبی بود...متشکرم

2 پاسخ

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

سلام
1- نه لزوما ولی نباید خیلی هم با هم اختلاف داشته باشند. مثلا 10 تا از یک کلاس 1000 تا از کلاس دیگر
2- بله درست است. البته در ادبیات یادگیری ماشین تعریف validation و test متفاوت است.
4- با توجه به کم بودن تعداد داده های آموزش استفاده از شبکه های بزرگ به نظر کار مناسبی نمیاد و تلاش کنید از همان alexnet نتیجه بگیرید. در مورد شبکه آموزش دیده شده با داده های پزشکی من اطلاعی ندارم.
5- در مرحله آموزش نتایج از همان داده های آموزش دیده شده به دست میاد. ولی در مرحله تست از داده های که در آموزش استفاده نشده و اصطلاحا شبکه اونها رو ندیده. دقتی که شما می تونید بهش استناد کنید دقت داده های تست هست. و اختلاف این دو دقت نشان دهنده اشتباه در آموزش یا در مساله یا .. است که معمولا علت ان over-fitting هست. اما در مورد سوال شما با توجه به اینکه دقت داده های آموزش خیلی بالا نیست احتمال over-fitting کمتره. سعی کنید با کم کردن نرخ یادگیری و تغییر سایر پارامتر های آموزش این نتیجه رو بهبود بدید تا شبکه بهتر یاد بگیره. این اعداد برای داده های تست نشون میده شبکه شما چیزی یاد نگرفته.
3- تغییر لایه های بیشتر برای داده های که تفاوت زیادی با داده های آموزش قبلی دارند نیاز جدیی است. اما داده های شما نیز کم است که باعث میشه نتواند تعداد لایه های زیادی رو باهاش آموزش داد. سعی کنید داده های بیشتری تهیه کنید و در صورت نیاز داده های موجود را با روش های بیشتر کنید مانند تغییر رنگ, سایز, چرخش, کم و زیاد کردن نور, که البته اینکه از کدام این روش ها استفاده کنید با توجه به جنس داده شما مشخص میشود.

توسط (418 امتیاز)
انتخاب شده توسط
خیلی متشکرم آقای فرحناک ...لطف کردید
ببخشید در فاین تیونینگ آیا فقط باید لایه های (InnerProduct (fc دوباره آموزش ببینند یا اینکه  لایه های دیگر رو  هم میتوانیم دوباره آموزش بدهیم؟ چه لایه هایی دوباره میتوانند آموزش ببینند ؟ مثلا conv , relu ....
+2 امتیاز

اگر هدف تنها دسته بندی است و فیچر های دیتای پزشکی شما زیر1000تا است (تصویر هم نیست) با توجه به تعداد اموزش کم یک شبکهdbn با پارامتر های حداقلی را ازمایش کنید قبل از اون از عدم توازن کلاس ها مطمین شوید

توسط (136 امتیاز)
خیلی ممنون از پاسخ شما...دقیقا دیتاهای پزشکی ،  تصویر هستند، در ضمن این کار رو باید حتما باید شبکه CNN انجان بدهم....
...