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

با تشکر

0 امتیاز

با سلام
من از یک شبکه کانوولوشن 7 لایه برای یادگیری روی یک دیتاست پزشکی استفاده کردم که تعداد تصویر 4212 تصویر 200*200 و سه کلاسه است .مشکل من اینه که دقت زمان یادگیری در حدود 0.5 است و روند افزایش به شدت کمه تا جایی که بعد از 10 تکرار تابت میشه.دقت روی ولیدیشن که کلن ثابت .ولی مقدار loss چه در زمان ترینینگ و چه در ولیدیشن تغییر میکنه ولی خیلی کم.نکته ای که وجود داره اینه که در ابتدای یک دور که تعداد بچ ها تغییر میکنن دقت بالا میره ولی وقتی میگذره روند رشدش رو به پایین میشه و .نرخ یادگیری رو تغییر دادم و تقریبا از همه روش ها استفاده کردم ولی فایده ای نداشت.از dropout هم استفاده کردم.خود مقاله با این لایه ها در حدود 0.84 دقت داشته روی داده های تست.معماری هم به شکل زیر:

model = Sequential()

model.add(Convolution2D(96, (11, 11), subsample=(4, 4),activation='relu',padding="valid",kernel_initializer='random_normal', input_shape=(200,200,1),data_format="channels_last"))

model.add(MaxPooling2D(pool_size=(2,2)))
model.add(ZeroPadding2D(padding=(2, 2)))
model.add(Convolution2D(256,( 5, 5),subsample=(2, 2), activation='relu',padding="same"))
model.add(Convolution2D(48,( 1, 1), 

model.add(MaxPooling2D(pool_size=(2,2)))
model.add(ZeroPadding2D(padding=(1, 1)))
model.add(Convolution2D(384,( 3, 3),subsample=(1, 1), activation='relu',padding="same"))

model.add(Convolution2D(256, (3, 3),subsample=(2, 2), activation='relu',padding="same"))
model.add(MaxPooling2D(pool_size=(3,3)))
model.add(Convolution2D(192,( 6, 6),subsample=(1, 1), activation='relu',padding="same"))
#model.add(normalization.BatchNormalization())
model.add(Dropout(0.25))
model.add(Convolution2D(96,( 1, 1),subsample=(1, 1), activation='relu',padding="valid"))
#model.add(normalization.BatchNormalization())
model.add(Dropout(0.25))
model.add(ZeroPadding2D(padding=(1, 1)))
model.add(Convolution2D(3,( 1, 1),subsample=(2, 2), activation='relu',padding="same"))
model.add(Dropout(0.25))

#model.add(MaxPooling2D(pool_size=(7, 7),strides=1, padding='same'))

    model.add(Flatten())
    model.add(Dense(3,activation='softmax'))
sgd = SGD(lr=0.0001, decay=1e-6, momentum=1, nesterov=True)
model.compile(loss='categorical_crossentropy

          optimizer=sgd,
          metrics=['accuracy'])

model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,

show_accuracy=True, verbose=1, validation_data=(X_test, Y_test))

history=model.fit(X_train, Y_train, 

batch_size=25,shuffle=True, nb_epoch=15, verbose=1,validation_data=(X_test, Y_test))

.

 - 2695/2695 [==============================] - **122s 45ms/step - loss:
   1.0979 - acc: 0.5340 - val_loss: 1.0972 - val_acc: 0.5386 Epoch 2/15 2695/2695 [==============================] - 133s 49ms/step - loss:
   1.0966 - acc: 0.5343 - val_loss: 1.0959 - val_acc: 0.5386 Epoch 3/15 2695/2695 [==============================] - 132s 49ms/step - loss:
   1.0953 - acc: 0.5343 - val_loss: 1.0945 - val_acc: 0.5386 Epoch 4/15 2695/2695 [==============================] - 127s 47ms/step - loss:
   1.0940 - acc: 0.5343 - val_loss: 1.0932 - val_acc: 0.5386

--![][1]------------------------------------------------------------------
سوال شده توسط (100 امتیاز)
ویرایش شده توسط
کانولوشن اول شما پدینگ صفر, ولی استراید ۴ داره. بعدش هم انگار یک پولینگ با استراید ۲در۲ وجود داره (کرنلش رو قید نکرده ) شما تو لایه اول چرا ساب سمپلینگ ۴در۴ گذاشتید؟‌
به همین ترتیب لایه دوم پدینگ =۲ و استراید =۲ داره و باز بعدش یه پولینگ با استراید ۲ در۲ (شاید کرنل پولینگ ۲در۲ بوده و عملیاتش nonoverlapped pooling )
در لایه چهارم کرنل پولینگ رو نوشته ولی صحبتی از استراید نکرده (احتمالا همون استراید ۲در۲ باشه تا اینطور یه overlapped pooling انجام بشه ؟‌ خیلی بد نوشتن!) در متن توضیح ندادن به چه فرمی هست معماری ؟‌
 ضمنا اون لایه بعد ازلایه دوم چیه که ۴۸ نورون داره با کرنل ۱در۱ ؟‌بین ۲ و سه هم پولینگی وجود نداره
یکبار دیگه معماری خودتون رو با تصاویر چک کنید علاوه بر اون یه نگاهی به API‌کراس بندازید. استراید و پدینگ در لایه کانولوشن هست . ساب سمپلینگ من نمیدونم تو اون لایه چیکار میکنه (با کراس آشنایی چندانی ندارم) برای پدینگ ۱در۱ فک میکنم از طریق خود لایه کانولوشن اقدام کنید بهتر باشه البته بعد از اینکه مشکلات قبلی رو برطر کردید
ورژن جدید کراس ،subsampling, همون استراید هستش،چون کرنل قید نشده فرض بر این بوده که ستراید و کرنل در لایه پولینگ یکسانند،اون لایه با۴۸ نرون کامنت بوده متاسفانه که وقتی کپی کردم از بین رفته و تو لایه ها نیست،خود مقاله با استفاده از matconvnet تو متلب نوشته شده،یعنی قید کرده که cnn takes shape of matconvnet
سلام. من تسلطی به کراس ندارم متاسفانه نمیدونم پیاده سازی صحیح به چه شکل هست. اجازه بدید بقیه عزیزانی که با کراس آشنا هستن بیان نظر بدن .

1 پاسخ

0 امتیاز

سلام
مشکل شبکه به خاطر داده های ورودی بود و داده ها رنج مناسبی نداشتند و همچنین بعضی از تصاویر به اصطلاح dirtydata بودن که با حذف اونها شبکه از underfitting خارج شد ولی دچار overfitting شد روی داده های ترین دقت خوبی داشت ولی روی داد های تست دقت متوسطی داشت ولی مقدار loss روی داده های تست بالا بود.برای رفع این مشکل از data augmentation در کراس استفاده کردم که تعداد داده های ترین رو افزایش میده و یکی از راه های رفع overffiting .الان شبکه من بعد از 10 بار تکرار به شکل زیر عمل میکنه همه پارامتر ها مثل قبله، آیا رفتار شبکه منطقیه؟

Epoch 1/10
81/81 [==============================] - 74s 919ms/step - loss: 0.9530 - acc: 0.5320 - val_loss: 0.7234 - val_acc: 0.7247
Epoch 2/10
81/81 [==============================] - 73s 903ms/step - loss: 0.8058 - acc: 0.6211 - val_loss: 0.6075 - val_acc: 0.7424
Epoch 3/10
81/81 [==============================] - 71s 873ms/step - loss: 0.7392 - acc: 0.6617 - val_loss: 0.5463 - val_acc: 0.7559
Epoch 4/10
81/81 [==============================] - 76s 943ms/step - loss: 0.6543 - acc: 0.7141 - val_loss: 0.5913 - val_acc: 0.7660
Epoch 5/10
81/81 [==============================] - 80s 986ms/step - loss: 0.6141 - acc: 0.7442 - val_loss: 0.4644 - val_acc: 0.7965
Epoch 6/10
81/81 [==============================] - 80s 987ms/step - loss: 0.5673 - acc: 0.7666 - val_loss: 0.4430 - val_acc: 0.8226
Epoch 7/10
81/81 [==============================] - 76s 939ms/step - loss: 0.5352 - acc: 0.7894 - val_loss: 0.4146 - val_acc: 0.8302
Epoch 8/10
81/81 [==============================] - 81s 1s/step - loss: 0.4900 - acc: 0.8090 - val_loss: 0.4588 - val_acc: 0.8184
Epoch 9/10
81/81 [==============================] - 82s 1s/step - loss: 0.5082 - acc: 0.8036 - val_loss: 0.5285 - val_acc: 0.8074
Epoch 10/10
81/81 [==============================] - 78s 967ms/step - loss: 0.4861 - acc: 0.8129 - val_loss: 0.4481 - val_acc: 0.8209
1194/1194 [==============================] - 9s 8ms/step
Score: [0.44950839365447187, 0.8199329983249581]

پاسخ داده شده توسط (100 امتیاز)
...