1 1的卷積核和全連線層有什麼異同?

時間 2021-05-11 15:09:31

1樓:xixi

全連線要求輸入是向量,因此要把輸入影象拉直為向量,無法只對channel緯度做變換;1*1的卷積可以不用改變輸入影象的形狀直接對最後channel緯度變換,用來降維或整合不同channel的資訊。

2樓:科研狗也有春天

簡單回答一下:

1、數學本質上一樣,都是特徵圖中的元素乘以權重再求和。全連線是把特徵圖拆開組成乙個一維向量,再乘以乙個權重向量,這兩個向量中的元素一一對應所以輸出結果是乙個值。而1*1卷積,我們知道卷積核實質上就是權重,1*1的卷積核那就是表明只由乙個權重組成,如果特徵圖尺寸也是1*1的話,那輸出就是乙個值,此時與全連線完全一樣。

但是如果特徵圖尺寸不是1*1,而是w*h的話,那麼1*1的卷積輸出就不是乙個值而是w*h的乙個矩陣。以上是數學本質上的異同。

2、功能上似乎1*1卷積可以減少或增加特徵圖的層數,這個是全連線做不到的。

3、用1*1卷積代替全連線應該是基於輸入尺寸的考慮,全連線的輸入是特徵圖所有元素乘以權重再求和,但是這個權重向量是在設計網路的時候就需要固定的,所以全連線沒辦法適應輸入尺寸的變化只能固定。但是1*1卷積的輸出與輸入尺寸是一樣大的,輸出尺寸可以隨著輸入尺寸的變化而變化,所以1*1卷積無需固定輸出尺寸。通俗來說就是卷積是權值共享,所以所學引數只跟卷積核有關,跟特徵圖無關。

至於效果嘛,如果是分類基本上沒什麼差別,如果是做分割,那還是卷積比較合適,具體參看FCN這篇文章吧。

3樓:海涯

import torch

import torch.nn as nna = torch.randn(2, 3, 5) # Batch * Length * Feature_Dim

l1 = nn.Linear(5, 5)

c1 = nn.Conv1d(5, 5, 1)l1.weight = nn.Parameter(c1.weight[:, :, 0])

l1.bias = nn.Parameter(c1.bias)print(l1(a))

print(c1(a.transpose(1, 2)).transpose(1, 2))

跑一便程式即可知道兩者是無差的

4樓:Joshua Li

當輸入的feature map的尺寸是1×1時,兩者從數學原理上來看,沒有區別。假設輸入為c×1×1,輸出為n×1×1,那麼全連線可以認為是乙個c維的向量和n×c大小的矩陣相乘。卷積層可以理解為n個c×1×1的卷積核,分別與輸入做內積,跟計算矩陣向量乘沒有區別。

當輸入為c×w×h時,卷積層和全連線層的輸出尺寸就不一樣了,1×1的卷積輸出為n×w×h,全連線的輸出是n×1×1。此時,全連線可以等價於n個c×w×h卷積核的卷積層。

全連線層和卷積層最大的區別就是輸入尺寸是否可變,全連線層的輸入尺寸是固定的,卷積層的輸入尺寸是任意的。

5樓:lens

都不一樣。對乙個影象,卷積是用同乙個卷積核去挨個乘,全連線是用和影象同樣數量的數分別去乘,前者的引數數量是卷積核,後者是影象,卷積是權值共享,減少計算量的同時也能反應影象特徵。

卷積神經網路中卷積核的翻轉 全連線層的處理和反向傳播的詳細過程?

軒轅十四 1.前向傳播和反向傳播都不用。按計算圖走就是了。所謂的翻轉180 應該是指matlab程式設計需要。2.關於你說送入全連線層時要不要展成列向量?要根據你的資料結構的決定,如果你的全連線層的輸入資料結構是向量,那就要展成向量 3.第三個問題,我理解你的意思是梯度流動沒搞明白。所以反向傳播過程...

embedding層和全連線層的區別是什麼?

空字元 如果單單只是從計算的角度來說的話,兩者沒有任何區別,都是兩個矩陣相乘。只是說從向量表示的角度來說,embedding層的權重有自己獨特的意義,而全連線層沒有。這也類似於注意力機制,在不同的背景下同乙個東西有著不同的解釋 鐵心核桃 前面 Hover 已經說的很清楚了。我也跟著再多說幾句。Emb...

lstm層和全連線層的本質區別是什麼?

黑火藥 個人淺見,本質的區別在於不同的網路結構適合處理不同結構的資料,網路結構與資料結構越相似,優勢越大。lstm更好的模擬了序列相關的資料生成的過程,也就是今天的資料與昨天有很大關係,昨天的資料與前天又有很大關係,資料間是按順序影響的。因此lstm在處理帶有序列相關性質的資料時,比全連線的網路更有...