1.卷积核的尺寸,数量,大小
输入X的格式:[样本数,输入图像通道,图像高,图像宽]
输入 X:[B, In_channel, H_in, W_in]
权重W:[In_channel, Out_channel, kernel_H, kernel_W]
输出 y :[B, Out_channel,H_out, W_out ]
如下图所示:
其中Input:Batch=1,In_channel=3,H=8,W=8
Kernels:…In_channel=3,Out_channel=5,Kernel_size=3X3
Feature Maps: Batch=1,Out_channel=5,H=6,W=6
因此:
卷积核的输入通道数(In_channe)由输入矩阵的通道数所决定。
输出矩阵的通道数(Out_channe)由卷积核输出通道数所决定。
卷积核心数:输入通道数x输出通道数(几组卷积核)x卷积核大小
故上图参数量为:3X5X3X3
输出特征图的计算方式:
CSDN-jk英菲尼迪:卷积核的相关整理
2.组卷积
pytorch的conv2d函数中groups参数理解:
Conv2d(in_channel, out_channel, kernel_size, stride, pad, groups=1)
这其中group的参数会影响卷积的计算量
例如:
输入X=[B=1, C=6, H=1, W=1],conv = Conv2d(6, 4, 1,1,0, groups=1)
那就需要4个1x1x6的卷积核,每个卷积核对输入X进行卷积,得到的输出的通道数为1的数据,其具体过程就是一个1x1x6的卷积核在输入X[1, 6, 1, 1]的每个通道上做卷积,然后把每个通道上的值进行叠加,就变成了单通道,于是4个卷积核就需要(1x1x6)x4个参数
输入X=[B=1, C=6, H=1, W=1],conv = Conv2d(6, 4, 1,1,0, groups=2),即将输入分为两组,每组输入x=[B,3,1,1],对应的卷积核大小为1x1x3,有4/groups=2个,即每组输入得到的输出为[B,2,1,1],然后将两组输出叠加起来,得到最终输出[B,4,1,1],于是参数量为:(1x1x3)x2x2个参数。
接下来用图片说明:
3.Depth_wise卷积
对于 Depth_wise Conv:我们将其认为由 Separable Conv 以及 Point-wise Conv两部分组成。
下面由图来进行说明:
普通卷积:
Depth Wise 卷积:
首先是Separable Conv
其次是 Point-wise Conv