关于group convolution 和 depth-wise separable convolution的理解

整体可以参考这里
以下是我的个人理解的补充,方便日后回顾

  • normal convolution:普通卷积对于每一个输入channel都提供一套卷积参数,例如卷积核为 K ∗ K K * K KK,输出channel为 C o u t C_{out} Cout,则对于每一个输入channel,卷积参数为 K ∗ K ∗ C o u t K * K * C_{out} KKCout。因此如果输入channel为 C i n C_{in} Cin,则全部参数为 C i n ∗ K ∗ K ∗ C o u t C_{in}*K*K*C_{out} CinKKCout
  • group convolution:对于分组卷积,他将输入分组为 G G G组,每组共享卷积参数,因此他卷积的全部参数仅为 ( C i n / G ) ∗ K ∗ K ∗ C o u t (C_{in}/G)*K*K*C_{out} (Cin/G)KKCout
  • depth-wise separable convolution:第一层卷积:separable convolution,输入channel等于输出channel,相当于深度没有增加,但是每个channel的height和width会有依据kernel_size所改变。第二层卷积:point convolution, C o u t C_{out} Cout可以自定义,而kernel_size固定为1*1,从而增加卷积深度。依照这样的方法,可以得到和normal convolution相同的输出,参数量减少; 相比于group convolution, 卷积核也操作到了输入的每一层chanel。

你可能感兴趣的:(deep,learning,cnn,深度学习,神经网络)