1.理论篇
1.1.加速网络设计(探索最优网络结构,减少参数和计算量)
smallfiltersize
分组卷积(ShuffleNet\MobileNet)
ShuffleNet:groupconvolution
MobileNet:depthwiseseparableconvolution
分解卷积:k*k的卷积分解为k*1和1*k的卷积(如图像语义分割中的ERFNet)
SqueezeNet结构:SqueezeandExpand操作?
Bottleneck结构
C.ReLU结构
神经网络搜索(NeuralArchitectureSearch,NAS)
1.2.Winograd、模型剪裁与稀疏化
FFT/Winograd卷积算法(Op-level)
模型剪枝(许多实验证明:神经网络都是过参数化的):稀疏连接、张量分解、channel剪枝;结构化剪枝(通常能提升运算速度,非结构剪枝过于随机的话,效果不明显)
核的稀疏化
模型参数共享
低秩分解:使用矩阵对参数进行分解估计(属于模型压缩);SVD、tucker分解、块分解等分解方法;
1.3.量化加速
二值权值网络(乘法转加法):针对神经网络系数二值化
二值神经网络:不仅对权重二值化,同时也对网络中间每层的输入值进行二值化。(小规模数据集效果较好,大规模数据集上则效果很差)
同或网络(XNOR-net):针对二值化造成的精度损失,通过少量额外计算,引入近似因子
三值权重网络:前提假设:神经网络训练得到的权重服务均值为0的正态分布,二值化会造成误差
量化神经网络:剪裁数据的冗余精度
1.4.知识精炼(knowledgedistillation)
知识迁移:通过softmax学习教师输出的类别分布而降大型教师模型的知识精炼为较小的模型
1.5.数学库优化(MKL,DNN)
2.工程篇
2.1.PC端
优化工具与库:TensorRT(Nvidia)、TensorComprehension(Facebook)、Distiller(Intel)
2.1.1.NvidiaTensorRT
[深度学习]TensorRT为什么能让模型跑快快-小文的文章-知乎