深度学习模型压缩

1.调整卷积模式

(1)引入1*1的卷积降维--inception V1

例如GoogLenet,假设输入是28✖️28✖️192的feature map,1*1的channel是64,3*3的channel是128,5*5的channel是32

在左图被3个 不同尺寸的卷积核卷积之后,参数量是1*1*192*64+3*3*192*64+5*5*192*32=265344
如右图,如果在3*3和5*5之前分别添加channel为96和 16的1*1的卷积核降维后,参数量是1*1*192*64+(1*1*192*96+3*3*96*128)+(1*1*192*16+5*5*16*32)=157184,是原来的大约0.6倍

深度学习模型压缩_第1张图片

此外,1*1的卷积还可以引入非线性,实现跨通道信息交互。

1*1卷积和fc不同,fc要求输入尺寸固定,cnn没有限制;

(2)小的卷积核代替大的卷积核---VGGnet的思想,inception V2

23*3conv的感知野相当于15*5
33*3的感知野相当于7*7
拆分的优点:1.引入了更多的非线性,使网络学习能力更好;2.减少了参数量

 

(3)用1*3和3*1的卷积

 

深度学习模型压缩_第2张图片

前提是矩阵的秩比较低,可以拆分

引入了 Factorization into small convolutions 的思想,将一个较大的二维卷积拆成两个较小的一维卷积,比如将7´7卷积拆成1´7卷积和7´1卷积,或者将3✖️3卷积拆成1✖️3卷积和3✖️1卷积,如上图所示。一方面节约了大量参数,加速运算并减轻了过拟合(比将7✖️7卷积拆成1✖️7卷积和7✖️1卷积,比拆成3个3✖️3卷积更节约参数),同时增加了一层非线性扩展模型表达能力。论文中指出,这种非对称的卷积结构拆分,其结果比对称地拆为几个相同的小卷积核效果更明显,可以处理更多、更丰富的空间特征,增加特征多样性。

 

 

2.学习蒸馏teacher-student网络

3.剪枝

4.量化

5.低比特

不改变模型和参数量,将float64的网络迁移到float32实现,理论上可以基本达到不掉精度,但是gpu的占用率和内存大大减少

甚至是int16,int8,int4,甚至是二值三值的网络。

 

 

 

 

一个v1-v4总结很好的博客:https://www.cnblogs.com/haiyang21/p/7243200.html

还没看,先放个链接的

蒸馏法:https://baijiahao.baidu.com/s?id=1598625949059208402&wfr=spider&for=pc

剪枝法:https://blog.csdn.net/sigai_csdn/article/details/80803956

模型压缩:https://blog.csdn.net/sigai_csdn/article/details/80803956(经典:含蒸馏、剪枝、量化等介绍)
 

 

你可能感兴趣的:(深度学习基础知识)