目录
对Conv2d()中groups参数的理解:(2023/04/09)
关于库函数的使用
对Conv2d()中groups参数的理解:(2023/04/09)
概括来讲,groups参数就是对通道(channel)进行分组,已到达减少计算量的目的;
这里的通道包括了输入通道(in_channels)和输出通道(out_channels)
以下面的代码为例:
Conv2d(in_channels=16, out_channels=32, kernel_size=1, bias=True, groups=4)
- groups=4表示通道数被分成4组
- 因为in_channels和out_channels都需要进行分组,则对应的数值需能被groups对应的数值整除,eg. 16和32能被4整除
- 当in_channels,out_channels,groups都确定时,每个group的channel个数也确定了,eg. 输入通道为4|16=4个通道一组,输出通道为4|32=8个通道一组
- 运算时,一组输入通道负责一组输出通道,如下图所示:
- 对比一下参数量的差距:
groups=1(默认条件下):16x32=512
groups=4(此例条件下):4x8x4=128
因此,计算参数量的公式可以概括为:(每组输入通道数)x(每组输出通道数)x(组数),即
当默认条件下(组数为1时),每组输入通道数=总的输入通道数,每组输出通道数=总的输出通道数,则参数量为:(总的输入通道数)x(总的输出通道数),即
当组数不为1时,每组输入通道数 =(总的输入通道数/组数),每组输出通道数 =(总的输出通道数/组数),则参数量为:(总的输入通道数/组数)x(总的输出通道数/组数)x (组数);
若有不妥之处,望不吝赐教:D