SqueezeNet记录

模型压缩总结
SqueezeNet:深度压缩(Deep compression)
从LeNet5到DenseNet,反应卷积网络的一个发展方向:提高精度。
SqueezeNet的工作为以下几个方面:
1、提出了新的网络架构Fire Module,通过减少参数来进行模型压缩
2、使用其他方法对提出的SqeezeNet模型进行进一步压缩
3、对参数空间进行了探索,主要研究了压缩比和3∗3卷积比例的影响
参数数量更少的CNN架构有如下优势:
(1)更高效的分布式训练
服务器间的通信是分布式CNN训练的重要限制因素。对于分布式 数据并行 训练方式,通信需求和模型参数数量正相关。小模型对通信需求更低。
(2)减小下载模型到客户端的额外开销
比如在自动驾驶中,经常需要更新客户端模型。更小的模型可以减少通信的额外开销,使得更新更加容易。
(3)便于FPGA(现场可编程门阵列)和嵌入式硬件上的部署
目前很多方法都是只关注精度的,但是在同等精度的情况下,小的模型很多优点,比如:(1)训练等更快(2)在部署时更少的带宽要求,例如自动驾驶汽车(3)可以部署到FPGA等.正是由于有这些优点。
本文针对保持精度减少参数提出了三个策略:
(1)用1x1filters来代替3x3filters,参数减少1/9
(2)减少3x3filters的输入通道数,这一部分使用squeeze layers来实现
(3)推迟下采样,保证网络有大的activation maps。
(1)(2)是为了减少参数的,(3)是为了在限制的参数数量条件下提高精度的。
queezeNet以卷积层(conv1)开始,接着使用8个Fire modules (fire2-9),最后以卷积层(conv10)结束。每个fire module中的filter数量逐渐增加,并且在conv1, fire4, fire8, 和 conv10这几层之后使用步长为2的max-pooling,即将池化层放在相对靠后的位置,这使用了以上的策略(3)。
SqueezeNet的模型压缩使用了3个策略:
(1)将3x3卷积替换成1x1卷积:通过这一步,一个卷积操作的参数数量减少了9倍;
(2)减少 3x3卷积的通道数:一个3x3卷积的计算量是 3x3xMxN(其中 M、N分别是输入Feature Map和输出Feature Map的通道数),作者任务这样一个计算量过于庞大,因此希望将M、N减小以减少参数数量;
(3)将降采样后置:作者认为较大的Feature Map含有更多的信息,因此将降采样往分类层移动。注意这样的操作虽然会提升网络的精度,但是它有一个非常严重的缺点:即会增加网络的计算量。
如果padding设置为SAME,则说明输入图片大小和输出图片大小是一致的,如果是VALID则图片经过滤波器后可能会变小。

常用的模型压缩技术有:
(1)奇异值分解(singular value decomposition (SVD))
(2)网络剪枝(Network Pruning):使用网络剪枝和稀疏矩阵
(3)深度压缩(Deep compression):使用网络剪枝,数字化和huffman编码
(4)硬件加速器(hardware accelerator)
padding = “SAME”输入和输出大小关系如下:

输出大小等于输入大小除以步长向上取整,s是步长大小;
padding = “VALID”输入和输出大小关系如下:

输出大小等于输入大小减去滤波器大小加上1,最后再除以步长(f为滤波器的大小,s是步长大小)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值