查看: 1784|回复: 0

对分组卷积的理解

[复制链接]

665

主题

1234

帖子

6683

积分

xdtech

Rank: 5Rank: 5

积分
6683
发表于 2020-8-5 11:00:48 | 显示全部楼层 |阅读模式
本帖最后由 shaoheshaohe 于 2020-8-5 11:44 编辑

分组卷积,可以成倍减少计算量。但是,分组卷积,应用也并不广泛。原因可能是因为,分组减少计算量,是以伤害性能为代价的。

1. 分组后,同一层、不同组之间,filter是相同的吗?或者说,不同组之间,权重是共享的吗?

推测,应该如此。道理是:如果权值不共享,那么不同的组之间,完全没有关联。这时就相当于多个网络拼接。这种形态,应该不是理想的。权值共享,就会要求filter能对下一层的所有数据,都发生作用。这样,其实是要求filter具有更强的特征提取能力。因此,共享是合理的。

那么,实验结果,是否支持?是否真的如此,我们应该做实验。观察两种分组实现时,权值文件的大小。若两者的文件大小不同,则印证了我们的这种理解。否则,若相同,则说明我们的理解不对。
更新:实验结果证实,分组越多,权值文件越大;说明,不同组之间,权值不共享。

2. 按这个理解,分组不能太多。
假设输出通道为N,分组为G,则有效、不同的filter数量为N //G。因此,分组多了,filters数量就少了,特征提取能力必然下降。就图像压缩的网络来看,G=2尚合理;G再大,则不太合理。
更新:不共享,本条分析不再成立。但结论仍然是对的,分组不能太多。

3. 分组卷积,如何高效实现?
开源代码ugly实现,for循环。这显然,不够高效。

综合来看,分组有意义、但不是灵丹妙药,分组所产生的提升,通过后期的模型压缩应该也可以差不多实现。
这恐怕也是分组在用、但又不怎么广受community待见的原因吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表