一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用带权重直方图优化KL散度的方法、系统及介质与流程

2022-02-25 21:31:15 来源:中国专利 TAG:

使用带权重直方图优化kl散度的方法、系统及介质
技术领域
1.本发明涉及计算机领域,具体地,涉及一种使用带权重直方图优化kl散度的方法、系统及介质。


背景技术:

2.在卷积神经网络的量化方案,根据量化时序的不同,可以分为训练时量化和训练后量化。其中,由于量化过程速度快,量化实现难度小等优势,现如今训练后量化的方式被广泛的应用。针对训练后量化的方案,有许多不同的截断算法,如:bit-split,aciq,admm,kl散度等算法。不同的截断算法,对卷积神经网络,效果有差异,最主要的就是体现在量化速度和量化精度上。
3.其中,现有技术中,由nvidia公司提出的kullback-leibler divergence,简称kl散度的这种根据量化前数据和量化后数据信息熵的离散程度计算截断值的方案,适用范围较为广阔,且在众多深度学习框架中都有所应用。但其在计算中,会将需要量化层的输出数据均匀的分布到直方图中,主要考虑了本层activation的结果,没有考虑到上下层之间的关联性,本层大的输出值可能会对下一层的计算有更大的影响,单纯的均匀分布无法体现大值的重要性,其运算的结果在上下层关联较大时并不是很理想。卷积神经网络量化流程中,需要比较原始的浮点数据和量化后的定点数据之间的相似程度(kl散度),传统的kl散度,没有考虑量化后的数据对下层操作的影响。


技术实现要素:

4.针对现有技术中的缺陷,本发明的目的是提供一种使用带权重直方图优化kl散度的方法、系统及介质。
5.根据本发明提供的一种使用带权重直方图优化kl散度的方法,包括:
6.前向推理步骤:对卷积神经网络进行前向推理;
7.记录步骤:记录所有量化数据集在所述前向推理中每层的activation数据;
8.直方图计算步骤:根据每层的activation数据计算得到直方图;
9.kl散度计算步骤:根据所述直方图计算得到每层的kl散度;
10.截断值计算步骤:根据所述kl散度计算得到每层的截断值;
11.其中,所述直方图计算步骤根据每层的activation数据的数据量动态划分直方图的间隙数,把卷积神经网络下层参数作为权重值,代入当前层的activation数据中,将代入所述权重值的activation数据带入递增函数作为新的数据来计算直方图。
12.优选地,所述直方图计算步骤包括:
13.步骤3.1:根据每层的activation数据的数据量的大小,动态划定直方图的间隙数;
14.步骤3.2:判断下一层的运算类型和参数,
15.如果下一层含有参数并且参数与输入数据为四则运算中的第二级运算操作,则对
当前层的activation数据与下层的参数相乘,并将相乘后的结果作为新的数据来计算直方图;
16.如果下一层不含有参数,或者含有参数且与输入数据为四则运算中的第一级运算操作,则将当前层的activation数据输入到递增函数,并将输出的结果作为新的数据来计算直方图。
17.优选地,所述kl散度计算步骤包括:
18.步骤4.1将直方图数据归一化,作为每层activation数据的特征向量p;
19.步骤4.2根据截断位置截取p,获取新的特征向量q;
20.步骤4.3根据kl散度公式以及特征向量p和特征向量q,计算kl散度;
[0021][0022]
其中计算特征向量q时,截断位置从量化bit位数开始遍历到直方图的最大间隙数。如:要量化到8bit时,需在256(2^8)至最大间隙数(如:8000)之间选择依次遍历截取位置。
[0023]
优选地,所述截断值计算步骤包括:
[0024]
步骤5.1通过遍历,获取所有截断位置对应的kl散度数值;
[0025]
步骤5.2获取所有kl散度数值中,kl散度最小值所对应的截取位置;
[0026][0027]
步骤5.3根据截取位置,与间隙大小相乘获取截断值。
[0028]
根据本发明提供的一种使用带权重直方图优化kl散度的系统,包括:
[0029]
前向推理模块:对卷积神经网络进行前向推理;
[0030]
记录模块:记录所有量化数据集在所述前向推理中每层的activation数据;
[0031]
直方图计算模块:根据每层的activation数据计算得到直方图;
[0032]
kl散度计算模块:根据所述直方图计算得到每层的kl散度;
[0033]
截断值计算模块:根据所述kl散度计算得到每层的截断值;
[0034]
其中,所述直方图计算模块根据每层的activation数据的数据量动态划分直方图的间隙数,把卷积神经网络下层参数作为权重值,代入当前层的activation数据中,将代入所述权重值的activation数据带入递增函数作为新的数据来计算直方图。
[0035]
优选地,所述直方图计算模块包括:
[0036]
模块m3.1:根据每层的activation数据的数据量的大小,动态划定直方图的间隙数;
[0037]
模块m3.2:判断下一层的运算类型和参数,
[0038]
如果下一层含有参数并且参数与输入数据为四则运算中的第二级运算操作,则对当前层的activation数据与下层的参数相乘,并将相乘后的结果作为新的数据来计算直方图;
[0039]
如果下一层不含有参数,或者含有参数且与输入数据为四则运算中的第一级运算操作,则将当前层的activation数据输入到递增函数,并将输出的结果作为新的数据来计算直方图。
[0040]
优选地,所述kl散度计算模块包括:
[0041]
模块m4.1将直方图数据归一化,作为每层activation数据的特征向量p;
[0042]
模块m4.2根据截断位置截取p,获取新的特征向量q。
[0043]
模块m4.3根据kl散度公式以及特征向量p和特征向量q,计算kl散度;
[0044][0045]
其中计算特征向量q时,截断位置从量化bit位数开始遍历到直方图的最大间隙数。如:要量化到8bit时,需在256(2^8)至最大间隙数(如:8000)之间选择依次遍历截取位置。
[0046]
优选地,所述截断值计算模块包括:
[0047]
模块m5.1通过遍历,获取所有截断位置对应的kl散度数值;
[0048]
模块m5.2获取所有kl散度数值中,kl散度最小值所对应的截取位置;
[0049][0050]
模块m5.3根据截取位置,与间隙大小相乘获取截断值。
[0051]
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现所述的方法的步骤。
[0052]
与现有技术相比,本发明具有如下的有益效果:
[0053]
本发明通过考虑卷积神经网络中,每层activation数据量,动态划分直方图的间隙数。将数据的直方图计算的更加细致。从而提高kl散度的计算准确度。
[0054]
本发明通过把卷积神经网络下层参数作为权重值,乘到本层的activation输出数据中,增大输出中大值的比率,从而优化kl散度的计算值。
[0055]
本发明通过将卷积神经网络中,本层的输出带入递增函数中运算,并将新的输出结果作为数据,从而实现直方图数据的精确化,提高kl散度计算量化截断值的准确性。
[0056]
本发明考虑本层大值的影响以及上下层之间的关联性,将下一层相关权重附加到本层的输出值中,生成带有权重的直方图,从而提高kl散度的量化效果。
附图说明
[0057]
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0058]
图1为本发明的工作流程图;
[0059]
图2为本发明实施例原始数据的分布示意图;
[0060]
图3为本发明实施例量化后数据分布示意图。
具体实施方式
[0061]
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
[0062]
如图1所示,本发明提供的一种使用带权重直方图优化kl散度的方法,包括:
[0063]
步骤1:进行卷积神经网络前向推理。
[0064]
步骤2:记录所有量化数据集前向推理中每层的activation数据。
[0065]
步骤3:根据每层的activation数据计算直方图。
[0066]
步骤4:根据直方图计算每层的kl散度。
[0067]
步骤5:根据kl散度计算出每层activation的截断值。
[0068]
步骤3包括如下步骤:
[0069]
步骤3.1:根据每层的activation数据的数据量的大小,动态划定直方图的间隙数(bins)。
[0070]
步骤3.2:判断下一层的运算类型和参数,
[0071]
如果下一层含有参数并且参数与输入数据为四则运算中的第二级运算操作(参数与输入数据有相乘等操作,如:convlution层、scale层),则对当前层的activation数据与下层的参数相乘,并将相乘后的结果作为新的数据来计算直方图。
[0072]
如果下一层不含有参数,或者含有参数且与输入数据为四则运算中的第一级运算操作(参数与输入数据为相加等操作,如:add层),则将当前层的activation数据输入到递增函数(如:y=(x 1)^1/2),并将输出的结果作为新的数据来计算直方图。
[0073]
步骤4具体包括:
[0074]
步骤4.1将直方图数据归一化,作为每层activation数据的特征向量p。
[0075]
步骤4.2根据截断位置截取p,获取新的特征向量q。
[0076]
步骤4.3根据kl散度公式(下式)以及特征向量p和特征向量q,计算kl散度。
[0077][0078]
其中计算特征向量q时,截断位置从量化bit位数开始遍历到直方图的最大间隙数。如:要量化到8bit时,需在256(2^8)至最大间隙数(如:8000)之间选择依次遍历截取位置。
[0079]
步骤5包括:
[0080]
步骤5.1通过遍历,获取所有截断位置对应的kl散度数值。
[0081]
步骤5.2获取所有kl散度数值中,kl散度最小值所对应的截取位置。
[0082]
步骤5.3根据截取位置,与间隙大小相乘获取截断值。
[0083]
如图2、3所示,为经典卷积神经网络yolo-v3中conv-94层原前向数据和定点前向后数据。图2为原始浮点数据转换为8bit后的数据分布图;图3为定点前向的数据分布图;可见经过本方法截断后定点前向过程的数据分布与原始浮点前向的数据分布形状极为接近。
[0084]
本发明还提供一种使用带权重直方图优化kl散度的系统,其特征在于,包括:
[0085]
前向推理模块:对卷积神经网络进行前向推理;
[0086]
记录模块:记录所有量化数据集在所述前向推理中每层的activation数据;
[0087]
直方图计算模块:根据每层的activation数据计算得到直方图;
[0088]
kl散度计算模块:根据所述直方图计算得到每层的kl散度;
[0089]
截断值计算模块:根据所述kl散度计算得到每层的截断值;
[0090]
其中,所述直方图计算模块根据每层的activation数据的数据量动态划分直方图
的间隙数,把卷积神经网络下层参数作为权重值,代入当前层的activation数据中,将代入所述权重值的activation数据带入递增函数作为新的数据来计算直方图。
[0091]
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0092]
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献