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

با تشکر

دسته بندی ها

0 امتیاز

یک سری تصاویر ساده خاکستری وجود داره
مدل قراره تصویرهایی که دایره در داخل اونها هست رو از اونهایی که دایره نیست تشخیص بده، کلا 300 تا تصویر هست که 100 تا از اونها شامل دایره هست.
(255 تا تصویر برای آموزش و 45 تصویر برای آزمایش استفاده شده)
برنامه بصورت بسیار ساده با استفاده از فریم ورک کراس در پایتون به شکل زیر نوشته شده
ولی در مدل هیچگونه یادگیری اتفاق نمی افتد. چه راه حلی برای این موضوع پیشنهاد می‌کنید، یا اینکه اشکال کار چی هست؟ چجوری از اول دقیقا میزان دقت دو سوم هست و این نسبت هم تا آخر ثابت هست. (دقیقا نسبت تصاویری که دایره در آنها نیست به کل تصاویر)

model = Sequential()

model.add(Conv2D(8,3,input_shape = (100, 100, 1)))
model.add(Activation('relu'))
model.add(Conv2D(8,3))
model.add(Activation('relu'))
model.add(MaxPooling2D(2,2))
model.add(Dropout(0.25))

model.add(Conv2D(16,3))
model.add(Activation('relu'))
model.add(Conv2D(16,3))
model.add(Activation('relu'))
model.add(MaxPooling2D(2,2))
model.add(Dropout(0.25))

model.add(Conv2D(32,3))
model.add(Activation('relu'))
model.add(Conv2D(32,3))
model.add(Activation('relu'))
model.add(MaxPooling2D(2,2))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(100))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(10))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

model.fit(X_train, y_train, batch_size=32, epochs=15, verbose=1, validation_data=(X_test, y_test))
Train on 255 samples, validate on 45 samples
Epoch 1/15
255/255 [==============================] - 1s - loss: 0.6908 - acc: 0.5725 - val_loss: 0.6827 - val_acc: 0.6667
Epoch 2/15
255/255 [==============================] - 1s - loss: 0.6693 - acc: 0.6471 - val_loss: 0.6364 - val_acc: 0.6667
Epoch 3/15
255/255 [==============================] - 1s - loss: 0.6404 - acc: 0.6431 - val_loss: 0.6295 - val_acc: 0.6667
Epoch 4/15
255/255 [==============================] - 1s - loss: 0.6397 - acc: 0.6667 - val_loss: 0.6132 - val_acc: 0.6667
Epoch 5/15
255/255 [==============================] - 1s - loss: 0.6211 - acc: 0.6667 - val_loss: 0.6055 - val_acc: 0.6667
Epoch 6/15
255/255 [==============================] - 1s - loss: 0.6018 - acc: 0.6627 - val_loss: 0.5924 - val_acc: 0.6667
Epoch 7/15
255/255 [==============================] - 1s - loss: 0.5834 - acc: 0.6627 - val_loss: 0.5914 - val_acc: 0.6667
Epoch 8/15
255/255 [==============================] - 1s - loss: 0.5830 - acc: 0.6706 - val_loss: 0.6068 - val_acc: 0.6667
Epoch 9/15
255/255 [==============================] - 1s - loss: 0.5882 - acc: 0.6588 - val_loss: 0.5859 - val_acc: 0.6667
Epoch 10/15
255/255 [==============================] - 1s - loss: 0.5674 - acc: 0.6588 - val_loss: 0.5905 - val_acc: 0.6667
Epoch 11/15
255/255 [==============================] - 1s - loss: 0.5802 - acc: 0.6667 - val_loss: 0.5944 - val_acc: 0.6667
Epoch 12/15
255/255 [==============================] - 1s - loss: 0.5744 - acc: 0.6588 - val_loss: 0.5804 - val_acc: 0.6667
Epoch 13/15
255/255 [==============================] - 1s - loss: 0.5453 - acc: 0.6667 - val_loss: 0.5803 - val_acc: 0.6667
Epoch 14/15
255/255 [==============================] - 0s - loss: 0.5659 - acc: 0.6588 - val_loss: 0.5923 - val_acc: 0.6667
Epoch 15/15
255/255 [==============================] - 1s - loss: 0.5479 - acc: 0.6667 - val_loss: 0.5772 - val_acc: 0.6667
توسط (138 امتیاز)

1 پاسخ

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

با سلام
تصاویر شما شامل اشیایی با ویژگی های ساده هستند. یعنی برای شناسایی ويژگی های مربع و دایره و خط و .. کافیست تنها از یک لایه کانولوشن و یک یا دو تا fc استفاده کنید.
شبکه شما 6 لایه کانولوشن و 3 لایه fc داره که برای تسک شما بسیار بزرگ است. و از طرفی شما به تعداد کافی تصویر برای آموزش این شبکه ندارید. و همچنین برای آموزش این شبکه نیاز به epoch های بیشتری دارید.
در حال حاضر میتونم بگم که شبکه شما هیچی یاد نگرفته (گاوه گاو)

راه حل:
- شبکه را ساده تر بگیرید
-تصویر بیشتری جمع کنید
-تعداد بیشتری epoch‌ ترین کنید

توسط (830 امتیاز)
انتخاب شده توسط
حرف شما کاملا درسته، متوجه شدم که مشکل تعداد پارامترهای بیش از حد هست. برای همین علاوه بر اینکه عمق شبکه رو کم کردم، با انتخاب فیلتر با اندازه بزرگتر (5،5) نسبت به (3،3) – به علت اینکه تصاویر ساده هست - و انتخاب گام بزرگتر و کاهش تعداد فیلترها، تعداد پارامترها رو کاهش دادم.
تعداد تصاویر از 300 به 1500 افزایش داده شد.و تعداد تکرار از 15 به 500 افزایش داده شد.
و در آخر batch_size رو هم از 32 به 64 تغییر دادم.
اما الان یه سوال دیگه برام ایجاد شده که در لینک زیر مطرح کردم
http://qa.deeplearning.ir/4577/
...