您的位置:首页 > 其它

深度学习模型压缩与加速

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达到取值的下界

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: