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

با تشکر

دسته بندی ها

0 امتیاز

سلام
من از کراس برای فاین تیونینگ استفاده میکنم.
میخواستم بدونم چه جوری میشه imageNet mean رو از تمام داده های train کم کنم .
یه تابع داره خوذش به اسم preprocess_input ولی فقط موقع inference ازش میشه استفاده کرد.
من از imagedatagenerator و flow_from_directory استفاده می کنم. مدلی هم که میخوام fine tune کنم vgg16 هست.
یه سوال دیگه که این گام چقدر تاثیر داره روی دقت خروجی؟ منظورم اینه که خیلی مهم هست؟

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

1 پاسخ

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

سلام.
در تابع ImageDataGenerator میتونید از تابع دلخواه خودتون استفاده کنید. مثلا برای این که تصاویر رو بین -1 تا +1 نگاشت کنید میتونید از دستور زیر استفاده کنید:

from keras.preprocessing.image import ImageDataGenerator
def MyNorm(img):
	img -= 128
	img /=128
	return img

train_datagen = ImageDataGenerator(preprocessing_function=MyNorm)

در مورد سوال دومتون: اگه یه مدلی با یه پیش پردازش خاصی ترین شده و شما میخواهید از اون مدل برای شرایط اولیه استفاده کنید باید پیشپردازش همون مدل رو اول انجام بدید و مهمه.
اگه بخواهید خودتون یه مدل رو از ابتدا ترین کنید (با وزنهای تصادفی) در این حالت پیشپردازش دلخواه خودتون رو میتونید داشته باشید. ولی در کل در ورودی دیتا رو توصیه میشه بین -1 تا +1 نگاشت کنید (یا حداقل از متوسطش کم کنید). متقارن بودن نسبی دیتا (وجود مقادیر مثبت و منفی در ورودی) معمولا باعث همگرایی سریعتر میشه (از آپدیت زیگ زاگی میتونه جلوگیری کنه). این که مقادیر ورودی هم بین -1 تا 1 باشه و خیلی بزرگ نباشه باعث پایداری بیشتر شبکه میتونه بشیه. (مقدار خروجی هر نورون مستقیما در آپدیت وزنهای خروجی از اون نورون تاثیر داره و اگه مقادیر زیادی داشته باشه میتونه باعث نوسنات در آپدیت بشه).

توسط (540 امتیاز)
انتخاب شده توسط
ببخشین اونجا که گفتین ورودی ها  بین -1 تا 1 باشه بهتره. اگه بخوام از شبکه های pretrained استفاده کنم فکر میکنم فقط googlenet هست که داده ها رو بین -1 تا 1 میاره و بقیه مثل alex ,vgg و resnet50 فقط میانگین imagenet رو کم میکنن و  داده ها رو بین -1 تا 1 نمیارن.
با این حال اکه بخوام مثلا از resnet برای fine tuning استفاده کنم بازم توصیه میکنین که  بعد کم کردن imagenet mean بازم داده ها رو بین -1 تا 1 بیارم ؟
اگه مدل ترین شده فقط دیتا رو از میانگین کم کرده و بین -1 تا 1 مپ نکرده شما هم باید همون کار رو کنید و فقط از میانگین کم کنید.
...