詳述Deep Learning中的各種卷積(四)

2021-10-17 09:48:00 字數 3555 閱讀 9280

​ 首次在大規模影象資料集(imagenet)實現了深層卷積神經網路結構,引發深度學習熱潮的alexnet **(在 2012 年引入了分組卷積。實現分組卷積的主要原因是讓網路訓練可在 2 個記憶體有限(每個 gpu 有 1.5 gb 記憶體)的 gpu 上進行。下面的 alexnet 表明在大多數層中都有兩個分開的卷積路徑。這是在兩個 gpu 上執行模型並行化(當然如果可以使用更多 gpu,還能執行多 gpu 並行化)。

​ 這裡我們介紹一下分組卷積的工作方式。首先典型的2d卷積步驟如下圖所示。在該例子中通過應用128個大小為3∗3

∗33*3*3

3∗3∗

3的濾波器將輸入層(7∗7

∗37*7*3

7∗7∗

3)變換到輸出層(5∗5

∗128

5*5*128

5∗5∗12

8)。推廣而言,即通過dou

td_dout

​個大小為h∗w

∗din

h*w*d_

h∗w∗di

n​的濾波器將輸入層(hin

∗win

∗din

h_*w_*d_

hin​∗w

in​∗

din​

)變換到輸出層(hou

​ 而在分組卷積中,濾波器被分成不同的組。每個組負責具有一定深度的2d卷積。下圖展示了具有兩個濾波器分組的分組卷積。在每個濾波器組中,每個濾波器只有原2d卷積的一半數目。它們的深度是din

2\frac}

2din​​

個濾波器。第乙個濾波器分組(紅色)與輸入層的前一半(按深度分半,即[:,

:,0:

dout

2][:,:,0:\frac}]

[:,:,0

:2do

ut​​

])進行卷積操作。因此,每個濾波器分組都會建立dou

t2\frac}

2dout​

​個通道。整體而言,兩個分組會建立2∗d

out2

=dou

t2*\frac}=d_

2∗2dou

t​​=

dout

​個通道。然後我們將這些通道堆疊在一起得到有dou

td_dout

​個通道的輸出層。

​ 從上面的例子已經可以發現分組卷積和深度可分卷積之間的聯絡和差異。如果濾波器組的數量和輸入層通道數相同,則每個濾波器的深度都為1,這與深度可分卷積相同。另一方面,每個濾波器組都包含dou

tdin

\frac}}

din​do

ut​​

個濾波器。整體而言,輸出層的深度為dou

td_dout

​。這不同於深度可分卷積的情況–深度卷積的第乙個步驟並不會改變層的深度。深度可分卷積的深度通過1∗1

1*11∗

1卷積進行深度的擴充套件。

​ 混洗分組卷積由曠視(face++)團隊在shufflenet(首次提出,shufflenet是一種計算效率非常高的卷積結構,專門為計算能力非常有限的移動裝置(10-150mflop)而設計。

​ 混洗分組卷積背後的思想與分組卷積背後的理念(用於 mobilenet和resnext示例)和深度可分卷積(在xception 中使用)。總體而言,隨機分組卷積涉及分組卷積和通道混洗。

​ 在有關分組卷積的部分中,我們知道濾波器被分成不同的組。每個組負責具有一定深度的傳統 2d 卷積。總的計算量顯著減少。對於下圖中的示例,我們有 3 個濾波器組。第乙個濾波器組與輸入層中的紅色部分進行卷積操作。同樣,第二個和第三個濾波器組與輸入中的綠色和藍色部分進行卷積操作。每個濾波器組中的卷積核深度僅佔輸入層中總通道計數的1

3\frac

31​。在此示例中,在第乙個分組卷積 gconv1 之後,輸入圖層對映再通過中間層(下文針對該部分進行講解)。然後,通過第二個分組卷積 gconv2 對映到輸出圖層。

​ 分組卷積在計算上是有效的。但問題是,每個濾波器組只處理從輸入層中的固定部分傳遞的資訊。對於上圖中的示例,第乙個濾波器組(紅色)僅處理從輸入通道前 1/3 傳遞的資訊。藍色濾波器組(藍色)僅處理從輸入通道的最後 1/3 傳遞的資訊。因此,每個濾波器組都僅限於學習一些特定功能。這一特性阻止通道組之間的資訊流,並在訓練期間削弱了模型表現力。為了克服此問題,shufflenet 中引入了通道混洗(channel shuffle), 用來進行不同分組的特徵之間的資訊流動, 以提高效能.。

​ 通道混洗操作(channel shuffle operation)的想法是,我們希望混合來自不同篩選器組的資訊。在下圖中,我們使用 3 個濾波器組應用第乙個分組卷積 gconv1 後獲取特徵。在將結果輸入到第二個分組卷積之前,我們首先將每個組中的通道劃分為多個子組。我們混洗了這些子組。

​ 在進行這樣的洗牌之後,我們繼續一樣執行第二組卷積 gconv2。但現在,由於經過混洗後資訊已經混合,因此,通過允許通道之間的資訊交換,增強了模型的表現力。

​ shufflenet 也引入了組點分組卷積.通常對於分組卷積(如 mobilenet或 resnext,組操作在3∗3

3*33∗

3空間卷積上執行,但在1∗1

1*11∗

1卷積上不執行。

​ shufflenet**認為,1∗1

1*11∗

1卷積在計算上也是昂貴的。並建議在1∗1

1*11∗

1卷積上也應用分組卷積。顧名思義,逐點分組卷積執行1∗1

1*11∗

1卷積的組操作。該操作與分組卷積相同,只有乙個修改在1∗1

1*11∗

1篩選器上執行,而不是n∗n

n*nn∗

n濾波器 (n

>

1n>1

n>

1)。​ 在shufflenet的**中,作者利用了三種型別的卷積:(1) 混洗分組卷積;(2) 逐點分組卷積;和 (3) 深度可分卷積。這種架構設計在保持精度的同時顯著降低了計算成本。例如,shufflenet 和 alexnet 的分類錯誤在實際移動裝置上是可比的。但是,計算成本已大幅降低,從 alexnet 中的 720 mflop 減少到 shufflenet 中的 40~140 mflop。由於計算成本相對較低,模型效能好,shufflenet在移動裝置卷積神經網領域越來越受歡迎。

Deeplearning中mask的作用

搬運自 我認為,在實踐中,我們需要mask的最重要的原因之一是,我們要batchize多個句子作為乙個輸入,即輸入了一批句子的模型做乙個向前計算。像這樣的成像案例 兩個句子 i like cats.he does not like cats.然後我們通過詞彙表中的索引將每個單詞轉換為int 1i 2...

詳述ArrayList類中contains方法

原始碼 contains public boolean contains object o indexof public int indexof object o else return 1 string型別 arraylistnames new arraylist names.add aa sys...

深度學習Deep Learning

概述 deep feedforward network 深度前饋網路 又名feedforward neural network 前饋神經網路 或 multilayer perceptron 多層感知器 是深度學習模型的精髓 前饋網路的目的是逼近某種方程f 比如乙個分類器,y f x 將輸入x對映到類...