Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于channel select的mask剪枝方式 #69

Open
fire717 opened this issue Jul 20, 2021 · 2 comments
Open

关于channel select的mask剪枝方式 #69

fire717 opened this issue Jul 20, 2021 · 2 comments

Comments

@fire717
Copy link

fire717 commented Jul 20, 2021

您好,感谢分享,有点疑惑请教下。

据我所知有两种剪枝实现:

  1. 直接删掉不要的channel,重构模型,比如某层原始通道为64,裁剪一些后通道数可能变为32,那么保存的模型通道也降低了,这样模型占用空间大小变小,推理速度也会变快;
  2. 采用mask的方式,对裁剪的模型不删除,只是对应mask的位置设为0,这样计算的时候也相当于裁剪了,但是这样没有裁剪,保存模型的大小几乎一样,推理速度也几乎一样。

如果我理解有误,欢迎指出,如果没错,那么有两个问题烦请指教:
1.本项目残差连接的剪枝方案如您所说使用了mask,就是我上面说的第二点的方式吗?
2.如果是,mask剪枝的意义在哪呢?我们剪枝不就是为了减少体积和提速吗?

参考您的一个之前的回复: ##30

mask模型的意义就在于没有实质的剪枝发生,模型的大小仍然保持一样。只是inference的时候mask模型等价于prune后的模型

@Eric-mingjie
Copy link
Owner

1.是的
2. 意义在resnet 和densenet这种复杂的结构里,有时候可能某一层的channel都会被剪枝,但是网络仍然可以正常inference,这种情况采用mask的方式实现很简单。

@fire717
Copy link
Author

fire717 commented Jul 21, 2021

感谢回复!了解了,所以如果我为了加速,不使用mask,比较简单的方案就是考虑不用残差结构吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants