對 n-1 層和 n 層而言,n-1 層的任意乙個節點,都和第 n 層所有節點有連線(即第n層節點都和第n-1層節點相連線)。即第n層的每個節點在進行計算的時候,啟用函式的輸入是n-1層所有節點的加權。像下面的中間層就是全連線方式
以上圖為例,我們仔細看上圖全連線層的結構,全連線層中的每一層是由許多神經元組成的(1x 4096)的平鋪結構,上圖不明顯,我們看下圖
當我第一次看到這個全連線層,我的第乙個問題是:
它是怎麼樣把3x3x5的輸出,轉換成1x4096的形式?
很簡單,可以理解為在中間做了乙個卷積
從上圖我們可以看出,我們用乙個 3x3x5 的 filter 去卷積啟用函式的輸出,得到的結果就是乙個fully connected layer 的乙個神經元的輸出,這個輸出就是乙個值
因為我們有4096個神經元
我們實際就是用乙個3x3x5x4096的卷積層去卷積啟用函式的輸出
以vgg-16再舉個例子:
再vgg-16全連線層中
對224x224x3的輸入,最後一層卷積可得輸出為7x7x512,如後層是一層含4096個神經元的fc,則可用卷積核為7x7x512x4096的全域性卷積來實現這一全連線運算過程。
卷積乙個非常重要的作用:就是把分布式特徵representation對映到樣本標記空間
就是它把特徵representation整合到一起,輸出為乙個值
這樣做,有乙個什麼好處?
就是大大減少特徵位置對分類帶來的影響
來,讓我來舉個簡單的例子
從上圖我們可以看出,貓在不同的位置,輸出的feature值相同,但是位置不同
對於電腦來說,特徵值相同,但是特徵值位置不同,那分類結果也可能不一樣
而這時全連線層filter的作用就相當於
喵在哪我不管,我只要喵,於是我讓filter去把這個喵找到
實際就是把 feature map 整合成乙個值
這個值大,哦,有喵,這個值小,那就可能沒喵,和這個喵在哪關係不大了有沒有
因為空間結構特性被忽略了,所以全連線層不適合用於在方位上找pattern的任務,比如segmentation
ok, 我們突然發現全連線層有兩層1x4096fully connected layer平鋪結構(有些網路結構有一層的,或者二層以上的)
好吧也不是突然發現,我只是想增加一點戲劇效果
但是大部分是兩層以上呢
這是為啥子呢
泰勒公式都知道吧:意思就是用多項式函式去擬合光滑函式
我們這裡的全連線層中一層的乙個神經元就可以看成乙個多項式
我們用許多神經元去擬合資料分布
但是只用一層fully connected layer 有時候沒法解決非線性問題
而如果有兩層或以上fully connected layer就可以很好地解決非線性問題了
說了這麼多,我猜你應該懂的
聽不懂?
那我換個方式給你講
我們都知道,全連線層之前的作用是提取特徵
全理解層的作用是分類
我們現在的任務是去區別一是不是貓
因為全連線層的作用主要就是實現分類(classification)
紅色的神經元表示這個特徵被找到了(啟用了)
同一層的其他神經元,要麼貓的特徵不明顯,要麼沒找到
當我們把這些找到的特徵組合在一起,發現最符合要求的是貓
ok,我認為這是貓了
那我們現在往前走一層
那們現在要對子特徵分類,也就是對貓頭,貓尾巴,貓腿等進行分類
比如我們現在要把貓頭找出來
貓頭有這麼些個特徵
於是我們下一步的任務
就是把貓頭的這麼些子特徵找到,比如眼睛啊,耳朵啊
道理和區別貓一樣
當我們找到這些特徵,神經元就被啟用了(上圖紅色圓圈)
這細節特徵又是怎麼來的?
就是從前面的卷積層,下取樣層來的
卷積神經網路 全連線層
全連線層 全連線層與卷積層 全連線層與gap 全域性平均池化層 1 2 3 全連線層一般會把卷積輸出的二維特徵圖轉化為一維的乙個向量,全連線層的每乙個節點都與上一層的每個節點連線,是把前一層的輸出特徵都綜合起來,所以該層的權值引數是最多的。作用 全連線網路的作用就是將最後一層卷積得到的feature...
pytorch神經網路之卷積層與全連線層引數的設定
當使用pytorch寫網路結構的時候,本人發現在卷積層與第乙個全連線層的全連線層的input features不知道該寫多少?一開始本人的做法是對著pytorch官網的公式推,但是總是算錯。後來發現,寫完卷積層後可以根據模擬神經網路的前向傳播得出這個。全連線層的input features是多少。首...
卷積神經網路全連線層轉換為卷積層獲得heatmap
全連線層換卷積層的出處大約是yahoo的一篇 multi view face detection using deep convolutional neural networks 使用 alexnet 為基礎 fine tuning 後的網路作為人臉分類器,在檢測時將網路中的全連線層改為卷積層,獲得...