فهم پارامترهای فایل solver مربوط به یادگیری شبکه

63 views
Skip to first unread message

Soodabe Zarezade

unread,
Jul 19, 2016, 8:35:20 AM7/19/16
to irandeep...@googlegroups.com
سلام . 
لطفا اگر ممکن هست در مورد اینکه پارامترهای test_iter , test_interval , max_iter و batch_size  چه مقداری رو شامل میشوند و ارتباط بین آنها هنگام یادگیری شبکه توضیح بدید ؟ 
به عبارتی با توضیح این پارامترها می خوام به طور دقیق تر نحوه ي آموزش شبکه را درک کنم !
ممنون . 

Seyyed Hossein Hasanpour

unread,
Jul 19, 2016, 10:01:18 AM7/19/16
to IranDeepLearning
سلام 
با یه مثال سعی میکنیم بریم جلو. ولی قبلش 
MaxIter بیشترین تعداد تکرار هست . یعنی نهایتا چند تکرار انجام بشه 
test_interval یعنی عمل تست(ارائه کل تست ست به شبکه و تست اون) هر چند تکرار انجام بشه 
test_Iter یعنی تعداد عمل تست چقدر هست؟(ارتباط مستقیم با اندازه دسته در فاز تست داره) 
batch_size هم اندازه هر دسته هست. 
خب . فرض کنید ما میخوایم از دیتاستی استفاده کنیم که training_set اون شامل 50 هزار تصویر و test_set اون هم شامل 10 هزار تصویر هست. 
ما تصاویر رو در قالب دسته هایی به شبکه ارائه میکنیم . اندازه این دسته ها برای فاز آموزش و تست میتونه فرق بکنه یعنی الزامی وجود نداره که از یه Batch-size برای هر دو استفاده بشه . 
مثلا من اندازه دسته برای فاز آموزش رو 100 انتخاب میکنم . یعنی Batch_size =100. حالا 50هزار تقسیم بر 100 بشه میشه 500 . یعنی همه تصاویر training set ما تو 500 دسته قرار میگیره. 
هر دسته طی یک تکرار به شبکه ارائه میشه. پس 1 epoch (یا دوره یا به معنای ارائه همه تصاویر آموزشی به شبکه برای یکبار)  اینجا مساوی 500 تکرار میشه. 
حالا من باید تصمیم بگیرم چند epoch میخوام شبکه ام آموزش ببینه . 100 بار ؟ 200 بار؟ 300 بار ؟ هر تعدادی هست در این 500 ضرب میکنم . عددی که بدست میاد میشه MaxIter. یا حد بالای تکرار که در اصل میبینیم مکس ایتر برای مشخص کردن تعداد epoch ماست. 
حالا در این بین من میخوام بعد از هر epoch شبکه ام رو تست کنم ببینم دقت روی داده های تست چطوریه . چیکار باید بکنم؟ باید مقدار test_interval رو مشخص کنم . 
حداقل مقداری که اینجا باید بزارم باید برابر تعداد تکرارهایی باشه که تشکیل یک epoch رو میده . یعنی من میخوام وقتی یکبار تمام تصاویر دیتاست آموزشیم به شبکه ارائه شد و پارامترها تنظیم شد بعدش تست کنم .
بالا دیدیم که هر 500 تکرار مساوی 1 epoch بود. پس برای test_interval میتونیم حداقل از 500 شروع کنیم و بریم بالا یعنی 500 1000 1500 2000 و همینطور. دقت کنید که این اعداد مضربی از 500 هستن. که ضریب نشونه epoch در میون هست!باز یعنی 
اگه هر epoch بخواییم تست بشه مینویسم 500 . اگه بخوایم بعد هر 2 epoch تست انجام بشه مینویسیم 1000 و همینطور الی آخر 
حالا اندازه تست ست ما هم زیاده و نمیشه یکدفعه همه تصاویر رو با هم وارد حافظه کرد .برای همین هم مثل قبل از دسته های مختلف استفاده میکنیم . فرض کنیم مثل مثالی که اول زدیم 10 هزار تصویر تست داریم . 
اگه Batch size برای فاز تست رو 50 در نظر بگیریم میشه 200 تکرار (200*500=10000). این میشه مقدار test_iter . یعنی با 200 تکرار همه تصاویر دیتاست پوشش داده میشن. 
خیلی زیاد دقت کنید که مقدار test_iter شما ضرب در اندازه بچ باید مساوی تعداد نمونه های تست شما باشه وگرنه دقتی که بدست میارید دقت درستی نیست. 
و دقت کنید که در هر test_interval تمام تست ست شما به شبکه ارائه میشه و برای اینکار از test_Iter استفاده میشه و دسته ها خونده میشن. اگه تست ایتر شما درست تنظیم نشده باشه یعنی همه تصاویر تست شما موقع تست به شبکه ارائه نمیشن.

Reply all
Reply to author
Forward
This conversation is locked
You cannot reply and perform actions on locked conversations.
0 new messages