pytorch中torch.nn.Conv2d中的groups参数

先来看官方的说明:

pytorch中torch.nn.Conv2d中的groups参数

  • groups = 1 时就是标准的卷积运算

pytorch中torch.nn.Conv2d中的groups参数

  • groups=2 时就是分组为2的组卷积

pytorch中torch.nn.Conv2d中的groups参数

分组后分两半进行卷积运算,6个卷积核分两组,最后将结果cat在一起

  • groups = input_channels的情况是这样的

当输入通道数等于输出通道数时,就是深度可分离卷积的depthwise conv,可查看mobilenet的论文理解该卷积

令我迷惑的时输出通道数不等于输入通道数时(注意输入输出通道数选取均需要能被groups整除,这意味这输出通道数一定是输入通道数的倍数了)

为此做了一个小实验:

pytorch中torch.nn.Conv2d中的groups参数

pytorch中torch.nn.Conv2d中的groups参数

pytorch中torch.nn.Conv2d中的groups参数

根据结果可以看出来,实际上4个filter分了output_channels/input_channels组,例子中是两组

输入特征图的每一个channel对应一组,进行通道对通道的卷积运算

pytorch中torch.nn.Conv2d中的groups参数