卷積引數量計算(標準卷積,分組卷積,深度可分類)

2021-10-22 23:58:33 字數 2414 閱讀 2326

這邊其實算寫給我自己複習用的, 就沒有用部落格的口吻了 簡單為主

預備知識

flops:s小寫,指浮點運算數,理解為計算量。可以用來衡量演算法/模型的複雜度。(模型) 在**中常用gflops(1 gflops = 109

10^9

109 flops)相當於十億次

為了理解下面的計算, 簡單複習一下卷積運算的過程, 就是將kernel在原input fmap上或者原圖上進行滑動(左向右), 並且進行element wise multiplication 點乘, 然後最終將點乘後的元素進行相加 add, 也就是mac, 這在計算量中算是兩次運算

參考輕量級神經網路「巡禮」(一)—— shufflenetv2

輕量化網路shufflenet mobilenet v1/v2 解析

@普通卷積計算

計算量or運算量

標準卷積flops = (2∗

ci∗k

2−1)

∗h∗w

∗c

0(2 * c_i * k^2 -1) * h * w * c_0

(2∗ci​

∗k2−

1)∗h

∗w∗c

0​以上主要分為兩步

第一步括號內的是計算出output fmap中乙個pixel的計算量

外面的 hwc0 則是擴充套件到整個output feature map的步驟, 所以就是相乘

參數量

簡單來說就是需要多少個可以學習的引數, 這裡理解的思路為因為與input fmap進行卷積, 卷積核上的每一點weight都要進行學習, 所以需要學習的量為k平方, 注意這只是單個通道的卷積核需要學習的參數量, 還要依照進來的多少個通道的input, 卷積核在擴充套件成一樣的通道數, 接著input的每個通道都與卷積核進行卷積之後, 在依照輸出的通道數,就會產生幾組的卷積核組, 於是進行相乘

思路一樣是先計算input進來的參數量, 在依據輸出的通道數進行相乘

假設輸入為( 1, 3, 8, 8), 經過conv(2, 1, 1)卷積

則該op的參數量為 (12

∗3)∗

2=

6(1^2 * 3) * 2 = 6

(12∗3)

∗2=6

@group 卷積

卷積計算的部分先看參數量, 在來看計算量

參數量也就是將輸入的fmap 依照自己設定的組數g, 來分組別進行計算

k ∗k

∗c1g

∗c2g

∗g

k * k * \frac * \frac*g

k∗k∗gc

1​∗g

c2​∗

g 先看前面的k∗k

∗c1g

∗c2g

k * k * \frac * \frac

k∗k∗gc

1​∗g

c2​ 其實與一般的標準卷積計算的方式差不多, 只不過這裡先計算分組後單個組別的計算量, 所以可以看到是乘上 c1g

∗c2g

\frac * \frac

gc1​∗g

c2​最終因為是g個組別, 所以還要乘上g組才等於完整的計算量

舉個例子

ex.

input (1, 64, 8, 8) 這裡為了好分組, 輸入channel為64

conv(2, 1, 1) 表示輸出channel為2, 卷積為1x1

g = 2表示分成2組

所以計算量為 1^2 x 64/2 x 2/2 x 2 = 64

計算量or運算量

思路一樣跟著走, 先計算出 要產出乙個output pixel的計算量要多少在擴充套件到整個output map

[ (2

∗k2∗

ci/g

∗+1)

∗h2∗

w2∗c

o/g]

∗g

[(2 * k^2 * ci/g * +1) * h_2 * w_2 * c_o/g] * g

[(2∗k2

∗ci/

g∗+1

)∗h2

​∗w2

​∗co

​/g]

∗g這裡唯一和標準卷積不一樣的地方只在於通道的地方被g給分組了

@深度可分類卷積(depthwise separable conv)

深度可分類卷積主要是由

參數量深度可卷積是標準卷積的/n

1/n1/

n pointwise conv其實就是講g組卷積用conv1x1拼接起來, 所以pointwise參數量是 標準卷積的 1/d

k2

1/d_k^2

1/dk2​

1 1卷積核作用,卷積引數計算,卷積計算量計算

新增截圖了,增加瓶頸層的解釋 聽說是某面試題,一般的卷積運算可以壓縮輸入的長度和寬度,1 1卷積核可以整合各個資料通道資訊縮小資料尺寸的深度,同時減小計算量 卷積核引數計算 卷積核的長度 卷積核的寬度 卷積核的個數 卷積計算量計算 輸出資料大小 卷積核的尺寸 輸入通道數 比如 懶得繪圖 求輸入28 ...

分組卷積 計算量

import torch import torch.nn as nn 分組卷積 n,c in,h,w,c out 10,4,16,16,4 x torch.randn n,c in,h,w conv nn.conv2d c in,c out,3,1,padding 0,bias false conv...

感受野計算 卷積 池化輸出尺寸計算 卷積引數量計算

目錄 1 卷積後輸出尺寸的大小 1.1卷積引數量計算 2 池化後輸出尺寸大小 3 感受野的計算 鑑於網上資源比較混亂,而且筆試考的多,故作此總結。希望能幫到大家。輸入 l l d 卷積核 大小size f f d,滑動步長stride s,0填充 0 padding p 輸出 l l d 則輸出尺寸...