模型裁剪与压缩

如何压缩模型大小与优化加速?

  • 模型裁剪

严格意义上的剪枝,是将不重要的节点权重,激活值清0,而不是删除。其结果只是将模型稀疏化,所以,如果没有指定特定的稀疏矩阵加速库,那么剪枝的加速效果是不明显的。可以对权重,偏置,激活值进行剪枝,但是,偏置对一层的贡献较大,所以,不好对偏置做稀疏化。权重一般是接近0的很小的数,实际上压缩意义也不大(这个看需求,可以将不重要的权重置0,依情况而定),剪枝主要是对Relu类的激活值进行稀疏化,因为其输出具有大概率0值(也要注意,如果激活函数不是这种分布的输出,那么压缩也不明显)。

剪枝,需要剪枝准则,通常可以针对每个节点,卷积核,通道,块,调整其稀疏度,然后测试结果,看其对性能的影响,这样,就可以生成敏感性分析报告,从而确定每个节点,卷积核,通道,块的敏感度阈值。这里的稀疏度,用L0范数来定义。

  • 加速网络设计

mobile net v2 论文认为一个高效的CNN应该包含以下四点:
1.使用平衡的卷积,即输入通道数=输出通道数
2.意识到分组卷积带来的计算消耗
3.减少网络分支
4.减少element-wise操作(relu / add tensor)

shuffleNet:
shuffle net
(a)(b)是shuffleNet v1 的结构图 ©(d)是shuffleNet v2的结构图
©中包含了channel split操作,在这里已经进行通道分组,故相比shuffleNet v1 两个1*1卷积不再是分组卷积,满足G2。两个分支用concat操作进行合并,使得输入输出通道数相等,这满足了G1。合并后,紧接着使用了channel shuffle操作。
这样的block已经没有add和relu操作,同时depthwise卷积只在一个分支里。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值