當前位置:吉日网官网 - 傳統節日 - 【網絡層】什麽是卷積?

【網絡層】什麽是卷積?

參考資料:

CNN常用的四種卷積詳解

1,什麽是卷積

卷積是在特征圖上滑動的矩陣,它的參數是可以學習的。然後,計算矩陣和滑動區域中的像素的內積,然後求和。這個操作可以使卷積學習局部特征,每個滑動區域享有壹個權重。* * *加權運算使得卷積比全連接網絡節省了很多參數。

2.為什麽要引入卷積?

①卷積通過* * *共享權重,可以減少大量參數。例如,使用全連接層會導致參數過多。如果輸入圖片大小為1000*1000*3,即300萬像素,如果全連通層有1000個節點,則有30億個1000個參數。但不是用卷積核個數為100的5*5卷積,而是只需要5*5*3*100+100,即7600個參數。

②畫面中有重復的特征,卷積通過* * *享受權重可以更高效地學習這些特征。

(3)圖片固有的空間特征,如果用全連通層或RNN學習,會破壞圖片的空間特征,而卷積不能破壞圖片的空間特征。

3.卷積的計算過程

①對於有多個組的卷積組,每次使用壹個卷積組進行計算。

②每個卷積組中有多個輸入通道的卷積核,每個卷積核都是壹個帶有可學習參數的二維矩陣。

③用壹組卷積核在每個輸入通道上按指定的步長從左到右、從上到下同時滑動,然後計算二維矩陣的內積和滑動區域的值,再求和。然後對所有通道上獲得的值求和,並加上失調項。這樣,可以獲得二維輸出矩陣作為輸出的通道。

(4)逐個使用每個卷積組,按照(3)中的程序計算,得到三維輸出矩陣,通道數等於卷積組數。

4.卷積的優勢

(1)通過* * *享受權重來減少參數數量。

②可以學習局部特征,比較適合圖片。

③具有平移不變性,因為卷積是* *加權滑動的,所以即使特征不在同壹位置,也可以通過卷積核學習。

5.卷積的缺點

①學習到的特征受感受野影響較大,需要手動設置卷積核的大小。

②序列輸入的提取效果不夠好。

6.卷積的變體

①孔卷積(擴展卷積,展開卷積):是指在正常卷積核的點之間插入孔,在不增加計算量的情況下,增加卷積核的感受野。

優勢:

在不損失分辨率的情況下增加感受野對於檢測大物體更好。

b、調整膨脹率(卷積點之間的空洞數)獲得多尺度信息。

缺點:

a、對於探測小物體效果不好

②轉置卷積(反卷積,反卷積):轉置卷積是與卷積相反的運算。比如3*3卷積的結果是1個值,而轉置運算就是把1個值變成3*3。但是轉置卷積不能恢復卷積前的值,因為卷積是不可逆操作,只能恢復大小。

優勢:

a、可以將小尺寸特征變為大尺寸特征,實現類似於上采樣的效果,可應用於CNN可視化、FCN全卷積網絡、GAN等。

缺點:

您只能恢復尺寸,不能恢復值。

空間可分離卷積:壹個卷積核被分離成兩個更小的卷積核以保存參數。

深度可分卷積:在每個通道上使用卷積,將所有通道卷積結果相加,使用每組卷積重復上述過程的步驟分為兩步。

(1)只改變特征圖的大小,不改變特征圖的通道數。卷積用於每個通道,但所有通道的卷積結果不會相加,而是保持不變。例如,如果輸入256個聲道,卷積後的聲道數仍然等於輸入聲道數256。原始卷積輸出通道數等於組數。

(2)只改變特征圖的通道數,不改變特征圖的大小。在(1)的基礎上,輸出通道數*1*1*用於卷積。

本質上,深度可分卷積意味著卷積核組共享第壹級卷積核的參數。

7.卷積後特征尺寸的計算公式

假設n是輸入的特征大小,f是卷積核的大小,p是填充的大小,s是卷積核的步長。

8.卷積核大小1*1,3*3,5*5,7*7的作用,優缺點,以及它們的比較。

功能:

①1 * 1的功能可以用來轉換通道數,在某些情況下可以代替全連接的功能。

②3 * 3的作用是用小核代替大核,減少參數數量。

③5 * 5的作用是通過使用更大的卷積核,使卷積核有更大的感受野。它也可以用於圖像金字塔。

④7 * 7的作用是通過使用更大的卷積核,使卷積核有更大的感受野。它也可以用於圖像金字塔。

優勢:

① 1*1等卷積核可以實現深度可分卷積,進壹步減少參數。

② 5*5和7*7具有較大的感受野。

9.卷積核參數的計算

假設卷積核的大小為k,輸入通道的數量為in_n,輸出通道的數量為out_n,則卷積核的參數為:

out_n*in_n*k*k + out_n

示例:

k?=?三

in_n?=?四

out_n?=?五

conv2d?=?nn。Conv2d(in_n,?out_n,?k)

打印(conv2d.weight.shape)

打印(conv2d.bias.shape)

輸出:

火炬。大小([5,4,3,3])

火炬。大小([5])

所以總參數是:5*4*3*3+5。

10和pytorch中Conv2d函數的功能及參數詳解

參考資料:

PyTorch學習筆記(九)——nn。Conv2d及其填充策略

類torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,exploation = 1,groups=1,bias=True)

功能:對二維中由多個平面組成的輸入進行卷積。

輸入:維度[B,C_in,H,W]

輸出:尺寸[B,C_out,H_out,W_out]

參數的詳細說明

In_channels(int):輸入通道數。

Out_channels(int):輸出通道的數量。

Kernel _ size ([int,tuple (int,int)]):卷積核的大小。當輸入為3時,卷積核的大小為[3,3],當輸入為(3,4)時,卷積核的大小為[3,4],即第壹個值代表卷積核的高度,第二個值代表卷積核。

如果考慮到膨脹參數,卷積核的實際感受野大小為:(膨脹-1)*(kernel _ size-1)+kernel _ size,即當膨脹=2時,3*3卷積核的實際感受野為5*5。

Stride([int,tuple],可選)=1:卷積核的移動步長。

Padding([int,tuple(int,int)],可選)=0:填充長度;如果輸入為0,將不執行填充。當輸入為1時,每個輸入邊用1層0值填充,即上、下、左、右分別用1層0值填充。如果輸入為(1,2),則表示上下填充1層0值,左右填充2層0值。但是,不能輸入(1,2,3,4)個元素的元組。

膨脹(int)=1:卷積核元素之間的距離。當輸入為2時,卷積核元素之間的空洞數為1。

組=1:

偏差=真:

示例:

  • 上一篇:大學生舞蹈創新創業計劃
  • 下一篇:如何通過星座運勢看男女婚姻?
  • copyright 2024吉日网官网