1. 程式人生 > >CNN中計算問題

CNN中計算問題

卷積:

輸入3通道,2個卷積核:

對於每個卷積核,先在輸入3個通道分別作卷積,再將3個通道結果加起來得到卷積輸出。所以對於某個卷積層,無論輸入影象有多少個通道,輸出影象通道數總是等於卷積核數量!
對多通道影象做1x1卷積,其實就是將輸入影象於每個通道乘以卷積係數後加在一起,即相當於把原影象中本來各個獨立的通道“聯通”在了一起。

1.卷積&池化後feature map大小

輸入尺寸:I\ast I,輸出尺寸: O\ast O,卷積核大小:K \ast K,卷積核個數(即輸出通道數):N,移動步長:S,填充數P 

輸出的大小如下:

{\color{Red} O=\frac{I-K+2P}{S}+1}

2.引數量計算

Conv Layer引數數量:

總引數數量為所有weights和bias的總和。maxpooling層只有超引數

W_{c}=卷積層的weights數量,B_{c}=卷積層的biases數量,P_{c}=所有引數的數量,K=核尺寸,N=核數量,C =輸入通道數

卷積層中,核的深度等於輸入影象的通道數。於是每個核有K*K個引數。並且有N個核.由此得出以下的公式:

{\color{Red} {\color{Red} }W_{}c=K*K*C*N}

B_{}c=N

P_{}c=W_{}c+B_{}c

3.感受野計算

 

ä½ ç¥éå¦ä½è®¡ç®CNNæåéåï¼è¿éæä¸ä»½è¯¦ç»æå

l_{k-1}是第k-1層感受野的大小,f_{k}是當前層卷積核大小,s_{i}是第i層步長。第k層感受野:

{\color{Red} l_{k}=l_{k-1}+((f_{k}-1)*\prod_{i=1}^{k-1} s_{i})}

https://zhuanlan.zhihu.com/p/35708466

4.卷積操作的計算量

標準卷積核大小為D_{K},輸入通道M,輸出通道N,輸出feature map大小為D_{F}

標準卷積計算量:{\color{Red} D_{K}*D_{K}*N*M*D_{F}*D_{F}}

深度可分離卷積減小的計算量:

{\color{Red} \frac{{\color{Blue} {\color{Magenta} {\color{Blue} }D_{K}*D_{K}*M*D_{F}*D_{F}+M*N*D_{F}*D_{F}}}}{D_{K}*D_{K}*N*M*D_{F}*D_{F}}}=\frac{1}{N}+\frac{1}{D_{K}^{2}}