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}}

猜你喜欢

转载自blog.csdn.net/dl_007/article/details/83661850