深度学习模型压缩与加速
2019-08-16 14:04
351 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_24432657/article/details/99674902
为什么需要模型压缩和加速
- 模型的参数在一定程度上能表达其复杂性,但并不是所有参数都在模型中发挥作用,部分参数作用有限、表达冗余。
- 移动端部署深度学习模型
- 高额的存储空间、计算资源的大量消耗
目前主流的深度学习模型压缩方法
主要分为
- 更精细化的模型设计
- 模型裁剪
- 核的稀疏化
- 量化
- 低秩分解
前端压缩和后端压缩
对比项目 | 前端压缩 | 后端压缩 |
---|---|---|
含义 | 不改变网络原始结构 | 会大程度改变原始网络结构 |
主要方法 | 知识蒸馏、紧凑的模型结构设计、滤波器层面的剪枝 | 低秩近似、剪枝、参数量化、二值网络 |
实现难度 | 较简单 | 较难 |
是否可逆 | 可逆 | 不可逆 |
影响神经网络速度的4个因素
- FLOPs(网络执行了多少次multiply-add操作);
- MAC(内存访问成本)
- 并行度
- 计算平台(GPU、ARM)
输入输出的channel相同时,MAC最小
以1*1卷积层为例:
假设feature map的大小为H*W,输入通道数c1, 输出通道数c2
已知:
FLOPs=B=H∗W∗c1∗c2=>c1∗c2=B(H∗W)FLOPs=B=H*W*c1*c2 => c1*c2=\frac{B}{(H*W)}FLOPs=B=H∗W∗c1∗c2=>c1∗c2=(H∗W)B
MAC=H∗W∗(c1+c2)+c1∗c2MAC=H*W*(c1+c2)+c1*c2MAC=H∗W∗(c1+c2)+c1∗c2
由基本不等式c1+c2>=2∗c1∗c2c1+c2>=2*\sqrt{c1*c2}c1+c2>=2∗c1∗c2:
MAC>=H∗W∗2B(H∗W)+B(H∗W)MAC>=H*W*2\sqrt{\frac{B}{(H*W)}}+\frac{B}{(H*W)}MAC>=H∗W∗2(H∗W)B+(H∗W)B
显然,当c1=c2c1=c2c1=c2时,等号成立,MAC达到取值的下界
相关文章推荐
- 深度学习模型压缩与加速算法之SqueezeNet和ShuffleNet
- 深度学习模型压缩加速专题-1.层融合
- 深度学习模型压缩方法综述(二)
- CNN 模型压缩与加速算法综述
- 神经网络模型压缩与加速
- 综述论文:当前深度神经网络模型压缩和加速方法速览
- CNN 模型压缩与加速算法综述
- 综述:深度神经网络模型压缩和加速方法
- CNN 模型压缩与加速算法综述
- 深度学习模型压缩加速
- CNN 模型压缩与加速算法综述
- CNN 模型压缩与加速算法综述
- 「Deep Learning」综述:模型压缩与加速
- CNN 模型压缩与加速算法综述
- 深度学习——模型量化、压缩及加速( MobileNets )
- 深度学习模型压缩压缩方法
- 深度学习模型压缩方法综述(三)
- MobileNets—深度学习模型的加速
- 深度学习模型压缩相关论文阅读
- CNN 模型压缩与加速算法综述