全連線層和卷積層如何相互轉化?

2021-10-22 08:56:50 字數 776 閱讀 7222

兩者相互轉換的可能性:

全連線層和卷積層之間唯一的不同就是卷積層中的神經元只與輸入資料中的乙個區域性區域連線,且引數共享。然而不管在卷積和fc層中,神經元都是計算點積,所以它們的函式形式是一樣的。因此,將此兩者相互轉化是可能的:

(1)對於任乙個卷積層,都存在乙個能實現和它一樣的前向傳播函式的全連線層。權重矩陣是乙個巨大矩陣,除了某些特定塊,其餘部分都是零。而在其中大部分塊中,元素都是相等的。

(2)任何全連線層都可以被轉化為卷積層,比如vgg16中第乙個全連線層是250884096的資料尺寸,將它轉化為512774096的資料尺寸,輸入資料的尺寸是77512,這個fc層可以被等效的看作乙個f=7,p=0,s=1,k=4096的卷積層。換句話說,就是將卷積核的尺寸設定為與輸入資料一樣大,這樣輸出就變為114096,本質上和全連線層的輸出是一樣的。

輸出資料第三通道深度是由卷積核的數目決定的

在兩種變換中,將fc轉化為conv在實際運用中更加有用,假設乙個卷積神經網路的輸入是2272273的影象,一系列的卷積層和下取樣層將影象資料變為尺寸為77512的資料,alexnet中處理方式是使用了兩個尺寸為4096的fc,最後一層為1000個神經元的fc層運用softmax輸出計算分類評分。我們可以將這3個fc層中的任意乙個轉為conv:

(1)第乙個連線區域是[77512]的全連線層,令其卷積核為774096,輸出資料尺寸為114096

(2)第二個fc層,令其卷積核的尺寸為114096,這樣輸出資料的尺寸為114096

(3)最後乙個fc也做類似的處理,令其卷積核尺寸為111000,則輸出資料尺寸為111000

全連線層如何轉化為全卷積層

全連線網路其實和卷積網路是等價的,全連線層就可以轉化維卷積層,只不過這個卷積層比較特殊,稱之為全卷積層,下面舉乙個簡單的例子來說明全連線層如何轉化為全卷積層。由圖一所示,我們假定要將乙個2 2 1的feature map通過全連線層輸出乙個4維向量,圖中的矩陣x便是這2 2 1的feature ma...

全連線層與卷積層(總結)

全連線鞥 卷積層全連線層是使用影象的全域性資訊,全連線層的權重是固定的,要求輸入的feature map的大小也有要求,所以網路開始輸入影象的大小要固定。全連線層的每乙個節點都有上一層的所有節點相連。卷積層取區域性特徵,不需要固定輸入的大小,因為它是對區域性區域進行視窗滑動。例如 feature m...

全連線層後面加bn層 卷積層和BN層融合

常規的神經網路連線結構如下 當網路訓練完成,在推導的時候為了加速運算,通常將卷積層和 batch norm 層融合,原理如下 begin y w cdot x b y gamma cdot left frac e x right beta gamma cdot left frac right bet...