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

با تشکر

دسته بندی ها

+1 امتیاز

بعد از اینکه شبکه به طور کامل با داده های val, train با دقت ۹۸٪ اموزش دید در مرحله تست دقت 0 شد که خیلی به نظرم عجیبه و متوجه نمیشم چرا؟!
احتمال overfitشدن را هم بررسی کردم داده همگی شافل شده هستند و روی کلاس خاصی بایاس نیست
خروجی تابع زیر را هم دیدم همگی با هم برابر و 0 میباشد بنا بر این چون حتمال همه کلاس ها مساوی بوده و همگی برابر با 0 میاشد همه سمپل ها را لیبل کلاس 0 میزند!

 prediction = net.predict([input_image])
  

تعدا کلاس:20
train: 660
itr_train=2000
bachsize=256
validation: 160  تعداد
bachsize=50
test:160  تعداد
data base:   lmdb

نوع شبکه :alexnet
تنظیمات solver:

net: "****/train_val.prototxt"
test_iter: 4
test_interval: 500
base_lr: 0.001
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 40
max_iter: 450000
momentum: 0.9
weight_decay: 0.0005
snapshot: 100
snapshot_prefix: "****_train"
solver_mode: GPU

پارامتر های مربوط به تست:

 MEAN_FILE = CAFFE_ROOT+'/python/caffe/imagenet/ilsvrc_2012_mean.npy'
 TEST_FILE = CAFFE_ROOT +'/data/test1/test.txt' TEST_FOLDER =
 CAFFE_ROOT+'/data/test1/pic/' LABLE_FILE = CAFFE_ROOT+
 '/data/test1/labels.txt' MODEL_FILE = CAFFE_ROOT+
 '/models/test1/deploy.prototxt' PRETRAINED = CAFFE_ROOT +
 '/model/test1/snapshout/test1_train_iter_2000.caffemodel'

آپدیت :
در این قطعه کد من داده خودم را که تا حالا شبکه ندیده تست میکنم
اما خروجی net.predictتماما 0 هست
test _code
اصلاحیه کد :
غلط :TEST_FILE = CAFFE_ROOT +'/data/test1/val.txt'
صحیح:TEST_FILE = CAFFE_ROOT +'/data/test1/test.txt'
روی این کد حتی داده های valو train هم نتیجه مشابه دارند

کد تولید «‌lmdb

توسط (136 امتیاز)
ویرایش شده توسط
چرا من خودم lmdbرا تولید کردم کد  تولیدش را هم توی صورت سوال اوردم  از روی  var و trainکه توی فایل تکس بهش دادم برای من تولید میکنه توی لینوکس که کاملا محتواش خالیه!توی ویندوز( اکسسز) میگه فرمتش اشتباهه(این همون کدیه که imagenetاستفاده میکنه). حتی نتونستم lmdb که برای mnistاز روی کد گیت درست کرده بودم  را ببینم. اگر لازمه اون کد راهم ضمیمه کنم.اگر واقغا دیتا بیس من خالیه پس داره از روی چی ترین میکنه؟
خب این خیلی راحت داره از همون convert_imageset استفاده میکنه. و مشکلی این برنامه نداره.باز برای اطمینان خودتون با پارامترها convert_imageset رو اجرا کنید و resize و... رو فعلا درنظر نگیرید(گفتید اندازه تصاویرتون 256 هست پس نیازی به ریسایز ندارید). فقط شما مسیر ولیدیشن و تستون چرا یکیه؟!.برای دیدن محتوای lmdb از آدرسی که دادم استفاده کنید و چک کنید.
به این دلیل  ادرس ترین و ولیدیشن توی کد ال ام دی بی یکی هست چون باید روت عکس را داد و روت عکس برای هر دو یکی هست.
محتوای ال ام دی بی را با کد دیگه ای دیدم مشکلی نداره.
 من میدونم اشتباهم اینه که درست پردیکشن را انجام نمیدوم اما نمیدونم درستش چیه

2 پاسخ

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

من این مشکل را بلاخره حل کردم
همون طور که حدس میزدم اشتباه در کد تست بود. فایل deploy من اشتباه داشت که با تغیرات زیرکه در فایل train.prototxtانجام دادم و deploy جدید ساختم ودقتم درست شد.

Remove input datalayer and insert a description of input data dimension
Remove “loss” and “accuracy” layer and insert “prob” layer at the end
توسط (136 امتیاز)
+2 امتیاز

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

توسط (535 امتیاز)
پیشنهادجالبی دادین. من در  این حین متوجه شدم که وقتی تست و ولیدیشن را به عنوان داده  تست میدهم به شبکه اونا را هم میگه کلاس ۰!
بنا بر این کدی که باش تست میکنم را ارایه میکنم . ممنون میشم بگید دارم کجا اشتباه میکنم.

در این قطعه کد من داده خودم را که تا حالا شبکه ندیده تست میکنم
اما خروجی net.predictتماما ۰ هست
test _code
اصلاحیه کد :
غلط :TEST_FILE = CAFFE_ROOT +'/data/test1/val.txt'
صحیح:TEST_FILE = CAFFE_ROOT +'/data/test1/test.txt'
روی این کد حتی داده های valو train هم نتیجه مشابه دارند

من احساس می کنم شما شبکه رو به درستی آموزش ندادین. چند تا نکته رو باید حتما بررسی کنید. اول اینکه برچسب ها رو به چه صورت به کفه دادین؟ آیا به صورت Integer هستن یا Binary؟ (باید شماره کلاس بدین حتما و نه آرایه باینتری با اندیس کلاس یک) دوم اینکه ممکنه داده های شما درست درهم نشده باشند و کلاسهاتون پشت سر هم باشند، یعنی برای مثال 1000 نمونه از کلاس اول بعد 1000 نمونه از کلاس دوم و ...

من برای شافل کردن از toolsخود کفی استفاده کردم که اونحا یک فلک shuffle اما برای اینکه هر ابهامی رفع بشه وردی کد تبدیل lmdbرا هم  شافل کردم باز نتیجه تغیری نکرد . من حرفم اینه اگر اشتباهی توی ترین من هست که باید  داده ولیدیشن دقت اش پایین باشه من حس میکنم این اشتباه از کد تست میباشد اما نمیدونم کجاش.داده های من به این صورته:
شماره سمپل ـ(شماره کلاس).پسوندفایل      شماره لیبل
همگیinteger
خب شما داده های val رو هم دارید در مرحله آموزش بررسی می‌کنید. اگر این بحث برچسبهای اشتباه پیش اومده باشه موقع بررسی val هم این اشتباه پیش میاد و دقت اشتباها بالا می ره.
فرمت بر چسپ ها را ارادیه کردم به نظرم اشکالی درش نیست نظر شما چیه ...
...