這張圖的等號左邊部分就是全連線層做的事,w是全連線層的引數,我們也稱為權值,x是全連線層的輸入,也就是特徵。
從圖上可以看出特徵x是n*1的向量,這是怎麼得到的呢?這個特徵就是由全連線層前面多個卷積層和池化層處理後得到的,假設全連線層前面連線的是乙個卷積層,這個卷積層的輸出是100個特徵(也就是我們常說的feature map的channel為100),每個特徵的大小是44,那麼在將這些特徵輸入給全連線層之前會將這些特徵flat成**n1**的向量(這個時候n就是100* 4* 4=1600)。
解釋完x,再來看w,w是全連線層的引數,是個tn的矩陣,這個n和x的n對應,t表示類別數,比如你是7分類,那麼t就是7。我們所說的訓練乙個網路,對於全連線層而言就是尋找最合適的w矩陣。因此全連線層就是執行wx得到乙個t1的向量(也就是圖中的logits[t1]),這個向量裡面的每個數都沒有大小限制的,也就是從負無窮大到正無窮大。然後如果你是多分類問題,一般會在全連線層後面接乙個softmax層,這個softmax的輸入是t1的向量,輸出也是t1的向量(也就是圖中的prob[t1],這個向量的每個值表示這個樣本屬於每個類的概率),只不過輸出的向量的每個值的大小範圍為0到1。
現在你知道softmax的輸出向量是什麼意思了,就是概率,該樣本屬於各個類的概率!
來舉個例子吧。假設乙個5分類問題,然後乙個樣本i的標籤y=[0,0,0,1,0],也就是說樣本i的真實標籤是4,假設模型**的結果概率(softmax的輸出)p=[0.1,0.15,0.05,0.6,0.1],可以看出這個**是對的,那麼對應的損失l=-log(0.6),也就是當這個樣本經過這樣的網路引數產生這樣的**p時,它的損失是-log(0.6)。那麼假設p=[0.15,0.2,0.4,0.1,0.15],這個**結果就很離譜了,因為真實標籤是4,而你覺得這個樣本是4的概率只有0.1(遠不如其他概率高,如果是在測試階段,那麼模型就會**該樣本屬於類別3),對應損失l=-log(0.1)。那麼假設p=[0.05,0.15,0.4,0.3,0.1],這個**結果雖然也錯了,但是沒有前面那個那麼離譜,對應的損失l=-log(0.3)。我們知道log函式在輸入小於1的時候是個負數,而且log函式是遞增函式,所以**-log(0.6) < -log(0.3) < -log(0.1)**。簡單講就是你**錯比**對的損失要大,**錯得離譜比**錯得輕微的損失要大。
全連線層的作用 全連線層實現
將圖1 堆疊可以得到含有多個隱藏層的全連線層,如圖2所示。因為當前層的輸入要與前一層的輸出相匹配 所以,要保證當前層的神經元個數與前一層的輸出結點數相同。即,圖二中隱藏層1有256個神經元,隱藏層2有128個神經元,則隱藏層1中每個神經元的輸出節點數為12。下面,以圖2為例,用不同的方式實現全連線層...
全連線層的作用
全連線層到底什麼用?我來談三點。注1 有關卷積操作 實現 全連線層,有必要多囉嗦幾句。以vgg 16為例,對224x224x3的輸入,最後一層卷積可得輸出為7x7x512,如後層是一層含4096個神經元的fc,則可用卷積核為7x7x512x4096的全域性卷積來實現這一全連線運算過程,其中該卷積核引...
全連線層的理解
全連線層的每乙個結點都與上一層的所有結點相連,用來把前邊提取到的特徵綜合起來。由於其全相連的特性,一般全連線層的引數也是最多的。下圖中連線最密集的2個地方就是全連線層,這很明顯的可以看出全連線層的引數的確很多。在前向計算過程,也就是乙個線性的加權求和的過程,全連線層的每乙個輸出都可以看成前一層的每乙...