فاین تیونینگ مدل GoogLeNet - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

فاین تیونینگ مدل GoogLeNet

0 امتیاز
سلام.

برای fine tune کردن به فرض مدل googLeNet با دیتاست خودمون چه کارهایی باید انجام بدید (منظورمم تغییرات  در لایه هاست)
سوال شده تیر 6, 1396  بوسیله ی رضا حمیدیان (امتیاز 33)   2 7 9

1 پاسخ

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

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

یکی سری موارد را عرض می کنم که رعایت کنید فقط مختص به مد GoogLeNet نمیشه ساروکاریه که توی fine tuning اکثر شبکه ها می بایست رعایت کنید.

1- یکی از تغییرات ملموس تغییر در تعداد خروجی های شبکه است به فرض GoogLeNet تعداد 1000 خروجی داره شما نیاز به 90 خروجی دارید و یا تعداد بییشتر از 1000 شما می بایستی مقدار num_output  در بخش inner_product_param لایه FC یا InnerProduct  قبل از لایه softmax را به تعداد خروجی مد نظرتان تغییر بدید.

در مواردی که داده های شما برای عملیات fine tuning کمتر از 0.1 داده های اصلی باشه همه لایه ها جز لایه آخر را فریز می کنید.لایه آخر را تغییر نام بدید دقت کنید که این نام در فایل prototxt تکراری نباشه و  این لایه را با وزن های تصادفی مقدار دهی اولیه کنید سپس لایه softmax را به این لایه متصل کنید.چون همه لایه فریز شدن پس نتیجه می گیریم که فقط لایه آخر تصمیم به یادگیری داره به همین خاطر نرخ یادگیری این لایه را نسبت به مدل اصلی افزایش می دیم که این مقدار تحت عنوان lr_mult است هم برای وزن و هم برای بایاس این مقادیر را افزایش بدین.

2- کاهش میزان نرخ یادگیری کلی شبکه (base_lr) در فایل solver است.

3- کاهش stepsize در فایل solver هستش کاهش با ضریب 0.1 مطلوب است.
پاسخ داده شده تیر 30, 1396 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد شهریور 18, 1396 بوسیله ی رضا حمیدیان
...