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

با تشکر

دسته بندی ها

0 امتیاز


سلام
این ساختار معماری Renet هست
1- اون قسمت که باید سه لایه با هم concat و batchnorm بشن رو نمیدونم چطور پیاده کنم
لینک مقاله
اگر درست متوجه شده باشم لایه 14و18و21 رو باید با هم یکی کرد
این شکلی درسته با توجه به مدلی که در آخر اومده ؟

concatenated = keras.layers.concatenate([lay6,lay5_2,lay4_2],axis=3)

ولی خطا میده

ValueError: `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got inputs shapes: [(None, 10, 25, 128), (None, 10, 25, 128), (None, 19, 50, 64)]

فکر کنم باید سه لایه رو یک شکل کرد ولی نمیدونم چجوری محاسبه میشهReshape شون؟

2- Upsample برای چی استفاده میشه ؟ و چرا تو لایه ی آخر ؟
مدل :

input_img = Input(shape=(width, height,1))

lay1 = Conv2D(32, (3, 3), padding='same', activation='relu')(input_img)
lay1_2 = MaxPooling2D(pool_size=(2, 2),padding='same')(lay1)
lay1_3=Dropout(0.2)(lay1_2)

lay2 = Conv2D(32, (3, 3), padding='same', activation='relu')(lay1_3)
lay2_2 = MaxPooling2D(pool_size=(2, 2),padding='same')(lay2)
lay2_3=Dropout(0.2)(lay2_2)

lay3 = Conv2D(64, (3, 3), padding='same', activation='relu')(lay2_3)
lay3_2 = MaxPooling2D(pool_size=(2, 2),padding='same')(lay3)
lay3_3=Dropout(0.2)(lay3_2)

lay4 = Conv2D(64, (3, 3), padding='same', activation='relu')(lay3_3)
lay4_2 = MaxPooling2D(pool_size=(2, 2),padding='same')(lay4)
lay4_3=Dropout(0.2)(lay4_2)

lay5 = Conv2D(128, (3, 3), padding='same', activation='relu')(lay4_3)
lay5_2 = MaxPooling2D(pool_size=(2, 2),padding='same')(lay5)
lay5_3=Dropout(0.2)(lay5_2)

lay6 = Conv2D(128, (3, 3), padding='same', activation='relu')(lay5_3)
lay6_2 = MaxPooling2D(pool_size=(2, 2),padding='same')(lay6)
lay6_3=Dropout(0.2)(lay6_2)

concatenated = keras.layers.concatenate([lay6,lay5_2,lay4_2],axis=3)
    
    

توسط (208 امتیاز)
ویرایش شده توسط

2 پاسخ

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

سلام
اول چندتا نکته در مورد کدتون:
به معماری که توی مقاله گفته شده بیشتر دقت بکنید اگه میخواید دقیقا مثل خودش پیاده بشه، برای مثال اگه جدول 2 از مقاله رو ببینید، لایه های pooling چهارم و پنجم، ابعاد پنجره 3x3 دارن و stride شون هم 1 ه، یعنی در واقع ابعاد تصویر رو اگه padding داشته باشید تغییر نمیدن و توی قسمت Baseline FCN Architecture هم روی این موضوع تاکید شده
اما شما همه لایه های pooling تون رو یه جور پیاده کردید (شبیه مقاله اصلی) و ابعاد feature map هاتون کم شده
همین نکته رو رعایت کنید، دیگه مشکلی توی concat کردن feature map ها ندارید چون نه توی convها و نه توی pool4 و pool5 ابعاد تغییری نمی کنه و خطا هم نمی گیرید و سوال اولتون حل میشه و نیازی نیست که reshape یا resize کنید
در مورد این هم که دقیقا مطمئن بشید کدوم لایه های بوده که با هم concat شده، بازم توصیه می کنم خیلی دقیق جدول 2 مقاله رو ببینید. البته اینا همش به این خاطر که بتونید نتایج اونها رو تولید کنید وگرنه وحی منزلی توی این معماری نیست

2-شما هدفتون اینه که یه نقشه segmentation به ابعاد تصویر ورودی به دست بیارید اما 2 تا لایه pooling دارید حداقل که سایز feature map ها رو 1/8 میکنه. برای همین لایه آخر رو با bilinear interpolation دوباره بزرگ میکنید که به اندازه تصویر اصلی تبدیل بشه. دوباره این قسمت هم ایده این مقاله و fcn اولیه بوده و کلی ساختار دیگه هست که با ایده های دیگه ای سایز feature map ها رو بزرگ می کنن یا اینکه اصلا اجازه نمی دن سایز اونها کوچیک بشه

توسط (1.6k امتیاز)
انتخاب شده توسط
0 امتیاز

سلام
کلا برای پیاده سازی هز معماری به مقاله اصلی یا صفحه نوسینده ان مراجعه کنید.
برای resnet هم چنین صفحه ای بع ادرس ریز وجود دارد که به خوبی لایه ها را نشان میدهد.
rennet_50
,و این صفحه گیت نویسنده مقاله مرجع هست:
github_page

البته پیاده سازی ها با caffe‌هستن ولی باکمی دقت میتوانید متوجه شوید

توسط (115 امتیاز)
سلام
ممنونم ولی
مقاله Renet هست نه Resnet و تو وب چیزی پیدا نکردم
سوالم بیشتر اینه که وقتی ابعاد ما
[(None, 10, 25, 128), (None, 10, 25, 128), (None, 19, 50, 64)]
هست دو تا شون یکسان هستن که مشکلی نداریم برای concat ولی سومی ابعاد خاص داره، چطور عوضش کنم که بشه با این دو با هم concat کنم ؟
...