در درسنامه های قبل، لایه ی اول از شبکه های عصبی عمیق کانولوشن یعنی لایه ی کانولوشن و لایه ی دوم یعنی لایه ی Pooling را بررسی کردیم. در این قسمت، سایر لایه های این شبکه را مطالعه خواهیم کرد.
مقاله مرتبط :
-
- پیاده سازی شبکه عمیق در متلب: ساختن شبکه یادگیری عمیق ساده برای کلاسه بندی
- پیاده سازی شبکه عصبی عمیق در متلب – قسمت اول : کانولوشن
- پیاده سازی شبکه عصبی عمیق در متلب – قسمت دوم : پولینگ
- پیاده سازی شبکه عصبی عمیق در متلب – قسمت سوم : تماماً متصل
- پیاده سازی شبکه عصبی عمیق در متلب – قسمت چهارم : الگوریتم پس انتشار
تماما متصل ( Fully Connected ) :
لایه ی دیگری که در شبکه های عصبی عمیق وجود دارد، لایه ی تماما متصل یا Fully connected است. لایه های تماما متصل Feature map های ۲ بعدی حاصله از مرحله ی Pooling را به Feature vector یک بعدی تبدیل می کند.
لایه های تماما متصل همانند همتایان خود در شبکه های عصبی مصنوعی سنتی عمل می کنند و تقریبا ۹۰% پارامترهای یک شبکه CNN را شامل می شوند. لایه تماما متصل بما اجازه می دهد تا نتیجه شبکه را در قالب یک بردار با اندازه مشخص ارائه کنیم . از این بردار می توان برای دسته بندی استفاده کرد و یا اینکه از آن جهت ادامه پردازش های بعدی بهره برد.
تغییر ساختار لایه های تماما متصل رایج نیست، اما یک نمونه در روش ( Transferred learning ) انجام شد که در آن پارامترهای فراگرفته شده توسط ImageNet حفظ شده اما لایه تماما متصل آخر با دو لایه تماما متصل جایگزین شد تا شبکه با اینکار بتواند با فعالیتهای تشخیص بینایی جدید انطباق پیدا کند.
مشکل بزرگ این نوع لایه ها این است که دارای تعداد بسیار زیادی پارامتر اند. که نتیجه این امر هزینه پردازشی بسیار بالایی است که در زمان آموزش بایستی صرف شود. بنابر این یک روش که معمولا بکاربرده می شود و نتایج رضایت بخشی نیز دارد این است که یا کلا این لایه ها حذف شوند و یا تعداد اتصالات در این لایه ها توسط روش هایی کاهش یابد. به عنوان مثال GoogLeNet یک شبکه عمیق و گسترده را طراحی کرد که در آن هزینه محاسباتی ثابت نگه داشته شده است . این کار با تعویض معماری تماما متصل با معماری بطور پراکنده متصل صورت گرفت.
برای پیاده سازی این لایه، روش های مختلفی پیشنهاد شده است که در ادامه یکی از روش ها کافیست روی نتیجه ی حاصل از آخرین لایه ی Pooling عملیات ستونی سازی پیاده شود. بصورت کد در محیط برنامه نویسی متلب ارائه شده است:
<strong>function [yy] = MyFullConn(im_pooling) %im_pooling: Output of the finall pooling layer [M,N,P]=size(im_pooling); yy=zeros(M*N*P,1); i=1; for k=1:P for m=1:M for n=1:N yy(i,1)=im_pooling(m, n, k); i=i+1; end end end end</strong>
در درسنامه های بعدی، مراحل دیگر فرآیند یادگیری عمیق را ادامه خواهیم داد.
بیشتر بخوانید :
- پلاک خوان ها در سراسر ایالت تنسی در حال نصب است
- مشاغل هوش مصنوعی در سال ۲۰۲۴: بررسی ۱۰ شغل پردرآمد هوش مصنوعی
- متا در حال کار روی یک موتور جستجوی هوش مصنوعی است تا از گوگل بی نیاز شود
- آیا هوش مصنوعی منجر به افزایش خالص مشاغل خواهد شد؟
- قابلیت تولید تصویر با هوش مصنوعی Imagen 3 به جمینی گوگل اضافه شد
یک نظر
دنبال کنید : تشخیص تصاویر با شبکه های عصبی کانولوشنی به زبان ساده - مجله شهاب