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

文档序号:17239155发布日期:2019-03-30 08:30阅读:195来源:国知局
一种基于深度神经网络的激活量量化方法及装置与流程

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



背景技术:

深度神经网络作为机器学习研究中的一个新兴领域,通过模仿人脑的机制来解析数据,是一种通过建立和模拟人脑进行分析学习的智能模型。目前,深度神经网络,如卷积神经网络、循环神经网络、长短期记忆网络等已在目标检测与分割、行为检测与识别、语音识别等方面得到了很好的应用。但是,由于深度神经网络中每个网络层都有大量的数据参与运算,具有高度的计算复杂度,需要强大的带宽资源。

针对上述问题,相关的深度神经网络中,提出了对深度神经网络的激活量量化压缩到低比特数的思想,通过量化将大比特数的浮点数据量化为较低比特数的定点数据,由于量化后的定点数据具有较低的比特数,使得参与运算的数据量得以降低,从而较少深度神经网络运行的计算复杂度及平台带宽的需求。

上述相关的深度神经网络中,针对深度神经网络中每个网络层的激活量进行量化的方法,用数学符号可以归纳为qi=quantizationl(ai),其中,quantizationl(ai)为量化第l个网络层的激活量的量化器,ai代表每个网络层中原始的激活量的元素值,qi为量化后的元素值。根据上述数学符号,直接对每个网络层的激活量进行全局量化,但是,由于激活量中元素之间的差异较大,如果直接全局量化,就是采用相同的量化参数对该层激活量中所有元素进行量化,这会导致较大的量化误差。



技术实现要素:

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

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

获取深度神经网络中网络层的激活量,其中,所述激活量中的元素按高度、宽度及深度三个方向排布;

沿所述激活量的深度方向,将所述激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组;

分别采用通过量化公式得到的各切片组对应的量化参数,对各切片组进行量化。

可选的,所述沿所述激活量的深度方向,将所述激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组,包括:

沿所述激活量的深度方向,按照预设深度对所述激活量划分,得到多个等深度的切片组。

可选的,所述沿所述激活量的深度方向,将所述激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组,包括:

获取所述激活量中每个深度的元素特征;

将元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组。

可选的,所述量化参数包括:量化步长;

所述分别采用通过量化公式得到的各切片组对应的量化参数,对各切片组进行量化,包括:

根据各切片组对应的预设量化最大值、预设量化最小值及预设比特数,通过量化公式,得到各切片组的量化步长,其中,所述量化公式为:

所述step为量化步长,所述a为预设量化最大值,所述b为预设比特数;

分别采用各切片组的量化步长,对各切片组进行量化。

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

获取模块,用于获取深度神经网络中网络层的激活量,其中,所述激活量中的元素按高度、宽度及深度三个方向排布;

划分模块,用于沿所述激活量的深度方向,将所述激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组;

量化模块,用于分别采用通过量化公式得到的各切片组对应的量化参数,对各切片组进行量化。

可选的,所述划分模块,具体用于:

沿所述激活量的深度方向,按照预设深度对所述激活量划分,得到多个等深度的切片组。

可选的,所述划分模块,具体用于:

获取所述激活量中每个深度的元素特征;

将元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组。

可选的,所述量化参数包括:量化步长;

所述量化模块,具体用于:

根据各切片组对应的预设量化最大值、预设量化最小值及预设比特数,通过量化公式,得到各切片组的量化步长,其中,所述量化公式为:

所述step为量化步长,所述a为预设量化最大值,所述b为预设比特数;

分别采用各切片组的量化步长,对各切片组进行量化。

第三方面,本发明实施例提供了一种计算机设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;

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

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

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

本发明实施例提供的一种基于深度神经网络的激活量量化方法及装置,针对深度神经网络中的各网络层,通过沿网络层的激活量的深度方向,将激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组,然后利用量化方法对各切片组进行量化,从而实现对激活量的量化。由于激活量沿深度方向的元素数值之间差异较大,通过对激活量沿深度方向的划分,使得同一个切片组中的元素数值差异较小,并且每个切片组有各自的量化步长,也就是说每个切片组的量化方式不同,从而可以减小采用相同的量化参数对激活量中所有元素进行量化所导致的量化误差。

附图说明

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

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

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

图3为本发明实施例的深度神经网络中网络层的激活量分组量化示意图;

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

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

具体实施方式

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

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

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

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

s101,获取深度神经网络中网络层的激活量。

其中,激活量中的元素按高度、宽度及深度三个方向排布。深度神经网络中的激活量为卷积convolution层的输入/输出,或者內积innerproduct层的输入/输出,或者线性修正relu层的输入/输出,或者批规范化batchnormalization层的输入/输出,或者缩放scale层的输入/输出,或者融合concat层的输入/输出等,也就是深度神经网络中层与层之间传输的数据流,如图2所示,激活量a的大小为w×h×o。dnn(deepneuralnetwork,深度神经网络)为一个较为宽泛的数据处理方法,具体的,dnn可以为cnn(convolutionalneuralnetwork,卷积神经网络)、rnn(recurrentneuralnetwork,循环神经网络)、lstm(longshorttermmemory,长短期记忆网络)等数据处理方法中的任意一种。

s102,沿激活量的深度方向,将激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组。

考虑到激活量在深度方向的元素数值大小差异较大,如果直接采用相同的量化参数对激活量进行量化,对导致较大的量化误差,因此,将激活量沿深度方向进行划分,得到多个切片组。对激活量的划分,可以采用等深度的方式划分,也可以通过统计元素特征进行划分。例如,由于相邻深度的元素数值间的差异往往较小,因此,可以采用等深度的方式划分,划分得到的每个切片组的深度能够被激活量的总深度整除;通过统计元素特征进行划分,可以是按照激活量的深度方向上每个深度的元素数值的最大值或者均值或者方差等度量标准,将元素特征之间的差异小于预设阈值的深度划分为同一切片组。

s103,分别采用通过量化公式得到的各切片组对应的量化参数,对各切片组进行量化。

基于划分得到的多个切片组,对各切片组分别通过量化公式计算得到各自对应的量化参数,量化参数为对切片组进行量化所使用的参数,可以为进行量化的量化步长,也可以为基于切片组中的元素数值及期望量化后得到的量化结果的预设比特数所得到的量化器。例如,预设比特数可以为1~32范围内的任意整数值,量化器的实现可以采用任意合理的量化器,例如公式(1)所示的均匀量化器:

其中,step为量化步长,minv为切片组对应的预设量化最小值,maxv为切片组对应的预设量化最大值,ai为切片组中各元素,clip函数如公式(2)所示。

应用本实施例,针对深度神经网络中的各网络层,通过沿网络层的激活量的深度方向,将激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组,然后利用量化方法对各切片组进行量化,从而实现对激活量的量化。由于激活量沿深度方向的元素数值之间差异较大,通过对激活量沿深度方向的划分,使得同一个切片组中的元素数值差异较小,并且每个切片组有各自的量化步长,也就是说每个切片组的量化方式不同,从而可以减小采用相同的量化参数对激活量中所有元素进行量化所导致的量化误差。

为了便于理解,下面结合具体实例,对本发明实施例所提供的基于深度神经网络的激活量量化方法进行介绍。

如图3所示,为本发明实施例的深度神经网络中各网络层的激活量分组量化示意图。具体的,量化方法的步骤包括:

第一步,沿着网络层激活量的深度方向,按照预设深度对激活量划分,得到多个等深度的切片组。

由于网络层的激活量中,相邻深度的元素特征之间的差异较小,因此,在进行切片组的划分的过程中,可以将相邻的深度划分为同一个切片组。并且,为了保证数据的一致性,划分得到的每个切片组的深度相同,可以采用等深度的方式划分,也就是划分得到的每个切片组的预设深度能够被激活量的总深度整除。如图3所示,激活量a经过n等分后得到n个深度相同的切片组。

第二步,提取各切片组中的元素绝对值的最大值,并基于该最大值确定各切片组对应的预设量化最大值,设定预设量化最小值为0。

针对各切片组,第n个切片组对应的预设量化最大值为an=2m,其中,为大于或等于表达式的最小整数,为第n个切片组中的元素绝对值的最大值,为第n个切片组中的各元素。

第三步,根据各切片组对应的预设量化最大值、预设量化最小值及预设比特数,通过量化公式,得到各切片组的量化步长。

其中,量化公式如公式(3)所示,

stepn为第n个切片组的量化步长,an为第n个切片组对应的预设量化最大值,b为预设比特数;对于每个切片组而言,预设比特数b相等,为预先设置的、期望量化后得到的数值的比特数。例如,预设比特数b可以为1~32范围中的任意整数值。由于每个切片组对应的预设量化最大值不同,则计算得到的量化步长也不相等,即每个切片组各自采用各自的量化参数进行量化。

第四步,分别基于各切片组的量化步长,对各切片组进行量化。

采用本方案,针对深度神经网络中的各网络层,通过沿网络层的激活量的深度方向,将激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组,然后利用量化方法对各切片组进行量化,从而实现对激活量的量化。由于激活量沿深度方向的元素数值之间差异较大,通过对激活量沿深度方向的划分,使得同一个切片组中的元素数值差异较小,并且每个切片组有各自的量化步长,也就是说每个切片组的量化方式不同,从而可以减小采用相同的量化参数对激活量中所有元素进行量化所导致的量化误差。

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

获取模块410,用于获取深度神经网络中网络层的激活量,其中,所述激活量中的元素按高度、宽度及深度三个方向排布;

划分模块420,用于沿所述激活量的深度方向,将所述激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组;

量化模块430,用于分别采用通过量化公式得到的各切片组对应的量化参数,对各切片组进行量化。

可选的,所述划分模块420,具体可以用于:

沿所述激活量的深度方向,按照预设深度对所述激活量划分,得到多个等深度的切片组。

可选的,所述划分模块420,具体还可以用于:

获取所述激活量中每个深度的元素特征;

将元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组。

可选的,所述量化参数包括:量化步长;

所述量化模块430,具体可以用于:

根据各切片组对应的预设量化最大值、预设量化最小值及预设比特数,通过量化公式,得到各切片组的量化步长,其中,所述量化公式为:

所述step为量化步长,所述a为预设量化最大值,所述b为预设比特数;

分别采用各切片组的量化步长,对各切片组进行量化。

应用本实施例,针对深度神经网络中的各网络层,通过沿网络层的激活量的深度方向,将激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组,然后利用量化方法对各切片组进行量化,从而实现对激活量的量化。由于激活量沿深度方向的元素数值之间差异较大,通过对激活量沿深度方向的划分,使得同一个切片组中的元素数值差异较小,并且每个切片组有各自的量化步长,也就是说每个切片组的量化方式不同,从而可以减小采用相同的量化参数对激活量中所有元素进行量化所导致的量化误差。

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

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

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

获取深度神经网络中网络层的激活量,其中,所述激活量中的元素按高度、宽度及深度三个方向排布;

沿所述激活量的深度方向,将所述激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组;

分别采用通过量化公式得到的各切片组对应的量化参数,对各切片组进行量化。

可选的,所述处理器510在实现沿所述激活量的深度方向,将所述激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组的步骤中,具体可以实现:

沿所述激活量的深度方向,按照预设深度对所述激活量划分,得到多个等深度的切片组。

可选的,所述处理器510在实现沿所述激活量的深度方向,将所述激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组的步骤中,具体还可以实现:

获取所述激活量中每个深度的元素特征;

将元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组。

可选的,所述量化参数包括:量化步长;

所述处理器510在实现分别采用通过量化公式得到的各切片组对应的量化参数,对各切片组进行量化的步骤中,具体可以实现:

根据各切片组对应的预设量化最大值、预设量化最小值及预设比特数,通过量化公式,得到各切片组的量化步长,其中,所述量化公式为:

所述step为量化步长,所述a为预设量化最大值,所述b为预设比特数;

分别采用各切片组的量化步长,对各切片组进行量化。

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

通信接口用于上述电子设备与其他设备之间的通信。

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

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

本实施例中,该计算机设备的处理器通过读取存储器中存储的计算机程序,并通过运行该计算机程序,能够实现:针对深度神经网络中的各网络层,通过沿网络层的激活量的深度方向,将激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组,然后利用量化方法对各切片组进行量化,从而实现对激活量的量化。由于激活量沿深度方向的元素数值之间差异较大,通过对激活量沿深度方向的划分,使得同一个切片组中的元素数值差异较小,并且每个切片组有各自的量化步长,也就是说每个切片组的量化方式不同,从而可以减小采用相同的量化参数对激活量中所有元素进行量化所导致的量化误差。

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

获取深度神经网络中网络层的激活量,其中,所述激活量中的元素按高度、宽度及深度三个方向排布;

沿所述激活量的深度方向,将所述激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组;

分别采用通过量化公式得到的各切片组对应的量化参数,对各切片组进行量化。

可选的,所述处理器具体可以实现:

沿所述激活量的深度方向,按照预设深度对所述激活量划分,得到多个等深度的切片组。

可选的,所述处理器具体可以实现:

获取所述激活量中每个深度的元素特征;

将元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组。

可选的,所述量化参数包括:量化步长;

所述处理器具体可以实现:

根据各切片组对应的预设量化最大值、预设量化最小值及预设比特数,通过量化公式,得到各切片组的量化步长,其中,所述量化公式为:

所述step为量化步长,所述a为预设量化最大值,所述b为预设比特数;

分别采用各切片组的量化步长,对各切片组进行量化。

本实施例中,计算机可读存储介质存储有在运行时执行本申请实施例所提供的基于深度神经网络的激活量量化方法的应用程序,因此能够实现:针对深度神经网络中的各网络层,通过沿网络层的激活量的深度方向,将激活量中元素特征间的差异小于预设阈值的深度划分为同一切片组,得到多个切片组,然后利用量化方法对各切片组进行量化,从而实现对激活量的量化。由于激活量沿深度方向的元素数值之间差异较大,通过对激活量沿深度方向的划分,使得同一个切片组中的元素数值差异较小,并且每个切片组有各自的量化步长,也就是说每个切片组的量化方式不同,从而可以减小采用相同的量化参数对激活量中所有元素进行量化所导致的量化误差。

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

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

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

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

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