HankYe / PAGCP

PAGCP for the compression of YOLOv5
GNU General Public License v3.0
111 stars 11 forks source link

如何重複剪枝 #12

Open YuuuHsiang opened 1 year ago

YuuuHsiang commented 1 year ago

剪枝過一次的模型,想再剪枝一次壓縮參數量,目前是將剪枝過後的模型先載入,再載入權重,但會遇到以下問題,想請問這作法是否是對的?

RuntimeError: Given groups=1, expected weight to be at least 1 at dimension 0, but got weight of size [0, 2, 1, 1] instead

HankYe commented 1 year ago

剪枝過一次的模型,想再剪枝一次壓縮參數量,目前是將剪枝過後的模型先載入,再載入權重,但會遇到以下問題,想請問這作法是否是對的?

RuntimeError: Given groups=1, expected weight to be at least 1 at dimension 0, but got weight of size [0, 2, 1, 1] instead

您好,感谢您对工作的关注。 首先关于迭代剪枝的方式,您可以直接载入模型和权重,所以您的做法应该是没问题的。从报错信息来看,您的压缩模型中应该存在某些层的通道被剪完了,可以调试一下看看具体报错在哪一层的剪枝上,然后适当调整一下压缩比例或者加一些压缩约束来保证这个层不会被完全剪掉。 希望上述回复能解答您的相关疑问。若仍有疑惑,欢迎进一步交流。

YuuuHsiang commented 1 year ago

感謝您的回覆, 我有嘗試過避開被完全剪枝掉的層但尚未成功,請問有什麼方法或修改哪部分能像你說的約束不完全剪掉層數,或是避開被完全裁剪層?

HankYe commented 1 year ago

感謝您的回覆, 我有嘗試過避開被完全剪枝掉的層但尚未成功,請問有什麼方法或修改哪部分能像你說的約束不完全剪掉層數,或是避開被完全裁剪層?

一种简单的方式是在执行剪枝操作前判断是否会全部剪完,如果会剪完,则保留允许的最低通道数。这样可以保证每一层不会被完全剪枝掉。同时也还有其他方式,比如降低阈值等等。可以视具体情况选择。