一种深度神经网络的激活量量化方法及装置与流程

文档序号:17327369发布日期:2019-04-05 21:52阅读:275来源:国知局
一种深度神经网络的激活量量化方法及装置与流程

本发明涉及机器学习技术领域,特别是涉及一种深度神经网络的激活量量化方法及装置。



背景技术:

深度神经网络作为机器学习研究中的一个新兴领域,通过模仿人脑的机制来解析数据,是一种通过建立和模拟人脑进行分析学习的智能模型。目前,深度神经网络在图像分类、目标检测、目标跟踪、语音识别等方面已经成为了主流的应用方法。但是,由于深度神经网络中每个网络层都有大量的数据参与运算,并且,参与运算的每一个数据都是较大比特数的浮点数据,使得所需要的硬件计算资源非常巨大,导致硬件成本和带宽消耗都非常大。

针对上述问题,相关的深度神经网络中,提出了对输入数据进行量化的思想,将大比特数的浮点数据,量化为较低比特数的定点数据,由于量化后的定点数据具有较低的比特数,使得参与运算的数据量得以降低,从而能够降低深度神经网络在运算过程中硬件计算资源和带宽资源的消耗。

上述深度神经网络中,针对各网络层,对量化最大值的范围进行限定,并根据量化最大值的范围计算得到步长值,按照该步长值对输入数据进行量化。由于量化最大值的范围为通过实验得到的经验数据,得到的步长值也与经验数据相关,各网络层的步长值均是固定的,步长值越大,量化后的数据的比特数越低,但是步长值越大,量化过程中数据丢失的信息就越多,使得量化后的数据与原始数据之间存在较大的误差。



技术实现要素:

本发明实施例的目的在于提供一种深度神经网络的激活量量化方法及装置,以减少量化带来的误差。具体技术方案如下:

第一方面,本发明实施例提供了一种深度神经网络的激活量量化方法,所述方法包括:

针对深度神经网络中网络层的激活量,获取所述激活量的初始量化最大值;

从所述初始量化最大值开始,按预设方式递减,得到包括多个数值的初始待选数值集合;

计算利用所述初始待选数值集合中各数值对所述激活量进行量化得到的量化结果与所述激活量之间的重构误差;

确定各数值对应的重构误差中的最小重构误差;

基于与所述最小重构误差相对应的数值,确定第一量化最大值;

根据所述第一量化最大值及预设比特数,对所述激活量进行量化。

可选的,所述从所述初始量化最大值开始,按预设方式递减,得到包括多个数值的初始待选数值集合,包括:

从所述初始量化最大值开始,每次以除以2的方式递减,得到多个数值;

将所述多个数值组合成为初始待选数值集合。

可选的,所述基于与所述最小重构误差相对应的数值,确定第一量化最大值,包括:

将与所述最小重构误差相对应的数值确定为第一量化最大值。

可选的,所确定的各数值对应的重构误差中的最小重构误差,作为所述初始待选数值集合对应的最小重构误差;

在所述根据所述第一量化最大值及预设比特数,对所述激活量进行量化之后,所述方法还包括:

获取对量化后的激活量进行深度神经网络运算,得到的运算结果;

对比所述运算结果与预设任务结果之间的差异;

如果所述差异大于第一预设阈值,则通过将包含所述初始待选数值集合对应的最小重构误差的预设区间划分为新的待选数值集合,查找使得所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值小于第二预设阈值的第二量化最大值,并根据所述第二量化最大值及预设比特数,对所述激活量进行量化。

可选的,所述通过将包含所述初始待选数值集合对应的最小重构误差的预设区间划分为新的待选数值集合,查找使得所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值小于第二预设阈值的第二量化最大值,包括:

步骤a、按照预设数量,将所述待选数值集合中,与最小重构误差相对应的数值相邻的两个数值构成的区间进行等分,得到包括多个更新数值的新的待选数值集合;

步骤b、计算利用各更新数值对所述激活量进行量化得到的量化结果与所述激活量之间的重构误差;

步骤c、确定各更新数值对应的重构误差中的最小重构误差,作为所述新的待选数值集合对应的最小重构误差;

步骤d、判断所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值的是否小于第二预设阈值:

步骤e、如果小于,则将与所述新的待选数值集合对应的最小重构误差相对应的数值确定为第二量化最大值;

步骤f、如果不小于,则返回步骤a。

第二方面,本发明实施例提供了一种深度神经网络的激活量量化装置,所述装置包括:

第一获取模块,用于针对深度神经网络中网络层的激活量,获取所述激活量的初始量化最大值;

递减模块,用于从所述初始量化最大值开始,按预设方式递减,得到包括多个数值的初始待选数值集合;

计算模块,用于计算利用所述初始待选数值集合中各数值对所述激活量进行量化得到的量化结果与所述激活量之间的重构误差;

确定模块,用于确定各数值对应的重构误差中的最小重构误差;基于与所述最小重构误差相对应的数值,确定第一量化最大值;

量化模块,用于根据所述第一量化最大值及预设比特数,对所述激活量进行量化。

可选的,所述递减模块,具体用于:

从所述初始量化最大值开始,每次以除以2的方式递减,得到多个数值;

将所述多个数值组合成为初始待选数值集合。

可选的,所述确定模块,具体用于:

将与所述最小重构误差相对应的数值确定为第一量化最大值。

可选的,所确定的各数值对应的重构误差中的最小重构误差,作为所述初始待选数值集合对应的最小重构误差;

所述装置还包括:

第二获取模块,用于获取对量化后的激活量进行深度神经网络运算,得到的运算结果;

对比模块,用于对比所述运算结果与预设任务结果之间的差异;

查找模块,用于如果所述差异大于第一预设阈值,则通过将包含所述初始待选数值集合对应的最小重构误差的预设区间划分为新的待选数值集合,查找使得所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值小于第二预设阈值的第二量化最大值,并根据所述第二量化最大值及预设比特数,对所述激活量进行量化。

可选的,所述查找模块,具体用于执行如下步骤:

步骤a、按照预设数量,将所述待选数值集合中,与最小重构误差相对应的数值相邻的两个数值构成的区间进行等分,得到包括多个更新数值的新的待选数值集合;

步骤b、计算利用各更新数值对所述激活量进行量化得到的量化结果与所述激活量之间的重构误差;

步骤c、确定各更新数值对应的重构误差中的最小重构误差,作为所述新的待选数值集合对应的最小重构误差;

步骤d、判断所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值的是否小于第二预设阈值:

步骤e、如果小于,则将与所述新的待选数值集合对应的最小重构误差相对应的数值确定为第二量化最大值;

步骤f、如果不小于,则返回步骤a。

第三方面,本发明实施例提供了一种计算机设备,包括处理器和存储器,其中,

所述存储器,用于存放计算机程序;

所述处理器,用于执行所述存储器上所存放的程序时,,实现如第一方面所述的方法步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法步骤。

本发明实施例提供的一种深度神经网络的激活量量化方法及装置,通过获取深度神经网络中网络层的激活量的初始量化最大值,从该初始量化最大值开始,按预设方式递减,得到多个数值,从多个数值中,确定使得重构误差最小的数值作为第一量化最大值,最终,根据该量化最大值及预设比特数,对激活量进行量化。由于在确定量化最大值的过程中,始终保证确定的量化最大值能够使得重构误差最小,而重构误差为激活量与量化结果之间的误差,因此,能够有效的减少量化带来的误差。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例的深度神经网络的激活量量化方法的一种流程示意图;

图2为本发明实施例的深度神经网络中激活量的示意图;

图3为本发明一实施例的深度神经网络的激活量量化方法的流程示意图;

图4为本发明实施例的深度神经网络的激活量量化装置的一种结构示意图;

图5为本发明实施例的深度神经网络的激活量量化装置的另一种结构示意图;

图6为本发明实施例的计算机设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了减少量化带来的误差,本发明实施例提供了一种深度神经网络的激活量量化方法及装置。下面,首先对本发明实施例所提供的深度神经网络的激活量量化方法进行介绍。

本发明实施例所提供的一种深度神经网络的激活量量化方法的执行主体可以为实现图像分类、语音识别、目标检测等功能的计算机设备,也可以为具有图像分类、目标检测等功能的摄像机,还可以为具有语音识别功能的麦克风,执行主体中至少包括具有数据处理能力的核心处理芯片,其中,核心处理芯片可以为dsp(digitalsignalprocessor,数字信号处理器)、arm(advancedreducedinstructionsetcomputermachines,精简指令集计算机微处理器)、fpga(field-programmablegatearray,现场可编程门阵列)等核心处理芯片中的任一种。实现本发明实施例所提供的一种深度神经网络的激活量量化方法的方式可以为设置于执行主体中的软件、硬件电路和逻辑电路的至少一种方式。

如图1所示,为本发明实施例所提供的一种深度神经网络的激活量量化方法,该深度神经网络的激活量量化方法可以包括如下步骤:

s101,针对深度神经网络中网络层的激活量,获取激活量的初始量化最大值。

深度神经网络中的激活量为任一网络层的输入或者输出的全部元素或者部分元素,也就是网络中层与层之间传输的数据流,如图2所示,激活量a的大小为w×h×o。dnn(deepneuralnetwork,深度神经网络)为一个较为宽泛的数据处理方法,具体的,dnn可以为cnn(convolutionalneuralnetwork,卷积神经网络)、rnn(recurrentneuralnetwork,循环神经网络)、lstm(longshorttermmemory,长短期记忆网络)等数据处理方法中的任意一种。

初始量化最大值可以为根据激活量中的元素特征预先设置的较大的值,也可以为根据激活量中的元素数值计算得到的值。为了能够覆盖激活量中的全部元素,可以通过激活量中的元素绝对值的最大值计算得到初始量化最大值,由于量化后的量化结果为具有指定比特数的二进制数据,因此,初始量化最大值可以基于2m得到,其中m=ceil(log2max|ai|)为大于或等于表达式log2max|ai|的最小整数,ai为激活量a中的各元素,max|ai|为激活量a中的元素绝对值的最大值。

s102,从初始量化最大值开始,按预设方式递减,得到包括多个数值的初始待选数值集合。

由于初始量化最大值仅考虑了覆盖激活量中的全部元素,但是根据统计实验可知,激活量的概率密度在量化参数为0时较大,越靠近量化最大值概率密度就越小,由于激活量概率分布的影响,会导致较大的初始量化误差。所以在小于初始量化最大值的范围内,一定存在其他数值能够减小量化误差。

由于小于初始量化最大值的范围内包含的数值很多,然而,量化的过程是将激活量量化为指定比特数的二进制数据,则实际上并不需要对小于初始量化最大值的范围内的所有数据都进行遍历,因此,在确定量化最大值的过程中,可以按照预设方式对小于初始量化最大值的范围内的数值递减,得到多个数值,这些数值可以组成一个初始待选数值集合,这里的预设方式可以为每次减去固定数值,也可以为每次除以固定数值。

s103,计算利用初始待选数值集合中各数值对激活量进行量化得到的量化结果与激活量之间的重构误差。

s104,确定各数值对应的重构误差中的最小重构误差。

s105,基于与最小重构误差相对应的数值,确定第一量化最大值。

本实施例中,以使得激活量与量化结果之间的重构误差最小为优化目的,重构误差代表了激活量与基于小于初始量化最大值的范围内的任一数值对激活量进行量化后的量化结果之间的误差,可以用n范数表示。可以通过对利用各数值对激活量进行量化得到的量化结果与激活量之间的重构误差的计算,得到重构误差中的最小重构误差,然后将与重构误差相对应的数值作为对激活量进行量化所使用的量化最大值。

s106,根据第一量化最大值及预设比特数,对激活量进行量化。

其中,预设比特数为期望将激活量量化后得到的二进制数的比特数,例如,期望将激活量量化为2比特的二进制数、4比特的二进制数或者16比特的二进制数等。可选地,预设比特数可以为1~32范围内的任意整数值。在得到使得激活量与量化结果之间的重构误差最小的第一量化最大值之后,可以根据该量化最大值及预设比特数,对激活量进行量化。可选地,可以按照量化公式,根据量化最大值及预设比特数,得到量化为预设比特数的优化步长,根据该优化步长就可以实现对激活量的量化。

具体的,量化公式可以为:

其中,step为优化步长,maxa为得到的第一量化最大值,b为预设比特数。

应用本实施例,通过获取深度神经网络中网络层的激活量的初始量化最大值,从该初始量化最大值开始,按预设方式递减,得到多个数值,从多个数值中,确定使得重构误差最小的数值作为第一量化最大值,最终,根据该量化最大值及预设比特数,对激活量进行量化。由于在确定量化最大值的过程中,始终保证确定的量化最大值能够使得重构误差最小,而重构误差为激活量与量化结果之间的误差,因此,能够有效的减少量化带来的误差。

在利用如图1所示实施例对激活量进行量化之后,对量化后的激活量进行深度神经网络运算,运算结果可能与预期的任务结果差异较大,则需要进一步查找使得重构误差相对最小且能够达到预期运算结果的量化最大值。如图3所示,为本发明实施例提供的一种深度神经网络的激活量量化方法,该深度神经网络的激活量量化方法包括:

s301,通过查找激活量中的元素绝对值的最大值,确定激活量的初始量化最大值。

针对深度神经网络中网络层的激活量,查找激活量中的元素绝对值的最大值,在查找到元素绝对值的最大值max|ai|后,通过计算得到该激活量的初始量化最大值2m,其中,m=ceil(log2max|ai|),ai为激活量a中的各元素。

s302,从初始量化最大值开始,每次以除以2的方式递减,得到包括多个数值的初始待选数值集合。

由于量化后的量化结果为二进制数,则总位数为2的n次方,其中n为自然数,因此,对小于初始量化最大值的范围内的数值进行查找的过程,可以以每次除以2的方式递减,得到多个数值。例如,得到的初始量化最大值为16(即24),则得到的初始待选数值集合为(1、2、4、8、16)。

s303,利用初始待选数值集合中的各数值,分别对激活量进行量化运算,得到各数值对应的量化结果。

利用各数值,分别对激活量进行量化运算,具体量化运算的过程如公式(2)和(3)所示。

其中,st为利用数值t对激活量进行量化的量化步长,b为预设比特数,q(ai)为对激活量中各元素进行量化的量化结果,ai为激活量a中的各元素,clip函数如公式(4)所示。

s304,确定激活量与各数值对应的量化结果之间的重构误差,并确定各数值对应的重构误差中的最小重构误差,作为初始待选数值集合对应的最小重构误差。

根据激活量以及通过s303计算得到的各数值对应的量化结果,可以确定重构误差,重构误差可以为任意范数。重构误差代表了激活量与基于小于初始量化最大值的范围内的任一数值对激活量进行量化后的量化结果之间的误差,范数用于体现对该误差大小的衡量结果,这里以重构误差为2范数为例,重构误差diff(a,q(a))=||a-q(a)||2,其中,a为激活量,q(a)为对激活量进行量化的量化结果,||a-q(a)||2为激活量a与对激活量进行量化的量化结果q(a)之间的差值的2范数,即激活量与量化结果之间的重构误差。上述步骤中的数值组中,每个数值对应有一个重构误差。从各数值对应的重构误差中可以确定最小重构误差,将该最小重构误差作为初始待选数值集合对应的最小重构误差。

s305,将与初始待选数值集合对应的最小重构误差相对应的数值确定为第一量化最大值。

通过重构误差的表达式,可以从多个数值中确定使得所对应的重构误差最小的数值。具体的,例如,初始量化最大值为maxa0=2m,从初始量化最大值开始,以2m、2m-1、2m-2…2m-k的方式向下查找使得重构误差最小的数值2j,则可以将该数值确定为第一量化最大值

s306,根据第一量化最大值及预设比特数,对激活量进行量化。

例如,将得到的第一量化最大值及预设比特数代入量化公式(5),可以得到量化为预设比特数的优化步长,根据该优化步长就可以实现对激活量的量化。

其中,step为优化步长,maxa为得到的第一量化最大值,b为预设比特数。

s307,获取对量化后的激活量进行深度神经网络运算,得到的运算结果。

s308,对比运算结果与预设任务结果之间的差异,如果该差异大于第一预设阈值,则执行s309。

对量化后的激活量进行深度神经网络运算,运算后得到的运算结果可能与预设任务结果之间存在较大的差异,如果差异较大则说明量化处理的结果并未达到理想结果,则需要通过计算邻近数值对应的重构误差的方式,进一步查找使得重构误差更小的更理想的量化最大值,其中,预设任务结果可以为对浮点值进行深度神经网络运算的结果,也可以为期望达到的任务结果。

s309,按照预设数量,将待选数值集合中,与最小重构误差相对应的数值相邻的两个数值构成的区间进行等分,得到包括多个更新数值的新的待选数值集合。

s310,计算利用各更新数值对激活量进行量化得到的量化结果与激活量之间的重构误差。

s311,确定各更新数值对应的重构误差中的最小重构误差,作为新的待选数值集合对应的最小重构误差。

如果运算结果与预设任务结果之间的差异超过预设阈值,则可以在待选数值集合中,与最小重构误差相对应的数值相邻的两个数值构成的区间内确定使得重构误差更小的数值。基于上述实例,由于使得激活量与量化结果之间的重构误差最小的数值为2j,则可以等分区间[2j-1,2j+1],得到n个更新数值。

在对区间进行划分后,可以根据公式(6)得到多个更新数值,多个更新数值组成新的待选数值集合。

nl=2j-1+l*δ(6)

其中,nl为对预设区间进行划分得到的第l个数值,2j-1为预设区间的下限,δ=(2j+1-2j-1)/n,2j+1为预设区间的上限,n为预设数量。

s312,判断新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值的是否小于第二预设阈值,若是则执行s313,否则执行s309。

为了能够得到相对最小的重构误差,可以通过判断新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值,如果差值小于第二预设阈值,则说明新计算得到的重构误差相对最小,如果差值不小于第二预设阈值,则需要返回执行等分的步骤,再次等分的区间为[t-delta,t+delta],t为当前最小重构误差对应的数值,delta为上一步等分区间的步长。

s313,将与新的待选数值集合对应的最小重构误差相对应的数值确定为第二量化最大值,并根据第二量化最大值及预设比特数,对激活量进行量化。

应用本实施例,通过获取深度神经网络中网络层的激活量的初始量化最大值,从该初始量化最大值开始,按预设方式递减,得到多个数值,从多个数值中,确定使得重构误差最小的数值作为第一量化最大值,最终,根据该量化最大值及预设比特数,对激活量进行量化。由于在确定量化最大值的过程中,始终保证确定的量化最大值能够使得重构误差最小,而重构误差为激活量与量化结果之间的误差,因此,能够有效的减少量化带来的误差。并且通过对比对量化后的激活量进行深度神经网络运算,得到的运算结果与预设任务结果的差异,若差异大于第一预设阈值,则可以通过对与最小重构误差相对应的数值相邻的两个数值构成的区间内的数值进行遍历,得到使得重构误差更小的数值,通过不断的精细划分,直至新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值的小于第二预设阈值,将新的待选数值集合对应的最小重构误差相对应的数值作为量化最大值对激活量进行量化,使得量化结果更为精准。

相应于上述方法实施例,本发明实施例提供了一种深度神经网络的激活量量化装置,如图4所示,该深度神经网络的激活量量化装置可以包括:

第一获取模块410,用于针对深度神经网络中网络层的激活量,获取所述激活量的初始量化最大值;

递减模块420,用于从所述初始量化最大值开始,按预设方式递减,得到包括多个数值的初始待选数值集合;

计算模块430,用于计算利用所述初始待选数值集合中各数值对所述激活量进行量化得到的量化结果与所述激活量之间的重构误差;

确定模块440,用于确定各数值对应的重构误差中的最小重构误差;基于与所述最小重构误差相对应的数值,确定第一量化最大值;

量化模块450,用于根据所述第一量化最大值及预设比特数,对所述激活量进行量化。

应用本实施例,通过获取深度神经网络中网络层的激活量的初始量化最大值,从该初始量化最大值开始,按预设方式递减,得到多个数值,从多个数值中,确定使得重构误差最小的数值作为第一量化最大值,最终,根据该量化最大值及预设比特数,对激活量进行量化。由于在确定量化最大值的过程中,始终保证确定的量化最大值能够使得重构误差最小,而重构误差为激活量与量化结果之间的误差,因此,能够有效的减少量化带来的误差。

可选的,所述递减模块420,具体可以用于:

从所述初始量化最大值开始,每次以除以2的方式递减,得到多个数值;

将所述多个数值组合成为初始待选数值集合。

可选的,所述确定模块440,具体可以用于:

将与所述最小重构误差相对应的数值确定为第一量化最大值。

本发明实施例的深度神经网络的激活量量化装置为应用如图1所示深度神经网络的激活量量化方法的装置,则图1所示深度神经网络的激活量量化方法的所有实施例均适用于该深度神经网络的激活量量化装置,且均能达到相同或相似的有益效果。

基于图4所示实施例,本发明实施例还提供了一种深度神经网络的激活量量化装置,如图5所示,该深度神经网络的激活量量化装置可以包括:

第一获取模块510,用于针对深度神经网络中网络层的激活量,获取所述激活量的初始量化最大值;

递减模块520,用于从所述初始量化最大值开始,按预设方式递减,得到包括多个数值的初始待选数值集合;

计算模块530,用于计算利用所述初始待选数值集合中各数值对所述激活量进行量化得到的量化结果与所述激活量之间的重构误差;

确定模块540,用于确定各数值对应的重构误差中的最小重构误差;基于与所述最小重构误差相对应的数值,确定第一量化最大值;

量化模块550,用于根据所述第一量化最大值及预设比特数,对所述激活量进行量化;

第二获取模块560,用于获取对量化后的激活量进行深度神经网络运算,得到的运算结果;

对比模块570,用于对比所述运算结果与预设任务结果之间的差异;

查找模块580,用于如果所述差异大于第一预设阈值,则通过将包含所述初始待选数值集合对应的最小重构误差的预设区间划分为新的待选数值集合,查找使得所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值小于第二预设阈值的第二量化最大值,并根据所述第二量化最大值及预设比特数,对所述激活量进行量化。

应用本实施例,通过获取深度神经网络中网络层的激活量的初始量化最大值,从该初始量化最大值开始,按预设方式递减,得到多个数值,从多个数值中,确定使得重构误差最小的数值作为第一量化最大值,最终,根据该量化最大值及预设比特数,对激活量进行量化。由于在确定量化最大值的过程中,始终保证确定的量化最大值能够使得重构误差最小,而重构误差为激活量与量化结果之间的误差,因此,能够有效的减少量化带来的误差。并且通过对比对量化后的激活量进行深度神经网络运算,得到的运算结果与预设任务结果的差异,若差异大于第一预设阈值,则可以通过对与最小重构误差相对应的数值相邻的两个数值构成的区间内的数值进行遍历,得到使得重构误差更小的数值,通过不断的精细划分,直至新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值的小于第二预设阈值,将新的待选数值集合对应的最小重构误差相对应的数值作为量化最大值对激活量进行量化,使得量化结果更为精准。

可选的,所确定的各数值对应的重构误差中的最小重构误差,作为所述初始待选数值集合对应的最小重构误差。

可选的,所述查找模块580,具体可以用于执行如下步骤:

步骤a、按照预设数量,将所述待选数值集合中,与最小重构误差相对应的数值相邻的两个数值构成的区间进行等分,得到包括多个更新数值的新的待选数值集合;

步骤b、计算利用各更新数值对所述激活量进行量化得到的量化结果与所述激活量之间的重构误差;

步骤c、确定各更新数值对应的重构误差中的最小重构误差,作为所述新的待选数值集合对应的最小重构误差;

步骤d、判断所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值的是否小于第二预设阈值:

步骤e、如果小于,则将与所述新的待选数值集合对应的最小重构误差相对应的数值确定为第二量化最大值;

步骤f、如果不小于,则返回步骤a。

本发明实施例的深度神经网络的激活量量化装置为应用如图3所示深度神经网络的激活量量化方法的装置,则图3所示深度神经网络的激活量量化方法的所有实施例均适用于该深度神经网络的激活量量化装置,且均能达到相同或相似的有益效果。

本发明实施例还提供了一种计算机设备,包括处理器和存储器,其中,

所述存储器,用于存放计算机程序;

所述处理器,用于执行所述存储器上所存放的程序时,实现上述方法步骤。

本发明实施例还提供了一种计算机设备,如图6所示,包括处理器610、通信接口620、存储器630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信,

存储器630,用于存放计算机程序;

处理器610,用于执行存储器630上所存放的程序时,实现如下步骤:

针对深度神经网络中网络层的激活量,获取所述激活量的初始量化最大值;

从所述初始量化最大值开始,按预设方式递减,得到包括多个数值的初始待选数值集合;

计算利用所述初始待选数值集合中各数值对所述激活量进行量化得到的量化结果与所述激活量之间的重构误差;

确定各数值对应的重构误差中的最小重构误差;

基于与所述最小重构误差相对应的数值,确定第一量化最大值;

根据所述第一量化最大值及预设比特数,对所述激活量进行量化。

可选的,所述处理器610在实现所述从所述初始量化最大值开始,按预设方式递减,得到包括多个数值的初始待选数值集合的步骤中,具体可以实现:

从所述初始量化最大值开始,每次以除以2的方式递减,得到多个数值;

将所述多个数值组合成为初始待选数值集合。

可选的,所述处理器610在实现所述基于与所述最小重构误差相对应的数值,确定第一量化最大值的步骤中,具体可以实现:

将与所述最小重构误差相对应的数值确定为第一量化最大值。

可选的,所确定的各数值对应的重构误差中的最小重构误差,作为所述初始待选数值集合对应的最小重构误差;

所述处理器610还可以实现:

获取对量化后的激活量进行深度神经网络运算,得到的运算结果;

对比所述运算结果与预设任务结果之间的差异;

如果所述差异大于第一预设阈值,则通过将包含所述初始待选数值集合对应的最小重构误差的预设区间划分为新的待选数值集合,查找使得所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值小于第二预设阈值的第二量化最大值,并根据所述第二量化最大值及预设比特数,对所述激活量进行量化。

所述处理器610在实现所述通过将包含所述初始待选数值集合对应的最小重构误差的预设区间划分为新的待选数值集合,查找使得所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值小于第二预设阈值的第二量化最大值的步骤中,具体可以实现:

步骤a、按照预设数量,将所述待选数值集合中,与最小重构误差相对应的数值相邻的两个数值构成的区间进行等分,得到包括多个更新数值的新的待选数值集合;

步骤b、计算利用各更新数值对所述激活量进行量化得到的量化结果与所述激活量之间的重构误差;

步骤c、确定各更新数值对应的重构误差中的最小重构误差,作为所述新的待选数值集合对应的最小重构误差;

步骤d、判断所述新的待选数值集合对应的最小重构误差与上一次得到的待选数值集合对应的最小重构误差之间的差值的是否小于第二预设阈值:

步骤e、如果小于,则将与所述新的待选数值集合对应的最小重构误差相对应的数值确定为第二量化最大值;

步骤f、如果不小于,则返回步骤a。

上述计算机设备中提到的通信总线可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述计算机设备与其他设备之间的通信。

存储器可以包括ram(randomaccessmemory,随机存取存储器),也可以包括nvm(non-volatilememory,非易失性存储器),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是dsp(digitalsignalprocessing,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本实施例中,该计算机设备的处理器通过读取存储器中存储的计算机程序,并通过运行该计算机程序,能够实现:通过获取深度神经网络中网络层的激活量的初始量化最大值,从该初始量化最大值开始,按预设方式递减,得到多个数值,从多个数值中,确定使得重构误差最小的数值作为第一量化最大值,最终,根据该量化最大值及预设比特数,对激活量进行量化。由于在确定量化最大值的过程中,始终保证确定的量化最大值能够使得重构误差最小,而重构误差为激活量与量化结果之间的误差,因此,能够有效的减少量化带来的误差。

另外,相应于上述实施例所提供的深度神经网络的激活量量化方法,本发明实施例提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序被处理器执行时,实现如上述深度神经网络的激活量量化方法的步骤。

本实施例中,计算机可读存储介质存储有在运行时执行本申请实施例所提供的深度神经网络的激活量量化方法的应用程序,因此能够实现:通过获取深度神经网络中网络层的激活量的初始量化最大值,从该初始量化最大值开始,按预设方式递减,得到多个数值,从多个数值中,确定使得重构误差最小的数值作为第一量化最大值,最终,根据该量化最大值及预设比特数,对激活量进行量化。由于在确定量化最大值的过程中,始终保证确定的量化最大值能够使得重构误差最小,而重构误差为激活量与量化结果之间的误差,因此,能够有效的减少量化带来的误差。

对于计算机设备以及计算机可读存储介质实施例而言,由于其所涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1