01. Deep Compression: 剪枝-训练量化和权值共享-哈夫曼编码

神经网络部署手机端的优势:

1. 手机端应用的广泛使用;2. 手机端运行能够更好的保证隐私; 3. 更少的网络带宽;4. 能够根据用户操作进行模型实时处理;

神经网络部署手机端的难点:

1. 模型体积过大; 2. 能量消耗过大,手机电量限制;

 

算法实施步骤:

1. 模型剪枝;2. 训练量化和权值共享; 3.  哈夫曼编码进行压缩

1. 模型剪枝

神经网络模型一般上采用压缩矩阵进行存储,我们将一些权值低于阈值的边删除掉。

矩阵行压缩存储

Matrix = { int col_ind[num], int row_ind[m+1],  float val[num] };

num 代表非零元素的个数, m代表行数,

col_ind[]数组存储所有非零元素的列索引,val[]数组存储所有非零元素, row_ind[]数组存储每行第一个非零元素在val数组中的次序,该数组最后一个数为num+1,这样一个稀疏矩阵仅用2*num + m + 1个数字就可以表示出来。

é¶å¡«å

还可以采用如上图所示的采用记录索引差的方式记录稀疏矩阵,原理是

Matrix = { float val[num + k], diff[num + k], row_ind[m+1] };

num代表非零个数,k 代表当差距超过编码上限时,采用零填充进来, m代表行数

val[]记录非零数字和填充零, diff[]存放索引的差(除了第一个数字以外),row_ind[]代表每行第一个非零数字在val中的下标号,最后一个数字仍然是num+1,这样总的数字和为 2*(num+k) + m + 1。

这样压缩的好处是,可以将原存储列索引的数组缩小,达到减小存储大小的目的(如果数组很大的话,效果就会很明显)。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值