模型剪枝
《Learning Efficient Convolutional Networks through Network Slimming》
BatchNorm的本质
- 将越来越偏离的分布重新规范化(减去均值,除以标准差)到均值为0,方差为1的标准正态分布,这样可以使激活函数在数值层面更敏感,训练更快。经过规范化之后,数值分布被强制限制在了非线性函数(如sigmoid)的线性区域当中。
- 为了保证非线性,还要对变换后的结果做变换,即加入β,γ两个可训练的参数,对非线性做出一些补偿。
x为规范化以后的输入
y=γx+β
- 将γ作为衡量特征图重要性的指标。但是有的数值之间较为相近,难以选择出重要的特征图。
L1和L2正则化
- 防止模型过拟合(该作用和模型剪枝无关)
- 为了使γ有特征选择作用,引入L1正则化使γ得值稀疏化。
流程
训练——剪枝——再训练
关于剪枝
- 在设计模型的时候就注意网络的性能,比训练结束之后进行剪枝效果更好。
- 剪枝效果并不一定有效。
MobileNet
v1
- 传统卷积一般使用长宽为1以上的卷积核,对全部特征图做卷积后叠加,输出需要几个特征图就用几个卷积核
- v1中首先将每个输入的每个特征图用不同卷积核做Depthwise卷积,提取特征;然后用1*1卷积改变特征图输出个数,做Pointwise卷积
- 相当于传统卷积分两步走,效果一样但是参数少很多
- 使用RELU6,把最大值限制在6,适合移动端低精度
- 使用stride降采样,参数集中在1*1卷积核中
- 按比例减少各层通道数。