模型压缩和知识蒸馏剪枝量化

引言

模型压缩是工程部署一个重要的环节,这里对一些基础的模型压缩方法进行回顾,并附带代码传送门案例分析(欢迎大佬指点,谢谢)

不可逆的需要开发配套的运行库和硬件部署
参数优化
模型压缩
前端压缩
知识蒸馏
概率\特征分布\训练过程
经凑性模型设计
SqueezeNet\MobileNet\ShuffleNet
滤波器级别的模型设计
后端压缩
低秩分解
不加限制的剪枝
量化
auto_ML RL

目前的框架有:
Deep Compression、XNorNet、Distilling、PocketFlow腾讯、transform_graph(tensorflow)、Netural distiller、Kaddle slim等

2 模型压缩方法

2.1 distiller

拜师学艺,老师博学多才,收了很多徒弟,徒弟总能学习到知识,但是徒弟自身水平层次不齐最终出师的时候能力不相同,选择好的模型作为最终模型。非常绝妙的思想,但是大多数时候学生的提高是有限的,而且与老师的差距还是很大。所以,已经有优秀的老师了,直接在老师身上直接进行改造(神经网络的稀疏性决定的),然后在这个基础上再蒸馏。
在这里插入图片描述

主要涉及到两个方面:

知识蒸馏
对象
概率分布 KL散度
特征分布
结构设计

2.2 prunning

2.3 quantization

3 框架分析

3.1 框架分析

各种框架基本涵盖了常用的一些压缩方法,还有一些特殊网络压缩,近几年也有一些特殊网络GAN、RNN等的工作

框架架构
PocketFlow在这里插入图片描述在参数优化中有强化学习和AML,当然还在扩充
Netural network distiller在这里插入图片描述使用灵活,可扩展性比较强

这里主要使用distiller的网络架构distiller,官方文档非常详细了。

3.2 compression 案例分析

以cifar数据集为例

3.1 distiller

根据模型的结构可以选择在不同的位置进行蒸馏,然后对loss fucntion 建立不同的权值相加进行监督训练

Teacher Net
Student Net
backward
输入
encoder
decoder
feature
head
encoder
softmax KL_散度
head
MMD_loss
feature
gram过程蒸馏
decoder
loss
loss

1)首先是对于概率分布进行蒸馏,对于分类网络对于最后一层设置一个softmax层,对于Teacher net 和Student net 的概率分布的误差建立KL散度进行对比分析,作为监督误差进行分析

2)其提取的feature进行监督,采用mmd loss衡量两个特征之间的差异

参考

[1] 李宏毅的课程
[2] 模型压缩综述
[3] 知识蒸馏
[4] 量化
[5] 模型压缩整理

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值