就近年提出的四個輕量化模型進行學習和對比,四個模型分別是:mobilenet、squeezenet、shufflenet。
m表示輸入特徵的通道數,n表示輸出特徵的通道數。卷積核大小為k*k,輸出特徵圖大小為f*f.
1.普通卷積網路的計算量: k*k*m*n*f*f.
普通卷積網路的參數量:k*k*m*n
2.mobilenet
採用名為 depth-wise separable convolution 的卷積方式代替傳統卷積方式,以達到減少網路權值引數的目的。
通過採用 depth-wise convolution 的卷積方式,達到:1. 減少引數數量 2. 提公升運算速度。
第一步 depth-wise convolution, 即逐通道的卷積,乙個卷積核負責乙個通道,乙個通道只被乙個卷積核「濾波」;第二步,pointwise convolution,將 depth-wise convolution 得到的 feature map 再「串」起來,注意這個「串」是很重要的。
mobilenet計算量: k*k*m*f*f+m*n*f*f
mobilenet參數量:k*k*m+m*n
mobilenet與普通卷積操作的計算量比值:
3.分組卷積(group convolution)
分組大小為g
分組卷積的參數量=(k*k*m/g*n/g)*g
分組卷積的計算量= (k*k*m/g*f*f*n/g)*g
4.shufflenet
shuffle 具體來說是 channel shuffle,是將各部分的 feature map 的 channel 進行有序的打亂,構成新的 feature map,以解決 group convolution 帶來的「資訊流通不暢」問題。
shufflenet計算量:相當於把分組卷積裡每組卷積之間的channel進行shuffle,參數量與計算量類似分組卷積。
5.squeezenet
首先 squeeze 層,就是 1*1 卷積,其卷積核數要少於上一層 feature map 數,這個操作從 inception 系列開始就有了,並美其名曰壓縮,個人覺得「壓縮」更為妥當。
expand 層分別用 1*1 和 3*3 卷積,然後 concat,這個操作在 inception 系列裡面也有。
squeezenet計算量:先用1*1的卷積核(個數少於輸入通道)進行壓縮,然後進入兩個並行的1*1,3*3的卷積,結果再concat,引數和運算量正常計算。
分組卷積 計算量
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...
卷積網路計算
一 示例 輸入 227 227 3 這個影象被96個大小規格為11 11 3 同樣也是三通道了 的卷積核,進行特徵提取。1 針對乙個卷積核 乙個卷積核有多少個神經元?乙個感受野 11乘11乘3 即卷積核的大小,對應乙個神經元,即乙個卷積核包含的神經元的個數等於經過該卷積核後生成的特徵圖的大小 55乘...
卷積神經網路參數量和計算量記憶體計算
每一次卷積的參數量和特徵圖的大小無關,僅和卷積核的大小,偏置及bn有關。1.每個卷積層的參數量,1表示偏置 co x kw x kh x cin 1 2.全連線層的參數量 d1 1 x d2 3.bn層的參數量 因為bn層需要學習兩個引數 gamma 和 beta 所以參數量是2xco 1.一次卷積...