一种高精度的神经网络量化压缩方法技术

技术编号:19935235 阅读:21 留言:0更新日期:2018-12-29 04:55
本发明专利技术公开的是一种高精度的神经网络量化压缩方法,该方法包括如下步骤:统计数据范围并对数据范围向内压缩以保证准确率不变的情况下每一层的数据范围向内压缩到最小;采用无符号的索引量化代替有符号的值量化以提升运算精度,避免造成量化空间浪费;采用索引代替真实值进行计算已进行索引和值之间的转换,本发明专利技术可以将量化宽度压缩到8比特及其以下的同时保存很高的计算精度,对最终的影响非常小,可以使得深度学习网络模型可以在嵌入式设备上得以部署运行。

【技术实现步骤摘要】
一种高精度的神经网络量化压缩方法
本专利技术涉及一种压缩方法,更具体一点说,涉及一种高精度的神经网络量化压缩方法,属于人工智能神经网络深度学习

技术介绍
近年来,在语音、图像和自然语言处理等领域,深度学习的发展逐渐成熟并得到了广泛的应用,尤其是受到动物视觉模型启发而专利技术的卷积神经网络(ConvolutionalNeuralNetworks,CNN)在计算机视觉领域得到最为广泛的使用。目前的卷神经网络模型在著名的ImageNet问题上已经取得了世界性的最好结果,其使得对于图像识别的领域研究更进一步,对于现在的深度学习网络模型已经能够理解和识别一般的自然图像,但是深度学习网络模型在落地过程中还存在一些限制,因为深度学习网络模型的层数深、参数多、计算量大,所以往广大的嵌入式终端设备上部署的时候,在存储空间、计算资源和内存消耗等多个方面都遇到瓶颈,要想让深度学习网络模型可以在嵌入式终端设备上落地,必须对浮点模型进行量化和压缩,就是用低位宽(小于8bit)的定点数来代替浮点运算。传统的量化压缩方案基本步骤如下:首先,选取一批测试样本进行前向运算以统计数据范围,然后再根据统计所得的数据范围决定对应的定点位置Qn,保证数据都不溢出,再然后采用公式xq=(int)x·2Q将浮点数据转成对应的定点数据,再用转换后的定点值进行卷积运算。其中Q格式表示为Qm.n,表示数据用m比特表示整数部分,n比特表示小数部分,共需要m+n+1位来表示这个数据,多余的一位用作符号位,假设小数点在n位的左边(从右向左数),从而确定小数的精度。例如Q15表示小数部分有15位,一个short型数据,占2个字节,最高位是符号位,后面15位是小数位,就假设小数点在第15位左边,表示的范围是:-1<X<0.9999695。传统的量化压缩方案存在如下几个问题:1)精度不够高,当位宽大于16比特的时候和浮点版本误差不大,效果尚可,但当位宽小于8比特时则和浮点版本相差误差已经较大,在效果上也下降明显;2)压缩不充分,因为没有充分考虑挖掘CNN网络的特点,比如CNN网络中存在大量的类似于卷积加激活(Conv+Relu)这样的基本网络结构,而Relu之后的数据特征肯定是大于零的,如果按照传统方法逐层量化,至少符号位是没有用的,这样就会造成位宽的浪费。
技术实现思路
本专利技术目的在于解决现有技术问题,提供可以将量化位宽压缩到8比特及其以下,同时也可以保存很高的计算精度,对最终效果影响非常小,深度学习网络模型可以在嵌入式设备上得以部署运行等技术特点的一种高精度的神经网络量化压缩方法。本专利技术一种高精度的神经网络量化压缩方法,该方法包括如下步骤:S1:统计数据范围并对数据范围向内压缩:选取部分样本数据作为测试集输入的神经网络,对测试集中的神经网络从输入层到隐藏层再到输出层前向计算一遍,将输出层获得的准确率作为基准分;统计每一层的数据范围,获得最大值fmax、最小值fmin和设定的量化位宽bw,根据每一层数据的最大值fmax、最小值fmin和量化位宽bw分别计算获得一个搜索步长,采用每一层获得的搜索步长对每一层数据范围进行向内收缩搜索以节省量化空间和范围,并对每一层数据搜索都在测试集上计算出一次准确率,选择测试集上计算获得的的最大准确率与基准分进行比较,当偏差大于设定的阈值则停止搜索;S2:网络量化压缩:根据每一层数据的最大值fmax、最小值fmin和量化位宽bw分别计算获得每一层数据的量化步长,并通过每一层数据的量化步长、最小值fmin以及最大值fmax、最小值fmin间的浮点值fdata计算获得浮点值fdata对应的无符号索引以实现采用无符号的索引量化;S3:基于索引前向计算:基于索引前向计算:计算出无符号索引和该无符号索引对应的浮点值fdata之间的系数偏差C1和直流偏差C2以快速、便捷完成无符号索引到浮点值fdata的转换,并采用所述无符号索引代替对应的浮点值fdata进行网络运算。作为一种改进,对数据范围向内压缩基于学习框架caffe,所述前向计算为采用浮点算法进行计算测试集中每一层的数据。作为一种改进,所述量化步长计算公式为fstep=(fmax-fmin)/(2^bw),所述计算量化索引公式为index=(fdata-fmin)/fstep。有益效果:本专利技术可以将量化宽度压缩到8比特及其以下的同时保存很高的计算精度,对最终的影响非常小;可以使得深度学习网络模型可以在嵌入式设备上得以部署运行;通过对数据范围向内压缩,获得节省量化空间和范围。附图说明图1是本专利技术流程示意图。图2是本专利技术实施例1中索引代替真实值进行计算的卷积示意图。具体实施方式以下结合说明书附图,对本专利技术作进一步说明,但本专利技术并不局限于以下实施例。实施例1本专利技术一种高精度的神经网络量化压缩方法,该方法包括如下步骤:S1:统计数据范围并对数据范围向内压缩:选取部分样本数据作为测试集输入的神经网络,先使用未量化压缩的浮点版本网络模型对测试集中的神经网络从输入层到隐藏层再到输出层前向计算一遍,从输出层获得准确率,这个准确率也就是图1中所示的基准分,如在Caffe平台上通过Accuracy输出层就可以统计得到这个测试集的准确率,以这个准确率作为后续自适应搜索过程中的基准;统计测试集中神经网络每一层的数据范围,获得神经网络每一层数据范围最大值fmax、最小值fmin和设定的量化位宽bw,根据神经网络每一层数据的最大值fmax、最小值fmin和量化位宽bw分别计算获得一个搜索步长(搜索步长fstep=(fmax-fmin)/(2^bw)),以这个搜索步长对对应的神经网络层数据范围进行压缩试探,即采用获得的搜索步长对对应的神经网络层的数据范围进行向内收缩搜索以节省量化空间和范围,其中每一次搜索都在测试集上计算一次最终的准确率,这个准确率也就是图1中所示的量化分,将获得的量化分与基准分进行比较(作为终止收缩探索判断依据),例如对第一层进行探索计算得到准确率a,对第二层进行探索计算得到准确率b,对第n层进行探索计算得到准确率n,选择最大的准确率最大的那层探索作为当前次的结果加以确认保存,将最大的准确率(量化分)和准确率(基准分)进行比较,若偏差大于设定的阈值则触发退出机制,停止搜索,以此保证了每一层数据范围向内压缩到了最小;S2:网络量化压缩(采用无符号的索引量化代替有符号的值量化):根据神经网络每一层数据的最大值fmax、最小值fmin和量化位宽bw分别计算获得神经网络每一层数据的量化步长,并通过神经网络每一层数据的量化步长、最小值fmin以及最大值fmax、最小值fmin间的浮点值fdata计算获得浮点值fdata对应的无符号索引以实现采用无符号的索引量化,采用无符号索引可以充分填满最大值fmax到最小值fmin的数据范围,可以显著提升运算精度,避免造成量化空间浪费,量化步长计算公式fstep=(fmax-fmin)/(2^bw),量化索引计算公式为index=(fdata-fmin)/fstep,其中对于网络量化压缩也可以对网络层进行优化组合成网络块,以网络块为单位进行量化,参考CNN网络中的一些层的运算关系和数据,提取网络层和网络层之间的关系,并对网络层和网络层进本文档来自技高网
...

【技术保护点】
1.一种高精度的神经网络量化压缩方法,其特征在于该方法包括如下步骤:S1:统计数据范围并对数据范围向内压缩:选取部分样本数据作为测试集输入的神经网络,对测试集中的神经网络从输入层到隐藏层再到输出层前向计算一遍,将输出层获得的准确率作为基准分;统计每一层的数据范围,获得最大值fmax、最小值fmin和设定的量化位宽bw,根据每一层数据的最大值fmax、最小值fmin和量化位宽bw分别计算获得一个搜索步长,采用每一层获得的搜索步长对每一层数据范围进行向内收缩搜索以节省量化空间和范围,并对每一层数据搜索都在测试集上计算出一次准确率,选择测试集上计算获得的最大准确率与基准分进行比较,当偏差大于设定的阈值则停止搜索;S2:网络量化压缩:根据每一层数据的最大值fmax、最小值fmin和量化位宽bw分别计算获得每一层数据的量化步长,并通过每一层数据的量化步长、最小值fmin以及最大值fmax、最小值fmin间的浮点值fdata计算获得浮点值fdata对应的无符号索引以实现采用无符号的索引量化;S3:基于索引前向计算:计算出无符号索引和该无符号索引对应的浮点值fdata之间的系数偏差C1和直流偏差C2以快速、便捷完成无符号索引到浮点值fdata的转换,并采用所述无符号索引代替对应的浮点值fdata进行网络运算。...

【技术特征摘要】
1.一种高精度的神经网络量化压缩方法,其特征在于该方法包括如下步骤:S1:统计数据范围并对数据范围向内压缩:选取部分样本数据作为测试集输入的神经网络,对测试集中的神经网络从输入层到隐藏层再到输出层前向计算一遍,将输出层获得的准确率作为基准分;统计每一层的数据范围,获得最大值fmax、最小值fmin和设定的量化位宽bw,根据每一层数据的最大值fmax、最小值fmin和量化位宽bw分别计算获得一个搜索步长,采用每一层获得的搜索步长对每一层数据范围进行向内收缩搜索以节省量化空间和范围,并对每一层数据搜索都在测试集上计算出一次准确率,选择测试集上计算获得的最大准确率与基准分进行比较,当偏差大于设定的阈值则停止搜索;S2:网络量化压缩:根据每一层数据的最大值fmax、最小值fmin和量化位宽bw分别计算获得每一层数据的量化步长,并通过每一层数据的...

【专利技术属性】
技术研发人员:葛益军王军朱旭东
申请(专利权)人:杭州雄迈集成电路技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1