一种基于卷积神经网络架构的数据处理方法及装置

文档序号:1146095 发布日期:2020-09-11 浏览:24次 >En<

阅读说明:本技术 一种基于卷积神经网络架构的数据处理方法及装置 (Data processing method and device based on convolutional neural network architecture ) 是由 王哲 仇晓颖 韩彬 于 2019-05-05 设计创作,主要内容包括:一种基于卷积神经网络架构的数据处理方法及装置。其中,方法包括:若当前运算层的输入为一组定点数据时,根据所述当前运算层的运算规则对该组定点数据进行处理后生成当前运算层的输出数据;若当前运算层的输入为n组定点数据时,对所述n组定点数据进行调整,以使得所述n组数据中的每一组数据的量化参数相同,根据所述当前运算层的运算规则对调整后的n组数据进行处理后生成当前运算层的输出数据;其中,n≥2;所述量化参数包括定点数据的总位宽、整数部分位宽和小数部分位宽;当完成所有运算层的运算时,输出所述待测数据的预测结果。如此,可以提高定点化后的卷积神经网络模型的计算准确度。(A data processing method and device based on a convolutional neural network architecture. The method comprises the following steps: if the input of the current operation layer is a set of fixed point data, the set of fixed point data is processed according to the operation rule of the current operation layer to generate output data of the current operation layer; if the input of the current operation layer is n groups of fixed point data, adjusting the n groups of fixed point data to ensure that the quantization parameters of each group of data in the n groups of data are the same, and generating output data of the current operation layer after processing the adjusted n groups of data according to the operation rule of the current operation layer; wherein n is more than or equal to 2; the quantization parameters comprise the total bit width, the integer part bit width and the decimal part bit width of the fixed point data; and when the operation of all the operation layers is finished, outputting the prediction result of the data to be detected. Thus, the calculation accuracy of the fixed-point convolutional neural network model can be improved.)

一种基于卷积神经网络架构的数据处理方法及装置

技术领域

本申请涉及数据处理技术领域,具体而言,涉及一种基于卷积神经网络架构的数据处理方法及装置。

背景技术

现有的对卷积神经网络进行定点化的方法中,只是将该卷积神经网络中运算相对比较密集的卷积层和全连接层进行了定点化,而对于卷积神经网络的运算量相对比较少的中间结构不进行定点化,进而在使用该方法进行定点化后的卷积神经网络进行数据处理时,需要进行将浮点数据转换成定点数据,以及定点数据转换成浮点数据的操作;该浮点数据和定点数据的互相转换过程,影响了计算效率,并且损失了数据处理的准确度。

发明内容

本发明提供一种基于卷积神经网络架构的数据处理方法及装置,以提高定点化后的卷积神经网络模型的数据处理的准确度。

第一方面,本发明实施例提供了一种基于卷积神经网络架构的数据处理方法,其特征在于,包括:

基于完成训练的卷积神经网络模型,接收输入的待测数据;其中,所述神经网络模型包括若干依次连接的运算层,每一所述运算层根据上一运算层的输出数据进行运算后输出下一运算层的输入数据;所述卷积神经网络模型的参数为定点数据,所述待测数据为定点数据;

若当前运算层的输入为一组定点数据时,根据所述当前运算层的运算规则对该组定点数据进行处理后生成当前运算层的输出数据;

若当前运算层的输入为n组定点数据时,对所述n组定点数据进行调整,以使得所述n组数据中的每一组数据的量化参数相同,根据所述当前运算层的运算规则对调整后的n组数据进行处理后生成当前运算层的输出数据;其中,n≥2;所述量化参数包括定点数据的总位宽、整数部分位宽和小数部分位宽;

当完成所有运算层的运算时,输出所述待测数据的预测结果。

第二方面本发明实施例提供了一种数据处理装置,其特征在于,至少包括存储器和处理器;所述存储器通过通信总线和所述处理器连接,用于存储所述处理器可执行的计算机指令;所述处理器用于从所述存储器读取计算机指令以实现基于卷积神经网络架构的数据处理方法,所述方法包括:

基于完成训练的卷积神经网络模型,接收输入的待测数据;其中,所述神经网络模型包括若干依次连接的运算层,每一所述运算层根据上一运算层的输出数据进行运算后输出下一运算层的输入数据;所述卷积神经网络模型的参数为定点数据,所述待测数据为定点数据;

若当前运算层的输入为一组定点数据时,根据所述当前运算层的运算规则对该组定点数据进行处理后生成当前运算层的输出数据;

若当前运算层的输入为n组定点数据时,对所述n组定点数据进行调整,以使得所述n组数据中的每一组数据的量化参数相同,根据所述当前运算层的运算规则对调整后的n组数据进行处理后生成当前运算层的输出数据;其中,n≥2;所述量化参数包括定点数据的总位宽、整数部分位宽和小数部分位宽;

当完成所有运算层的运算时,输出所述待测数据的预测结果。

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

本发明实施例所提供的一种基于卷积神经网络架构的数据处理方法及装置,针对于卷积神经网络架构中输入为n组定点数据的运算层,对该n组定点数据进行调整,以使得n组数据的量化参数相同,然后根据当前运算层的运算规则对调整后的n组数据进行处理后生成当前运算层的输出数据;相对于现有技术中,在对包含有多组输入的运算层采用浮点数据进行计算的方式相比,节省在该运算层进行运算时进行浮点数据和定点数据之间的转换过程,提高了卷积神经网络架构数据处理的准确度。

附图说明

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

图1是一种包括残差结构的卷积神经网络的示意图;

图2是一种包括级联结构卷积神经网络的示意图;

图3是一种将级联结构和残差结构进行嵌套使用的卷积神经网络的示意图;

图4是本发明一实施例提供的一种基于卷积神经网络架构的数据处理方法的流程示意图;

图5是本发明一实施例提供的一种对n组定点数据进行调整的流程示意图;

图6是本发明一实施例提供的Eltwise层对输入的定点数据进行调整的流程示意图;

图7是本发明一实施例提供的另一种对n组定点数据进行调整的流程示意图;

图8是本发明一实施例提供的Concat层对输入的定点数据进行调整的流程示意图;

图9是本发明一实施例提供的对卷积层、BatchNorm层和Scale层进行折叠处理之前的计算流程示意图;

图10是本发明一实施例提供的对卷积层、BatchNorm层和Scale层进行折叠处理之后得到的新的卷积层的计算流程示意图;

图11是本发明一实施例提供的权重数值偏离总体分布范围的示意图;

图12是本发明一实施例提供的一种基于卷积神经网络架构的数据处理装置的结构示意图。

具体实施方式

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

卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。

现有主流的卷积神经网络的结构中包括多个运算层,例如卷积层和全连接层。并且为了加速收敛,在卷积层和全连接层内均加入批归一化层(Batch Normalization,简称BN)。卷积神经网络的各运算层层可以对上一层输出的特征图进行处理(例如,卷积、池化、激活或全连接处理)得到当前层输出的特征图。

现有技术中,为了解决网络加深而导致性能退化的问题,可在卷积神经网络中加入残差结构。例如,如图1所示的网络结构,残差单元的输出由多个卷积层级联的输出元素间在eltwise相加(保证卷积层输出和输入元素维度相同),再经过Relu激活后得到。由深度网络和浅层网络进行相加,可以保证在反向传播过程中不会出现梯度消失的问题,使得随着网络加深,准确率不下降。

另外,卷积神经网络架构中也可包括级联结构,先利用较小的神经网络进行粗检测,再将各个神经网络输出的特征通道级联后再进行预测。例如,如图2所示的网络结构。

某些卷积神经网络也可将级联结构和残差结构进行嵌套使用,以保证网络的鲁棒性的同时提高网络的运算速度。例如,如图3所示的嵌套网络结构。

卷积神经网络(Convolutional Neural Network,CNN)被应用于许多个领域中,但是伴随着分类、检测准确率的提高,CNN的结构也越来越复杂,需要的计算量和存储量也越来越大,进一步的对硬件设备的计算能力和存储能力的要求也越来越高,以至于在一些存储和计算能力有限的移动设备上无法进行卷积神经网络的运算,进而限制了卷积神经网络在实际中的应用。

因此,如何在不影响网络卷积神经网络模型的计算准确率的前提下,减小卷积神经网络模型的运算规模,对加快硬件设备的计算处理速度和节省存储资源以及扩大卷积神经网络的应用范围,具有重要的意义。

现有技术中,为减小卷积神经网络的计算规模,有一种方式是将该神经网络进行定点化处理,该定点化处理是将卷积神经网络模型由浮点参数转换为定点参数,由于浮点参数的小数位可随机变化,其可表达的小数范围较定点参数更广,相应的浮点参数的运算量也非常庞大,在定点化卷积神经网络后,通过使用更小位数的定点参数代替原来的32位浮点参数可以有效减小卷积神经网络的计算规模。

现有的定点化方法中,定点值的数据格式可以用BW(Bit Width)表示总位宽、IL(Integer Length)表示整数部分位宽以及FL(Fraction Length)表示小数部分位宽,若将符号位也归入IL内,则BW、IL、FL三者的关系式为:BW=IL+FL;在实际中使用三者中的两个就可以表示一组量化参数。

假设存在一数据组S,预先设定好定点值所需的总位宽BW后,则量化参数IL和FL的计算,可以参照如下公式(1)和公式(2):

IL=ceil((log2(max(s))+1) (1)

FL=BW-IL (2)

进而,在给定一组数据S和定点值所需的总位宽BW以后,可以根据上述公式(1)和(2)计算得到该组数据S对应的量化参数FL;在已知一组量化参数BW和FL后,在该组量化参数下,数据组S中的实际值r与该实际值的定点值q之间的映射关系,如下公式(3):

其中,rmax和rmin分别表示该组量化参数可以表达的实际值的最大值与最小值,rmax和rmin可分别通过以下公式(4)、(5)计算得到:

rmax=(2BW-1-1)*2-FL (4)

rmin=-2BW-1*2-FL (5)

进而,在给定一组数据和该组数据的定点值所需的总位宽BW以后,可以计算得到该组数据的量化参数,在确定该组数据的量化参数以后,可以按照上述的公式(3)、公式(4)和公式(5)对该组数据中包含的各实际值r进行转换成定点值,该过程为定点化的过程。

本发明实施例中,应用上述的定点化的方法进行将实际值转换成定点值。

考虑到现有的对卷积神经网络进行定点化的方法中,只是将该卷积神经网络中运算相对比较密集的卷积层和全连接层进行了定点化,而对于卷积神经网络的运算量相对比较少的中间结构比如级联结构和残差结构,不进行定点化,在使用该方法进行定点化后的卷积神经网络模型进行数据处理时,由于卷积层和全连接层的输入、输出数据及参数数据为定点数据,而未定点化的其他结构层的输入、输出数据及参数数据为浮点数据,于是便导致了在数据处理过程中,需要将卷积层与全连接层的定点数据转化为浮点数据,与未定点化的浮点数据进行运算,再将浮点结果转为定点数据;该浮点数据和定点数据的互相转换过程,影响了计算效率,并且损失了精确度。基于此,本发明实施例提供了一种基于卷积神经网络架构的数据处理方法及装置。

图4为本发明实施例提供的一种基于卷积神经网络架构的数据处理方法的流程示意图。参照图1所示,该方法包括如下步骤:

S1、基于完成训练的卷积神经网络模型,接收输入的待测数据;其中,所述神经网络模型包括若干依次连接的运算层,每一所述运算层根据上一运算层的输出数据进行运算后输出下一运算层的输入数据;所述卷积神经网络模型的参数为定点数据,所述待测数据为定点数据。

本实施例中,所述卷积神经网络模型在完成训练前为浮点模型,即各个参数均为浮点数据。则在所述卷积神经网络模型在完成训练前,需要基于该浮点模型确定各运算层的输入数据和输出数据的量化参数。具体地,将数据集或者样本输入到浮点模型中,根据该卷积神经网络的浮点模型的各结构层的输入数据和输出数据按照上述的公式(1)和公式(2)可以计算各组数据对应的量化参数。另外,输入数据和输出数据的量化参数确定还可考虑异常点的影响,具体可参考以下描述。在得到输入数据和输出数据的量化参数后,可将神经网络模型的参数转换成定点数据,由此生成完成训练的神经网络模型。在将待测数据输入完成训练的神经网络模型前,需将将浮点的待测数据进行定点化,或将定点的待测数据根据需要进行移位调整。

S2、若当前运算层的输入为一组定点数据时,根据所述当前运算层的运算规则对该组定点数据进行处理后生成当前运算层的输出数据。

本实施例中,针对于输入为一组定点数据的运算层,可以直接根据该运算层对应的运算规则对该组定点数据进行处理,得到当前运算层的输出数据。例如,卷积层、池化层以及全连接层等,其输入均为一组定点数据。需要说明的是,不同的运算层对应不同的运算规则,例如,卷积层对应的运算规则为卷积运算,池化层对应的运算规则为最大值下采样、平均值下采样等。

S3、若当前运算层的输入为n组定点数据时,对所述n组定点数据进行调整,以使得所述n组定点数据的量化参数相同,根据所述当前运算层的运算规则对调整后的n组定点数据进行处理后,生成当前运算层的输出数据;其中,n≥2;所述量化参数包括定点数据的总位宽、整数部分位宽和小数部分位宽。

同样的,步骤S3中的运算规则和运算层相对应。例如,当运算层为Eltwise层时,其运算规则为按元素乘积、按元素求和或保存元素最大者。其中,按元素求和为Eltwise层默认的运算规则;当运算层为concat层时,其运算规则为将两个及以上的特征图按照在channel或num维度上进行拼接。

针对于包含有多组输入数据的运算层,由于该多组输入数据分别包含的数据是不同的,因此根据上述方法确定的多组输入数据之间的量化参数也不相同;本实施例中在数据处理过程中,若当前的运算层的输入包含有n组定点数据,首先对该n组定点数据进行调整,使该n组定点数据具有相同的量化参数,以便于根据该结构层的运算规则对该n组定点数据进行运算处理。

S4、当完成所有运算层的运算时,输出所述待测数据的预测结果。

训练完成后的卷积神经网络用于对待测数据进行预测,本实施例中应用定点化后的卷积神经网络模型对待测数据进行预测,该预测数据为定点数据,最终得到的预测结果也为定点数据。

本发明实施例中,对于具有多组输入的运算单元来说,其运算量较少,通过量化参数的统一化,可以实现了使用定点数据进行卷积神经网络中的具有多个输入的运算层的运算,无需进行浮点数据与定点数据之间的转换,从而避免现有技术中对于运算量较少的运算单元不能实现纯定点化化的缺陷,具有数据处理效率高和准确度高的积极效果。

本发明一实施例中,若当前运算层为残差结构,该当前运算层的输入包括n组定点数据;参照图5所示,上述步骤S3中,所述对所述n组定点数据进行调整,以使得所述n组数据的量化参数相同,具体包括如下步骤S31-S32:

S31、根据所述n组定点数据中每一组定点数据的小数部分位宽,获取所述n组定点数据中最小的小数部分位宽作为参考位宽。

S32、以所述参考位宽为基准,对所述n组定点数据中除具有所述参考位宽的一组定点数据外的n-1组定点数据进行移位、round和饱和处理,以使得所述n组定点数据的小数部分位宽均相同。

示例性的,上述的残差结构通过Eltwise层实现,假设Eltwise层输入的定点数据为Xi,量化参数为[BWi,FLi],输出的定点数据为Y,量化参数为[BWy,FLy],在残差运算前对该组输入的定点数据按照如下公式进行调整:

其中,FLin_min为所述n组定点数据中最小的FL,

Figure BDA0002592578550000092

为Xi调整后的定点数据。进而,上述的移位操作的移动位数(FLin_min-FLi)是由n组定点数据中最小的小数部分位宽FL与本定点数据Xi的小数部分位宽FL的差确定。上述在移位之后,分别进行round和饱和处理,得到调整后的定点数据。

图6为本发明一实施例给出的Eltwise层对输入的定点数据进行调整的示意图。参照图6所示,若将一组定点数据(该定点数据的量化参数为FLin)转换成另外一组定点定点数据的量化参数FLout下的定点值的操作(该操作包括移位、round和饱和处理)称为Rescale(FLin,FLout),则在该Eltwise层的输入包含有两组定点数据X1、X2的情况下,分别对该两组定点数据X1、X2进行Rescale(FL1,FLin-min)、Rescale(FL2,FLin-min)处理后,执行该Eltwise层的运算,然后对运算得到的结果数据进行Rescale(FLin-min,FLy)处理后输出。

本发明一实施例中,若当前运算层为级联结构时,所述当前运算层的输入为包括n组定点数据;参照图7所示,本实施例中上述步骤S3中,对所述n组定点数据进行调整,以使得所述n组数据中的每一组数据的量化参数相同,具体包括步骤S31-S32:

S31’、根据所述当前运算层的输出量化参数,获取所述输出量化参数的小数部分位宽作为参考位宽。

S32’、以所述参考位宽为基准,对所述n组定点数据进行移位、round和饱和处理,以使得所述n组定点数据的小数部分位宽均相同。

示例性的,本实施例中,假设Concat层的输入的定点数据为Xi,量化参数为[BWi,FLi],输出的定点数据为Y,量化参数为[BWy,FLy],在相应运算前对每组输入的定点值按照如下公式(7)进行转换:

Figure BDA0002592578550000101

其中,上述的

Figure BDA0002592578550000102

为Xi调整后的定点数据,上述的移位操作的移动位数由输出数据的量化参数FLy和本组定点数据的量化参数FLi的差确定。

本实施例中,在将n组定点数据进行调整具有相同的量化参数,并且该量化参数是与Concat层的输出的定点数据的量化参数相同,因此将调整后的n组定点数据直接进行级联运算后,得到输出数据Y。

示例性的,参照图8所示,该Concat层的输入包含有两组定点数据X1、X2的情况下,分别对该两组定点数据X1、X2进行Rescale(FL1,FLy)、Rescale(FL2,FLy)处理后,执行该Concat层的运算,然后对运算得到的结果数据进行输出。

本发明一实施例中,若当前运算层包括卷积层和批归一化层;所述批归一化包括BatchNorm层和Scale层;在上述接收输入的待测数据前,所述方法还包括如下步骤S311-S312:

S311、将所述卷积层、BatchNorm层和Scale层进行折叠处理以形成一新的卷积层。

本实施例中,可以是根据以下公式对所述卷积层、BatchNorm层和Scale层进行折叠处理,得到折叠处理后的新的卷积层的参数wfold和bfold

Figure BDA0002592578550000111

Figure BDA0002592578550000112

其中,v为所述BatchNorm层的方差参数,μ为所述BatchNorm层的均值参数,β为所述Scale层的平移参数,s为所述Scale层的缩放参数,eps为默认值,wfold为新的卷积层的权重参数,w为进行折叠处理前的卷积层的权重参数,bfold为新的卷积层的偏置参数。

S312、对所述新的卷积层的参数进行定点化。

参照图9所示,卷积层包含的参数有权重参数w和偏置参数b,在该卷积层使用了批归一化层时,该卷积层的偏置参数b为0;所述BatchNorm包含的参数有方差v和均值μ;Scale层包含的参数有缩放参数s和平移参数β;在未将卷积层、BatchNorm层和Scale层进行折叠处理时,需要将卷积层、BatchNorm层和Scale层分别包含的参数数据分别进行定点化。

进一步的,参照图10所示,在将卷积层、BatchNorm层和Scale层进行折叠处理后,只需对折叠处理后得到的参数数据wfold和bfold进行定点化。

本发明实施例中对包括卷积层和批归一化层的运算层,采用了将卷积层和批归一化处理层进行折叠处理后的新的卷积层的参数数据进行定点化,相对于分别将卷积层、BatchNorm层和Scale层的参数分别进行定点化,降低了定点化处理的复杂度,并且提高了模型定点化后的精确度。

本发明另一实施例中,若所述当前运算层包括全连接层和批归一化层;所述批归一化层包括BatchNorm层和Scale层;在所述接收输入的待测数据前,所述方法还包括如下步骤S311’-S312’:

步骤S311’、将所述全连接层、BatchNorm层和Scale层进行折叠处理以形成一新的卷积层。

根据以下公式对所述卷积层、BatchNorm层和Scale层进行折叠处理,得到所述新的全连接层的参数:

Figure BDA0002592578550000122

其中,v为所述BatchNorm层的方差参数,μ为所述BatchNorm层的均值参数,β为所述Scale层的平移参数,s为所述Scale层的缩放参数,eps为默认值,wfold为新的全连接层的权重参数,w为进行折叠处理前的全连接层的权重参数,bfold为新的全连接层的偏置参数,b为进行折叠处理前的全连接层的偏置参数。

步骤S312’、对所述新的卷积层的参数进行定点化。

本发明实施例中对包括全连接层和批归一化层的运算层,采用了将全连接层和批归一化处理层进行折叠处理后的新的卷积层的参数数据进行定点化,相对于分别将全连接层、BatchNorm层和Scale层的参数分别进行定点化,也降低了定点化处理的复杂度,并且提高了模型定点化后的精确度。

可选的,上述实施例中,由于折叠处理后得到的权重数据和偏置数据之间的差异变大,因此在对转换后得到的权重数据和偏置数据计算量化参数时,需要将权重数据和偏置数据分别进行分组。

在对一组数据进行计算量化参数时,现有技术中的都是采用该组数据的绝对值的最大值进行计算IL,但是当该组数据存在个别偏离总体分布的异常值时,会影响量化参数IL的计算,导致最终的定点化结果变差。例如,如图11所示,横坐标为权重值,纵坐标为分布个数,则由此可知对于一神经网络结构中的卷积层的权重分布,存在一部分权重数值所占的比例非常小,也就是这些个别的权重数值偏离了总体的范围。

本发明一实施例中,为避免异常值的存在影响权重数据的量化参数的计算,上述在接收输入的待测数据前,通过以下方法进行计算量化参数,所述方法包括:

S11、获取第一数据组的绝对值的最大值,根据所述最大值计算初始整数部分位宽IL0

示例性的,上述的第一数据组可为权重数据组,例如卷积层的权重数据和全连接层的权重数据。另外,所述第一数据组可为各个运算层的输入数据和输出数据。

S12、计算ILi+1=ILi-1,其中,i≥0;并计算ILi+1能表示的最大浮点值rmax和最小浮点值rmin

S13、根据所述初始整数部分位宽IL0、最大浮点值rmax和最小浮点值rmin获取所述第一数据组的量化参数。

在一实施例中,所述根据所述初始整数部分位宽IL0、最大浮点值rmax和最小浮点值rmin获取所述第一数据组的量化参数具体为:

S131、根据所述初始整数部分位宽IL0,对所述第一数据组中每一数据进行定点化处理和反定点化处理后生成的浮点值r’;

S132、以所述rmin作为阈值下限以及所述rmax作为阈值上线生成阈值范围[rmin,rmax];

S133、获取所述第一数据组中超出[rmin,rmax]的若干数据生成第二数据组,根据每一所述数据基于IL0进行定点化处理和反定点化处理后生成的浮点值r’、rmax和rmin计算所述第二数据组中每一数据的饱和损失,将所述第二数据组中每一数据的饱和损失进行累加获得第一累加值ST;

在步骤S133中,当所述r’为正数时,通过计算r’与r_max的差的绝对值获得所述数据的饱和损失;当所述r’为负数时,计算r’与r_min的差的绝对值作为所述数据的饱和损失。需要说明的是,步骤S12中的定点化为将浮点数据转化为定点数据的过程,反定点化为将定点数据再转化为浮点数据的过程,两者合并可称为sim-quant(simulate-quantize)过程。

S134、获取所述第一数据组中在[rmin,rmax]内的若干数据生成第三数据组,计算所述第三数据组中每一数据的增益,将所述第三数据组中每一数据的增益进行累加获得第二累加值G;

在步骤S134中,分别获取所述数据在IL0下的量化损失L1以及在ILi下的量化损失L2,计算L1和L2的差的绝对值作为所述数据的增益;其中,量化损失为任一数据进行定点化和反定点化后与原始数据的差。例如,假设一浮点数据原始值为r,以BW和IL0作为量化参数对其进行定点化处理生成量化值q0,对量化值q0进行反定点化处理生成浮点值r0,则IL0下的量化损失为r0-r,即量化引入的数值损失。同理,以BW和LL1作为量化参数对其进行定点化处理生成量化值q1,对量化值q1进行反定点化处理生成浮点值r1,则IL1下的量化损失为r1-r。

S135、根据所述第一累加值ST和所述第二累加值G获取所述第一数据组的量化参数。

步骤S135中,当G>K1*ST,重新计算ILi+1=ILi-1,以更新ILi+1能表示的最大浮点值rmax和最小浮点值rmin,并继续更新第一累加值ST和第二累加值G;而当G≤K1*ST时,以ILi作为所述第一数据组的量化参数。例如,当在IL2下G>K1*ST时,继续计算IL3下的rmax和rmin,并更新第一累加值ST和第二累加值G,获取第一累加值ST和第二累加值G的比例关系,这时,当在IL3下满足G≤K1*ST时,以IL2作为所述第一数据组的量化参数。在本发明实施例中,上述K1为设定值,用来描述饱和损失与增益对整组权重数据影响程度的差异。可选的,设置K1的取值在100到1000之间,此时会得到较好的量化结果。

本发明实施例中,可采用步骤S131-S135计算权重的量化参数。

在另一优选实施例中,所述根据所述初始整数部分位宽IL0、最大浮点值rmax和最小浮点值rmin获取所述第一数据组的量化参数具体包括:

S131’、以所述rmin作为阈值下限以及所述rmax作为阈值上线生成阈值范围[rmin,rmax];

S132’、获取所述该组数据中超出[rmin,rmax]的数据个数C1;

S133’、获取所述该组数据中非零值的数据个数C2;

S134’、根据C1和C2确定所述第一数据组的量化参数。

步骤S134’、当C2≤K2*C1时,以ILi作为所述第一数据组的量化参数;其中,K为预设值;当C2>K2*C1,重新计算ILi+1=ILi-1,以更新ILi+1能表示的最大浮点值rmax和最小浮点值rmin,并更新C1和C2。例如,当在IL2下C2>K2*C1时,继续计算IL3下的rmax和rmin,并更新C1和C2,获取C1和C2的比例关系,这时,当在IL3下满足G≤K1*ST时,以IL2作为所述第一数据组的量化参数。本发明实施例中,上述K2为设定值。可选的,设置K2的取值为千分之一,此时会得到较好的量化结果。

本发明实施例中,可采用步骤S131’-S134’在对输入、输出数据计算量化参数时,通过基于数据饱和个数的方法计算得到数据的量化参数,相对于现有技术中直接采用数据组中的数据的最大绝对值进行计算量化参数,可有效的消除异常值的影响,得到的量化参数的准确度更高。相比于步骤S131-S135,步骤S131’-S134’算法更简单,适用于模型训练阶段前向运算中若干个batch的数据量,且不会受到数据随图片变化的影响,在保证量化参数ILi的合理性同时,能降低运算的复杂度。另外,本实施例中的方法避免了其他算法如Tukeytest、封顶算法需要的排序处理,在运行多个batch时速度更快,另一方面也兼顾了所统计的数据为激活函数激活后,零值占比较大的特征。

现有技术采用该组数据的绝对值的最大值计算量化参数IL,会造成量化参数IL偏大。而本发明上述实施例总所提供的方法,可以生成一个比最大值计算得到的IL0更小也更加合理的ILi作为最终的IL值,使用ILi作为量化参数时会造成部分数据饱和,但是也使整组数据有更多的位宽来表示小数部分。因此,采用本发明实施例的方法计算数据组的量化参数,充分考虑了不同数据组中的异常数据对计算量化参数所带来的影响,提高了卷积神经网络模型定点化后的精确度。

本发明一实施例中,卷积神经网络模型的参数包括权重参数和偏置参数;卷积神经网络模型的权重参数、偏置参数和输入输出数据在定点化过程中分别作为一组数据预设一定点数据的总位宽,具体的,权重参数对应一BW(例如16位),偏置参数对应一BW(例如8位),输入和输出数据对应一BW(例如32位)。可选地,各个运算层的权重参数、偏置参数、输入数据和输出数据分别根据其分布范围计算对应的量化参数。

上述总位宽的设定根据执行该卷积神经网络运算的硬件设备的计算能力、数据的大小以及所需要的准确度进行确定。

本发明一实施例中,通过以下方式获取训练完成的所述卷积神经网络:

对所述卷积神经网络进行网络参数训练,得到卷积神经网络的初始浮点参数;该网络参数包括权重数据和偏置数据;

根据所述初始浮点参数,输入数据和输出数据的分布,获取与所述初始浮点参数,输入数据和输出数据分别对应的量化参数。

本实施例中,在根据初始浮点数据的分布获取与该初始浮点参数对应的量化参数的方法,采用上述对权重数据进行计算量化参数的方式进行,以消除异常值的影响,得到更加准确的量化参数。

可选的,上述根据各个运算层的输入数据和输出数据的分布范围分别计算对应的量化参数的方式可以参照上述的方式进行,以消除异常数据的影响。

基于所述初始浮点参数和所述量化参数下的量化损失,继续将训练数据输入所述卷积神经网络模型中,根据所述卷积神经网络模型的损失函数对所述卷积神经网络模型的浮点参数和所述量化参数下的量化损失进行更新。

本实施例中,如果该卷积神经网络模型中的卷积层和全连接层均采用了归一化处理,则上述的初始浮点参数为进行了折叠处理以后的初始浮点参数。

现有的定点化方法,仅保证在一些参数量庞大、对精度要求较低的网络(比如AlexNet神经网络、VGG神经网络与GoogLeNet神经网络等)的具有比较好的计算效果,但是对于一些参数量较少、对精度要求比较高的神经网络,使用现有的定点化方法进行定点化以后,该定点化后的神经网络在使用时的效果并不理想。

本发明实施例中,准备对于输入为n组定点数据的运算层,对所述n组定点数据进行调整,以使得所述n组数据的量化参数相同,实现了对卷积神经网络的中间结构层进行定点化运算,避免了在多输入的运算层进行浮点数据与定点数据之间的转换操作;通过对包括卷积层和批归一化层的运算层进行折叠处理,以及对包括全连接层和批归一化层的运算层进行折叠处理,相对于进行分层处理的方式,提高了计算的准确度。并且,本发明实施例中以及在计算量化参数时充分考虑了异常点所带来的影响,分别针对于权重数据和输入输出数据设计的计算量化参数的策略,提高了量化参数的准确度。进而,本发明实施例中的卷积神经网络模型具有精度高,适用范围的优点。

参照图12所示,本发明一实施例还提供了一种数据处理装置100,至少包括存储器102和处理器101;存储器102通过通信总线103和处理器101连接,用于存储所述处理器可执行的计算机指令;处理器101用于从存储器102读取计算机指令以实现基于卷积神经网络架构的数据处理方法,所述方法包括:

基于完成训练的卷积神经网络模型,接收输入的待测数据;其中,所述神经网络模型包括若干依次连接的运算层,每一所述运算层根据上一运算层的输出数据进行运算后输出下一运算层的输入数据;所述卷积神经网络模型的参数为定点数据,所述待测数据为定点数据;

若当前运算层的输入为一组定点数据时,根据所述当前运算层的运算规则对该组定点数据进行处理后生成当前运算层的输出数据;

若当前运算层的输入为n组定点数据时,对所述n组定点数据进行调整,以使得所述n组数据中的每一组数据的量化参数相同,根据所述当前运算层的运算规则对调整后的n组数据进行处理后生成当前运算层的输出数据;其中,n≥2;所述量化参数包括定点数据的总位宽、整数部分位宽和小数部分位宽;

当完成所有运算层的运算时,输出所述待测数据的预测结果。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

根据所述n组定点数据中每一组定点数据的小数部分位宽,获取所述n组定点数据中最小的小数部分位宽作为参考位宽;

以所述参考位宽为基准,对所述n组定点数据中除具有所述参考位宽的一组定点数据外的n-1组定点数据进行移位、round和饱和处理,以使得所述n组定点数据的小数部分位宽均相同。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

根据所述当前运算层的输出量化参数,以所述输出量化参数的小数部分位宽作为参考位宽;

以所述参考位宽为基准,对所述n组定点数据进行移位、round和饱和处理,以使得所述n组定点数据的小数部分位宽均相同。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

将所述卷积层、BatchNorm层和Scale层进行折叠处理以形成一新的卷积层;

对所述新的卷积层的参数进行定点化。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

根据以下公式对所述卷积层、BatchNorm层和Scale层进行折叠处理,得到折叠处理后的新的卷积层的参数:

Figure BDA0002592578550000181

其中,v为所述BatchNorm层的方差参数,μ为所述BatchNorm层的均值参数,β为所述Scale层的平移参数,s为所述Scale层的缩放参数,eps为默认值,wfold为新的卷积层的权重参数,w为进行折叠处理前的卷积层的权重参数,bfold为新的卷积层的偏置参数。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

将所述全连接层、BatchNorm层和Scale层进行折叠处理以形成一新的卷积层;

对所述新的卷积层的参数进行定点化。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

根据以下公式对所述卷积层、BatchNorm层和Scale层进行折叠处理,得到所述新的全连接层的参数:

Figure BDA0002592578550000192

其中,v为所述BatchNorm层的方差参数,μ为所述BatchNorm层的均值参数,β为所述Scale层的平移参数,s为所述Scale层的缩放参数,eps为默认值,wfold为新的全连接层的权重参数,w为进行折叠处理前的全连接层的权重参数,bfold为新的全连接层的偏置参数,b为进行折叠处理前的全连接层的偏置参数。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

S11、获取第一数据组的绝对值的最大值,根据所述最大值计算初始整数部分位宽IL0

示例性的,上述的第一数据组可为权重数据组,例如卷积层的权重数据和全连接层的权重数据。另外,所述第一数据组可为各个运算层的输入数据和输出数据。

S12、计算ILi+1=ILi-1,其中,i≥0;并计算ILi+1能表示的最大浮点值rmax和最小浮点值rmin

S13、根据所述初始整数部分位宽IL0、最大浮点值rmax和最小浮点值rmin获取所述第一数据组的量化参数。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

S131、根据所述初始整数部分位宽IL0,对所述第一数据组中每一数据进行定点化处理和反定点化处理后生成的浮点值r’;

S132、以所述rmin作为阈值下限以及所述rmax作为阈值上线生成阈值范围[rmin,rmax];

S133、获取所述第一数据组中超出[rmin,rmax]的若干数据生成第二数据组,根据每一所述数据基于IL0进行定点化处理和反定点化处理后生成的浮点值r’、rmax和rmin计算所述第二数据组中每一数据的饱和损失,将所述第二数据组中每一数据的饱和损失进行累加获得第一累加值ST;

在步骤S133中,当所述r’为正数时,通过计算r’与r_max的差的绝对值获得所述数据的饱和损失;当所述r’为负数时,计算r’与r_min的差的绝对值作为所述数据的饱和损失。需要说明的是,步骤S12中的定点化为将浮点数据转化为定点数据的过程,反定点化为将定点数据再转化为浮点数据的过程,两者合并可称为sim-quant(simulate-quantize)过程。

S134、获取所述第一数据组中在[rmin,rmax]内的若干数据生成第三数据组,计算所述第三数据组中每一数据的增益,将所述第三数据组中每一数据的增益进行累加获得第二累加值G;

在步骤S134中,分别获取所述数据在IL0下的量化损失L1以及在ILi下的量化损失L2,计算L1和L2的差的绝对值作为所述数据的增益;其中,量化损失为任一数据进行定点化和反定点化后与原始数据的差。例如,假设一浮点数据原始值为r,以BW和IL0作为量化参数对其进行定点化处理生成量化值q0,对量化值q0进行反定点化处理生成浮点值r0,则IL0下的量化损失为r0-r,即量化引入的数值损失。同理,以BW和IL1作为量化参数对其进行定点化处理生成量化值q1,对量化值q1进行反定点化处理生成浮点值r1,则IL1下的量化损失为r1-r。

S135、根据所述第一累加值ST和所述第二累加值G获取所述第一数据组的量化参数。

步骤S135中,当G>K1*ST,重新计算ILi+1=ILi-1,以更新ILi+1能表示的最大浮点值rmax和最小浮点值rmin,并继续更新第一累加值ST和第二累加值G;而当当G≤K1*ST时,以ILi作为所述第一数据组的量化参数。本发明实施例中,上述K1为设定值,用来描述饱和损失与增益对整组权重数据影响程度的差异。可选的,设置K1的取值在100到1000之间,此时会得到较好的量化结果。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

S131’、以所述rmin作为阈值下限以及所述rmax作为阈值上线生成阈值范围[rmin,rmax];

S132’、获取所述该组数据中超出[rmin,rmax]的数据个数C1;

S133’、获取所述该组数据中非零值的数据个数C2;

S134’、根据C1和C2确定所述第一数据组的量化参数。

步骤S134’、当C2≤K2*C1时,以ILi作为所述第一数据组的量化参数;其中,K为预设值;当C2>K2*C1,重新计算ILi+1=ILi-1,以更新ILi+1能表示的最大浮点值rmax和最小浮点值rmin。本发明实施例中,上述K2为设定值。可选的,设置K2的取值为千分之一,此时会得到较好的量化结果。

可选的,上述卷积神经网络模型的参数包括权重参数和偏置参数;所述卷积神经网络模型的权重参数、偏置参数和输入输出数据在定点化过程中分别作为一组数据预设一定点数据的总位宽,各个运算层的权重参数、偏置参数、输入数据和输出数据分别根据其分布范围计算对应的量化参数。

可选的,上述处理器还用于从所述存储器读取计算机指令以实现:

对所述卷积神经网络进行网络参数训练,得到卷积神经网络的初始浮点参数;该网络参数包括权重数据和偏置数据;

根据所述初始浮点参数,输入数据和输出数据的分布,获取与所述初始浮点参数,输入数据和输出数据分别对应的量化参数;

基于所述初始浮点参数和所述量化参数下的量化损失,继续将训练数据输入所述卷积神经网络模型中,根据所述卷积神经网络模型的损失函数对所述卷积神经网络模型的浮点参数和所述量化参数下的量化损失进行更新;

当所述损失函数收敛到预设的条件时,将当前更新得到浮点参数基于所述量化参数进行定点化处理,从而生成完成训练的所述卷积神经网络模型。

本发明一实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述一种基于卷积神经网络架构的数据处理方法的步骤。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

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

以上对本发明实施例所提供的方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

30页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:信息处理系统、信息处理方法和信息处理装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类