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

با تشکر

دسته بندی ها

0 امتیاز

سلام ...با تشکر از عزیزانی که زحمت میکشن و به سوالات پاسخ میدهند...
سوالی در مورد کد پایتون برای کافه است...این کدهای زیر چه چیزی رو نشان میدهد؟

# the parameters are a list of [weights, biases]
filters = net.params['conv1'][0].data
vis_square(filters.transpose(0, 2, 3, 1))

و همینطور فرقش با کد زیر

feat = net.blobs['conv1'].data[0, :36]
vis_square(feat)

همینطور در کد اول چرا نمیشه که اسم conv1 رو به مثلا conv2 تغییر داد؟ ارور زیر رو میدهد

TypeError: Invalid dimensions for image data

ببخشید که یه مقدار کدها بهم ریختست ، نتونستم مرتبشون کنم

2-در مورد معماری الکس نت سوالی داشتم که آیا تصاویر ورودی 224*224 هستند یا 227*227...و اینکه crop size =227 در کافه چه هست؟
پیشاپیش ممنون از راهنمایی های شما عزیزان

توسط (215 امتیاز)

1 پاسخ

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

سلام
توضیحاتش که مشخصه اولی داره وزن ها رو نمایش میده (ویژوالایز میکنه)
دومی هم داره توده ها رو نمایش میده .
در کد اول میشه این کارو کرد چطور کد رو میزنید ؟

  1. تصاویر ورودی 227 در 227 کراپ میشن. اون کراپ در زمان ترینینگ بصورت رندوم انجام میشه و در زمان تست هم از وسط تصویر انجام میشه.

آپدیت :
من اون نمونه مثال رو اجرا کردم و متوجه شدم چرا خطا میگیرید . اگه خوب دقت کنید میبیند که ورودی اول شما برای اولین لایه فقط سه تا کانال ورودی داره . یعنی همون RGB . برای همین وقتی شما میخوایید وزنهای مروبط به لایه اول رو نمایش بدید چون عمق 3 دارن خیلی راحت قابل انجام هست.
اما وقتی به لایه دوم میرسید دقت کنید که عمق توده ورودی شما دیگه 3 نیست. عمق توده ورودی شما برابر با تعداد فیلترهای لایه قبله . مثلا لایه اول شما 96 فیلتر اگه داشت ورودی لایه دوم شما ( که همون خروجی لایه اول هست!! ) برابر با 96 میشه.
به همین ترتیب وقتی شما این توده رو به تابع matplotlib میفرستید (این تابع تو تابع vis_square فراخونی میشه برای نمایش دادن توده دریافتیش) اون به مشکل میخوره و خطا میده! چون بجای 3 کانال 96 تا میبینه . برای اینکه بتونید ویژوالایز بکنید میتونید مثلا اینطور عمل کنید :

print(filters.shape)
print(filters[0].shape)
print(filters[0,0:3,:,:])
x = filters[0,0:3,:,:]
print (x.shape)
vis_square(x.reshape(-1,3,3,3).transpose(0, 2, 3, 1)) 

من اینطور نوشتم تا وقتی اجرا میکنید توده ها رو هم ببینید و متوجه بشید چه اتفاقی داره میوفته و ایده بگیرید
نهایتا از خط زیر میتونید خیلی راحت برای نمایش همه فیلترها با هم استفاده کنید :

vis_square(filters[:,0:3,:,:].reshape(-1,3,3,3).transpose(0, 2, 3, 1))

و با افزایش بعد دوم مثلا از filters[:,0:3,:,:] به filters[:,3:6,:,:] میتونید بصورت جداگانه به همه وزنهای مربوط به اون 96 یا هرچندتایی که وجود دارن دسترسی پیدا کنید و نمایششون بدید. اول 3 وزن اول بعد 3 وزن بعدی و الی اخر همینطور میتونید پیش برید(میتونید خیلی راحت تو یه حلقه لوپ بندازید و ببینید)

توسط (4.3k امتیاز)
انتخاب شده توسط
سلام...سید جان واقعا ممنونم ازت که به سوالاتمون پاسخ میدی ...
اها....
من دقیقا عین همون کد اول رو نوشتم ، فقط بجای Conv1  نوشتم conv2...وقتی که Conv1  نوشتم ، کدم هیچ ارور و مشکلی نداره و به راحتی کار میکنه...فقط میخوام خروجی مثلا  conv2  رو ببینم ایراد داره
https://pastebin.com/zmZC0PwW

و اینکه ، مگه تصاویر ورودی الکس نت سایز 224*224 نیستن؟فکر میکردم تصویر ورودیشون این سایز باشه نه 227*227
سلام .
خواهش میکنم . جواب شما رو دادم .
الکس نت ورودیش 227 در 227 هست وگرنه توده ورودی 55 در 55 درنمیاد. این قضیه خیلی ها رو سرکار گذاشته بود تا دو سه سال بعد مقاله اش حتی . شما با خیال راحت 227 کار کنید.
...