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

با تشکر

0 امتیاز

با سلام و احترام
یک سوال در مورد کانال تصاویر و تنظیم اونها در شبکه ها داشتم. بعضی شبکه ها را خودمون میتونیم بنویسیم که تصاویرمون مثلا تک کاناله هست( خاکستری) و یا مثلا سه کاناله ( رنگی). اما در شبکه های رزنت و مثلا الکس نت همچین چیزی وجود نداره و نمیتونیم خودمون مطابق داده خودمون ست کنیم(یعنی من که کدی مبنی بر تنطیم کانال ندیدم در شبکه). به همین خاطر مثلا اگه داده های ما خاکستری هستند، شبکه از همون اول میاد بچ سایزی که ما دادیم و سایز طول و عرض تصاویر و همچنین کانال 3( یعنی تصویر رنگی) را میگیره و طبق اون جلو میره. در نهایت هم به خطا میخوره چون تصویر خاکستری را تصویر رنگی فرض کرده.
می خاستم بدونم کسی میتونه راهنمایی کنه در این دو شبکه چطور میشه کانال را خودمون تنظیم کنیم ؟
سپاس

سوال شده توسط (150 امتیاز)

3 پاسخ

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

سلام
مشکلی نیست کافیه اسم لایه اولتون رو عوض کنید تا پارامترهاش از ابتدا یادگرفته بشه. نیازی به تغییری بقیه لایه ها نیست.

پاسخ داده شده توسط (4.3k امتیاز)
انتخاب شده توسط
سلام
من اسم لایه اولو که لایه دیتا هست عوض کردم. قسمت زیر در فایل پروتوتکس رو هم عوض کردم و مطابق ورودی خودم قرار دادم.
layer {
  name: "data"
  type: "Input"
  top: "data"
  input_param { shape: { dim: 1 dim: 1 dim: 2435 dim: 2435 } }
}
بازم موقع اجرا کانال را 3 در نظر میگیره
تصاویر من gray scale هستند. نمیدونم باید چیکا کنم که کانال را 1 بکنه. اینجوری فضای اضافه در نظر میگیره و یه جور سربار به سیستم تحمیل میکنه.
مشکلم حل شد.
فقط به یه طریق میشه دیتاست تک کاناله را به کفی فهموند. اونم اینه که موقع ساخت دیتاست عبارت gray تایپ بشه. به این صورت:
convert_imageset --gray [training data location] [location to train.txt] [location where lmdb will be created]
بعد از اینکه دیتاست ساخته شد و به شبکه تزریق شد ، مقدار کانال با یک مقدار دهی میشه
سلام. با عرض پوزش بخاطر تاخیر در جواب . اول اینکه خدا رو شکر که مشکلتون حل شد . اما در مورد جوابی که گرفتید و سوالاتی که کردید باید عرض کنم منظور از لایه اول، اولین لایه کانولوشن بود . نه دیتا. شما لایه دیتا رو تغییر بدید اما دیتای ورودی تعداد کانالش نخونه باز مشکل دارید و کاری از پیش نمیبرید .
فرض من این بود که دیتاست شما قبلا بصورت سیاه و سفید تبدیل شده حالا از یک مدل از پیش اموزش داده شده مثل الکس نت که روی تصاویر رنگی اموزش دیده میخوایید استفاده کنید.
0 امتیاز

وقتی شما می خواهید از شبکه های از پیش آموزش دیده استفاده کنید لازم است طبق معماری شبکه رفتار کنید.
این شبکه ها برای عکس ها با 3 کانال طراحی شدند. اگر داده های شما تک کاناله هستند نیاز است که معماری شبکه را تغییر دهید. و این امر موجب میگردد که از شبکه های از پیش اموزش دیده نتوانید استفاده کنید.
مگر آنکه شبکه دیگری پیدا کنید که اساسا برای عکس های تک کاناله طراحی شده باشند.

پاسخ داده شده توسط (418 امتیاز)
در معماری lenet این امکان بود که هم سایز تصاویر ورودی و هم عدد کانال را خودمون مشخص کنیم. سایر شبکه ها به همین صورت نیستند؟ یعنی اگه شبکه ای روی تصاویر سه کاناله ترین شده باشه و پارامتر channel هم نداشته باشه که تغییرش بدیم بنابراین باید بریم سراغ یه شبکه دیگه؟؟
ممنون از شما
+2 امتیاز

شبکه های کانولوشن عمیق برای تعداد رنگ خاصی طراحی نمی شوند. رنگ در شبکه های cnnفقط در لایه ی ورودی مطرح هست و باید به تعداد رنگ کانال های مختلف قرار بدهیم اما از لایه ی مخفی به بعد طراحی شبکه وابسته به رنگ نیست
پس کافی هست تعداد کانال های لایه ی ورودی را تغییر بدید و از هر معماری که نیاز دارید استفاده کنید.

پاسخ داده شده توسط (397 امتیاز)
منم همین رو خدمتتون عرض کردم. گفتم که میخواستم تعداد کانال های لایه ورودی را تغییر بدم. اما در لایه های اولیه چیزی مبنی بر channel نوشته نشده که بخوایم عددش رو تغییر بدیم. در شبکه های مزبور چطور میشه تعداد کانال های لایه ورودی را تغییر داد در صورتی که هیچ اطلاعاتی مبنی بر کانال در لایه ها نوشته نشده؟
این بستگی به فریمورکی داره که شما ازش دارید استفاده میکنید
فرم ورک من caffe هست.
...