جستجو برای:
  • فروشگاه
  • وبلاگ
  • آموزش‌های رایگان
    • آموزش پایتون رایگان
    • آموزش یادگیری ماشین رایگان
    • آموزش یادگیری عمیق رایگان
    • آموزش pytorch رایگان
    • آموزش گوگل کولب
    • آموزش رایگان matplotlib
    • آموزش متلب رایگان
    • دوره‌های خارجی
  • نقشه راه AI
  • کلاس خصوصی
  • همکاری با ما💚
  • حساب کاربری
  • اساتید
  • درباره ما
     
    • 0902-546-9248
    • howsam.mail@gmail.com
    آکادمی هوش مصنوعی هوسم
    • فروشگاه
    • وبلاگ
    • آموزش‌های رایگان
      • آموزش پایتون
      • آموزش یادگیری ماشین رایگان
      • آموزش یادگیری عمیق
      • آموزش pytorch
      • آموزش گوگل کولب
      • آموزش رایگان matplotlib
      • آموزش متلب
      • دوره‌های خارجی
    • نقشه راه AI
    • کلاس خصوصی
    • درباره ما
      • اساتید
      • پشتیبانی
      • هوسم در اینستا و تلگرام
        • اینستاگرام هوسم (howsam_org@)
        • تلگرام هوسم (howsam_org@)
        • تلگرام پایتورچ (pytorch_howsam@)
    • همکاری با ما💚
    0

    ورود و ثبت نام

    بلاگ

    آکادمی هوش مصنوعی هوسم وبلاگ یادگیری عمیق شبکه عصبی کانولوشن

    شبکه عصبی کانولوشن

    2024/08/02
    ارسال شده توسط سید سجاد اشرفی
    یادگیری عمیق
    25.64k بازدید

    به‌نام خدا، سلام… در این پست می‌خواهم به آموزش شبکه عصبی کانولوشن بپردازم. دراینجا صرفا شبکه عصبی کانولوشن را توضیح داده‌ام. در این آموزش شبکه کانولوشن را برای موضوع طبقه بندی توضیح داده‌ام. امیدوارم با این آموزش دوستی خوبی بین شما و شبکه کانولوشنی شکل بگیرد. بسیارخب، با CNN چیست شروع می‌کنیم. با هوسم همراه باشید…

    فهرست مطالب نمایش
    1. شبکه عصبی کانولوشن (CNN) چیست؟
    2. تاریخچه شبکه عصبی کانولوشن (CNN)
    2.1. گرد و خاک به‌پا کردن شبکه عصبی کانولوشن
    2.2. طوفان شبکه کانولوشن
    3. آشنایی با شبکه عصبی کانولوشن
    3.1. تفاوت شبکه عصبی MLP و کانولوشن
    3.2. حالا نقطه قوت شبکه CNN چیست؟
    3.3. یک معماری ساده از معماری شبکه عصبی کانولوشن
    4. تصویر در پردازش تصویر
    4.1. تصویر سطح خاکستری در پردازش تصویر
    4.2. تصویر رنگی در پردازش تصویر
    4.3. تنسور چیست؟
    5. کانولوشن چیست؟
    5.1. مثال عددی از کانولوشن
    5.2. چرا سایز خروجی کانولوشن کوچک شد؟!
    5.3. کانولوشن زیر ذره‌بین
    5.3.1. نکته اول
    5.3.2. نکته دوم
    5.3.3. نکته سوم
    5.4. کانولوشن با ورودی سه‌بعدی
    6. لایه کانولوشن در شبکه عصبی کانولوشن (Convolutional Layer)
    6.1. چرا یک لایه کانولوشنی نیاز است؟
    6.2. نمایش لایه کانولوشن
    6.3. تعداد فیلتر در لایه کانولوشن
    6.4. اندازه فیلتر در لایه کانولوشن
    6.5. اندازه پدینگ (padding) در لایه کانولوشن
    6.6. اندازه stride در لایه کانولوشن
    7. لایه غیرخطی در شبکه عصبی کانولوشن (Activation Function)
    8. لایه پولینگ در شبکه عصبی کانولوشن (Pooling Layer)
    9. طراحی شبکه عصبی کانولوشن ساده
    10. لایه فولی کانکتد در شبکه عصبی کانولوشن (Fully Connected Layer)
    11. سوالات رایج درباره شبکه عصبی کانولوشن
    12. دریافت PDF آموزش شبکه عصبی کانولوشن
    13. آموزش یادگیری عمیق رایگان
    14. واقعا به پایان رسیدم؟!

    شبکه عصبی کانولوشن (CNN) چیست؟

    شبکه عصبی کانولوشن (CNN) یک شبکه عصبی قدرتمند و پرکاربرد در یادگیری عمیق است که برای پردازش داده‌های شبکه‌ای (Grid-Structured Data) مانند تصاویر به کار می‌رود. این شبکه شامل اجزای مختلفی از جمله فیلترهای کانولوشنی برای استخراج ویژگی، لایه‌های pooling برای کاهش بُعد و لایه‌های fully connected برای طبقه‌بندی نهایی است. به دلیل توانایی بالای CNN در تشخیص الگوهای پیچیده، این شبکه‌ها نه تنها در پردازش تصویر، بلکه در حوزه‌های دیگری مانند پردازش زبان طبیعی و تشخیص گفتار نیز کاربرد دارند.

    تاریخچه شبکه عصبی کانولوشن (CNN)

    از زمان پیدایش یادگیری عمیق (Deep Learning)، شبکه عصبی کانولوشن (Convolutional Neural Network) گل سرسبد ایده‌ها در یادگیری عمیق بوده است. به شبکه کانولوشن به اختصار CNN یا ConvNet گفته می‌شود. شبکه CNN در سال 1990 با الهام‌گیری از آزمایش‌های انجام‌شده توسط Hubel و Wiesel روی قشر بینایی (Visual Cortex) معرفی شد. یکی از اولین پروژه‌های انجام‌شده با این شبکه CNN، پروژه معروف شناسایی ارقام دست‌نویس MNIST در سال 1998 توسط Yann Lecun بود که نتایج امیدوارکننده‌ای به همراه داشت.

    شبکه عصبی کانولوشن
    شکل 1: Hubel و Wiesel که در سال 1962 آزمایش‌هایی روی قشر بینایی (Visual Cortex) گربه انجام دادند و در دهه 90 شبکه کانولوشن را ارائه کردند.

    گرد و خاک به‌پا کردن شبکه عصبی کانولوشن

    اما درخشش اصلی شبکه کانولوشن در سال 2012 در جریان رویداد “ImageNet Large Scale Recognition Challenge” (همان مسابقه ImageNet) اتفاق افتاد. اتفاقی که توجه جامعه محققین را به خود جلب کرد. در مسابقه ImageNet سال 2012، Alex Krizhevsky از دانشگاه تورنتو با شبکه AlexNet وارد مسابقه پیچیده ImageNet شد. مسابقه ImageNet یک چالش دسته‌بندی (Classification) با 1.2 میلیون تصویر در 1000 کلاس بود. شبکه AlexNet با خطای 16.4٪ به رتبه اول مسابقه رسید. به نظر شما نفر دوم به چه خطایی دست یافته بود؟ 26.2%! اختلاف خطای حداقل 10 درصدی بین شبکه CNN با سایر روش‌ها…

    با این نتیجه، AlexNet مشت محکمی بر میز کوبید و نقشه راه جدیدی در بینایی کامپیوتر ترسیم کرد. از آن زمان تا امروز (2020)، تحقیقات CNN رشد چشم‌گیری داشته است. تنها در 3 سال، محققان از 8 لایه AlexNet به 152 لایه ResNet رسیدند و میزان خطای چالش ImageNet را به کمتر از 4٪ کاهش دادند. 12% کاهش خطا طی 3 سال با شبکه CNN، البته با افزایش پیچیدگی ساختار شبکه CNN!

    شبکه کانولوشن
    شکل 2: گروهی که روی شبکه AlexNet کار کردند. راست: Geoffrey Hinton، وسط: Alex Krizhevsky، چپ: Ilya Sutskever. آقای Alex Krizhevsky حواسش به دوربین نیست و دل در گروی نورون یار (AlexNet) بسته!

    طوفان شبکه کانولوشن

    سرعت رشد شبکه کانولوشنی آنقدر زیاد بود که در مدت کوتاهی، در بسیاری از زمینه‌های مشکلِ بینایی کامپیوتر مانند شناسایی عمل انسان، تشخیص اشیا، شناسایی چهره و ردیابی انقلابی برپا کرد. با سیطره بر بینایی کامپیوتر، شبکه کانولوشنی در سایر زمینه‌های هوش مصنوعی مانند پردازش زبان و گفتار نیز وارد شد و اتفاقا نتایج خوبی هم بدست آورد. مثلا، گوگل با استفاده از شبکه کانولوشن در یادگیری تقویتی، مدل AlphaGo را ساخت که توانست بهترین بازیکن بازی سخت Go را قدرتمندانه شکست دهد و در سرتیتر اخبار قرار گیرد. شبکه عصبی کانولوشن همچون مارکوپولو وارد قلمروهای مختلف شد و حتی در حوزه پزشکی نیز به دستاوردهای قابل اعتنایی دست یافت. با این دستاوردها، شبکه CNN فرزند خلف یادگیری عمیق بود که باعث شد یادگیری عمیق به شهرتی روزافزون دست یابد.

    شبکه cnn
    شکل 3: مسابقه GO بین Lee Sedol (سمت راست) و AlphaGo؛ اون آقای سمت چپی AlphaGo نیست و صرفا حرکات رو براساس اونچه که در مانیتور نشون داده میشه، اجرا میکنه. 😃

    بعد از جواب به سوال “شبکه عصبی کانولوشن چیست؟”، می‌خواهم کمی شما را با شبکه کانولوشن آشنا کنم. در بخش بعدی، خیلی وارد جزئیات نمی‌شوم، اما رفته رفته تا آخر این پست به جزئیات شبکه CNN هم خواهیم رسید.

    آشنایی با شبکه عصبی کانولوشن

    شبکه عصبی کانولوشن همانند سایر شبکه های عصبی (مثلا شبکه عصبی MLP) از لایه‌های نورونی با وزن و بایاس با قابلیت یادگیری تشکیل شده است. قطعا می‌دانید که در هر نورون اتفاقات زیر رخ می‌دهد:

    1. نورون مجموعه‌ای ورودی دریافت می‌کند.
    2. ضرب داخلی بین وزن‌های نورون و ورودی‌ها انجام می‌شود.
    3. حاصل با بایاس جمع می‌شود.
    4. درنهایت، از یک تابع غیرخطی (همان activation function) عبور داده می‌شود.
    شماتیک نورون مصنوعی artificial neuron
    شکل 4: شماتیک نورون مصنوعی (artificial neuron)

    فرآیند بالا لایه به لایه انجام می‌شود و درنهایت به لایه خروجی می‌رسیم. لایه خروجی، پیش‌بینی شبکه را تولید می‌کند. اما با این حد از تشابه بین شبکه MLP و شبکه CNN، پس تفاوت در چیست؟ در ادامه به این سوال مهم جواب می‌دهم…

    تفاوت شبکه عصبی MLP و کانولوشن

    تفاوت در ورودی است، مثلا تصویر… تصاویر معمولا به شکل یک ماتریس دوبعدی از اعداد نمایش داده می‌شوند. هر درایه در این ماتریس دوبعدی معادل با یک پیکسل هست. در بخش بعدی درمورد تصویر بیشتر توضیح خواهم داد. اگر یک تصویر 100×100 داشته باشیم، یعنی 10000 پیکسل داریم که به صورت دوبعدی به‌صورت مسالمت‌آمیز کنار هم‌دیگر نشسته‌اند. حال تصور کنید بخواهیم یک لایه ورودی برای این 10000 پیکسل بسازیم؛ باید 10000 نورون برای لایه ورودی شبکه MLP درنظر بگیریم. اضافه کردن نورون و لایه بیشتر به این شبکه MLP باعث می‌شود شبکه ما شامل حجم بزرگی از پارامترها شود، محاسباتش هزینه‌بر باشد و البته Overfitting اتفاق بیفتد.

    شبکه عصبی MLP
    شکل 5: اعمال تصویر ورودی به شبکه MLP؛ ابتدا تصویر باید به یک بردار تبدیل شود و بعد به شبکه MLP داده شود.

    حالا نقطه قوت شبکه CNN چیست؟

    این شبکه‌ها به‌گونه‌ای طراحی شده‌اند که برای ورودی‌های با ساختار ماتریسی (دوبعدی و سه‌بعدی) به‌خوبی کار می‌کنند. شبکه MLP، ساختار داده‌های ورودی را عوض می‌کند و یک ماتریس دوبعدی 100×100 را تبدیل به یک بردار به ابعاد 10000 می‌کند. اما شبکه CNN ساختار ورودی را عوض نمی‌کند و به ارتباط بین پیکسل‌های همسایه اهمیت می‌دهد.

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

    شبکه cnn
    شکل 6: یک شی در تصویر از مجموعه‌ای پیکسل درکنار هم تشکیل می‌شود. بنابراین، حفظ این آرایش پیکسلی مهم است.

    آیا شبکه CNN تنها برای تصویر دوبعدی مناسب است؟ خیر، داده‌های زیر غذای خوشمزه‌ای برای شبکه CNN هستند:

    • داده‌های یک بعدی: سیگنال و sequence (مثلا یک sequence از کلمات)
    • داده‌های دوبعدی: تصویر و طیف (spectogram) صوت
    • داده‌های سه بعدی: ویدئو و تصاویر حجمی (مثلا تصاویر MRI)
    • داده‌های چهاربعدی: تصاویر حجمی همراه با زمان (مانند fMRI)

    بعد از آشنایی با مزایای شبکه کانولوشن و بررسی تفاوتش با شبکه MLP، وقتش رسیده که معماری این شبکه را زیر تیغ جراحی ببریم. اما بیایید اول یک آشنایی کلی با معماری شبکه CNN بدست آوریم.

    یک معماری ساده از معماری شبکه عصبی کانولوشن

    در شکل 7 یک مثال ساده از معماری شبکه عصبی کانولوشن نشان داده شده است. شبکه کانولوشن معمولا از بلوک‌های مختلفی تشکیل شده است. لایه‌ها یا بلوک‌های مختلف در شبکه CNN عبارتنداز:

    • لایه ورودی (Input layer) [بلوک زرد در شکل 7]
    • لایه کانولوشن (Convolutional layer) [بلوک‌های آبی در شکل 7]
    • لایه غیرخطی (Non-linear activation function) [بلوک‌های آبی در شکل 7] (معمولا تابع غیرخطی را همراه با لایه کانولوشنی یک‌جا نشان می‌دهند)
    • لایه پولینگ (Pooling layer) [بلوک‌های قرمز در شکل 7]
    • لایه فولی کانکتد (Fully connected layer) [بلوک‌های سبز در شکل 7]
    آشنایی با شبکه عصبی کانولوشن
    شکل 7: یک مثال ساده از معماری شبکه عصبی کانولوشن

    در ادامه این پستِ آموزشِ شبکه عصبی کانولوشن، لایه‌های بالا را توضیح می‌دهم. شاید بگویید که لایه ورودی که صرفا تصویر است و جز لایه‌های شبکه محسوب نمی‌شود. اما، من لایه ورودی را هم اضافه کردم و لازم هست درباره آن توضیح دهم. پس، ابتدا ورودی را بررسی می‌کنیم، سپس به لایه‌های شبکه کانولوشن می‌رسیم. در بالا اشاره کردم که شبکه CNN ورودی‌های متنوعی را می‌پذیرد. اما من دراینجا می‌خواهم معروف‌ترین داده ورودی به شبکه CNN، یعنی تصویر را فقط بررسی کنم.

    تصویر در پردازش تصویر

    در ساده‌ترین تعریف ممکن، تصویر یک آرایه یا ماتریس دوبعدی از اعداد است که هریک از درایه‌های آن معادل یک پیکسل هست. در شکل 8 یک نمونه تصویر نشان داده شده است. نمایی زوم‌شده از تصویر نیز نشان داده شده. مشاهده می‌کنید که چگونه مربع‌های کوچک در کنارهم قرار گرفته‌اند. به جدول اعداد نگاه کنید؛ اگرچه درحالت معمولی ما یک تصویر با رنگ می‌بینیم (تصویر سمت چپ شکل 8)، اما این اعداد هستند که این رنگ‌ها را می‌سازند (جدول سمت راست شکل 8)!

    مقادیر موجود در تصویر یا ماتریس بین 0 تا 255 هستند. مقدار صفر معادل با رنگ سیاه مطلق و مقدار 255 معادل با رنگ سفید است. هرچقدر این مقادیر به صفر نزدیک‌تر باشد، آن پیکسل تیره‌تر می‌شود. هرچقدر مقدار پیکسل به 255 نزدیک‌تر باشد، رنگ آن پیکسل روشن‌تر می‌شود. همان‌طور که در شکل 8 مشاهده می‌کنید، نواحی تیره در ناحیه بزرگنمایی شده (سمت چپ و پایین) مقادیر کمتری دارند (مثلا اعداد 59 61 65). همچنین نواحی روشن (سمت راست و بالا)، مقادیر بزرگتری دارند (مثلا اعداد 206 207 204).

    تعریف تصویر و پیکسل در پردازش تصویر
    شکل 8: یک نمونه تصویر همراه نمایی زوم‌شده از تصویر؛ در ناحیه زوم‌شده، هم پیکسل‌ها را به‌راحتی می‌توانید مشاهده کنید و هم اعداد متناظر با هر پیکسل نشان داده شده است.

    دو نوع تصویر سطح خاکستری (Gray scale image) و تصویر رنگی (RGB image) معمولا به‌عنوان ورودی به شبکه عصبی کانولوشن داده می‌شود.

    تصویر سطح خاکستری در پردازش تصویر

    ساده‌ترین نوع تصویر، یک تصویر سطح خاکستری است. در واقع این تصویر یک ماتریس دوبعدی است. تصویر شتر در شکل 8 یک نمونه تصویر سطح خاکستری است. شتر چیه؟! زرافه هست! 😅 داشتم متن رو بعد از مدتی مرور می‌کردم، دیدم شاخ شمشاد رو نوشتم شتر!

    تصویر رنگی در پردازش تصویر

    تصاویر رنگی ساختار کمی متفاوت دارند. تصویر رنگی از سه صفحه تشکیل شده است. این صفحات عبارتنداز صفحه قرمز (R)، صفحه سبز (G) و صفحه آبی (B). مشخصات هر صفحه مشابه همان تصویر سطح خاکستری است و مقادیر اعداد بین 0 تا 255 است. از ترکیب سه عدد، یک رنگ نهایی حاصل می‌شود. به‌همین خاطر به تصاویر رنگی، تصویر RGB گفته می‌شود. از ترکیب این سه صفحه، یک تصویر رنگی حاصل می‌شود. یک نمونه تصویر RGB در شکل 9 نشان داده شده است.

    تصویر رنگی در شبکه عصبی کانولوشنی
    شکل 9: تصویر رنگی و سه صفحه قرمز، سبز و آبی. از ترکیب اعداد سه صفحه، تصویر سمت راست ساخته می‌شود.

    پس تصویر رنگی از سه صفحه RGB تشکیل شده است. حالا که تصویر را شناختید، می‌خواهم شما را با تنسور آشنا کنم. در یادگیری عمیق به وفور کلمه تنسور را می‌شنوید. به‌صورت کوتاه در ادامه تنسور را توضیح می‌دهم.

    تنسور چیست؟

    در یادگیری عمیق، عبارت تنسور را زیاد خواهیم شنید. در گذشته همه ما با گونه‌های خاصی از تنسورها کار کردیم. اعداد، بردارها و ماتریس‌ها همگی حالات خاص یک تنسور هستند! تنسورها در واقع تعمیم یافته ماتریس‌ها هستند و می‌توان آنها را به صورت یک آرایه چندبعدی نمایش داد. یعنی، به عدد، بردار و ماتریس به‌ترتیب تنسور صفربعدی، یک بعدی و دوبعدی گفته می‌شود. دقت کنید که تنسورها دقیقا همانند ماتریس‌ها و بردارها می‌توانند اندیس‌دهی شوند. یعنی ما با کمک اندیس‌دهی می‌توانیم به تمامی عناصرِ یک تنسور دسترسی داشته باشیم. یک تصویر سطح خاکستری معادل با تنسور دوبعدی و تصویر رنگی معادل با تنسور سه بعدی است. البته، در یادگیری عمیق تنسور چهاربعدی هم خواهید دید! پیشنهاد می‌کنم بخش آشنایی با تنسور در ریاضیات را مطالعه کنید.

    بسیارخب، درادامه توضیح لایه‌های اصلی شبکه عصبی کانولوشن را شروع می‌کنم. اولین لایه، لایه کانولوشنی است. پس برویم با کانولوشن آشنا شویم و بعد هم لایه کانولوشنی را زیر ذره‌بین قرار دهیم…

    کانولوشن چیست؟

    در عملگر کانولوشن، مطابق شکل 10 چهار مولفه مهم وجود دارد که عبارتنداز:

    • ماتریس یا تصویر ورودی (Input)
    • فیلتر یا کرنل کانولوشنی (Convolution Filter)
    • عملگر کانولوشن (*)
    • ویژگی خروجی کانولوشن (Output)
    عمل کانولوشن به صورت تصویری
    شکل 10: چهار مولفه اصلی در کانولوشن

    خیلی ساده بخواهم عملکرد کانولوشن را توضیح دهم، باید بگویم که عملگر کانولوشن (*)، کرنل یا فیلتر کانولوشنی را برمی‌دارد و روی تصویر یا ماتریس ورودی می‌لغزاند. به‌عبارتی دیگر، کرنل یا فیلتر روی تصویر حرکت می‌کند یا تصویر ورودی را اسکن می‌کند. به شکل زیر نگاه کنید؛ ماتریس آبی معادل با تصویر یا ویژگی ورودی و ماتریس قرمز معادل با فیلتر یا کرنل کانولوشنی است. به نحوه حرکت یا اسکن فیلتر روی تصویر دقت کنید. فیلتر ابتدا هرسطر را ستون به ستون طی می‌کند و بعد یک سطر پایین می‌آید و دوباره ستون به ستون جلو می‌رود و این فرآیند تا آخر ادامه دارد…

    کانولوشن دو بعدی
    شکل 11: اسکن شدن ماتریس ورودی با فیلتر کانولوشنی

    مثال عددی از کانولوشن

    اما ماتریس ورودی و فیلتر بالا شامل هیچ‌گونه عددی نیستند. حالا به تصویر زیر نگاه کنید؛ هر فیلتر کانولوشنی، شامل مجموعه‌ای عدد است. با قرار گرفتن فیلتر روی هربخش از تصویر، اعدادِ در فیلتر درایه به درایه در پیکسل‌های متناظر تصویر ضرب می‌شوند. درنهایت همه اعداد باهم جمع می‌شوند. مثلا در تصویر زیر، 9 ضرب نظیر به نظیر بین یک بخش 3×3 از ماتریس آبی با ماتریس قرمز انجام شده است. درنهایت، این 9 ضرب باید باهم به شکل زیر جمع شوند:

    1×1 + 2×-1 + 3×4 + 5×-2 + 8×1 + 9×0 + 5×0 + 0×2 + 1×3 = 12

    نحوه انجام کانولوشن در تصویر
    شکل 12: یک مرحله از ضرب بین فیلتر و یک پنجره از ورودی در کانولوشن

    حالا این عدد 25 را کجا باید ذخیره کرد؟ فعلا مطابق شکل زیر، خروجی را در یک آرایه تنها قرار می‌دهیم.

    کانولوشن دوبعدی و شبکه کانولوشن
    شکل 13: محاسبه خروجی یک مرحله از کانولوشن

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

    آموزش کانولوشن مرحله به مرحله
    شکل 14: فرآیند کامل کانولوشن

    چرا سایز خروجی کانولوشن کوچک شد؟!

    چرا ماتریس خروجی در شکل 14، دو سطر و ستون کمتر از ماتریس ورودی دارد؟ چرا ماتریس خروجی در شکل 14، 3×3 است اما ماتریس ورودی 5×5 است؟ چرا هم‌اندازه نیستند؟ جواب این سوال‌ها این است که بسته به اندازه فیلتر، اندازه ماتریس خروجی تغییر می‌کند. مثلا وقتی فیلتر 3×3 باشد، خروجی 2 سطر و ستون کمتر از ورودی خواهد داشت. حالا بیایید این مساله را فرموله کنیم. فرض کنید ماتریس ورودی و فیلتر مربعی باشند و سایز آنها به‌ترتیب برابر با n و k باشد. دراینصورت، سایز خروجی m با رابطه زیر بدست می‌آید:

    m = n – (k-1)

    به همین سادگی… حالا اگر سایز ورودی و فیلتر به‌ترتیب 5×5 و 3×3 باشد، اندازه خروجی برابر با 3×3 خواهد بود. آیا راهی وجود دارد که اندازه ماتریس خروجی کاهش پیدا نکند و همان 5×5 بماند؟ بله وجود دارد، تکنیکی به نام padding یا لایه گذاری ماتریس وجود دارد که به دور ماتریس ورودی سطر و ستون‌هایی اضافه می‌شود که باعث می‌شود جلوی کاهش بعد خروجی گرفته شود. مثلا، در شکل 14، اگر ورودی را به‌نوعی جعلی به یک ماتریس 7×7 تبدیل کنیم، آنوقت خروجی 5×5 خواهد بود. یعنی اندازه خروجی برابر با همان ورودی است. دقت کنید؛ ما به‌صورت جعلی ورودی را افزایش بعد می‌دهیم. در بخش لایه کانولوشنی راه‌حلش را توضیح می‌دهم.

    قصد بررسی عمیق عملگر کانولوشن را ندارم، چون خود یک پست جداگانه و طولانی را می‌طلبد. اما می‌خواهم خیلی خلاصه درباره کارکرد کانولوشن توضیح دهم. پس بخش بعد را از دست ندهید…

    کانولوشن زیر ذره‌بین

    بیایید چند نکته از کانولوشن را باهم مرور کنیم.

    نکته اول

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

    پس کانولوشن منجر به یافتن الگوهای خاص در تصویر باتوجه به فیلتر می‌شود. اعداد موجود در فیلتر بسیار مهم هستند. به شکل 15 که یک سیگنال یک بعدی است دقت کنید. ببینید، چطور نواحی مشابه با فیلتر در خروجی آشکار شده است. دقیقا آنجایی که دو مربع روی هم قرار می‌گیرند، یک مقدار پیک در خروجی به‌وجود می‌آید. یعنی شباهت در آن نقطه بسیار بالاست.

    کانولوشن یک بعدی
    شکل 15: نمونه‌ای از یافتن الگوی مشابه در کانولوشن

    نکته دوم

    ارتباط دادن عمل کانولوشن به عملکرد یک نورون است. یک نورون یک جمع وزن‌دار (ضرب بین پارامترها و ورودی و نهایتا جمع) بود. اینجا هم همین است! فیلتر که شامل یک سری اعداد است به ورودی‌ها وزن می‌دهد (ضرب درایه به درایه بین فیلتر و پنجره‌های ماتریس ورودی) و نهایتا اعداد وزن‌دهی‌شده ورودی را باهم جمع می‌کند.

    نکته سوم

    در نورون پارامترها متغیر بودند و از طریق فرآیند آموزش بدست می‌آمدند. اینجا هم اعداد موجود در فیلتر از طریق فرآیند آموزش به‌دست می‌آیند. البته، قبل از پیدایش شبکه عصبی کانولوشن، از کانولوشن در پردازش تصویر و سیگنال بسیار زیاد استفاده می‌شد. اما اعداد فیلترهای کانولوشنی ثابت بودند و توسط یک متخصص این اعداد طراحی می‌شوند. مثلا در شکل 16 یک فیلتر لبه‌یابی با نتیجه خروجی را آورده‌ام. ببینید، فیلترها چه بلایی سر تصویر می‌آورند و فقط دنبال مطلوب خود هستند.

    لبه یابی تصویر با استفاده از کانولوشن
    شکل 16: پیدا کردن لبه‌های تصویر ورودی با استفاده از کانولوشن

    تا اینجا، به شما درباره کانولوشن تصویر دوبعدی (تصویر سطح خاکستری) توضیح دادم. اما در شبکه عصبی کانولوشن، معمولا ورودی یک تصویر رنگی (ماتریس سه بعدی) است. دراین‌حالت کانولوشن چگونه انجام می‌شود؟ بسیار ساده است…

    کانولوشن با ورودی سه‌بعدی

    همان‌طور که در بخش قبلی گفتم، تصویر رنگی سه کانال یا صفحه دارد. بنابراین، فیلتر شما هم باید سه کانال داشته باشد. یعنی اگر قبلا یک فیلتر 3×3 برای کانولوشن در تصویر دوبعدی داشتیم، حالا یک فیلتر 3×3×3 خواهیم داشت. چرا؟ چون هرصفحه از تصویر رنگی به‌صورت مجزا برای خودش یک فیلتر دارد. به شکل 17 نگاه کنید؛ سه صفحه از فیلتر به‌صورت موازی باهم روی سه صفحه از تصویر حرکت می‌کنند. با فرض اینکه فیلتر 5×5 باشد، در هرلحظه 25 ضرب در هرصفحه انجام می‌شود و درمجموع برای سه صفحه می‌شود 75 ضرب… درنهایت خروجی برابراست با جمع این 75 ضرب. پس درنهایت نتیجه ضرب سه صفحه باهم جمع می‌شود و خروجی نهایی یک تصویر 100×100×3 نیست، بلکه یک تصویر 100×100 است.

    کانولوشن در تصویر رنگی
    شکل 17: کانولوشن در تصویر رنگی

    حالا مثلا مثلا مثلا، اگر ورودی بجای 3 صفحه، 10 صفحه داشته باشد، برای خروجی چه اتفاقی می‌افتد؟ فیلتر چه شکلی خواهد بود؟ فیلتر باید 10 صفحه داشته باشد و اگر فرضا فیلتر را 5×5 درنظر بگیریم، اندازه فیلتر به شکل 5×5×10 باشد. هریک از این 10 صفحه، در صفحه متناظر با صفحه تصویر کانوالو می‌شود. بعد از توضیح درباره کانولوشن، وقت آن رسیده که درباره لایه کانولوشنی در شبکه عصبی CNN توضیح بدهم. برویم سراغ بخش بعدی…

     

     

    لایه کانولوشن در شبکه عصبی کانولوشن (Convolutional Layer)

    هسته اصلی شبکه CNN لایه کانولوشنی است که درصد اعظم محاسبات شبکه عصبی کانولوشن را به خود اختصاص داده است. هر لایه کانولوشن در شبکه عصبی کانولوشن شامل مجموعه‌ای فیلتر است و از کانولوشن بین فیلترها و لایه ورودی است که خروجی ساخته می‌شود. به خروجی لایه کانولوشنی، فیچرمپ (Feature Map) گفته می‌شود. می‌خواهم این جمله را کمی بشکافم و دقیق بگویم چیست.

    چرا یک لایه کانولوشنی نیاز است؟

    همان‌طور که بخش قبلی گفتم، یک فیلتر می‌تواند شامل یک الگویی خاص باشد و در تصویر به دنبال آن الگو باشد. اتفاقا در فرآیند آموزش شبکه، به دنبال این هستیم که این فیلترها الگوهای معناداری از هر تصویر استخراج کنند. مثلا، فیلتری داریم که شامل الگوی گوش گربه هست و می‌تواند حضور یک گربه در تصویر ورودی را تشخیص دهد. اما فقط به یک الگو بسنده کنیم؟ آیا گربه، فقط شامل یک الگوی خاص است؟ مثلا، دهان، گوش‌ها، چشم‌ها و دُم هرکدام الگوی خاصی از گربه نیستند؟ با یک فیلتر می‌شود همه این الگوها را شکار کرد؟ بهتر نیست شواهد بیشتری جمع کنیم و بعد تصمیم بگیریم؟

    این همان کاری است که در لایه کانولوشنی انجام می‌شود. جستجو در تصویر برای یافتن تنها یک الگو منجر به نتایج خوبی نمی‌شود و باعث می‌شود شبکه از لحاظ کارایی محدود باشد. برای حل این مشکل، نیاز است که لایه کانولوشنی چندین فیلتر داشته باشد. هریک از فیلترها به تنهایی یک الگوی خاص داشته باشند و خروجی لایه کانولوشنی مجموعه‌ای از الگوهای مختلف باشد. در شکل زیر، تصویری نشان داده شده که یک تصویر با فیلترهای مختلفی کانوالو شده و هر فیلتر هم یک خروجی جداگانه برای خود تولید کرده است. همه تصاویر مربوط به یک چهره با ماسک هست؛ اما دقت کنید که در هر تصویری یک مجموعه ویژگی خاص مورد توجه بوده است. مثلا در تصویری، لبه‌های افقی، در دیگری لبه‌های عمودی و غیره. در شکل زیر 64 فیلتر مختلف به تصویر ورودی اعمال شده است.

    خروجی لایه کانولوشنی در شبکه عصبی کانولوشن CNN
    شکل 18: اعمال 64 فیلتر مختلف به یک تصویر با لایه کانولوشنی

    اما، یک لایه کانولوشنی در شبکه عصبی کانولوشن را چگونه نمایش می‌دهند؟ بریم ببینیم…

    نمایش لایه کانولوشن

    نمایش بلوک دیاگرامی شکل زیر، یک نمایش مرسوم برای لایه کانولوشنی است. حالا جزبه‌جز درمورد شکل 19 توضیح می‌دهم؛ اول، تکلیف ورودی را مشخص کنم که یک تنسور سه بعدی است. دوم، فیلترها را مشاهده می‌کنید. دیگر یک فیلتر نداریم بلکه یک مجموعه فیلتر داریم (دراینجا N تا فیلتر). معمولا همه فیلترها را یک‌جا در قالب یک تنسور چهاربعدی نمایش می‌دهند. از سمت چپ به راست، هریک از ابعاد موجود در فیلتر معادل با موارد زیر هستند:

    • بعد اول، معادل با تعداد سطر (5)
    • بعد دوم، معادل با تعداد ستون (5)
    • بعد سوم، معادل با تعداد کانال (3)
    • بعد چهارم، معادل با تعداد فیلتر (N)

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

    درنهایت، خروجی یک فیچرمپ است به ابعاد 100×100×N که عدد سوم برابر با تعداد فیلترهاست. چرا؟ چون هر فیلتر یک خروجی تولید می‌کند و با N فیلتر، ما N صفحه خواهیم داشت. بنابراین، مطابق شکل زیر خروجی یک لایه کانولوشنی یک تنسور سه بعدی خواهد بود. اگر به شکل 18 دوباره نگاه کنید، می‌بینید که تعداد فیلترها برابر با N=64 است و خروجی هم یک تنسور سه بعدی با 64 صفحه هست. البته، در شکل 18، این 64 صفحه بازشده و به‌صورت جداگانه نمایش داده شده است.

    بلوک دیاگرام لایه کانولوشنی
    شکل 19: بلوک دیاگرام لایه کانولوشنی با N فیلتر

    خب، انتظار دارم با لایه کانولوشنی آشنا شده باشید. اما همواره با کانولوشن، مفاهیم یا پارامترهای مهمی مطرح می‌شوند که دانستن آنها ضروری است. درادامه، این پارامترها را به شما معرفی می‌کنم.

    تعداد فیلتر در لایه کانولوشن

    تعداد فیلترها، تعداد ویژگی‌های تشخیص داده شده را نشان می‌دهد. این هایپرپارامتر معمولا نمایی از 2 (معمولا بین 32 تا 4096) انتخاب می‌شود. معمولا استفاده از فیلترهای بیشتر باعث ایجاد یک شبکه عصبی قدرتمندتر می‌شود. اما این افزایش پارامترها ممکن است باعث overfitting شود.

    اندازه فیلتر در لایه کانولوشن

    اندازه فیلتر معمولا به صورت مربعی (برای تصاویر) و 3×3 تعریف می‌شود. اما 5×5 و 7×7 نیز گاهی استفاده می‌شود. با فیلترهای کوچک، تعداد پارامترهای قابل یادگیری بسیار کمتر می‌شود.

    اندازه پدینگ (padding) در لایه کانولوشن

    در بخش قبل دیدید که بعد از فیلتر کردن یک ماتریس 5×5 با فیلتر 3×3، سایز خروجی دو سطر و ستون کمتر از ماتریس ورودی داشت. گفتیم که با لایه گذاری یا padding می‌توانیم به صورت جعلی اندازه ورودی را افزایش دهیم تا ماتریس خروجی هم‌اندازه ماتریس ورودی بشود. درمورد لایه گذاری صحبت بسیار است و معمولا در پردازش تصویر بررسی می‌شود. اما یک راه ساده و رایج آن اضافه کردن سطر و ستون صفر به‌صورت متقارن به دور ماتریس ورودی است. به لایه گذاری صفر zero padding گفته می‌شود. به شکل 20 نگاه کنید که چگونه یک لایه صفر دور ماتریس قرار گرفته است. حالا فیلتر کانولوشنی ما فضای بیشتر برای گام برداشتن و اسکن کردن دارد و طبیعتا خروجی هم بزرگتر می‌شود.

    کانولوشن با padding
    شکل 20: کانولوشن با padding

    تمرین: علامت‌های سوال شکل بالا را پر کنید!

    از کجا بفهمیم چه تعداد لایه باید دور ماتریس اضافه کرد؟ بستگی به اندازه فیلتر دارد؛ قبلا هم گفته بودم که به اندازه n – (k-1)/2 از ماتریس خروجی کاسته می‌شود. بسیارخب، واضح است که به همین اندازه باید سطر و ستون به ماتریس ورودی اضافه کنیم. مثلا فرمول n – (k-1)/2 برای فیلتر 3×3 می‌گوید که باید به ماتریس ورودی 2 سطر و ستون اضافه شود. یک سطر را بالای ماتریس ورودی قرار می‌دهیم و یکی را هم پایین ماتریس… یک ستون را سمت چپ ماتریس و دیگری را سمت راست… به‌عنوان مثالی دیگر، اگر اندازه فیلتر 5×5 باشد، چهار سطر و ستون باید به ماتریس ورودی اضافه شود.

    اندازه stride در لایه کانولوشن

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

    تعریف stride 2 در شبکه کانولوشنی
    شکل 21: تعریف stride 2 در شبکه عصبی کانولوشن

    معمولا stride در لایه های کانولوشنی عدد 1 درنظر گرفته می‌شود.

    عملگر کانولوشن، یکی از مهم‌ترین مولفه‌هایی است که باعث می‌شود CNN نسبت به تغییرات مکانی مقاوم باشد. برای یک فیلتر با یک الگوی گربه، فرقی ندارد که گربه در کجای تصویر قرار دارد. درهرصورت آن گربه در تصویر را تشخیص می‌دهد. چون فیلتر کل تصویر را اسکن می‌کند و فارغ از موقعیت، گربه را تشخیص دهد.

    لایه غیرخطی در شبکه عصبی کانولوشن (Activation Function)

    مشابه با سایر شبکه های عصبی، شبکه عصبی کانولوشن هم از تابع تحریک یا activation function غیرخطی بعد از لایه کانولوشنی استفاده می‌کند. استفاده از تابع غیرخطی باعث ایجاد خاصیت غیرخطی در شبکه عصبی می‌شود که خیلی مهم است. بعضی از فریمورک‌ها در همان تعریف لایه کانولوشنی، به شما این امکان را می‌دهند که نوع تابع غیرخطی را هم مشخص کنید. در بعضی از فریمورک‌ها هم باید یک لایه جداگانه بسازید. تعریف تابع غیرخطی به صورت جدا از لایه کانولوشنی انعطاف پذیری بیشتری ایجاد می‌کند.

    در بین تمام توابع غیرخطی، تابع ReLU بیشترین محبوبیت را دارد. البته، از خانواده ReLU اعضای دیگری مانند PReLU Leaky-ReLU و غیره وجود دارند. در شکل زیر، تعدادی از توابع غیرخطی را مشاهده می‌کنید. به‌عنوان نمونه، تابع ReLU مقادیر کوچکتر از صفر (منفی) را صفر و مقادیر بزرگتر از صفر را بدون هیچ‌گونه تغییری به خروجی می‌برد.

    activation function در شبکه عصبی
    شکل 22: توابع غیرخطی در شبکه عصبی کانولوشن

    محاسبات موجود در تابع ReLU ساده و صرفا یک مقایسه است. به همین خاطر محاسبات در بخش تابع غیرخطی با استفاده از ReLU نسبت به سایر توابع غیرخطی (مانند tanh sigmoid) با سرعت بیشتری انجام می‌شود. از طرفی فرآیند آموزش با ReLU نسبت به سایر توابع غیرخطی سریع‌تر است. چون، توابع غیرخطی tanh sigmoid در مقادیر خیلی بزرگ و کوچک به اشباع می‌رسند و این باعث می‌شود که گرادیان این توابع به سمت صفر میل کند. درنتیجه کل فرآیند بهینه سازی یا بهتر بگویم آموزش با سرعت پایین‌تری نسبت به ReLU انجام می‌شود. در شکل زیر، خروجی یک نمونه اعمال تابع تحریک ReLU به یک ماتریس ورودی را مشاهده می‌کنید.

    تابع تحریک ReLU در شبکه عصبی
    شکل 23: تابع تحریک ReLU و نحوه اعمال به یک ورودی نمونه

    لایه پولینگ در شبکه عصبی کانولوشن (Pooling Layer)

    لایه پولینگ یکی دیگر از لایه های مهم در شبکه عصبی کانولوشن است. هدف لایه پولینگ کاهش اندازه مکانی فیچرمپ بدست آمده با استفاده از لایه کانولوشنی است. لایه پولینگ پارامتر قابل آموزش ندارد. صرفا یک نمونه برداری ساده و موثر انجام می‌دهد. پولینگ عملکردی شبیه کانولوشن دارد و یک پنجره روی تصویر حرکت می‌کند. رایج‌ترین نمونه پولینگ max pooling و average pooling است. مطابق شکل 24 ماکس پولینگ شامل یک پنجره از پیش تعریف شده است (مثلا 3×3) که روی تصویر حرکت می‌کند (تصویر را اسکن می‌کند) و در هر پنجره مقدار ماکزیمم را انتخاب می‌کند و بقیه را دور می‌ریزد. مشابه با لایه کانولوشنی، اندازه فیلتر، پدینگ و استراید در اینجا هم صدق می‌کند. در پولینگ، معمولا استراید 2 و اندازه فیلتر 3 درنظر گرفته می‌شود. برای اینکه سایز ویژگی به 1/2 کاهش پیدا کند.

    ماکس پولینگ max pooling در شبکه عصبی کانولوشنی
    شکل 24: نمایی از نحوه عملکرد max pooling در شبکه عصبی کانولوشن

    در شکل زیر یک نمونه کامل از max pooling نشان داده شده است.

    عملکرد max pooling در شبکه کانولوشنی
    شکل 25: عملکرد max pooling در شبکه عصبی کانولوشن

    همچنین، در شکل زیر یک نمونه کامل از average pooling نشان داده شده است.

    عملکرد average pooling در شبکه کانولوشنی
    شکل 26: عملکرد average pooling در شبکه کانولوشنی

    صبر کنید، صبر کنید! تا اینجا لایه کانولوشن، لایه غیرخطی و لایه پولینگ را آموختید. اما قبل از اینکه بخش‌های بعدی را توضیح بدهم، می‌خواهم یک شبکه عصبی کانولوشن نصف و نیمه با همین ماژول‌ها بسازم. برای ساخت یک شبکه کانولوشنی ساده لازم است نکاتی را مدنظر داشته باشید. بخش بعدی را دقیق بخوانید…

    طراحی شبکه عصبی کانولوشن ساده

    من در شکل 27 یک شبکه کانولوشن نصف و نیمه ساختم. به شکل نگاه کنید و نکته‌های زیر را بخوانید:

    1. معمولا در شبکه عصبی کانولوشن، ابتدا لایه کانولوشنی قرار می‌گیرد. یعنی، قبل از پولینگ، تایع غیرخطی و غیره. ابتدا، یک لایه کانولوشنی روی تصویر با تعداد فیلتر کم اعمال می‌شود. لایه 1، با 32 فیلتر را در شکل زیر مشاهده می‌کنید. پدینگ و استراید طوری تنظیم شده که سایز فیچرمپ خروجی کم نشود. اندازه فیچرمپ خروجی برابر با 32×32×32 است.
    2. معمولا بعد از لایه کانولوشنی، یک تابع تحریک قرار داده می‌شود. طبیعی است، چون اگر یادتان باشد در نورون هم بعد از جمع وزن‌دهی و جمع با بایاس، تابع تحریک اعمال می‌شد. طبق شکل زیر، یک تابع ReLU روی فیچرمپ اعمال می‌شود. کارش هم اینست که منفی‌ها را صفر می‌کند، تمام!
    3. حالا می‌خواهم یک لایه پولینگ بعد از تابع تحریک قرار دهم. این پولینگ از نوع ماکس پولینگ است. اما استراید را 2 درنظرگرفتم که اندازه فیچرمپ خروجی نصف شود. پس اندازه فیچرمپ خروجی برابر با 16×16×32 خواهد شد.
    4. تا اینجا یک دور کانولوشنی، غیرخطی و پولینگ را به تصویر ورودی اعمال کردم. دوباره هرسه اینها را اعمال می‌کنم. تعداد فیلترهای لایه کانولوشنی دوم را 64 درنظر گرفتم. فیچرمپ خروجی ماکس پولینگ: 8×8×64
    5. در سومین مرحله، یک لایه کانولوشنی با 128 فیلتر درنظر گرفته شده و استراید هم 2 است. بعد از لایه کانولوشنی یک تابع تحریک گذاشتم. فیچرمپ خروجی تابع تحریک برابر با 4×4×128 است.
    6. در آخر یک لایه میانگین پولینگ با سایز 4×4 گذاشته‌ام. فیچرمپ خروجی این لایه برابر با 1×1×128 خواهد شد. یعنی، تصویر ورودی بعد از چندمرحله تبدیل به یک بردار به طول 128 شد. این بردار، بردار ویژگی تصویر ورودی است. این بردار شناسنامه یا اثر انگشت تصویر است. به چه دردی می‌خورد؟ دربخش بعدی خواهید دید…
    شبکه عصبی کانولوشنی با سه لایه کانولوشنی، دو ماکس پولینگ و میانگین
    شکل 27: طراحی شبکه عصبی کانولوشن ساده

     

     

    لایه فولی کانکتد در شبکه عصبی کانولوشن (Fully Connected Layer)

    معمولا آخرین لایه های یک شبکه عصبی کانولوشن برای طبقه بندی را لایه های فولی کانکتد تشکیل می‌دهند. این لایه ها همان لایه هایی هستند که در شبکه عصبی MLP دیده‌اید. برای آشنایی بیشتر این مقاله را بخوانید. یکی از کاربردهای اصلی لایه فولی کانکتد در شبکه کانولوشن، استفاده به عنوان طبقه بند یا کلاسیفایر (Classifier) است. یعنی مجموعه ویژگی‌های استخراج شده با استفاده از لایه های کانولوشنی درنهایت تبدیل به یک بردار می‌شوند. درنهایت این بردار ویژگی به یک کلاسیفایر فولی کانکتد داده می‌شود تا کلاس درست را شناسایی کند. شکل 28 را با فولی کانکتد کامل کردم و می‌توانید در شکل زیر مشاهده کنید. شکل زیر بلوک دیاگرام کامل یک شبکه عصبی کانولوشن ساده برای طبقه بندی است.

    شبکه کانولوشنی برای طبقه بندی
    شکل 28: شبکه عصبی کانولوشن برای طبقه بندی

    سوالات رایج درباره شبکه عصبی کانولوشن

    انتظار دارم بعد از خواندن این پست بلندوبالا، یک عالمه سوال برایتان ایجاد شده باشد. من به تعدادی از سوالات رایج دانشجویان در ادامه جواب داده‌ام. سعی می‌کنم این بخش را بازهم با سوالات جدید تکمیل کنم. سوالاتی مثل:

    • همیشه اول لایه کانولوشنی، تابع تحریک و بعد هم پولینگ؟ خیر، ممکن است تصمیم بگیریم چندلایه پشت هم کانولوشنی بگذاریم و بعد یک پولینگ قرار دهیم. برچه اساسی این کار انجام می‌شود؟ جواب این سوال سخت است، باید مقاله‌های مختلف در حوزه شبکه عصبی کانولوشن را بخوانید.
    • چرا رفته رفته در شبکه جلوتر رفتیم، تعداد فیلترهای لایه کانولوشن بیشتر شد؟ سعی می‌کنیم رفته رفته ویژگی‌های بیشتر و متنوع‌تری تولید کنیم.
    • ماکس پولینگ و پولینگ میانگین را برچه اساسی انتخاب می‌کنیم؟ معمولا در لایه‌های میانی از ماکس پولینگ استفاده می‌شود و در پایان شبکه لایه پولینگ میانگین به‌کار گرفته می‌شود.
    • حالا این بردار ویژگی 128-تایی به چه دردی می‌خورد؟ همان ابتدا گفتم که من می‌خواهم یک شبکه عصبی کانولوشن برای طبقه بندی بسازم. این خروجی به من کمک می‌کند که من فرق بین گربه و سگ را شناسایی کنم. باید بردارهای ویژگی 128-تایی به‌گونه‌ای باشد که بردار ویژگی تمام تصاویر گربه شبیه هم باشد. همچنین، بردار ویژگی تصاویر سگ مشابه هم باشد، اما بردار ویژگی سگ و گربه باید از هم دور باشند. دو مجموعه بردار ویژگی داریم که گربه‌ها نزدیک هم و سگ‌ها نیز نزدیک به‌هم است. پس، بردار ویژگی یک تصویر جدید تستی، به هرکدام از این دو بردار که بیشتر شبیه باشد، به همان کلاس متعلق هست.

    دریافت PDF آموزش شبکه عصبی کانولوشن

    برای شما هدیه‌ای داریم. 😊 خیلی علاقه‌مند بودیم که PDF پست شبکه عصبی CNN را آماده کنیم. اتفاقا خیلی از دوستان هم پیام می‌دادند و PDF این آموزش را می‌خواستند. بالاخره بعد از مدت‌ها، در تاریخ 17 آذر 1400 این PDF آماده شد. 😍 اگر بگوییم یک کتابچه شده، بیراه نگفته‌ایم! از طریق لینک زیر می‌توانید دریافت کنید.

    دریافت PDF

    آموزش یادگیری عمیق رایگان

    آموزش شبکه CNN یکی از سلسله پست‌های آموزش یادگیری عمیق رایگان است. در جدول زیر، فهرست مطالب دوره آموزش یادگیری عمیق رایگان هوسم را آورده‌ایم.

    جلسه 01: نورون مصنوعی نورون مصنوعی
    جلسه 02: یادگیری نورون مصنوعی یادگیری نورون مصنوعی
    جلسه 03: شبکه عصبی MLP شبکه عصبی MLP
    جلسه 04: پروژه دسته‌بندی MLP با تنسورفلو دسته بندی با mlp و تنسورفلو
    جلسه 05: پروژه رگرسیون MLP با تنسورفلو رگرسیون با mlp و تنسورفلو
    جلسه 06: شبکه عصبی کانولوشن (CNN) شبکه عصبی کانولوشن
    جلسه 07: شبکه عصبی بازگشتی (RNN) شبکه عصبی بازگشتی
    جلسه 08: شبکه عصبی GAN شبکه عصبی GAN
    جلسه 09: شبکه عصبی LSTM شبکه عصبی LSTM

    واقعا به پایان رسیدم؟!

    جواب کوتاه اینکه، نه! 😅 اما، خداقوت، گام بزرگی برداشتید. از ابتدا تا انتهای یک شبکه CNN را خدمت شما توضیح دادم. امیدوارم، با این شبکه محبوب ارتباط برقرار کرده باشید. مفاهیم و لایه‌های دیگری نیز در شبکه عصبی کانولوشن وجود دارد. مثلا، باید درباره Batch Normalization, Dropout, Data Augmentation, Receptive Field هم توضیح بدهم. اما فعلا تا همین اندازه کافی است و بقیه بماند در پستی جداگانه… لطفا فیدبک بدهید، این آموزش چطور بود؟ در کامنت درباره این پست با ما صحبت کنید. هوسم را هم فراموش نکنید و لطفا به دوستانتان هم معرفی کنید… 

    اشتراک گذاری:

    مطالب زیر را حتما مطالعه کنید

    یادگیری انتقالی
    یادگیری انتقالی یا Transfer Learning به معنای استفاده از یک مدل از پیش آموزش‌دیده در...
    شبکه VGG
    شبکه VGG یکی از معماری‌های موفق و معروف در حوزه یادگیری عمیق است که در...
    مهندسی پرامپت
    امروزه، با ظهور ChatGPT و سایر ابزارهای هوش مصنوعی، طیف گسترده‌ای از افراد، از کاربران...
    مدل nanoGPT
    در سال ۲۰۱۹، OpenAI مدل GPT-2 را معرفی کرد. OpenAI، برخلاف مدل‌های بعدی (GPT-3 و...
    شگفت‌انگیزترین ایده هوش مصنوعی از نظر Andrej Karpathy
    هوش مصنوعی به سرعت در حال پیشرفت هست. به‌گونه‌ای که باید زمان و انرژی زیادی...
    شبکه ویژن ترنسفورمر
    شبکه ویژن ترنسفورمر (Vision Transformer) یا ViT یک شبکه عصبی مبتنی بر مدل ترنسفورمر هست...

    272 دیدگاه

    به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

    • امیرحسین گفت:
      2025/06/01 در 3:32 ق.ظ

      شنیدین قدیمیا میگفتن ذکات علمت رو بده؟ مصداق این مقالست . چقدر شیوا و رسا و ساده و سلیس و سهل و ممتنع و … تو این مقاله شما جمع شده بود . چقدر گره ذهنی از من باز کرد .کلی انرژی مثبت و دعای خیر نصیبتان باد

      پاسخ
      • هوسم گفت:
        2025/06/03 در 10:19 ق.ظ

        ممنون امیرحسین عزیز،
        موفق باشید 🌺

        پاسخ
    • شکری گفت:
      2025/04/16 در 8:51 ق.ظ

      سلام وقت بخیر
      تبریک بابت نثر شیرین و جذاب این همه سخاوت در نشر دانش.
      پاینده باشید

      پاسخ
    • میر گفت:
      2025/02/22 در 4:17 ب.ظ

      سلام
      خداقوت
      بسیار عالی و واضح بود.
      تشکر

      پاسخ
    • علی پ گفت:
      2025/02/20 در 6:33 ب.ظ

      سلام و با سپاس بسیار از آموزش بسیار زیبا و شیوا و ساده تون

      در شکل 27 و 28 چرا سایز فیلتر Max-Pooling را سه در سه(3*3) انتخاب کردید و 2*2 انتخاب نکردید؟ دلیل خاصی داشت؟

      اگر از فیلتر سه در سه(3*3) و طول گام 2 استفاده کنیم، خروجی ما 15*15 میشه نه 16*16.ضمن اینکه عنصر 32 ام چه در طول چه در عرض نادیده گرفته میشه و اینگور میشه.برای همین خروجی 15*15 میشه.مگر اینکه در لایه پولینگ(ادغام) نیز از padding استفاده کنیم.که اشاره ای به آن نکردید

      فرمولی که چت جی پی تی بهم داد(درحالت بدون پدینگ)
      Output Size=( (Input Size−Filter Size) +1) /Stride

      پاسخ
      • هوسم گفت:
        2025/02/22 در 11:42 ق.ظ

        سلام
        خوشحالیم که آموزش رو دوست داشتید. 😊

        دلیل خاصی نداشت. صرفا یک مثال بود. رایج‌تر هست که 2×2 باشه.

        اگر پدینگ رو درست تنظیم کنید (عدد 1 برای فیلتر 3×3)، خروجی 16×16 میشه. شاید در همین آموزش ذکر شده باشه که معمولا پدینگ رو برای لایه‌های کانولوشنی و پولینگ فعال می‌کنیم. اتفاقا اگر به شکل 27 نگاه کنید، مشاهده می‌کنید که خروجی لایه کانولوشنی هم به شکلی هست که باید پدینگ فعال باشه.

        پاسخ
    • امین گفت:
      2025/01/29 در 2:01 ق.ظ

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

      پاسخ
      • هوسم گفت:
        2025/01/29 در 11:35 ق.ظ

        بسیار عالی 😊
        ممنون 🙏
        موفق باشید 🌺

        پاسخ
    • حسن گفت:
      2024/12/19 در 11:44 ب.ظ

      سلام
      آقا بذار خداوکیلی دستتو ببوسم! نه خداوکیلی بذار ببوسم! ۱۰ ساعته دارم یه مقاله رو بالا پایین میکنم دریغ از اینکه یه جمله شو بفهمم الان که اومدم مقاله شما رو خوندم ۸۰ درصدش رفع شد. شاید اون ۲۰ درصد باقیمونده رو هم از تو همین سایت پیدا کردم. دمت گرمه مشتی

      پاسخ
      • هوسم گفت:
        2024/12/21 در 9:47 ق.ظ

        سلام، باعث خوشحالی و افتخاره که آموزش شبکه عصبی کانولوشن بهتون کمک کرده. 😊🙏🌹

        پاسخ
    • سید گفت:
      2024/12/19 در 3:35 ب.ظ

      سلام، واقعا عالی بود، خدا خیرتون بده

      پاسخ
      • هوسم گفت:
        2024/12/21 در 9:45 ق.ظ

        سلام، سپاس 🌹🙏😊

        پاسخ
    • marjan گفت:
      2024/12/13 در 7:25 ب.ظ

      سلا و عرض ادب
      فوق العاده بود مفید و مختصر
      لطفا آموزش موارد زیر هم بذاری
      Batch Normalization, Dropout, Data Augmentation, Receptive Field

      پاسخ
      • هوسم گفت:
        2024/12/14 در 11:19 ق.ظ

        سلام
        سپاس 🙏
        حتما برای موارد ذکر شده آموزش تهیه می‌کنیم.

        پاسخ
      • mohamad گفت:
        2024/12/24 در 9:16 ب.ظ

        سلام خانم مرجان می دونم برای کدوم مقاله اینارو می خوای خودمم ارائه اون مقاله رو دارم

        پاسخ
    • رضا نوری گفت:
      2024/11/01 در 9:12 ق.ظ

      سلام, چقد زیبا و منطقی, از سیر تکامل منطقی این شبکه کانوولوشنی بسیار لذت بردم, این میسر نمیشد مگر با بیان و نگارش زیبا,
      واقعا خسته نباشید میگم به تیم هوسم, به جرئت بهترین منبع فارسی برای هوش مصنوعی هستید

      پاسخ
      • هوسم گفت:
        2024/11/02 در 9:55 ق.ظ

        سلام
        نظرتون برای ما بسیار ارزشمند هست.
        ممنون 🙏🌹

        پاسخ
    • تنبل گفت:
      2024/09/12 در 12:01 ب.ظ

      سلام من که اصلا با این موضوعات آشنا نبودم بالاخره فهمیدم دمت گرم استاد.

      پاسخ
      • هوسم گفت:
        2024/09/14 در 9:25 ق.ظ

        😊🙏🌹

        پاسخ
    • زینب گفت:
      2024/09/06 در 11:33 ب.ظ

      سلام
      واقعا دست مریزاد .همیشه موفق و سلامت باشید.

      پاسخ
      • هوسم گفت:
        2024/09/07 در 9:49 ق.ظ

        سلام
        سپاس از شما که 250-مین کامنت این آموزش رو ثبت کردید. 🙏😊
        همچنین، از همه دوستانی که کامنت گذاشتن و تشویقمون کردن، بسیار بسیار ممنونیم. تشویق‌هاتون شبیه نوشابه انرژی‌زاست.
        موفق باشید ✌

        پاسخ
    • mojvar.amirhossein گفت:
      2024/08/27 در 12:30 ب.ظ

      خدا قوت
      با جرات میتونم بگم بهترین مقاله آموزشی راجع به شبکه عصبی بود که خوندم
      پایدار و پیروز باشید

      پاسخ
      • هوسم گفت:
        2024/08/27 در 2:13 ب.ظ

        ممنون از لطف شما 😊🌹🙏
        خوشحالیم که مقاله مفید بوده.
        موفق باشید ✌

        پاسخ
    • ستاره گفت:
      2024/08/19 در 11:35 ق.ظ

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

      پاسخ
      • هوسم گفت:
        2024/08/27 در 2:15 ب.ظ

        از شما برای بازخورد مثبت بسیار ممنونیم. 😊🙏🌹
        موفق باشید ✌

        پاسخ
    • Sana Sadat mirahsani گفت:
      2024/03/03 در 9:49 ب.ظ

      ممنونم منو نجات دادین! خیلی خوب توضیح دادین فقط یجا سوالی برام پیش اومد برای فرمولی که گفتین چجوری اندازه padding را حساب کنیم یجا گفتین m = n – (k-1) و جای دیگر بر 2 تقسیم کردین, میشه بگین کدوم فرمول برای حساب کردن اندازه پدینگ هست و اینکه n که گفتین برابر با اندازه ماتریس فیلتر هست یعنی اگر ماتریس ما برابر با 3 در 3 باشد n هم برابر با 3 میشود یا برابر با 9؟ ممنونم

      پاسخ
      • هوسم گفت:
        2024/03/04 در 12:00 ب.ظ

        سلام
        متغیرهای n و k به‌ترتیب برابر با سایز ورودی و فیلتر هستن. حالا یک مثال ببینیم؛ اگر ورودی 100×100 و فیلتر 5×5 داشته باشیم، خروجی میشه: m=n-(k-1)=100-(5-1)=96
        یعنی، سایز خروجی 96×96 هست. چون ورودی و فیلتر مربعی هستن (سطر و ستون برابر)، به همین خاطر ما یک عدد 100 و 5 رو برای محاسبه سایز خروجی استفاده کردیم. اما، اگر سایزها غیرمربعی باشه، اونوقت برای سطر و ستون باید به‌صورت جداگانه حساب و کتاب رو انجام بدیم.

        پاسخ
    • رضا گفت:
      2024/01/05 در 4:15 ب.ظ

      ممنون ازتون. هیچ جا به این خوبی قابل فهم توضیح نداده بود.

      پاسخ
    • Arya گفت:
      2023/12/16 در 8:16 ب.ظ

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

      پاسخ
      • هوسم گفت:
        2023/12/17 در 8:53 ق.ظ

        سلام
        مساله رو ساده کنیم؛ سه بردار در داریم که میتونیم در فضای دوبعدی رسم کنیم. بردار [1,1]=v با بردار [1,1]=w همراستا هست. طبیعتا، بردار [1,1]=v با بردار [2,2]=u هم همراستا هست. اعداد 2 صرفا مقیاس هستند: [1,1]2=u

        پاسخ
    • fateme گفت:
      2023/09/25 در 11:25 ب.ظ

      انقدر آسون و سلیس مطالبو میگید آدم کیف میکنه ، ممنونم ازتون، خسته نباشید

      پاسخ
      • سیدمحمدرضا موسوی مجد گفت:
        2023/10/20 در 11:33 ق.ظ

        سلام ، از آموزش خوبتون سپاسگذارم ، مثل همه آموزشهاتون گام به گام و روشن پیش رفتید و جنبه گنگی باغی نذاشتید . امیدوارم در تمام مراحل موفق و سالم باشید .

        پاسخ
    • massoud گفت:
      2023/09/11 در 11:59 ق.ظ

      با سلام و خدا قوت!!! دمت گرم. ۲ ساله دارم resource میبینم کد میزنم ولی نفهمیده بودم تکنیکال داره چطوری کار میکنه

      پاسخ
    • علی گفت:
      2023/07/26 در 2:07 ب.ظ

      من صمیمانه ازتون تشکر میکنم بابت این شیوایی کلام و آموزش کاملتون… به جرات تو منابع فارسی کم نظیر هست مطابتون … پاینده باشید

      پاسخ
    • Sahand noroozi گفت:
      2023/06/12 در 5:48 ب.ظ

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

      پاسخ
      • hasan0513 گفت:
        2023/07/10 در 4:35 ب.ظ

        سلام
        بعد از گذراندن یک دوره پردازش تصویر مطالب این بخش را مطالعه کردم و با توجه به اون مفاهیم برام بسیار روشن شد. باتشکر

        پاسخ
    • بهنام گفت:
      2023/06/08 در 9:01 ب.ظ

      nice and completer

      پاسخ
    • امیر گفت:
      2023/05/24 در 7:49 ب.ظ

      سلام خیلی ممنون بابت زحمتی که کشیدید واقعا عالی و کامل بود.

      پاسخ
      • مصطفی گفت:
        2023/12/09 در 1:39 ق.ظ

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

        پاسخ
    • Niloufar shahkarami گفت:
      2023/05/02 در 3:27 ق.ظ

      باسلام و درود.بسیارعالی بود.ممنونم بابت از آموزش های مفیدتون.متشکرم.موفق باشید.🙏🙏🙏🙏👏👏👏

      پاسخ
    • Aaaaaa گفت:
      2023/05/02 در 3:23 ق.ظ

      باسلام و درود.بسیارعالی بود.متشکرم.🙏🙏🙏🙏👏👏👏

      پاسخ
      • زهرا گفت:
        2023/05/26 در 12:13 ق.ظ

        عااالی بود واقعا ممنون. بهترین ها براتون رقم بخوره.

        پاسخ
        • ff گفت:
          2023/05/30 در 9:52 ب.ظ

          سلام
          خیلی عالی و قابل فهم
          سپاسگزارم.

          پاسخ
    • bonakdarpour گفت:
      2023/04/23 در 11:43 ب.ظ

      سلام
      از مطالب خوبتون ممنونم. لینک دانلود pdf آموزشی که ایمیل شد، غیر فعال است. از چه طریق می توانم دریافت کنم؟

      پاسخ
      • هوسم گفت:
        2023/04/30 در 9:58 ق.ظ

        سلام🌹
        مشکل برطرف شد دوست عزیز😊
        ممنون که اطلاع دادید🙏

        پاسخ
        • مجتبی گفت:
          2024/10/25 در 6:27 ب.ظ

          سلام
          خیلی برام جالبه شما به این سادگی ساختار رو توضیح دادید.
          عالی بود خیلی عالی

          پاسخ
          • هوسم گفت:
            2024/10/26 در 10:45 ق.ظ

            سلام
            ممنون 🙏😊
            موفق باشید ⭐

            پاسخ
    • تورج گفت:
      2023/04/01 در 7:16 ق.ظ

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

      پاسخ
    • ریحانه گفت:
      2023/02/25 در 11:42 ق.ظ

      بسیار سایت عالی و مفیدی دارید. ممنون از زحماتتون.

      پاسخ
    • حمید گفت:
      2023/02/15 در 9:24 ب.ظ

      سلام
      بسیار عالی توضیح دادید. لطفا در خصوص اجرای آن هم در کد نویسی راهنمایی کنید.

      پاسخ
    • alrz گفت:
      2023/02/07 در 1:24 ق.ظ

      درود برر شرفتون
      من اولین بار بودهمچین توضیحات کاملی ب فارسی دیده بودم . خدا سامتی بده بهتون.
      فقط سوالی ک دارم اینه قضیه ی input_shaap ک تو لایه کانوولژن میگیره چیه و چطور بایدد واردش کنیم

      پاسخ
    • زهرا گفت:
      2023/02/01 در 10:56 ق.ظ

      سلام ممنون عالی بودید

      پاسخ
    • مُ جباری گفت:
      2023/01/27 در 3:38 ق.ظ

      انقدر جذاب، دقیق، با حوصله، واضح، روان، مدون، کامل، با جزییات و … توضیح میدید. اون مطالبی هم که بلدم را دوباره تو سایتتون میخونم.
      مراقب خوبیهاتون باشید.

      پاسخ
      • هوسم گفت:
        2023/02/05 در 4:28 ب.ظ

        سپاس
        ممنون بابت پیامتون🌹

        پاسخ
    • کمال غفارزاده گفت:
      2022/12/21 در 5:38 ب.ظ

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

      پاسخ
    • وحید گفت:
      2022/11/28 در 9:26 ب.ظ

      اقا خیلی عالی بود استفاده کردیم.

      پاسخ
      • امین گفت:
        2023/02/10 در 8:51 ب.ظ

        سپاس از شما
        تا حالا نظر برای هیچ مطلبی نداشته بودم اما به خاطر استفاده از مطالب و نحوه ی بیان مباحث به شکلی که قابل درک بود واجب شد نظر بدم واقعا ممنون از کمک شما به پیشرفت دانشجو ها و آموزش عالیتون

        پاسخ
    • مهریماه گفت:
      2022/11/11 در 4:08 ب.ظ

      سلام سپاس از توضیحاتتون لطفا راجب capsul network که ادامه شبکه های کانالوشنی هست هم مطلب بگذارید .

      پاسخ
    • علی گفت:
      2022/10/10 در 10:03 ب.ظ

      سلام درود بر شما .عالی بود .

      پاسخ
    • ghezi گفت:
      2022/09/05 در 9:06 ب.ظ

      سلام ممنون توضیح تقریبا کامل و شفافی بود البته عالی

      پاسخ
    • الهه گفت:
      2022/08/14 در 11:14 ق.ظ

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

      پاسخ
      • سیدحسین گفت:
        2023/01/18 در 5:04 ب.ظ

        سلام من یک سری عدد در اکسل دارم میتونم با سیگنال یا ترند نشانش بدم برای تبدیل این اعداد به تصویر )کاری که در cnn ( انجام میشه راهنماییم کنید آیا این کار انجام بدم اصلا با نه لازم نیست چگونه اون سیگنالها را بفرستم به شبکه cnn برای کلاسبندی
        سوال : اصلا کلاس بندی مثلا ۶ کلاسه لازمه از cnn استفاده کرد؟

        پاسخ
    • علیرضا گفت:
      2022/08/08 در 11:08 ق.ظ

      سلام
      خیلی ساده و بدون حاشیه مطالب رو بیان کردید. خیلی از ابهاماتم برطرف شد.
      ممنون

      پاسخ
    • مائده کدخدایی گفت:
      2022/07/25 در 10:50 ق.ظ

      سلام خسته نباشید واقعا.
      توضیحات عالی، بدون نقص، جامع و قابل فهم بود.

      پاسخ
    • NAFISE گفت:
      2022/07/22 در 12:13 ق.ظ

      سلام، بسیار روان و شیوا و کامل بود.ممنون

      پاسخ
    • مصطفی گفت:
      2022/06/08 در 11:12 ب.ظ

      سلام
      کامل مطالعه کردم و برام جالب بود تنها سایتی هستید که مطالب رو کامل و دقیق بدون هیچ گونه ایراد نوشته بودید.
      خدا خیرتون بده.

      پاسخ
    • saeed گفت:
      2022/05/28 در 8:00 ب.ظ

      ممنونم از سایت مفیدتون. واقعا بیان قابل فهمی دارید

      پاسخ
    • دختر خوب گفت:
      2022/05/28 در 6:28 ب.ظ

      واقعا عالی بود لذت بردم. کامل و با دقت خوندم
      اگه میشد کاربرد انواع ابرپاارمترهای مختلف شبکه های عصبی رو هم توضیح بدین عالی میشه واقعا.
      ضمنا تا به حال به شباهت شتر و زرافه فکر نکرده بودم، ولی بعد از خوندن این متن دنبال تفاوت فیس شتر و زرافه بودم :)))

      پاسخ
      • هوسم گفت:
        2022/05/29 در 11:22 ق.ظ

        😅

        پاسخ
    • nima گفت:
      2022/05/24 در 6:27 ب.ظ

      سلام وقت بخیر و خسته نباشید خدمت تیم هوسم عالیه مطالبتون اگر امکانش هست واسه هربخش یه مثال متلبی و پایتون بزنید خیلی ممنون میشیم

      پاسخ
    • حصین گفت:
      2022/05/24 در 6:24 ب.ظ

      با سلام و خسته نباشید
      واقعااا خیلییی عالیه وو ممنونم از سایت خوبتون که در اختیار عام قرار گذاشتین دمتون گرم 🧡🌹🌷

      پاسخ
    • رها گفت:
      2022/05/18 در 6:53 ب.ظ

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

      پاسخ
      • هوسم گفت:
        2022/05/19 در 10:50 ق.ظ

        سلام
        وقتی ورودی یک ویژگی سطح پایین هست، ما هم تعداد فیلترها رو کم میذاریم. اگه تعداد فیلترها رو زیاد کنیم، ممکنه ویژگی تکراری در خروجی زیاد بشه. فرض کنیم توی یک زمین دنبال گنج هستیم و یک ورودی سطح پایین معادل یک زمین خشک و خالی هست. یجورایی معادل “گشتم نبود، نگرد نیست”.
        وقتی ورودی یک ویژگی سطح بالا هست، میگیم اوه اوه اینجا پر گنجه! باید کل زمین رو دقیق بررسی کنیم! اینجاست که بیشتر کردن فیلترها منطقیه.

        پاسخ
    • انا گفت:
      2022/05/11 در 10:30 ب.ظ

      خدا قوت در یک کلام عالی هستید

      پاسخ
    • زهرا عزیزی گفت:
      2022/05/09 در 1:34 ق.ظ

      واقعا دمتون گرررم…خیلی خوبید.ممنونم بابت آموزشهای خوبتون

      پاسخ
    • Ali گفت:
      2022/05/03 در 11:23 ب.ظ

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

      پاسخ
    • alidrogar گفت:
      2022/04/07 در 9:46 ق.ظ

      سلام
      بسیار عالی
      ممنون از زحمات شما

      پاسخ
    • رسول سعادتمند گفت:
      2022/04/04 در 4:54 ب.ظ

      سلام واقعا از توضيحاتتون ممنونم،كاش براي بچه هاي مخابراتم مطلب بزاريد. سپاس بيكران

      پاسخ
    • محمد گفت:
      2022/03/26 در 1:13 ب.ظ

      سلام. من دانشجوی هوش مصنوعی شریف هستم و به جرئت می‌تونم بگم که هیچ آموزش یا محتوایی بهتر از این مطلب، نمی‌تونه CNN رو آموزش بده. واقعا ازتون متشکرم. بسیار بسیار عالی بود.

      پاسخ
    • اسماعیل گفت:
      2022/02/27 در 6:05 ب.ظ

      سلام،
      شیوه بیان و آموزش بسیار عالی بود.
      من فقط یک سوال داشتم:
      در شکل 27، چرا تنسور لایه های کانولوشن 3 بعدی شد؟ نباید 4 بعدی باشد؟ مثلا در دومین مرحله، ابعاد فیچرمپ ورودی 32 در 16 در 16 است، یعنی 32 تصویر 16 در 16. حال چگونه 64 فیلتر 3 در 3 با آن کانوالو شد؟ آیا 32 تصویر را merge کردید؟ چگونه؟

      پاسخ
      • تیم هوسم گفت:
        2022/02/28 در 8:20 ق.ظ

        سلام
        دقیقا باید چهاربعدی باشه. مثلا برای همون لایه کانولوشنی اول، باید کرنل کانولوشنی 3*3*3*32 باشه. یعنی 32 فیلتر به ابعاد 3*3*3…
        اشتباه از ماست. ضمن تشکر از شما که ریزبینانه آموزش رو دنبال کردید، الان اعصابمون خورده که چرا حواسمون نبوده! 🥺

        پاسخ
        • اسماعیل گفت:
          2022/03/01 در 11:20 ب.ظ

          کارتون با کیفیت و درسته،
          ممنون از پاسخ دهی

          پاسخ
    • علی گفت:
      2022/02/21 در 10:35 ب.ظ

      واقعا مثل همه ی بخش های دیگه سایتتون این آموزش هم فوق العاده بود. تبریک میگم بهتون بابت این قدرت بیان عالی. ممنونم.

      پاسخ
    • امیرمحمد گفت:
      2022/02/18 در 5:47 ب.ظ

      یک سوال دیگه هم برام پیش اومد
      برای انجام sentiment analysis با استفاده از cnn ، کمکی که cnn به ما میکنه صرفا بحث استخراج ویژگی هست ؟ و در آخر برای مشخص کردن مثبت یا منفی بودن جمله باید سراغ یک classifier برم ؟

      پاسخ
    • امیرمحمد گفت:
      2022/02/18 در 5:10 ب.ظ

      سلام
      مدت ها بود برای کار روی ترکیب BI-LSTM و CNN به دلیل کم اطلاعی در برخی جزییات دچار مشکل بودم .
      خیلی مطالب سایتتون مفید بود . واقعا ممنونم .
      در مورد CNN اگر ورودی متن داشته باشیم برای SENTIMENT ANALYSIS ، از CNN دو بعدی باید استفاده کنم درسته ؟

      پاسخ
      • تیم هوسم گفت:
        2022/02/21 در 3:16 ب.ظ

        سلام
        ما درمورد کار شما اطلاعاتی نداریم، نمی‌تونیم نظر بدیم.
        موفق باشید 🌹🙏

        پاسخ
    • محسن جنتی گفت:
      2022/02/17 در 1:15 ق.ظ

      تازه با ساییتون آشنا شدم.خیلی عالی و قشنگ توضیح دادید.واقعا ممنون

      پاسخ
      • تیم هوسم گفت:
        2022/02/17 در 9:33 ق.ظ

        پس به هوسم خوش اومدید. 😊🌹🙏

        پاسخ
    • حاجیان گفت:
      2022/02/13 در 9:52 ب.ظ

      عالی بود واقعا. لذت بردم از مطالعه متن شما

      پاسخ
      • تیم هوسم گفت:
        2022/02/14 در 3:30 ب.ظ

        بسیار ممنون 🌹🙏

        پاسخ
        • سعید گفت:
          2023/02/03 در 2:55 ق.ظ

          سلام و خسته نباشید عالیه سایتتون. خیلی روان و قشنگ توضیح میدید. فکر نمیکنم سایتی باشه که مثل شما خیلی مسلط توضیح بده.
          فقط راجع به ماتریس کرنل یا فیلتر، من متوجه نشدم چطور باید اعداد داخل فیلتر رو انتخاب کنیم تا ویژگی های مختلف استخراج بشن

          پاسخ
          • هوسم گفت:
            2023/02/05 در 4:11 ب.ظ

            سلام
            سپاس🌹
            در بخش سوم اشاره شده:
            “در نورون پارامترها متغیر بودند و از طریق فرآیند آموزش بدست می‌آمدند. اینجا هم اعداد موجود در فیلتر از طریق فرآیند آموزش به‌دست می‌آیند.”
            اینجا کلیک کنید
            اگه این توضیحات کافی نبود، جلسه دوم رو مطالعه کنید:
            لینک جلسه دوم

            پاسخ
    • اشکان گفت:
      2022/02/03 در 2:38 ق.ظ

      با درود و ستایش مجدد
      امکانش هست در مورد این مباحث هم توضیح مختصری بدهید.
      Batch Normalization, Dropout, Data Augmentation, Receptive Field
      با سپاس فراوان

      پاسخ
      • تیم هوسم گفت:
        2022/02/05 در 10:51 ق.ظ

        سلام
        بله، این موارد رو در برنامه داریم.
        ممنون بابت پیشنهاد 🌹🙏

        پاسخ
    • اشکان گفت:
      2022/02/01 در 1:36 ق.ظ

      بادرود و ستایش
      خدا قوت واقعا پست فوق العاده ای بود. با سپاس از زحمات شما

      پاسخ
      • تیم هوسم گفت:
        2022/02/01 در 10:14 ق.ظ

        ممنون اشکان عزیز 🌹🙏

        پاسخ
    • bahar گفت:
      2022/01/28 در 9:43 ب.ظ

      سلام واقعا عالی بود ممنون.

      پاسخ
      • تیم هوسم گفت:
        2022/01/29 در 9:44 ق.ظ

        ممنون 🌹🙏

        پاسخ
    • Fatemeh.a.zz گفت:
      2022/01/27 در 4:36 ب.ظ

      سلام
      تشکر از توضیحات بسیار روان خیلییی ممنون

      پاسخ
      • تیم هوسم گفت:
        2022/01/29 در 9:46 ق.ظ

        ممنون از شما بابت کامنت 🌹🙏

        پاسخ
    • رضا گفت:
      2022/01/27 در 12:54 ب.ظ

      سلام من برای دریافت pdf ایمیل وارد کردم ولی pdf دریافت نشد و پوشه spam هم چک کردم چیزی نمی اید

      پاسخ
      • تیم هوسم گفت:
        2022/01/27 در 12:59 ب.ظ

        سلام رضا عزیز،
        گاهی اوقات ممکن هست مشکل از سمت ما باشه و ایمیل خودکار با تاخیر ارسال شه یا اصلا ارسال نشه.
        البته، گاهی اوقات دوستان خطای تایپی در نوشتن ایمیل دارن.
        ما به ایمیلی که وارد کردید، به‌صورت دستی pdf رو ارسال می‌کنیم.
        ممنون 🌹🙏

        پاسخ
    • میم گفت:
      2022/01/22 در 1:16 ق.ظ

      سلام بسیار عالی بود، خدا قوت.

      پاسخ
      • تیم هوسم گفت:
        2022/01/22 در 12:26 ب.ظ

        سلام
        سپاس 🌹🙏

        پاسخ
    • محمد گفت:
      2022/01/17 در 5:29 ب.ظ

      به جرعت میتونم بهترین آموزش فارسی‌ای بود که دیدم
      بسیار سپاسگزارم

      پاسخ
      • تیم هوسم گفت:
        2022/01/18 در 10:12 ق.ظ

        ممنون محمد عزیز 😊🌹🙏

        پاسخ
        • عرفان گفت:
          2022/03/23 در 1:51 ب.ظ

          سلام
          خیلی عالی و دقیق توضیح دادین
          ممنون از شما

          پاسخ
    • beheshtiniya گفت:
      2022/01/16 در 9:39 ب.ظ

      فقط لذت بردم .ممنونم

      پاسخ
      • تیم هوسم گفت:
        2022/01/17 در 3:36 ب.ظ

        ممنون 🌹🙏

        پاسخ
    • H گفت:
      2022/01/15 در 9:47 ب.ظ

      عالی. آرزوی موفقیت برای تیمتون

      پاسخ
      • تیم هوسم گفت:
        2022/01/17 در 3:36 ب.ظ

        سپاس 🌹🙏

        پاسخ
    • eligh گفت:
      2022/01/07 در 3:04 ب.ظ

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

      پاسخ
      • تیم هوسم گفت:
        2022/01/07 در 3:32 ب.ظ

        سلام
        شبکه کانولوشنی میتونه روی داده‌های تصویر، صوت، متن و غیره هم اعمال بشه. اما قبل از هرچیز باید تئوری و کدنویسی شبکه عصبی و به‌خصوص شبکه عصبی کانولوشن رو خوب یاد بگیرید. اصلا مهم نیست که براساس تصویر باشه، مهم این هست که کامل به این شبکه مسلط بشید. برای شما آموزش خوب دیدن ضروری هست. به نظر ما درنگ نکنید و یک دوره یادگیری عمیق خوب بگذرونید.
        پ.ن: پیشنهاد ما برای تهیه دوره یادگیری عمیق، تبلیغاتی نیست. بلکه، باتوجه به شرایطتون، گذروندن یک دوره خوب رو برای شما ضروری میدونیم. حالا خودتون تحقیق کنید یا از هوسم یا از هر موسسه دیگه‌ای که بهتر هست، آموزش ببینید.
        موفق باشید

        پاسخ
    • دانشجوی پر مشغله! گفت:
      2021/12/26 در 8:09 ق.ظ

      عرض سلام و وقت بخیر
      برای شکل ۱۷، مگر نباید ابعاد خروجی کمتر از ۱۰۰ شود؟به دلیلی تاثیر کرنل روی تصویر ورودی؟ مثلا اگر پدینگ نداشته باشیم و استراید ۱ باشد، باید ۹۶*۹۶ شود. ایا برداشت من اشتباه است؟

      پاسخ
      • تیم هوسم گفت:
        2021/12/26 در 10:50 ق.ظ

        سلام
        اگه پدینگ نداشته باشیم، خروجی 96*96 میشه. تو این تصویر ما دغدغه ابعاد سطر و ستون خروجی رو نداشتیم، بلکه میخواستیم بگیم که اگه ورودی چندکاناله باشه، فیلتر و خروجی شامل چند کانال میشه؟ میشه فرض کرد که پدینگ داریم تا اون 100*100 درست باشه.

        پاسخ
    • دانشجوی پر مشغله! گفت:
      2021/12/22 در 5:12 ب.ظ

      عالی عالی عالی
      بسیار قابل فهم و ساده توضیح داده شده
      حرفی برای گفتن باقی نمیمونه

      پاسخ
      • تیم هوسم گفت:
        2021/12/23 در 10:36 ق.ظ

        ممنون دانشجوی پرمشغله 😊🙏🌹

        پاسخ
    • معصومه گفت:
      2021/12/20 در 3:33 ب.ظ

      سلام ممنون از مطلب خوبتان. متاسفانه الان فرصت مطالعه کامل رو ندارم، به این خاطر مطلب رو بوکمارک کردم تا به‌زودی کامل مطالعه کنم. با بررسی اجمالی که کردم بسیار عالی مطالب پوشش داده شده و زحمت زیادی براش کشیدید. مرسی.

      پاسخ
      • تیم هوسم گفت:
        2021/12/22 در 10:28 ق.ظ

        سلام
        خدا رو شکر فیدبک‌های مثبتی برای این آموزش دریافت کردیم. انشالله این آموزش برای شما هم مفید باشه.
        ممنون 🌹🙏

        پاسخ
    • احمد محمودی گفت:
      2021/12/15 در 7:17 ب.ظ

      با سلام
      درود بر شما
      مطالب عالی بود.

      پاسخ
      • تیم هوسم گفت:
        2021/12/17 در 12:33 ب.ظ

        سپاس 🌹🙏

        پاسخ
    • تبسم گفت:
      2021/12/15 در 6:17 ب.ظ

      سلام درود بر شما
      بسیار عالی و مفید بود.
      خدا خیرتون بده

      پاسخ
      • تیم هوسم گفت:
        2021/12/17 در 12:38 ب.ظ

        ممنون 🌹🙏

        پاسخ
    • حسین گفت:
      2021/12/10 در 8:44 ق.ظ

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

      پاسخ
      • تیم هوسم گفت:
        2021/12/10 در 10:59 ق.ظ

        سلام
        خیلی خیلی خوشحال میشیم وقتی چنین پیام‌هایی رو میبینیم. بابت پیشنهادی هم که برای بهبود سئو دادید، بسیار بسیار ممنون. بیشتر تلاش میکنیم.
        موفق باشید 🌹🙏

        پاسخ
    • نجمه گفت:
      2021/12/06 در 2:23 ب.ظ

      بسیار عالی.باسپاس

      پاسخ
      • تیم هوسم گفت:
        2021/12/08 در 4:13 ب.ظ

        ممنون از شما بابت کامنت 🌹🙏

        پاسخ
    • ناشناس گفت:
      2021/11/29 در 10:51 ق.ظ

      خیلی عالی بود. بخصوص تصاویر
      پایدار باشین 🙂

      پاسخ
      • تیم هوسم گفت:
        2021/11/29 در 10:55 ق.ظ

        ممنون 🌹🙏

        پاسخ
    • fati گفت:
      2021/11/26 در 6:09 ب.ظ

      سلام و خدا قوت
      خیییلی عالی بود ، مطالب شیوا و قابل فهمی ک ب اشتراک گذاشتین نشان دهنده دانش عمیق شماست
      خوشحالم ک برای چنین مطالبی سایت فارسی خوبی مث اینجا هست.
      انشالله کارتون ادامه دار باشه. بازم ممنون خیلی خیلی ممنون. موفق باشید

      پاسخ
      • تیم هوسم گفت:
        2021/11/26 در 7:12 ب.ظ

        سلام
        ممنون. پیامتون به ما انرژی مثبت داد.
        باور ما این هست که می‌تونیم در داخل کشور، سایت‌های آموزشی علمی در سطح بالا داشته باشیم. انشالله بتونیم در این مسیر ثابت قدم باشیم و مدام پیشرفت کنیم. امیدواریم، مخاطبان عزیز هم از ما حمایت کنن و با تهیه قانونی دوره‌های هوسم به ما کمک کنن تا بتونیم گام‌های بزرگتری برداریم.
        موفق باشید 🌹🙏

        پاسخ
        • علیرضا گفت:
          2021/12/03 در 11:14 ق.ظ

          با تشکر از مطالب بسیار مفیدتون
          در فرمول محاسبه سایز ماتریس خروجی پس از اعمال فیلتر، به نظر تقسیم بر ۲ نباید بشه
          m=5-(3-1)=3

          پاسخ
    • nstrn گفت:
      2021/11/25 در 5:06 ب.ظ

      سلام. ممنون بابت اطلاعات مفید و ارزشمندتون 🙂
      سوال: آیا میشه شبکه کانولوشن رو برای دیتاست های جدولی که فقط شامل سطر (نمونه) و ستون (ویژگی) هستن، استفاده کرد؟
      داده ها رو به همین شکل (مثلاً داده هایی با پسوند csv) میشه بعنوان ورودی به شبکه بدیم و عملیات بر روی اونها انجام بشه؟

      پاسخ
      • تیم هوسم گفت:
        2021/11/25 در 5:11 ب.ظ

        سلام
        اگر بخوایید داده‌ها رو به صورت یک ماتریس دوبعدی ببینید و بعد هم شبکه کانولوشن دوبعدی اعمال کنید، جواب خیر هست. اما میتونید شبکه کانولوشن یک بعدی طراحی کنید تا فیلترها روی هر سطر یا نمونه، ویژگی‌ها رو باهم ترکیب کنن.

        پاسخ
      • Sahand noroozi گفت:
        2023/06/13 در 12:03 ب.ظ

        این سوال من هم بود. چیزی که متوجه شدم برای مسایل تخمین انگار باید اون سیگنال یا توالی ورودی رو از یه راهی به یه ماتریس دو بعدی(حدااقل تبدیل کرد) یا از طریق استخراج ویژگی قبل از اعمال به شبکه ویژگی های سیگنال رو به صورت تصویر به شبکه داد.نمی دونم تا چه حد این دریافت من از منابع صحیح هست؟ از تیم هوسم خواهش میکنم که اشتباهاتی که در فهم این مسئله داشتم رو اصلاح بفرمایند.
        با تشکر

        پاسخ
        • هوسم گفت:
          2023/06/13 در 12:21 ب.ظ

          در این پست، رایج‌ترین شکل شبکه عصبی کانولوشن (کانولوشن دوبعدی) توضیح داده شد. اما این تنها ساختار شبکه عصبی کانولوشن نیست و شبکه عصبی کانولوشن یک‌بعدی و سه‌بعدی هم داریم. از شبکه کانولوشن یک‌بعدی در مسائلی با سیگنال‌های یک بعدی مثل صوت و سری زمانی استفاده میشه. شبکه CNN سه‌بعدی هم در مسائل مبتنی بر ویدئو کاربرد داره.
          بنابراین، بسته به مساله و داده باید تصمیم بگیرید که چه شبکه‌ای با چه ساختاری مناسب هست. مثلا برای دیتاست جدولی یا تبولار معمولا از شبکه MLP استفاده میشه. البته اخیرا ترنسفورمرها هم در دیتاست جدولی به کار برده میشه.

          پاسخ
    • Nr گفت:
      2021/11/19 در 2:12 ب.ظ

      در رابطه با شبکه عصبی Dense net در سایت مطالبی دارید آیا؟ من متاسفانه پیدا نکردم.

      پاسخ
      • تیم هوسم گفت:
        2021/11/19 در 3:11 ب.ظ

        در وبلاگ برای شبکه عصبی DenseNet مطلبی نداریم. اما در دو دوره آموزش یادگیری عمیق و دوره بینایی کامپیوتر حرفه‌ای درباره این شبکه صحبت شده.

        پاسخ
    • Nr گفت:
      2021/11/19 در 1:51 ب.ظ

      بسیار بسیار مفید سپاس فراوان

      پاسخ
      • تیم هوسم گفت:
        2021/11/19 در 3:09 ب.ظ

        ممنون 🌹🙏

        پاسخ
    • فرزدا گفت:
      2021/11/12 در 12:16 ق.ظ

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

      پاسخ
      • تیم هوسم گفت:
        2021/11/12 در 12:46 ب.ظ

        سلام
        کامنت شما به ما یک عالمه انرژی داد و از ته دل خوشحال شدیم.
        با آرزوی موفقیت 🌹🙏

        پاسخ
    • ع گفت:
      2021/11/07 در 11:40 ق.ظ

      یعنی معرکه بود. حتما سایتتون رو به افرادی که توی این حوزه از من سوال کنند معرفی میکنم. مقالاتتون خیلی با کیفیت هست و برعکس بسیاری از سایت ها که فقط مسائل رو پیچوندن، سایت شما خیلی واضح و خوب همه چیز رو بیان کرده.

      پاسخ
      • تیم هوسم گفت:
        2021/11/12 در 12:47 ب.ظ

        سلام
        مایه افتخاره که به دیگران ما رو معرفی می‌کنید.
        بسیار ممنون 🌹🙏

        پاسخ
    • محمد گفت:
      2021/10/15 در 3:39 ب.ظ

      لطفا فرمول سایز خروجی کانولوشن را با مثال و جاگذاری توضیح دهید چون برای مثالی که داخل متن بود بنظر فرمول مورد نظر برقرار نبود.

      پاسخ
      • تیم هوسم گفت:
        2021/10/17 در 9:14 ق.ظ

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

        پاسخ
        • نیما گفت:
          2022/05/22 در 11:59 ق.ظ

          سلام ممنون از این پست ارزشمند.

          مشکل به خاطر ابهام در جمله هست که نوشته شده:
          “ماتریس ورودی و فیلتر مربعی باشند و سایز آنها به‌ترتیب برابر با k و n باشد.”
          وقتی نوشته شده به ترتیب، خواننده این برداشت را میکنه:
          ماتریس ورودی: k
          فیلتر: n

          پاسخ
    • زهرا گفت:
      2021/10/12 در 7:00 ب.ظ

      عالی بود. ممنون

      پاسخ
      • تیم هوسم گفت:
        2021/10/17 در 9:14 ق.ظ

        ممنون از شما بابت کامنت 🌹🙏

        پاسخ
      • ناشناس گفت:
        2021/11/14 در 2:17 ب.ظ

        خیلی عالی بود خدا قوت

        پاسخ
    • H1N1 گفت:
      2021/10/09 در 1:08 ب.ظ

      سلاااااام
      عااااااالی و بسیار مفید بود
      خدا قوت🤩🤩

      پاسخ
      • تیم هوسم گفت:
        2021/10/10 در 10:20 ق.ظ

        ارادت 🌹🙏

        پاسخ
    • ستاره گفت:
      2021/09/18 در 2:53 ب.ظ

      سلام
      وقت بخیر
      چرا در بعضی از شبکه ها از دو لایه کاملا متصل استفاده می‌کنند؟

      پاسخ
      • تیم هوسم گفت:
        2021/09/19 در 1:15 ب.ظ

        سلام
        در شبکه‌هایی مثل VGG از چند لایه فولی کانکتد استفاده شده، اما بعدا اکثر شبکه‌ها فقط با یک لایه فولی کانکتد طراحی شدن. دلیلش این بود که میخواستن اون ویژگی استخراج شده از تصویر رو با چند بار نگاشت به ویژگی‌های غنی‌تر تبدیل کنن. همچنین، در اونجا ابعاد ویژگی‌ها رو مثلا کاهش بدن و بعد اون ویژگی رو به کلاسیفایر بدن.

        پاسخ
        • ستاره رضایی گفت:
          2021/09/22 در 9:42 ب.ظ

          سوالم اینکه مثلا چرا لایه کاملا متصل اول رو 152 تا نرون استفاده شده و لایه کاملا متصل بعدی رو 64 تا نرون استفاده کردند. دلیلش چیه؟

          پاسخ
    • مهدی گفت:
      2021/09/03 در 9:53 ق.ظ

      سلام
      ممنون از مطالب مفیدتون سوالی داشتم . منظور از شبکه عصبی کانولوشن یک بعدی چیست؟ ورودی شبکه وفیلترها در این شبکه چه تفاوتی با شبکه کانولوشن دو و سه بعدی دارند؟

      پاسخ
      • تیم هوسم گفت:
        2021/09/03 در 1:25 ب.ظ

        سلام
        یعنی کرنلهای کانولوشنی یک بعدی هستن. در حالت دوبعدی کرنلها شامل سطر و ستون بودن. ورودی هم دیگه تصویر نیست، مثلا میتونه صوت باشه.

        پاسخ
    • marytm گفت:
      2021/08/26 در 2:56 ب.ظ

      میشه درباره Batch Normalization, Dropout, Data Augmentation, Receptive Field هم مطلب بذارین ؟ واقعا خوب توضیح میدین .. جای دیگه همینارو کلی پیچونده توضیح داده

      پاسخ
    • علیرضا گفت:
      2021/08/24 در 9:27 ب.ظ

      سلام GPU چطور روی پایتون نصب میشه و اصولن چی هست ؟ممنون اگه راهنمایی کنید .
      یک نمونه سورس کانولوشنی دراین قسمت با توضیحاتش لطفا بذارین

      پاسخ
      • تیم هوسم گفت:
        2021/08/26 در 10:54 ق.ظ

        سلام
        GPU روی پایتون نصب نمیشه. پایتون به‌صورت مستقل از GPU و CPU نصب میشه. فریمورک پایتورچ و تنسورفلو رو میشه مبتنی بر GPU یا CPU نصب کرد. برای استفاده از GPU در پایتورچ و تنسورفلو هم باید CUDA و CUDNN نصب کنید.
        درمورد سوال بعدیتون که فرمودید GPU اصولا چی هست؟ توضیح در چند خط کافی نیست و بهتر هست جستجو و مطالعه کنید. به‌صورت خلاصه، GPU به عنوان یک پردازنده با داشتن هسته‌های کودا قدرت بیشتری در محاسبات ریاضی نسبت به CPU به ما میده. ما هم در شبکه عصبی حجم زیادی محاسبات ریاضی داریم. پس به همین خاطر از GPU استفاده می‌کنیم.
        برای درک عمقی‌تر مطالب و همچنین آموزش کدنویسی، به شما دوره آموزش یادگیری عمیق رو پیشنهاد می‌کنیم.

        پاسخ
    • محمدرضا گفت:
      2021/08/22 در 3:24 ب.ظ

      ممنون از آموزش بسیار خوبتون

      پاسخ
      • تیم هوسم گفت:
        2021/08/24 در 11:46 ق.ظ

        سپاس

        پاسخ
    • مجتبی گفت:
      2021/08/22 در 12:42 ب.ظ

      سلام وقتتون بخیر
      واقعا عالی بود و امیدوارم همیشه موفق باشید در هر زمینه ای…
      یه سوال داشتم خدممتون…من حدود 50 فیچر ورودی(تصویر) دارم که هر کدوم ۶۰۰×600 سایزشونه که از انها حدود ۷۰۰۰۰نمونه اموزشی رو برای طبقه بندی ده کلاس استفاده کردم…این کار رو با mlp و به کمک gpu انجام دادم و با زمان کمتر از ۱ساعت با صحت 90درصد استخراج کرده…
      میخواستم بدونم این کار با cnn امکانپذیره که این تعداد ورودی رو بپذیره؟ و ایا از لحاظ زمانی و سخت افزاری efficient هست؟

      پاسخ
    • مهسا گفت:
      2021/08/21 در 2:40 ب.ظ

      استراید آخرین لایه چقدر بود که خروجی شد یک بردار به طول 128 ؟

      پاسخ
      • تیم هوسم گفت:
        2021/08/21 در 5:52 ب.ظ

        معمولا در آخرین لایه، از یک پولینگ میانگین استفاده میکنیم. حالا سایز کرنل، پدینگ و استراید رو هم طوری تنظیم میکنیم که خروجی تبدیل به یک بردار بشه. مثلا، ورودی پولینگ 4×4×128 بود که با یک پولینگ با کرنل سایز 4 و بدون پدینگ، خروجی میشه 1×1×128 که در واقع یک بردار به طول 128 هست.

        پاسخ
    • مهسا گفت:
      2021/08/21 در 2:33 ب.ظ

      سلام و خسته نباشید به شما و تیم خوبتون ..
      لازم دونستم تا اینجای آموزش که با شما پیش اومدم یه خسته نباشید و خدا قوت بهتون بگم ..
      واقعا عالی بود… خیلی دنبال یه منبع بودم که بتونم باهاش ارتباط برقرار کنم و این مفاهیم رو یاد بگیرم .. میتونم به جرئت بگم از بهترین ها هستین ..
      اگه ممکن هست در مورد این شبکه عصبی مطلب بیشتری بذارین .. کد نویسیش رو هم اگه آموزش بدین که عاالیییییییییی میشه ..

      پاسخ
      • تیم هوسم گفت:
        2021/08/21 در 5:53 ب.ظ

        سلام
        خوشحالیم که آموزش‌ها برای شما مفید بوده.
        ممنون 🌹🙏

        پاسخ
    • loveeeeeeee گفت:
      2021/08/19 در 7:05 ب.ظ

      سلام عالی و بی نظیر هستید فقط کی سراغ کد میریم؟

      پاسخ
      • تیم هوسم گفت:
        2021/08/21 در 9:51 ق.ظ

        سلام
        فعلا برنامه‌ای برای کد نداریم. البته قبلا آموزش pytorch رایگان رو نوشتیم. اگر هم به دنبال یک آموزش جامع هستید، به دوره آموزش یادگیری عمیق یا دوره آموزش پایتورچ نگاهی بندازید.
        ممنون 🌹🙏

        پاسخ
    • فاطیما گفت:
      2021/08/17 در 10:09 ق.ظ

      عالی عالی عالی متشکرم

      پاسخ
      • تیم هوسم گفت:
        2021/08/21 در 9:47 ق.ظ

        سپاس 🌹🙏

        پاسخ
    • کاوه گفت:
      2021/08/16 در 12:30 ب.ظ

      سلام. واقعا عالی و شیوا بود. بی صبرانه منتظر ادامه دادن این پست و بقیه آموزش هاتون هستیم خصوصا در زمینه شبکه های عصبی

      پاسخ
      • تیم هوسم گفت:
        2021/08/17 در 9:46 ق.ظ

        سپاس 🌹🙏
        تلاش می‌کنیم آموزش‌های باکیفیت‌تری رو آماده کنیم.

        پاسخ
    • سینا گفت:
      2021/08/15 در 9:37 ب.ظ

      ایا این جمله درست هست؟ کانال ها و feature maps ها یکسان هستند. سپاس

      پاسخ
      • تیم هوسم گفت:
        2021/08/16 در 11:20 ق.ظ

        سلام
        خیر. دو مفهوم متفاوت هست.
        به ویژگی‌های خروجی یک لایه کانولوشنی فیچرمپ گفته میشه. فیچرمپ‌ها معمولا تنسورهای سه‌بعدی هستن. مثلا به‌صورت 14×14×512. 14×14 معادل با سطر و ستون هست و عدد 512 معادل با تعداد کانال‌هاست. پس کانال یکی از بعدهای فیچرمپ هست.

        پاسخ
    • سینا گفت:
      2021/08/14 در 11:00 ب.ظ

      سلام خسته نباشید
      منظور از هسته چی هست؟ مثلا جمله پنجره فیلتر اولین لایه کانولوشن به صورت 256 × 4 با 50 هسته تنظیم شده است. منظور از 50 هسته چی هست؟ در کل اگه میشه این جمله به صورت ساده توضیح دهید. ممنون

      پاسخ
      • تیم هوسم گفت:
        2021/08/16 در 11:21 ق.ظ

        سلام
        هسته یعنی فیلتر یا کرنل.
        معمولا در هر لایه کانولوشنی، تعداد زیادی هسته یا فیلتر برای استخراج ویژگی‌های متنوع درنظر گرفته میشه. مثلا شما 50 فیلتر یا هسته برای یک لایه کانولوشنی درنظر گرفتید.

        پاسخ
    • الهام گفت:
      2021/08/10 در 5:40 ب.ظ

      سلام. در مورد GCN هنوز مطلبی منتظر نکردید؟

      پاسخ
      • تیم هوسم گفت:
        2021/08/11 در 10:25 ق.ظ

        سلام
        خیر
        موفق باشید 🌹🙏

        پاسخ
    • مسعود گفت:
      2021/08/04 در 8:03 ب.ظ

      خیلی ممنون از مطالب خوبتون
      یه سوال داشتم
      توی پیاده سازی شبکه CNN وقتی لایه MaxPooling را میخوام به مدلم بدم باید یه آرگومان به نام pool_size تعیین کنم. این pool_size چیه دقیقا؟
      خیلی ممنون

      پاسخ
      • تیم هوسم گفت:
        2021/08/05 در 11:05 ق.ظ

        سلام
        احتمالا به سایز کرنل در پولینگ اشاره میکنه. مثلا میتونه 3×3 باشه. درمورد سایز کرنل پولینگ در همین آموزش شبکه عصبی کانولوشن توضیح دادیم.

        پاسخ
    • مسعود گفت:
      2021/07/31 در 5:45 ب.ظ

      سلام و سپاس بیکران بابت مطالب بسیار مفیدی که خیلی واضح و روان بیان کردید.

      پاسخ
      • تیم هوسم گفت:
        2021/08/01 در 10:13 ق.ظ

        سلام
        سپاس 🌹🙏

        پاسخ
    • peyman2121 گفت:
      2021/07/30 در 8:36 ب.ظ

      با سلام …من در حال آموزش طی یک دوره حضوری در یکی از مراکز تاپ اموزشی توی زمینه دیپ لرنینگم …ولی واقعا بعد از حدود ۴۵ ساعت آموزشی ک تا الان دیدم به جرات میتونم بگم درکی که توی این چن ساعت مطالعه مطالب رایگان شما داشتم واقعا خیلی خیلی مفیدتر بوده…انشالله بعد اتمام این دوره در جریانم حتما دانشجوی دوره های تصویری شما هم خواهم بود…خیلی خیلی ممنون بابت زحماتتون

      پاسخ
      • تیم هوسم گفت:
        2021/07/31 در 9:15 ق.ظ

        سلام
        از اینکه این آموزش به شما کمک کرده و مفید بوده، خوشحالیم.
        براتون پیشرفت زیاد و موفقیت در یادگیری عمیق رو آرزومندیم. ✌😊

        پاسخ
    • soran گفت:
      2021/07/27 در 11:45 ب.ظ

      سلام
      خیلی عالی بود مطلبتون. ساده و روان و با مثال و انیمیشن
      خیلی خیلی ممنون
      کاش کدهای خیلی ساده هم داشت

      پاسخ
      • تیم هوسم گفت:
        2021/07/28 در 12:26 ب.ظ

        سلام
        خوشحالیم که آموزش شبکه عصبی کانولوشن برای شما مفید بوده.
        سپاس 🌹🙏

        پاسخ
    • محمدی فر گفت:
      2021/07/22 در 8:34 ب.ظ

      از شدت خفن بودنتون همینجور موندم عالیییی بود عالییییییییییییییی

      پاسخ
      • تیم هوسم گفت:
        2021/07/23 در 12:37 ب.ظ

        به سبک خودتون سپاااااااس 😊🌹🙏

        پاسخ
    • بابک گفت:
      2021/07/03 در 4:58 ب.ظ

      دوستان گرامی ، براتون قلبا آرزوی موفقیت می کنم
      بسیار بیان شیوا و عالی دارید . خدا قوت .
      هیات علمی دانشگاه آزاد اسلامی

      پاسخ
      • تیم هوسم گفت:
        2021/07/04 در 10:52 ق.ظ

        سلام
        نظر شما برای ما خوشحال‌کننده و مایه افتخار هست.
        سپاس

        پاسخ
    • مهتا گفت:
      2021/06/29 در 9:31 ب.ظ

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

      پاسخ
      • تیم هوسم گفت:
        2021/06/30 در 5:05 ب.ظ

        سلام
        سپاس 🌹🙏
        تصور کنید فیلتر 3×3 باشه. حالا این فیلتر روی یک تصویر قرار گرفته و یک ناحیه 3×3 اشغال شده. برای راحتی، بیایید ناحیه 3×3 از تصویر و فیلتر رو تبدیل به بردار کنیم. پس الان دو تا بردار فیلتر و تصویر داریم. حالا یکم مقایسه راحت تر میشه. همه اون ضربی که بین فیلتر و تصویر انجام میشه و بعد ضرب‌ها باهم جمع میشن، دقیقا ضرب نقطه‌ای هست. حالا یک سوال ساده؛ ضرب نقطه‌ای چه زمانی عدد بزرگی میشه؟ وقتی دو بردار شبیه هم باشن. دو بردار شبیه یعنی چی؟ یعنی زاویه داخلی کوچکی بین دو بردار وجود داشته باشه.

        پاسخ
    • امید گفت:
      2021/06/21 در 11:49 ب.ظ

      سلام خدا قوت
      جامع و کامل بود
      کلی سوال بی جواب منو جواب داد
      ممنون

      پاسخ
      • تیم هوسم گفت:
        2021/06/23 در 1:54 ق.ظ

        سلام
        خداروشکر که جواب سوال‌هاتون رو پیدا کردید.
        سپاس 🙏🌹

        پاسخ
    • مناجاتی پور گفت:
      2021/06/17 در 5:25 ب.ظ

      با سلام خدمت تیم هوسم
      من کلی سایت خارجی و فارسی رو در مورد شبکه عصبی کانولوشن مطالعه کردم و کلی سوال، بی جواب برام موند.
      ولی شما در این سایت بسیار ساده و روان تمام مفاهیم مهم و اصلی رو توضیح دادید.
      ممنون از شما
      باز هم به هوسم سر میزنم
      به امید آموزش های بیشتر

      پاسخ
      • تیم هوسم گفت:
        2021/06/18 در 11:14 ق.ظ

        سلام
        سپاس 🌹🙏
        انشالله بتونیم آموزش‌های باکیفیت‌تری آماده کنیم.

        پاسخ
    • شکیبا گفت:
      2021/06/11 در 1:21 ب.ظ

      ممنونم از سایت خوبتون

      پاسخ
      • تیم هوسم گفت:
        2021/06/12 در 10:05 ق.ظ

        سلام
        سپاس 🌹🙏

        پاسخ
    • نیلوفر گفت:
      2021/06/09 در 3:22 ب.ظ

      با سلام و احترام
      خیلی ممنون بابت این مطالب خیلی خیلی مفید و قابل فهم
      اولین باره که دیدم سایتی به این سادگی تونست کل مفهوم رو برسونه 🙂
      میشه لطفا در باره شبکه fcn ، نحوه ساخت مدلش ، لایه فولی کانکتد و نکات ریزی که درباره activation ها و فعالساز ها هم بنویسین.
      با تشکر فراوان

      پاسخ
      • تیم هوسم گفت:
        2021/06/10 در 10:55 ق.ظ

        سلام
        سپاس، خوشحالیم که آموزش برای شما مفید بوده. 🌹🙏
        درمورد مباحثی که فرمودید، می‌تونید به دوره بینایی کامپیوتر هوسم مراجعه کنید.

        پاسخ
    • sa گفت:
      2021/05/19 در 9:21 ق.ظ

      ممنون از توضیحات عالیتون

      پاسخ
      • تیم هوسم گفت:
        2021/05/19 در 9:29 ق.ظ

        سپاس 🌹🙏

        پاسخ
    • علی خوزستان دز گفت:
      2021/05/17 در 8:54 ق.ظ

      سلام وقت بخیر ، درود بر شما.
      ممنون از شما که وقت و تجربه تون رو برای بقیه هم ب اشتراک میذارین.

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

      برداشتم تا به این لحظه به این شکل بوده وقتی فولی کانکتد در لایه های میانی هستش صرفا نقش رابط رو داره! بین ورودی خروجی لایه قبلی تا نورون های فعال لایه بعدی!

      پاسخ
      • تیم هوسم گفت:
        2021/05/17 در 2:06 ب.ظ

        سلام
        سپاس 🌹🙏
        تعداد لایه‌ها باتوجه به کلاس‌ها تنظیم نمیشه. تعداد نورونهای لایه فولی کانکتد هست که معمولا تابعی از تعداد کلاسهاست.
        در شبکه های عصبی اولیه مثل شبکه عصبی عمیق VGG چند لایه فولی کانکتد در انتهای شبکه وجود داشت. اما بعدا تعداد لایه ها به یک لایه کاهش پیدا کرد. بنابراین، در معماری مدرن، تنها یک لایه فولی کانکتد در انتهای شبکه عصبی کانولوشن وجود داره که اونهم نقش کلاسیفایر رو داره.
        درمورد سوال دوم که فرمودید این لایه در میان شبکه استفاده میشه، اکثر معماری هایی که ما دیدیم از این لایه در وسط شبکه استفاده نمیکنن. از ابتدا تا انتهای یک شبکه کانولوشن رو کانولوشن تشکیل داده تا یک استخراج ویژگی خوب از داده ورودی انجام بشه.
        اگر هم منظورتون این هست که یک شبکه تماما فولی کانکتد داریم، باید بگم که اونها هم نقش استخراج ویژگی رو دارن. این لایه ها با نگاشت ورودی به فضاهای جدید، سعی میکنن نمایشی بسازن که جداکردن کلاسها برای کلاسیفایر نهایی راحتتر بشه.

        پاسخ
    • معصومه فرهادی گفت:
      2021/05/09 در 12:37 ب.ظ

      سلام مجدد
      سوالی داشتم در خصوص کاربرد CNN
      آیا جهت ایجاد رگرسیون بین یکسری داده های عددی(یک بعدی) هم میشه از این روش استفاده کرد؟ من از LSTM تونستم استفاده کنم. ولی در مورد CNN نمیدونم. چون گویا ماهیت لایه های کانولوشن در ارتباط با تصاویر که بیشتر از یک بعد دارن هست، درسته؟

      پاسخ
      • تیم هوسم گفت:
        2021/05/10 در 2:04 ق.ظ

        سلام
        شبکه کانولوشن برای انواع داده‌ها کاربرد داره. کارهای زیادی وجود داره که از شبکه کانولوشن برای داده یک بعدی (وکتور) استفاده کردند.
        چه تغییراتی برای استفاده از کانولوشن در داده یک بعدی لازم هست؟
        باید از کانولوشن یک بعدی استفاده کنید. تمام آنچه در این پست گفته شده، براساس فیلتر کانولوشن دوبعدی هست. اما علاوه‌بر فیلتر دوبعدی، یک بعدی و سه بعدی هم داریم. فریمورک پایتورچ تنسورفلو و کراس هم هرسه نوع فیلتر رو دارند.

        پاسخ
    • سمیه گفت:
      2021/05/07 در 1:40 ق.ظ

      سلام. وقت بخیر. در شکل 17 اندازه ی فیلتر در متن سه درسه در تصویر چیز دیگری است. در این تصویر عملا سایز تصویر یک سوم شده ؟
      میشه در مورد سایز نهایی فیجر مپ توضیح بدید.

      پاسخ
      • تیم هوسم گفت:
        2021/05/07 در 5:00 ق.ظ

        سلام
        حق با شماست. سایز فیلتر در متن و شکل همخوانی نداشتند. اصلاح کردیم. ممنون 🌹🙏
        توضیح درمورد سایز نهایی فیچرمپ: طبیعتا به ازای هر فیلتری که روی تصویر قرار میگیره و عملیات کانولوشن انجام میشه، یک تصویر یا ماتریس ویژگی در خروجی ساخته میشه. یعنی اگر یک فیلتر 5×5×3 و یک تصویر 100×100×3 داشته باشیم، یک تصویر به ابعاد 100×100 در خروجی تشکیل خواهد شد. البته، لازم هست اینو هم بگیم که این خروجی حتما 100×100 نیست؛ بلکه، بسته به پدینگ و استراید ممکنه سایز اون کوچکتر از 100×100 هم بشه.
        حالا اگه بجای یک فیلتر 5×5×3، 1000 تا فیلتر به همین ابعاد داشته باشیم، به ازای هر فیلتر یک خروجی به ابعاد 100×100 ساخته میشه. پس اگه 1000 تا فیلتر داریم، یعنی 1000 تا ماتریس ویژگی 100×100 در خروجی داریم. بهتر بگیم، یعنی یک ماتریس به ابعاد 100×100×1000؛ خب به این ماتریس، فیچرمپ گفته میشه.
        امیدواریم با این توضیحات مشکلتون حل شده باشه.

        پاسخ
        • سمیه گفت:
          2021/05/07 در 4:12 ب.ظ

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

          پاسخ
          • تیم هوسم گفت:
            2021/05/07 در 4:46 ب.ظ

            سلام
            درحال حاضر چنین خدماتی در مجموعه نداریم.
            موفق باشید 🌹🙏

            پاسخ
    • معصومه فرهادی گفت:
      2021/04/28 در 12:49 ب.ظ

      چرا انقد خوبه آخه سایتتون؟! :((
      هیچ منبعی رو سراغ ندارم که انقدر ساده و شیوا تشریح کرده باشه مفاهیم رو، حتی منابعی که هزینه دریافت میکنند!
      مارو گرفتار آموزشاتون کردید رفت …
      بهترین هارو برای تیم باانگیزه و پرقدرتتون آرزو دارم
      دستمریزاد!

      پاسخ
      • تیم هوسم گفت:
        2021/04/28 در 2:01 ب.ظ

        سلام
        از خوندن پیام شما بسیار بسیار خوشحال شدیم و خیلی انرژی گرفتیم.
        سپاس 🌹🙏

        پاسخ
    • الیاس گفت:
      2021/04/15 در 11:20 ب.ظ

      سلام
      خدا قوت
      واقعا ساده و کامل توضیح داده بدین، خیلی ممنونم ازتون
      منتظر آموزش های بیشتر هستیم

      پاسخ
      • تیم هوسم گفت:
        2021/04/16 در 11:37 ب.ظ

        سلام
        سپاس الیاس عزیز 🌹🙏

        پاسخ
    • م. ص گفت:
      2021/04/06 در 1:39 ق.ظ

      ممنون واقعا خیلی مفید بود.

      پاسخ
      • تیم هوسم گفت:
        2021/04/06 در 9:36 ق.ظ

        سلام
        ممنون از شما بابت کامنت 🌹🙏

        پاسخ
    • فاطمه سرپوش گفت:
      2021/04/06 در 12:25 ق.ظ

      با سلام
      ممنون
      عالی بود

      پاسخ
      • تیم هوسم گفت:
        2021/04/06 در 9:34 ق.ظ

        سلام
        سپاس 🌹🙏

        پاسخ
    • عاطفه گفت:
      2021/03/24 در 6:08 ب.ظ

      سلام ممنون بابت آموزش عالیتون بسیار دلسوزانه و روان توضیح دادید.
      در پناه حق پیروز و سربلند باشید

      پاسخ
      • تیم هوسم گفت:
        2021/03/24 در 6:11 ب.ظ

        سلام
        ممنون از شما برای دعای خیر و کامنت
        با آرزوی بهترین‌ها برای شما 🌹

        پاسخ
    • babak گفت:
      2021/03/24 در 4:42 ب.ظ

      سلام
      موافق نظر بقیه دوستان مبنی بر اینکه فوق العاده ساده و شفاف و فوقالعاده توضیح داده شده و اصلاً قابل مقایسه با آموزش در سایتهای دیگه نیست کاملاً موافقم. بعنوان یک مدرس، اصلاً اهل نظر دادن در سایتها نیستم ولی اینقدر مطلب از همه نظر جذاب و عالی بود که حیفم اومد نظر ندم.
      دست مریزاد و خدا قوت.

      پاسخ
      • تیم هوسم گفت:
        2021/03/24 در 4:57 ب.ظ

        سلام
        از خواندن پیام شما بسیار بسیار خوشحال شدیم و انرژی گرفتیم.
        سپاس 🌹🙏

        پاسخ
    • مریم گفت:
      2021/03/10 در 1:39 ق.ظ

      سلام
      عالی بود. دمتون گرم خدا قوت

      پاسخ
      • تیم هوسم گفت:
        2021/03/10 در 10:35 ق.ظ

        سلام
        سپاس 🌹🙏

        پاسخ
    • صبا گفت:
      2021/03/09 در 10:42 ب.ظ

      این آموزش عالیییی بود. ولی کاش تو حوزه ی متن هم آموزش بذارین.

      پاسخ
      • تیم هوسم گفت:
        2021/03/09 در 10:47 ب.ظ

        سلام
        سپاس از شما هم برای کامنت و هم برای پیشنهاد 🌹🙏
        برای پردازش متن برنامه‌ریزی‌هایی انجام دادیم و انشالله به زودی آموزش در حوزه متن رو شروع خواهیم کرد.

        پاسخ
    • فائزه گفت:
      2021/03/09 در 1:15 ب.ظ

      بسیار عالی بود با زبانی اسان و قابل فهم
      خدا قوت

      پاسخ
      • تیم هوسم گفت:
        2021/03/09 در 4:08 ب.ظ

        سلام
        سپاس 🌹🙏

        پاسخ
    • rahimmoradpour گفت:
      2021/03/07 در 1:29 ب.ظ

      سلام ممنون از زحمتی که میکشید جهت ارائه مطالب مهم بصورت بسیار روان.
      سوالی داشتم.
      بعنوان مثال در لایه کانولوشن اول که 32 تا فیچر مپ تولید شد و در لایه ی بعدی 64 تا، آیا هر کدام از 32 فیچر مپ لایه ی اول به 64 تا تبدیل میشود ویا اینکه کلا آن 32 تای قبلی دو برابر شده و به 64 تبدیل میشوند؟
      ممنون میشوم اگر طوری توضیح دهید که پاسخ این سوال را مفهومی متوجه شوم.

      پاسخ
      • تیم هوسم گفت:
        2021/03/07 در 2:44 ب.ظ

        سلام
        باعث خوشحالیه که آموزش برای شما مفید بوده 🌹🙏

        جواب کوتاه سوال شما این هست که 32 کانال ورودی، 64 بار به شکل‌های مختلف باهم ترکیب میشن و 64 تا کانال خروجی رو میسازن.

        اما در ادامه کمی بیشتر درباره سوال شما توضیح دادیم.
        سناریوی شما اینطور هست که ورودی 32 کانال دارد و خروجی هم 64 کانال. یعنی این لایه 64 فیلتر دارد.
        اما سوال شما این هست که اینها چطور تولید میشن؟
        جواب: 64 فیلتر داریم. هر فیلتر ما 32 کانال دارد. یعنی به اندازه ورودی. حالا هربار یک فیلتر برمیداریم و در ورودی که 32 کانال است کانوالو میکنیم و درنتیجه یکی از 64 کانال ساخته میشود. یعنی، 32 کانال باهم ترکیب میشن و یک خروجی میسازن.

        سوال بعدی: یعنی وقتی 64 تا فیلتر داریم، 64 بار این ورودی باهم ترکیب میشه؟
        جوب: بله، دقیقا. اما هربار یک فیلتر کانولوشنی برمیداریم و چون متنوع هستن، به هرکدوم از این 32 صفحه ورودی یک وزن متفاوتی داده میشه و بعد باهم جمع میشن.

        پاسخ
        • محمد گفت:
          2021/06/21 در 7:59 ب.ظ

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

          پاسخ
        • آرمان گفت:
          2022/06/17 در 1:57 ب.ظ

          سلام
          خیلی متشکرم از مطلب و بیان خوبتون.
          این سوال من هم بود که با پاسخی که فرمودید متوجه شدم.
          خدا قوت

          پاسخ
    • Ysz2020 گفت:
      2021/03/01 در 10:17 ق.ظ

      عالی بود . من ویدئو هاتون رو هم خریدهم . هرچه فیلم اموزشی توی ساییتون درباره شبکه عصبی و یادگیری عمیق و پایتون و هوش مصنوعی باشه میخرررررممم

      پاسخ
      • تیم هوسم گفت:
        2021/03/01 در 7:22 ب.ظ

        سلام
        ممنون 🌹🙏
        واقعا از اینکه انقدر ازمون حمایت میکنید صمیمانه سپاسگذاریم. ❤

        پاسخ
    • علی گفت:
      2021/02/06 در 7:58 ب.ظ

      سلام
      خدا قوت
      خیلی ممنون از وقتی که می‌ذارید و این آموزش‌های خوب رو تولید می‌کنید

      پاسخ
      • تیم هوسم گفت:
        2021/02/07 در 9:54 ق.ظ

        سلام
        سپاس علی عزیز 🌹🙏

        پاسخ
    • علی گفت:
      2021/02/05 در 1:13 ق.ظ

      بسیار عالی.
      مطالب رو بسیار روان و همراه با فهم عمیق توضیح دادید.
      به امید موفقیت‌های بیشتر برای تیم شما.
      منتظر پست‌های بعدی شما هستیم و کارتون رو دنبال خواهیم کرد.

      پاسخ
      • تیم هوسم گفت:
        2021/02/05 در 10:02 ق.ظ

        سلام
        سپاس بابت این همه انرژی مثبت 🌹🙏

        پاسخ
    • baran گفت:
      2021/02/02 در 10:25 ب.ظ

      عالی بهتر از هر آموزش دیگه ای که دیدم

      پاسخ
      • تیم هوسم گفت:
        2021/02/03 در 9:57 ق.ظ

        سلام
        سپاس 🌹🙏

        پاسخ
    • سمانه گفت:
      2021/01/21 در 7:26 ب.ظ

      فوق العادههههههههه بود
      ممنون

      پاسخ
      • تیم هوسم گفت:
        2021/01/21 در 7:33 ب.ظ

        سلام
        خیلیییی ممنون 🌹🙏😊

        پاسخ
    • حسین گفت:
      2021/01/18 در 7:15 ق.ظ

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

      پاسخ
      • تیم هوسم گفت:
        2021/01/18 در 9:04 ق.ظ

        سلام حسین عزیز،
        این پست، ترجمه خط به خط از یک منبع نیست. از منابع مختلفی استفاده کردیم. اما، این کتاب، منبع خوب و معتبری هست که ما ازش استفاده کردیم. لینک
        آرزوی موفقیت برای شما در پایان‌نامه 💪❤

        پاسخ
        • یگانه گفت:
          2022/09/16 در 9:23 ب.ظ

          از اینکه منابع و اطلاعات و در اختیار میزارید تشکر میکنم واقعا سایت تون عالی هست بیان ساده و روان برای این مباحث فقط در این سایت هست.

          پاسخ
    • احمد گفت:
      2021/01/13 در 11:17 ق.ظ

      سلام
      واقعا عالی بود من موضوع ارائه ام همین شبکه ها بود کلی سایت دیدم ولی چیز خوبی گیرم نیومد تا این که سایت شما رو دیدم و دیدم که واقعا مطالب عالی هستند و تونستم ارائه رو بدم
      ممنون

      پاسخ
      • تیم هوسم گفت:
        2021/01/13 در 6:47 ب.ظ

        سلام
        سپاس احمد عزیز 🌹🙏
        این برای ما یک دستاورد بزرگ هست که شما به کمک این آموزش تونستید ارائه رو پشت سر بگذارید.

        پاسخ
    • مهسا گفت:
      2021/01/05 در 5:35 ب.ظ

      هنوز باورم نمیشه یه آموزش فارسی به این شفافی و کاملی پیدا کردم.
      دست مریزاد

      پاسخ
      • تیم هوسم گفت:
        2021/01/05 در 5:45 ب.ظ

        سلام
        سپاس 🌹🙏
        انشالله بتونیم بهتر از اینها رو آماده کنیم.

        پاسخ
    • h.vahidifar گفت:
      2020/12/19 در 2:54 ق.ظ

      با سلام
      من هم مطالب زیادی در این موارد تا الان مطالعه کردم ولی بنظرم روان و کامل مطالب بیان شده است از زحمات شما تشکر را دارم
      با آرزوی توفیقات روز افزون.

      سوالی هم داشتم در بسیاری از مقالات برای یادگیری عمیق و CNN صرفا پردازش تصویر گفته می شود آیا اگر دیتاست بزرگی(غیر از تصاویر و عمدتا فیلدهای ) از اطلاعات سهم یا بانکی داشته باشیم نمی شود از قابلیتهای یادگیری عمیق و CNN یا RNN استفاده نمود لطفا راهنمایی کنید.
      ممنون

      پاسخ
      • تیم هوسم گفت:
        2020/12/19 در 10:18 ق.ظ

        سلام
        سپاس 🌹🙏
        شبکه‌های CNN و RNN ابزارهایی هستند که صرفا محدود به یک زمینه یا کاربرد نمیشن. به‌عنوان نمونه، همه شبکه CNN رو با کاربرد در پردازش تصویر و RNN رو در متن دیدیم. اما شبکه CNN هم در متن و هم در صوت کاربرد داره. در مورد پیش‌بینی سهام بورس، شبکه های بازگشتی مثل RNN LSTM GRU بسیار کاربرد دارند. مثلا ما در این پست درباره سهام بورس و LSTM صحبت کردیم و یک پروژه انجام دادیم.

        پاسخ
    • مهرداد گفت:
      2020/12/17 در 11:16 ب.ظ

      سلام،

      نحوه توضیح و مثال ها به اندازه ای خوانا بود که باعث شد چند ساعتی بشینم و کامل تمام آموزش رو از اول مطالعه کنم. خسته نباشید و خدا قوت به خاطر وقتی که میذارید و این مطالب رو آماده می کنید. این نوع توضیح دادن نشان دهنده درک بالا و عمقی شما در این زمینه می باشد. امیدورام که این آموزش ها با ویدیو هم همراه باشه. و به عنوان پیشنهاد هم میتونید یک بخش به سایت اضافه کنید که در مورد مقالات هات و روز دنیا صحبت کنید و توضیح بدید. مقالاتی مثل BERT , MT_DNN, GPT3 و … این بخش باعث میشه افراد مختلف وب سایت شما رو همیشه چک کنند و به روز باشند.

      تشکر از زحماتتون

      پاسخ
      • تیم هوسم گفت:
        2020/12/18 در 11:59 ق.ظ

        سلام
        سپاس 🌹🙏
        بسیار خوشحالیم که آموزش نظر شما رو جلب کرده. پیشنهاد شما بسیار عالی هست. خودمون هم بسیار علاقه‌مندیم که از مقالات روز صحبت کنیم.

        پاسخ
    • shahrzad گفت:
      2020/12/07 در 5:14 ب.ظ

      خیلی خیلی عالی بود
      توضیحات واضح و روان و بسیار مفید بود

      پاسخ
      • تیم هوسم گفت:
        2020/12/07 در 5:18 ب.ظ

        سلام
        سپاس 🌹🙏

        پاسخ
    • rohollah گفت:
      2020/12/04 در 7:56 ب.ظ

      درود بر مجموعه و سایت بی نظیرتون

      پاسخ
      • تیم هوسم گفت:
        2020/12/05 در 10:48 ق.ظ

        سلام
        سپاس 🌹🙏

        پاسخ
    • zahra گفت:
      2020/12/03 در 10:08 ب.ظ

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

      پاسخ
      • تیم هوسم گفت:
        2020/12/04 در 10:03 ق.ظ

        سلام
        سپاس 🙏🌹
        درمورد مطالب انتهای پست هم انشالله در همین پست توضیح خواهیم داد.

        پاسخ
    • HsH گفت:
      2020/12/02 در 11:11 ق.ظ

      سلام، خیلی متشکرم بابت توضیح کامل و بیان زیبای شما. به جرات میتونم بگم یکی از کامل ترین داکیومنت هایی بود که برای CNN خوندم، چه به زبان فارسی و چه انگلیسی. موفق باشید

      پاسخ
      • تیم هوسم گفت:
        2020/12/02 در 11:30 ق.ظ

        سلام
        سپاس بابت کامنتی که گذاشتید و البته بابت این همه انرژی که دادید. 🌹
        برای این پست زمان زیادی گذاشته شده و خوشحالیم که با منابع انگلیسی مقایسه شدیم. 🙏

        پاسخ
    • hassanz گفت:
      2020/10/10 در 11:47 ب.ظ

      واقعا فوق العاده هستید

      پاسخ
      • تیم هوسم گفت:
        2020/10/11 در 11:29 ق.ظ

        سلام
        سپاس بابت انرژی‌ای که به ما میدید 🌹

        پاسخ
    • لاله گفت:
      2020/10/08 در 10:09 ب.ظ

      خیلی عالی

      خیلی ممنون

      پاسخ
      • تیم هوسم گفت:
        2020/10/09 در 10:51 ق.ظ

        سلام
        سپاس 🌹

        پاسخ
    • neda گفت:
      2020/10/08 در 8:44 ب.ظ

      سلام. استاد میشه لطفا کد شبکه ها رو هم قرار بدید که با تئوری مقایسه کنیم؟ ممنون

      پاسخ
      • تیم هوسم گفت:
        2020/10/09 در 10:52 ق.ظ

        سلام
        انشالله در یک پست دیگه اینکار رو میکنیم.

        پاسخ
    • فاطمه گفت:
      2020/10/06 در 1:30 ق.ظ

      خیلی خوب می نویسید لطفا در مورد شبکه های پیشرفته مثل alexnet ,mobilenet,google netو یادگیری انتقالی هم مطلب بگذارید.از پایه شروع کردن خوب هست ولی مطالب پایه زیاد هست.مطالب پیچیده تر رو بیان کنید که کم تر سایت ها روش کار کردن

      پاسخ
      • تیم هوسم گفت:
        2020/10/06 در 7:39 ق.ظ

        سلام
        سپاس 🌹
        تشریح شبکه های معروف کانولوشنی هم در برنامه ما قرار داره. از پایه شروع کردیم و انشالله تا مطالب پیشرفته پیش خواهیم رفت…
        از شما بابت پیشنهادتون ممنونیم.

        پاسخ
    • BaharRostami گفت:
      2020/10/01 در 11:32 ق.ظ

      ممنونم از سایت مفیدتون. واقعا بیان قابل فهمی دارید. لطفا بخش های بعدی رو زودتر قرار بدید که استفاده کنیم. خدا قوت

      پاسخ
      • تیم هوسم گفت:
        2020/10/01 در 11:34 ق.ظ

        سلام
        سپاس 🌹
        نگارش شبکه عصبی بازگشتی شروع شده و انشالله طی روزهای آینده منتشر میشه.

        پاسخ

    دیدگاهتان را بنویسید لغو پاسخ

    جستجو برای:
    فهرست مطالب دوره
    • معرفی دوره یادگیری عمیق رایگان
    • جلسه 00: یادگیری عمیق چیست
    • جلسه 01: ساختار نورون مصنوعی
    • جلسه 02: یادگیری نورون مصنوعی
    • جلسه 03: شبکه عصبی mlp
    • جلسه 04: دسته بندی با mlp و تنسورفلو
    • جلسه 05: رگرسیون با mlp و تنسورفلو
    • جلسه 06: شبکه عصبی کانولوشنی (CNN)
    • جلسه 07: شبکه عصبی بازگشتی (RNN)
    • جلسه 08: شبکه عصبی LSTM
    • جلسه 09: شبکه GRU
    • جلسه 10: شبکه ترنسفورمر
    • جلسه 11: شبکه ویژن ترنسفورمر
    • جلسه 12: شبکه عصبی GAN
    • جلسه 13: شبکه اتوانکدر
    دوره‌های جامع هوسم
    • پیاده‌سازی ChatGPT از صفر با پایتورچ
    • آموزش OpenCV: از پردازش تا بینایی
    • دیپ کاتالیست: دوره افزایش مهارت
    • پایتون برای هوش مصنوعی 🤖
    • یادگیری ماشین جامع: از مفاهیم تا پیاده‌سازی🔥
    • یادگیری عمیق جامع: از مفاهیم تا پیاده‌سازی
    • دوره متلب سوپراستارتر
    درباره هوسم

    آکادمی هوش مصنوعی هوسم با آموزش‌های تخصصی در حوزه هوش مصنوعی در خدمت شماست. روی کمک هوسم حساب کنید…

    • گیلان- شهرستان رودسر- شهرک انصاری- کوچه لاله 9
    • 09025469248
    • howsam.mail@gmail.com
    دسترسی سریع
    • صفحه اصلی
    • وبلاگ
    • حساب کاربری
    • سبد خرید
    شبکه‌های اجتماعی

     

    logo-samandehi
    تمامی حقوق برای آکادمی هوسم محفوظ است.
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!

      ورود

      رمز عبور را فراموش کرده اید؟

      هنوز عضو نشده اید؟ عضویت در سایت