一文搞定3D卷積

2021-10-10 20:16:58 字數 2637 閱讀 7919

在討論卷積核的時候,是不把channel維加進去的

核 = 乙個可以滑動的視窗

視窗內不同位置資料之間的權值共享

3d卷積,卷積核會在3個方向上運動,那麼卷積核的運動需要有三個自由度(一小塊立方體,在乙個大麵包塊內3個方向上滑動

2d卷積,卷積核只在2個方向上運動,因此只有兩個自由度(一小片紙,在一大張紙內2個方向上滑動

1d卷積,卷積核只在1個方向上運動,因此只有乙個自由度(一條滑窗,在一大長線上1個方向上滑動

乙個卷積核運算一次 得到乙個輸出值

以上討論了單個卷積核,接下來考慮多通道,乙個卷積核對應乙個通道

多通道同一位置,同時平行計算(矩陣運算

cxhxw

2d卷積hw方向滑動內積:

輸入:多通道2d map(藍色)

過程:拼接各kernel內積結果

輸出:單通道(綠色)

txhxw取某一通道為例:

3d卷積hwt方向滑動內積

輸入:多時間3d cube(藍色)

過程:拼接各kernel內積結果

輸出:多時間3d cube(綠色)

下圖是c3d**中配圖(b)2d卷積情況下,此文第一張圖 橘色塊到綠色片的轉化,上圖為過程演示

3d卷積情況下,不畫**釋了,就是多個維度相同的cube疊加到同乙個cube,2d時的紙片看作切片麵包

先說乙個 1x1 卷積,不屬於卷積分解

如果我們要做5x5卷積,先在之前加乙個1x1卷積 用於降維/通道(1x1卷積核個數《輸入通道數 即可實現低成本降維/通道)

原本一步操作分成2步操作,有分解那味了

// 假設

input feature maps:28×28 channel:256

1x1 convolutional layer:1x1 channel:16

5x5 convolutional layer:5x5 channel:32

// 僅一步32個5x5卷積

卷積核參數量 = 256x5x5x32 = 201800

// 兩步:5x5 卷積之前經過了 1x1 卷積

輸入的 size 為 28x28x256 經過 1x1 卷積後 size 為 28x28x16 (通道數256降低至16)

再5x5卷積

卷積核參數量 = 256x1x1x16 + 16x5x5x32 = 16896

同理,1x1卷積核個數》輸入通道數,即可公升維度

q:是否損失資訊?

a:理論模糊(跨通道資訊互動啦耦合解耦通道資訊啦不損失解析度啦),實驗結果說明並沒有損失很多資訊,最大好處減少參數量~

1個二維卷積核分解為2個一維卷積核點積

比起卷積,空間可分離卷積要執行的矩陣乘法運算也更少。假設我們現在在 m x m 卷積核、卷積步長=1 、填充=0 的 n x n 影象上做卷積。傳統的卷積需要進行 (n-2) x (n-2) x m x m 次乘法運算,而空間可分離卷積只需要進行 n x (n-2) x m + (n-2) x (n-2) x m = (2n-2) x (n-2) x m 次乘法運算

2d卷積的 多通道輸出,不add,而進行stack

上一步stack後的多通道輸出,通過乙個"1x1x通道數"的卷積核計算,乙個核輸出乙個通道

肉眼可見參數量的大大縮小

3x3x3x128 -> 3x3x3 + 1x1x3x128

另一篇解釋:

k_t x k x k --> 1x k x k (saptial, depthwise) + k_t x 1 x 1(temporal, pointwise)

channel-separated convolutional networks

下圖是csn **配圖:卷積(chanel合併),組卷積(組內channel合併),depthwise卷積(channel不合併)

分解channel

chw為輸入:

一文搞定聯合索引

聯合索引 上文講解了索引的底層結構,但是留了乙個尾巴,就是沒有去講復合索引。今天來繼續梳理復合索引,所謂復合索引即是由多個字段組成的一條索引。例如下表 create table test id int 4 notnull auto increment a varchar 10 not null b ...

一文搞定babel轉換

code轉換為ast 遍歷ast樹 進行修改 還原為code targets支援哪些瀏覽器 babel polyfill是將整個es2015 環境引入到全域性中,會造成全域性汙染require core js modules set 改變了原型,所以可以在例項上使用方法 通過配置usebuiltin...

一文搞定開發學習環境

剛開始學寫 首先要搭建開發環境。新手需要在網上查閱教程,很多時候會遇到各種問題,甚至導致自己的學習進度卡住,學習熱情也因此而減少,這實在是個讓人煩的事情。我們可以簡單分析原因,並慢慢減少此類問題的發生。搭建開發環境經常出錯的原因 1.開發環境不匹配 我們在學習或者實際的開發中,有多種開發平台,比如w...