卷積神經網絡之卷積的結構和參數的多少


  卷積神經網絡其實和普通的神經網絡的區別在於它的輸入不再是一維的向量了,而是一個三維的向量,為什么是三維的呢?這是因為圖片有三個通道R,G,B。那么輸出是什么呢?輸出可以認為是一維的向量,比如說那圖片分類舉例,分為K類的話,輸出就是K維的向量。

  

  卷積神經網絡的基本結構如下:

  如上圖所示,第一層為輸入,第二層為卷積層,卷積層就是用來做上一節所說的卷積操作那件事。第三層為非線性變換層,和普通的神經網絡的激活函數沒什么區別。第四層為池化層,它的作用是降低卷積層輸出的尺寸,因為卷積層輸出的數據相對來說消耗的計算資源比較大,我想把它降維,另外一方面我有很多的參數相對來說是比較冗余的,在圖像的鄰域來說。最后一層為輸出層,也叫全連接層,應該和普通的神經網路沒什么區別吧。

                                      

第一個部分:

  看上圖,比如說只有200*200的單通道圖像,隱藏層有40K個神經元的話,那么輸入層和隱藏層之間的權重參數有多少個呢?可以算出有200*200*40000個參數,這是多么大的參數啊,達到了billion的級別。

                             

  再看上邊這張圖,假設這40K個每個神經元只與圖片中一小部分區域進行鏈接,比如說10*10的區域進行連接,這10*10的區域可能是上圖中人物領帶的區域,與這部分區域進行卷積后所得到的結果比較大,那么這時候需要的參數是多少呢?答案是10*10*40K個參數,4個million個參數

               

  上述中所說每個神經元只關注圖像中的一部分區域,但是這些神經元(即特征算子)應具有一定的魯棒性,什么是魯棒性呢?比如拿識別圖像中毛發的神經元來說,它不能僅僅只能識別出上圖中人物的右半邊的頭發,也應該能識別出人物的左半邊頭發,胡子,眉毛等毛發。這個神經元可以拿了別的部位的很多參數,進而可以識別出毛發等特征。這叫做參數共享。同樣的拿100個特征算子(即神經元)來講,他們可能是人物的眼睛,鼻子,頭發,耳朵,肩部,領帶····的特征,那么我們拿這100個特征算子作為神經元的話,參數有多少個呢?100*10*10個參數。這10K個參數比以上兩個參數要少很多。這100個神經元也拿了別的部位的參數,來進行共享,替代了那40K個神經元。這是卷積層的特性吧(這里好像沒弄懂。。。)

                    

  針對上圖中的問題,答案應該是多少個呢?問的是如果卷積模板的尺寸為5*5大小的,那么第一個卷積層的參數應該有多少個?答案是75個,為什么呢?拿單通道的圖像來說,用5*5的卷積模板來說,單通道就有25個參數,那么三通道的圖像呢?顯然會有25*3個參數,這三個通道中每個卷積模板的參數肯定是不相同的,因為RGB三個通道的灰度就不相同,肯定不能用三個參數相同的卷積模板。所以第一個卷積層有75個參數。

    

  上述問題是輸入卷積層的尺寸為16*16*20,我們卷積模板的尺寸為3*3,有10個這樣的特征圖(或叫神經元),那么在這個卷積層里的參數有多少個?答案是3*3*20*10個。好像可以理解為下圖吧。

  

  

第二個部分:

                                   

  上圖來說,7*7的輸入,卷積模板的大小為3*3,卷積每次滑動的步長為1,那輸出的尺寸是多少呢?為5*5.

  那滑動步長為2呢/。輸出為3*3大小。如果步長為三,好像不能做這件事,不能滑動。那這里有個公式如下圖:

        

 

                             

  針對上圖輸入,輸出的體積為多少呢?答案為(32-5)/1 +1 =28, 所以輸出的大小為28*28*5,因為1個卷積模板輸出的大小為28*28,那這里5個這樣的神經元,所以要再乘上5。卷積模板的個數其實就是這一層的輸出通道的個數,也稱為厚度。動態計算圖可參如下:(引自博客:https://blog.csdn.net/techping/artic le/details/80991773)

       那么在上述28*28*5個神經元中,有多少個參數呢?5*5*3*5個參數,其中一個神經元是5*5*3,有5個這樣的神經元,所以還要乘上5.

 

 

 

  

 

 

  

               


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM