network-slimming
network-slimming copied to clipboard
关于channel select的mask剪枝方式
您好,感谢分享,有点疑惑请教下。
据我所知有两种剪枝实现:
- 直接删掉不要的channel,重构模型,比如某层原始通道为64,裁剪一些后通道数可能变为32,那么保存的模型通道也降低了,这样模型占用空间大小变小,推理速度也会变快;
- 采用mask的方式,对裁剪的模型不删除,只是对应mask的位置设为0,这样计算的时候也相当于裁剪了,但是这样没有裁剪,保存模型的大小几乎一样,推理速度也几乎一样。
如果我理解有误,欢迎指出,如果没错,那么有两个问题烦请指教: 1.本项目残差连接的剪枝方案如您所说使用了mask,就是我上面说的第二点的方式吗? 2.如果是,mask剪枝的意义在哪呢?我们剪枝不就是为了减少体积和提速吗?
参考您的一个之前的回复: #https://github.com/Eric-mingjie/network-slimming/issues/30
mask模型的意义就在于没有实质的剪枝发生,模型的大小仍然保持一样。只是inference的时候mask模型等价于prune后的模型
1.是的 2. 意义在resnet 和densenet这种复杂的结构里,有时候可能某一层的channel都会被剪枝,但是网络仍然可以正常inference,这种情况采用mask的方式实现很简单。
感谢回复!了解了,所以如果我为了加速,不使用mask,比较简单的方案就是考虑不用残差结构吧