سلام دوست عزیز
بنده تا جایی که میتونم راهنماییتون میکنم. دوستان اگه اشکالی وجود داره اصلاح کنند.
شبکه 1نباید dropout استفاده کنید. dropout رو بعد از لایه هایی میگذارن که تعداد پارامترهای زیادی داره مثل لایه های fc - شبکه های conv پارامتر زیادی ندارن - پس شما بهتره قبل از dropout از لایه fc استفاده کنید.
شبکه 2 : آموزش تمامی لایه ها کار اشتباهی هستش - فریز همه لایه های قبل softmax یعنی اینکه شما فقط لایه softmax رو تیون کردید!!! لایه softmax که پارامتر قابل تیون نداره!!! - حالت سوم منطقی تر بنظر میرسه (البته بنده با شبکه inceptionv3 کار نکردم) شما بایستی لایه های کلاسبند رو تیونن کنید.
شبکه 3 : شبکه InceptionResnetv2 فرق چندانی با inceptionv3 نداره
شبکه 4: استفاده از نورون خطی در لایه ی آخر به جای 60 کلاس میتونه راه حل خوبی باشه احتمالا جواب بده
مشکلاتتون ممکنه به خاطر نرخ آموزشتون باشه. وقتی از شبکه ترین شده استفاده میکنید بایستی نرخ آموزش شما 0.1 نرخ آموزشی باشه که شبکه رو برای اولین بار ترین کردند.
در مورد سوالاتتون:
-- هر چه توزیع نمونه هایی که شبکه پایه با آن آموزش دیده به توزیع تسک جدیدتون نزدیکتر باشه بهتره - مثلا در مورد تسک شما- تصاویر شبکه شما از به توزیع تصاویر imageNet بسیار نزدیک است (شبیه هم هستند) و براحتی میتونید از این شبکه ها استفاده کنید. و کافیست صرفا تعدادی از لایه های کلاسبند رو تیون کنید. اگه تصاویر شما مثلا تصاویر x-ray بود آنگاه توزیع تصاویر کمی با هم فرق میکرد و بهتر بود برای بهتر جواب گرفتن نه تنها تمامی لایه های کلاسبند بلکه یکی دو لایه عقبتر نیز تیون شوند.
-- ممگنه بخاطر نرخ آموزش باشه
-- اینکه تو چندمین ایپاک overfit رخ بده بستگی به حجم دیتا - تعداد پارامترها - ساختار شبکه - نرخ آموزش و عوامل دیگه داره
-- بنظر بنده لایه آخر اگر یک نورون باشه با activation خطی بهتره - ولی باید تست کنید و اینکه ببینید بقیه مقالات چی کار کردند
موفق باشید.