技术领域
本发明涉及的是一种神经网络应用领域的技术,具体是一种基于神经网络权重数据分布特点的量化方法,可用于各种冗余性高的神经网络与便携设备相组合的场景如智能手机等。
背景技术
现有的神经网络通过加深网络、扩大网络尺寸以追求更高的边缘精度,但同时网络参数变得越来越大,计算量也快速增大,这样网络的冗余性也非常大,提高精度后随之而来付出的代价就是进行一次网络的前向传播计算量巨大导致计算时间过长。现有的压缩技术之一为对网络参数进行均匀量化,其优点在于计算复杂度不高,容易进行处理操作,但在权值分布范围较大时候它对于小值的量化误差较大且将严重影响检测精度;另外还有现有技术通过2的幂次进行量化,但这种方案同样对于一些值的误差较大,影响性能。
此外,虽然现有技术通过利用GPU的并行计算能力,使计算时长在一定程度上缩短,但GPU价格昂贵,功耗较大的同时便携性差也成为其无法忽视的缺点。随着智能便携设备的流行,急需一种能压缩网络在推理过程减少计算量和存储量而同时又能使检测达到一个令人满意的精度的方法。
发明内容
本发明针对现有技术权重分布范围广,最大最小值差距大导致小值量化后精度不高所产生的问题,提出一种基于神经网络权重数据分布特点的量化方法,能够充分利用比特位数,使每个数据都能根据自身参与计算的频率来得到充分的计算,在保证网络性能的同时大幅度降低存储量实现减少参数存储量的目的,且无需训练。
本发明是通过以下技术方案实现的:
本发明涉及一种基于神经网络权重数据分布特点的量化方法,通过将神经网络中的包含参数的任意一层的权重的分布情况进行统计后,根据统计结果设置码值分配数量,并根据该数量将不同范围下的参数分别分割为对应的子范围,每个子范围内的参数以代表值作为其量化值,最后将每个代表值编码后制表,计算时通过读入码值查表得到对应参与计算的量化值。
所述的包含参数的任意一层采用但不限于卷积层。
所述的统计结果,优选将小于2
所述的码值分配数量是指:正负分配数量满足
所述的码值分配数量,优选当计算得到大值(相对较大的值)的权重分配数量小于1时,则手动调整分配数量为2,大值的码值分配更多,相对应的减少小值的码值分配。
所述的代表值,即子范围的中间值为:
所述的制表,即将代表值y
对于卷积层中卷积操作所涉及的偏置bias,因为其数据很小实验表明对检测结果影响很小,所以bias都设置为0。
优选地,针对神经网络中的不同层,采用不同的优选码值M和代表值y
优选地,对本发明得到的量化值进一步再训练后作为所述的神经网络的权重能够进一步提高神经网络的性能,进一步优选地,将训练后的权重进一步通过本发明所述方法进行量化。
所述的参与计算的量化值是指:根据码值通过查找表找到对应的代表值,将代表值作为权值参与神经网络中待处理数据的计算并将计算结果输出至下一层。
技术效果
与现有技术相比,本发明运用查找表存储用于计算的代表值,能使存储量有效减少且保持较高精度,其技术效果进一步包括:
1)存储量有效减少:读取码值通过查找表找到代表值进行计算,一个代表值能最大限度地多次复用计算,码数量也是有限,使代表值在存储位数有限的情况下最大限度地接近原来权重值,通过分布范围内出现的次数而分配的码值利用率更高,且码值数量和代表值位数都可进一步减少。
2)更低比特数:不仅仅8比特的码值,7比特的码值也足够用,若对更低比特的码值进行分层优化,能进一步提高精度
3)低复杂度:整个通过码分配数值的方案不需要其他新颖的单元,只需要读取码值而后通过查找表找到对应的代表值进行计算即可。
附图说明
图1为本发明流程示意图;
图2为实施例效果示意图;
图3为实施例效果示意图。
具体实施方式
以下实施例使用ResNet50,比较的基准是使用tensorflow框架的ResNet50用于ImageNet的检测精度。
实施例1
如图1所示,本实施例采用8比特码和不同比特代表值y
步骤1、选择具有代表性的一层卷积层权重统计其权重的分布情况,如表1所示:
表1一层卷积层权重统计分布情况
由统计情况可知绝大部分的值分布在[2
步骤2、计算码分配数量
在[2
步骤3、子范围的代表值
因为在[2
代入,得:
其他子范围同理。
步骤4、制表
表2 8比特码用于查找表的存储示意图
步骤5、优化不同bit的代表值
上述码表中的数据如0.875,0.625,0.484375等代表值可以用更低比特位数表示,进一步降低存储量。
表3用不同比特存储代表值的精度结果
如图2所示,可以发现8bit存储数据表达力不够使精度快速下降。
实施例2
不同比特码和16比特代表值y
表4不同比特码数分配方案
表5不同比特码数精度结果
如图3所示,为不同比特码数精度结果。
实施例3
分层不同码方案优化:
i)6比特码分层优化
数据范围在[2
表6 6比特不同数据范围的分配码方案
ii)5比特码分层优化
5比特的方案可分配的码数量进一步减少,所以对应的方案则是进一步缩小数据范围,将小于2
表7 5比特不同数据范围的分配码方案
优化后的精度比较
表8优化前后精度比较
本发明根据权重在不同范围内的分布数量的不同划分不同数量的子范围,取中间值作为代表值参与计算,并为之编码,计算时读取编码找到对应的代表值进行计算。
本发明通过将原来的网络直接读取权重改为读取存储量更少的码值,通过查找表找到参与计算的代表值;通过分层优化,根据每一层的权重分布特点的不同,使用不同的码值分配方案进一步提升了精度。
在计算机中,搭建ResNet50的神经网络框架,对权重进行本发明的量化操作,能够使同为8bit的量化,传统方法的top1精度为49%,本方法top1能达到63.4%。由此可见本方法能够显著减少存储空间和量化损失,并提供神经网络更高的精度。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
机译: 基于计算内存硬件和系统的卷积神经网络部分和的量化方法
机译: 基于硬件友好的神经结构搜索(NAS)神经网络量化方法
机译: 基于深度神经网络的激活量量化方法及装置