结构化剪枝,顾名思义,即“有结构”的进行剪枝,对于全连接层权重,一般是剪去整行或者整列,事实上相当于减去了一个神经元,而对于卷积层,结构化剪枝可以是减去某个卷积核(输出通道上剪枝),也可以是剪去某个输入通道。等等
非结构化剪枝,则是对单一权重进行修剪,并不要求整行整列的修剪,好处是更能保持原先的精确度,因为结构化剪枝很容易剪去那些比较重要的权重。当然,非结构化剪枝也有其不便之处,因为非结构化剪枝并没有改变权重张量的"形状",如果不采用特殊的压缩存储算法(如CSR、CSC),那么事实上模型的大小并没有发生改变,而是被那些分布无规则的0元素所占据。
在pytorch中,剪枝非常方便,我们可以通过语句
来实现剪枝,下面我用pytorch进行了一个简单的剪枝(非结构化)实验。
采用l1_unstructured剪枝:
结构化剪枝,修剪第0维,采用l2范数:
对多组参数进行剪枝:
全局剪枝:
到此这篇pytorch模型部署到ios(pytorch模型部署到安卓)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/iosbc/30787.html