پیاده سازی شبکه عصبی عمیق در متلب- قسمت سوم

پیاده سازی شبکه عصبی عمیق در متلب- قسمت سوم

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

لایه ی دیگری که در شبکه های عصبی عمیق وجود دارد، لایه ی تماما متصل یاfully connected است. لایه های تماما متصل  feature map های ۲ بعدی حاصله از مرحله ی pooling را به feature vector یک بعدی تبدیل می کند.

لایه های تماما متصل همانند همتایان خود در شبکه های عصبی مصنوعی سنتی عمل می کنند و تقریبا ۹۰% پارامترهای یک شبکه CNN را شامل می شوند. لایه تماما متصل بما اجازه می دهد تا نتیجه شبکه را در قالب یک بردار با اندازه مشخص ارائه کنیم . از این بردار می توان برای دسته بندی استفاده کرد و یا اینکه از آن جهت ادامه پردازش های بعدی بهره برد.

تغییر ساختار لایه های تماما متصل رایج نیست، اما یک نمونه در روش(Transferred learning)  انجام شد که در آن پارامترهای فراگرفته شده توسط ImageNet حفظ شده اما لایه تماما متصل آخر با دو لایه تماما متصل جایگزین شد تا شبکه با اینکار بتواند با فعالیتهای تشخیص بینایی جدید انطباق پیدا کند.

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

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

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
بدون دیدگاه

ارسال یک نظر

نظر
نام
ایمیل
وبسایت