CN116149597A - 数据处理方法、存储介质及电子设备 - Google Patents

数据处理方法、存储介质及电子设备 Download PDF

Info

Publication number
CN116149597A
CN116149597A CN202310280277.3A CN202310280277A CN116149597A CN 116149597 A CN116149597 A CN 116149597A CN 202310280277 A CN202310280277 A CN 202310280277A CN 116149597 A CN116149597 A CN 116149597A
Authority
CN
China
Prior art keywords
output data
operator
data
point number
fixed point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310280277.3A
Other languages
English (en)
Inventor
余宗桥
许礼武
黄敦博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Technology China Co Ltd
Original Assignee
ARM Technology China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Technology China Co Ltd filed Critical ARM Technology China Co Ltd
Priority to CN202310280277.3A priority Critical patent/CN116149597A/zh
Publication of CN116149597A publication Critical patent/CN116149597A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明涉及神经网络的技术领域,公开了一种数据处理方法、存储介质及电子设备,该方法包括:对多个第一算子的第一输出数据的定点数取值范围进行放大处理,得到多个第二输出数据,将多个第二输出数据输入第二算子,得到第二算子的第三输出数据;对第三输出数据的定点数取值范围进行转换处理,得到第四输出数据。在执行第二算子对应的运算之前,对多个第一算子的第一输出数据的定点数取值范围进行放大处理的转换,放大后得的多个第二输出数据不仅不会出现精度损失,还可以提高数据精度。并且,基于未出现精度损失且高数据精度的多个第二输出数据执行第二算子对应运算,可以确保第二算子输出数据的数据精度。

Description

数据处理方法、存储介质及电子设备
技术领域
本发明涉及神经网络的技术领域,尤其涉及一种数据处理方法、存储介质及电子设备。
背景技术
随着人工智能(Artificial Intelligence,AI)技术的快速发展,神经网络(例如,深度神经网络)近年来广泛应用于在计算机视觉、语音、自然语言、强化学习等领域。但是随着神经网络算法的发展,算法的复杂度越来越高,模型结构越来越复杂,相应地,部署有神经网络模型的设备的运算资源和内存需求也会越大。因此,在神经网络模型被部署于运算资源、存储资源有限的电子设备(手机等嵌入式电子设备)中时,一般需要通过对神经网络模型进行量化,以使得模型内存变小,数据处理速度变快。
但是,对神经网络模型进行量化,会将神经网络模型中的输入数据和输出数据从高精度的数量级量化为低精度的数量级,会导致运算的精度损失;且对于带有分支结构的神经网络模型,如包括有按元素加或减或比较大小算子的模型,该算子的多个输入数据来自不同分支。而多个输入数据通常为独立量化,多个输入数据量化后会导致输入数据的精度损失,通过精度损失的输入数据执行运算会导致更大的精度损失。
发明内容
本发明实施例提供了一种数据处理方法、存储介质及电子设备。
第一方面,本发明提供了一种数据处理方法,应用于电子设备,电子设备上运行有神经网络模型,神经网络模型包括多个第一算子、第二算子。方法包括:获取神经网络模型在对待处理数据进行处理的过程中,由多个第一算子输出的多个第一输出数据;对多个第一输出数据的定点数取值范围进行放大处理,得到多个第二输出数据;将多个第二输出数据输入第二算子,得到第二算子的第三输出数据;对第三输出数据的定点数取值范围进行转换处理,得到第四输出数据。
本申请实施例中,在执行第二算子对应的运算之前,对多个第一算子的第一输出数据的定点数取值范围进行放大处理的转换,放大后得的多个第二输出数据不仅不会出现精度损失,还可以提高数据精度。并且,基于未出现精度损失且高数据精度的多个第二输出数据执行第二算子对应运算,可以确保第二算子输出数据的数据精度。
在上述第一方面的一种可能的实现中,上述对多个第一输出数据的定点数取值范围进行放大处理,得到多个第二输出数据,包括:确定多个第一算子的第一量化系数;基于多个第一量化系数的大小关系,确定第一转换系数;基于第一转换系数对多个第一输出数据的定点数取值范围进行放大处理。
在上述第一方面的一种可能的实现中,上述基于多个第一量化系数的大小关系,确定第一转换系数,包括:将多个第一量化系数中数值最大的一个第一量化系数作为第一转换系数。
在上述第一方面的一种可能的实现中,上述对第三输出数据的定点数取值范围进行缩小处理,得到第四输出数据,包括:确定第二算子的第二量化系数;基于第二量化系数与第一转换系数的比值关系,确定第二转换系数;基于第二转换系数对第三输出数据的定点数取值范围进行转换处理。
在上述第一方面的一种可能的实现中,上述基于第二转换系数对第三输出数据的定点数取值范围进行转换处理,包括:对应于第三输出数据的定点数取值范围小于第二输出数据的定点数取值范围,基于第二转换系数对第三输出数据的定点数取值范围进行缩小处理;对应于第三输出数据的定点数取值范围大于第二输出数据的定点数取值范围,基于第二转换系数对第三输出数据的定点数取值范围进行放大处理。
在上述第一方面的一种可能的实现中,上述第一算子的输入数据为:根据第一量化系数将第一输出数据进行反量化处理得到的第一输入数据,其中,第一输入数据为浮点数。
在上述第一方面的一种可能的实现中,上述第二算子为多个第一算子的关联运算。
在上述第一方面的一种可能的实现中,上述第二算子包括以下至少一种运算:加法运算、减法运算、比较最大值运算和比较最小值运算。
第二方面,本发明实施例提供了一种可读存储介质,该可读存储介质上存储有指令,该指令在电子设备上执行时使电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任意一种数据处理方法。
第三方面,本发明实施例提供了一种电子设备,该电子设备包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令;以及处理器,是电子设备的处理器之一,用于执行存储器中存储的指令以实现上述第一方面及上述第一方面的各种可能实现提供的任意一种数据处理方法。
第四方面,本发明实施例提供了一种程序产品,该程序产品中包括指令,在该指令被电子设备执行时可以使电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任意一种数据处理方法。
附图说明
图1根据本发明的一些实施例,示出了一种对浮点数进行8位量化的示意图;
图2根据本发明的一些实施例,示出了一种神经网络模型的结构示意图;
图3根据本发明的一些实施例,示出了一种数据处理方法的流程示意图;
图4根据本发明的一些实施例,示出了一种电子设备的示意图;
图5根据本发明的一些实施例,示出了一种片上系统的示意图。
具体实施方式
本发明的说明性实施例包括但不限于数据处理方法、存储介质及电子设备。
下面结合附图1至5对本发明的技术方案进行介绍。
在一些实施例中,神经网络模型部署于电子设备后,电子设备通过神经网络模型可以实现图像处理、视频处理、音频处理和文本处理等功能。例如,电子设备对图片文件的压缩存储,可以通过神经网络模型对图片文件中每个像素点的红绿蓝(red greed blue,RGB)分量(像素值)进行压缩,得到较小的压缩文件,使得电子设备存储压缩文件以节省电子设备的存储空间。
可以理解,神经网络模型对图片文件的压缩,即是将图片文件中浮点数表示的像素值转换为定点数,例如将32位浮点数转换为4/8/16位定点数,即数据量化。可以理解,电子设备读取压缩文件,即是将压缩文件中定点数表示的像素值转换为浮点数,例如将4/8/16位定点数转换为32位浮点数,即数据反量化。
可以理解,定点数的数量级小于浮点数的数量级,通过定点数进行存储和运算,可以提高电子设备存储空间的利用率和数据处理的速度。
为了更加清楚的理解本申请,以下对数据量化(浮点数转换为定点数)和数据反量化(定点数转换为浮点数)进行解释说明。
在一些实施例中,数据量化可以理解为将浮点数对应的取值范围的数据映射至定点数对应的取值范围。例如公式(1)所示:
Q(X|b)=clip(X*S-Zp,Qmin,Qmax) (1)
在公式(1)中,X表示浮点数,b表示量化位宽,Q()表示将浮点数X转换为位宽b的定点数Q,clip()表示裁剪函数,S表示浮点数的量化系数(即缩放系数),Zp表示浮点数的量化零点(即偏移值/零点值),Qmax表示定点数Q的最大值,Qmin表示定点数Q的最小值。
在一些实施例中,量化系数S和量化零点Zp可以分别通过公式(2)和(3)表示如下:
Figure BDA0004138246920000031
在公式(2)中,Xmax表示浮点数的最大值,Xmin表示浮点数的最小值,Qmax表示定点数的最大值,Qmin表示定点数的最小值。
Zp=Round(S*Xmin-Qmin)(3)
在公式(3)中,Round()表示求四舍五入函数,Xmin表示浮点数的最小值,Qmin表示定点数的最小值,S表示浮点数的量化系数。
在一些实施例中,数据反量化可以理解为将定点数对应的取值范围的数据映射至浮点数对应的取值范围。例如公式(4)所示:
X=(Q+Zp)/S (4)
图1根据本申请的一些实施例,示出了一种对浮点数xf进行8位量化的示意图。如图1所示,量化的目标为将xf进行8位量化,即是将xf转换为UINT8型(取值范围为[-128,127])。假设xf的绝对值的最大值为max(|xf|),则对xf进行8位对称量化的过程即是将区间[-max(|xf|),max(|xf|)]映射到区间[-128,127]中。
可以理解,-max(|xf|)和max(|xf|)可以分别对应于公式(2)中的Xmin和Xmax,-128和127可以分别对应于公式(2)中的Qmin和Qmax
可以理解,UINT型可以表示为UINTn,其中n可以取4、8、16、32等,也可以取其他整数,并且UINTn型的无符号数据的取值范围为[0,2n-1],即UINTn型的无符号数据可以表示2n-1个无符号数据。
在另一些实施例中,量化过程还可以包括非对称量化,例如对xf进行8位非对称量化的过程即是将区间[min(xf),max(xf)]映射到区间[0,255]中,具体不做限制。
可以理解,数据量化,即将数据从高精度的数量级量化为低精度的数量级,例如将32位的数量级转换为8位的数量级。由于量化后数据的数量级降低,即量化后数据会出现精度损失。
在一些实施例中,对于带有分支结构的神经网络模型,如包括有按元素加或减或比较大小算子的模型,该算子的多个输入数据来自不同分支。而多个输入数据通常为独立量化,多个输入数据量化后会导致输入数据的精度损失,通过精度损失的输入数据执行运算会导致更大的精度损失。
为了更加清楚的理解本申请,以下带有分支结构的神经网络模型进行示例说明。
图2根据本申请的一些实施例,示出了一种神经网络模型100的结构示意图。如图2所示,神经网络模型100包括输入层101、逐元素操作(Elementwise/Eltwise)层102和输出层103。可以理解,神经网络模型100的结构只是一种示例。在另一些实施例中,神经网络模型可以包括比神经网络模型100更多或更少的层,如卷积层、激活层和归一化层等,具体不做限制。
在一些实施例中,输入层101用于接收待处理数据,并将待处理数据发送至Eltwise层102。Eltwise层102接收待处理数据,对待处理数据进行加法(ElementwiseAdd)、减法(Elementwise Sub)、比较最大值(Elementwise Max)和比较最小值(Elementwise Min)等运算得到运算结果数据,并将运算结果数据发送至输出层103。输出层103接收运算结果数据并输出。
可以理解,Eltwise层102可以包括有加法、减法、比较最大值、比较最小值等运算逻辑的算子(以下简称Elementwise算子)。Elementwise算子的输入数据至少为两个。例如图2所示,第二算子(Elementwise算子)12的输入数据为a和b,执行加法运算则为a加b,且将a和b的结果y作为第二算子12的输出数据。
在一些实施例中,结合公式(1)至(4)以及图2所示场景,以加法运算作为示例,对Elementwise算子的输入数据和输出数据的数据量化进行示例说明。如公式(5)所示:
xy=xa+xb (5)
在公式(5)中xa表示Elementwise算子的输入数据a的浮点数,xb示Elementwise算子的输入数据b的浮点数,xy表示Elementwise算子的输出数据y的浮点数。
可以理解,对应于图像处理场景,xa可以是输入神经网络模型的图片文件的像素值,xb可以是输入神经网络模型的渲染值,通过xb对xa进行渲染处理后,得到渲染处理后的图片文件的像素值xy。其中,xy、xb、xa的数据格式为浮点数。
在一些实施例中,基于上述公式(1)至(4),可以将公式(5)中浮点数xy、xb、xa转化为定点数。如公式(6)所示:
(yq+zpy)/sy=(aq+zpa)/sa+(bq+zpb)/sb (6)
在公式(6)中,yq表示对应xy的定点数,zpy表示对应xy的量化零点,sy表示对应xy的量化系数;aq表示对应xa的定点数,zpa表示对应xa的量化零点,sa表示对应xa的量化系数;bq表示对应xb的定点数,zpb表示对应xb的量化零点,sb表示对应xb的量化系数。
在一些实施例中,结合公式(5)和(6),对应于图2所示场景,xa作为输入层101中第一算子11A的输入数据,第一算子11A对xa进行转换得到(aq+zpa)/sa,以作为第一算子11A的输出数据。xb作为输入层101中第一算子11B的输入数据,第一算子11B对xb进行转换得到(bq+zpb)/sb,以作为第一算子11B的输出数据。将第一算子11A和第一算子11B的输出数据(aq+zpa)/sa和(bq+zpb)/sb,分别作为第二算子12的两个输入数据。同时,通过第二算子12对两个输入数据执行第二算子12对应运算后得到(yq+zpy)/sy,以作为第二算子12的输出数据。
在一些实施例中,公式(6)的加法运算可以通过公式(7)和(8)表示为:
yq=(aq+zpa)sy/sa+(bq+zpb)sy/sb-zpy (7)
Figure BDA0004138246920000051
在公式(7)和(8)中,M1、N1、M2和N2均为整数。其中,
Figure BDA0004138246920000052
为sy/sa的近似值,
Figure BDA0004138246920000053
为sy/sb的近似值。
可以理解,在公式(7)中,sy/sa用于表示将(aq+zpa)对应的取值范围的数据映射至yq对应的取值范围,sy/sb用于表示将(bq+zpb)对应的取值范围的数据映射至yq对应的取值范围。例如,yq为UINT8型,则将(aq+zpa)对应的取值范围的数据映射至区间[0,28-1]中。
在一些实施例中,当sy小于sa时,表示(aq+zpa)对应的取值范围大于yq对应的取值范围,可以将(aq+zpa)向右移位以缩减(aq+zpa)的取值范围,使得(aq+zpa)的取值范围与yq的取值范围对应。
可以理解,在公式(8)中,N1用于表示(aq+zpa)向右移位的位数。由于移位的位数只能为整数,即在将(aq+zpa)向右移位以缩减(aq+zpa)的取值范围,使得(aq+zpa)的取值范围与yq的取值范围对应的过程中,只能将(aq+zpa)对应的取值范围近似于yq对应的取值范围,难以将(aq+zpa)对应的取值范围等同于yq对应的取值范围。即,
Figure BDA0004138246920000054
为sy/sa的近似值,M1基于N1的取值确定。
可以理解,
Figure BDA0004138246920000055
为sy/sb的近似值的原理与/>
Figure BDA0004138246920000056
为sy/sa的近似值的原理相同,在此不加以赘述。
在一些实施例中,当sy小于sa和sb,通过公式(8)进行运算时,(aq+zpa)和(bq+zpb)在执行加法运算前会预先向右移位,使得(aq+zpa)和(bq+zpb)在执行加法运算前出现精度损失,而通过精度损失的(aq+zpa)和(bq+zpb)执行加法运算后得到的yq会出现更大的精度损失。
例如,(aq+zpa)为001111001111,(bq+zpb)为010011001100,为使(aq+zpa)和(bq+zpb)的取值范围近似于yq的取值范围,将(aq+zpa)和(bq+zpb)分别向右移4位得到00111100和01001100,将移位后的(aq+zpa)和(bq+zpb)执行加法运算后得到的yq为10001000。
可以理解,将移位前的(aq+zpa)和(bq+zpb)执行加法运算后得到结果应为100010011011,而将该结果对应的取值范围映射至yq的取值范围时,yq应为10001001。即,(aq+zpa)和(bq+zpb)在执行加法运算前预先向右移位,缩减(aq+zpa)和(bq+zpb)的取值范围后再进行运算会导致运算结果yq出现较大的精度损失。
另一些实施例中,公式(6)的加法运算还可以通过公式(9)和(10)表示为:
yq=((aq+zpa)sb/sa+(bq+zpb))sy/sb-zpy (9)
Figure BDA0004138246920000061
在公式(9)和(10)中,M1、N1、M2和N2均为整数。其中,
Figure BDA0004138246920000062
为sb/sa的近似值,
Figure BDA0004138246920000063
为sy/sb的近似值。/>
可以理解,在上述公式(9)和(10)中,当sb大于sa或sy大于sb时,与公式(8)同理,(aq+zpa)和(bq+zpb)在执行加法运算前先移位会导致运算结果yq出现较大的精度损失。
可以理解,上述公式(5)仅以加法运算作为示例说明。在另一些实施例中,当公式(5)为减法、比较最大值、比较最小值等对多个输入数据进行其他类型运算时,通过公式(6)和(7)或(9)和(10)先对输入数据进行量化,再执行对应运算也会产生较大的精度损失,具体运算类型不做限制。
如前所述,对于带有分支结构的神经网络模型,如神经网络模型100,Elementwise算子的多个输入数据来自的不同分支,Elementwise算子的输入数据和输出数据一般为独立量化。当输入数据和输出数据的量化系数差异较大时,会导致神经网络模型在运算时出现较大的精度损失。例如,Elementwise算子的多个输入数据在执行对应运算前进行数据量化,使得各个输入数据在执行对应运算前出现精度损失,而通过精度损失的输入数据执行对应运算后得到的输出数据会出现更大的精度损失。
为此,本发明提出一种数据处理方法,首先,在多个第一算子输出的第一输出数据输入第二算子执行第二算子的运算前,对多个第一算子输出的第一输出数据的定点数取值范围进行放大处理,得到多个第二输出数据。然后,将多个第二输出数据输入第二算子执行第二算子的运算,得到第三输出数据。最后,对第三输出数据的定点数取值范围进行转换处理得到第四输出数据,使得第四输出数据的定点数取值范围与第二算子输出数据的定点数取值范围对应,以将第四输出数据作为第二算子输出数据的定点数。
可以理解,在执行第二算子对应的运算之前,对多个第一算子的第一输出数据的定点数取值范围进行放大处理的转换,放大后得的多个第二输出数据不仅不会出现精度损失,还可以提高数据精度。并且,基于未出现精度损失且高数据精度的多个第二输出数据执行第二算子对应运算,可以确保第二算子执行运算得到结果数据的数据精度。
在一些实施例中,当第四输出数据的定点数取值范围大于第二算子输出数据的定点数取值范围时,对第四输出数据的定点数取值范围进行放大处理;当第四输出数据的定点数取值范围小于第二算子输出数据的定点数取值范围时,对第四输出数据的定点数取值范围进行缩小处理。
为了更加清楚的理解本申请,以下以两个第一算子作为示例,通过二进制移位方式对上述数据处理方法进行解释说明。
在一些实施例中,将上述公式(6)中的(aq+zpa)/sa和(bq+zpb)/sb作为两个第一算子,将两个第一算子的加法运算作为第二算子。可以理解,上述公式(6)可以通过公式(11)表示如下:
yq=((aq+zpa)sb+(bq+zpb)sa)sy/sasb-zpy (11)
在一些实施例中,将公式(11)中的sb、sa、sy/sasb转换为近似值后,可以通过公式(12)表示如下:
Figure BDA0004138246920000071
可以理解,在公式(12)中,M1、N1、M2、N2、M3和N3均为整数。其中,
Figure BDA0004138246920000072
为sa的近似值,/>
Figure BDA0004138246920000073
为sb的近似值,/>
Figure BDA0004138246920000074
为sy/sasb的近似值。近似值原理可以参加上述公式(7)和(8)的近似值推导过程,在此不加以赘述。/>
在一些实施例中,基于N1和N2的大小关系(sa和sb的大小关系),对公式(12)中的(aq+zpa)和(aq+zpa)进行放大。
例如,N1大于N2,则
Figure BDA0004138246920000075
进行放大后可以表示为/>
Figure BDA0004138246920000076
Figure BDA0004138246920000077
进行放大后可以表示为(bq+zpb)M1
或例如,N2大于N1,则
Figure BDA0004138246920000078
进行放大后可以表示为(aq+zpa)M2
Figure BDA0004138246920000079
进行放大后可以表示为/>
Figure BDA00041382469200000710
可以理解,通过N1和N2的大小关系,确保N1-N2或N2-N1为正整数,即确保对(aq+zpa)和(aq+zpa)的放大目的。
在一些实施例中,为确保放大后公式(12)的数据平衡性,对放大后的(aq+zpa)和(aq+zpa)执行加法运算得到的结果数据,基于放大时的放大系数进行等倍缩小。
例如,当N1大于N2时,公式(12)可以通过公式(13)表示为:
Figure BDA00041382469200000711
可以理解,在公式(13)中,由于N1-N2为正整数,即(aq+zpa)向左移位N1-N2位数,确保对(aq+zpa)的放大。
可以理解,对应于上述公式(8)的示例,(aq+zpa)为001111001111,(bq+zpb)为010011001100。通过公式(13)对(aq+zpa)和(bq+zpb)进行放大,如(aq+zpa)和(bq+zpb)分别向左移4位得到0011110011110000和0100110011000000,将移位后的(aq+zpa)和(bq+zpb)执行加法运算后得到结果为1000100110110000,而将该结果对应的取值范围映射至yq的取值范围时,yq应为10001001。即,(aq+zpa)和(bq+zpb)在执行加法运算前向左移位,扩大(aq+zpa)和(bq+zpb)的取值范围后再进行运算不会导致运算结果yq精度损失。
或例如,当N2大于N1时,公式(12)可以通过公式(14)表示为:
Figure BDA00041382469200000712
可以理解,在公式(14)中,由于N2-N1为正整数,即(bq+zpb)向左移位N2-N1位数,确保对(bq+zpb)的放大。
基于上述公式(11)至(13),对M1、N1、M2、N2、M3和N3取值过程进行解释说明。
在一些实施例中,考虑到神经网络模型在运行上述公式时,寄存器最大存储位宽的情况,对
Figure BDA00041382469200000713
M1、/>
Figure BDA00041382469200000714
的取值范围进行限制。
在一些实施例中,对应公式(11)中,sa为221.59,sb为1189.26,sy为190.61,且zpa、zpb、zpy均为0(对称量化)。
在一些实施例中,对应公式(12)中,M1取值为28364,N1取值为7,M2取值为19028,N2取值为4。
可以理解,
Figure BDA00041382469200000715
近似于sa,/>
Figure BDA00041382469200000716
近似于sb
可以理解,对应公式(13)中,
Figure BDA0004138246920000081
M1=28364。
在一些实施例中,例如寄存器最大存储位宽为15位,对应取值范围的最大取值范围为215-1。
可以理解,当
Figure BDA0004138246920000082
或M1的取值大于上述寄存器取值范围的最大取值范围时,对应运算可能会出现溢出的情况。例如,152224/(215-1)大于1,表示运算会出现溢出情况,需要缩小/>
Figure BDA0004138246920000083
和M1的取值范围。
在一些实施例中,将
Figure BDA0004138246920000084
的取值范围缩小至152224/(152224/(215-1))=32767,将M1的取值范围缩小至28364/(152224/(215-1))=6105。
在一些实施例中,对应公式(11)中,sy/sasb=190.61/(221.59*1189.26)=0.0007233。对应于上述取值范围的缩小,等倍将sy/sasb的取值范围扩大至0.0007233*(152224/(215-1))=0.00336。
在一些实施例中,对应公式(12)中,由于
Figure BDA0004138246920000085
作为sy/sasb的近似值。则,M3取值为220,N3取值为16,/>
Figure BDA0004138246920000086
近似于sy/sasb
在一些实施例中,对应公式(13)中,N1+N3=16+7=23。
在一些实施例中,当M3大于215-1时,执行
Figure BDA0004138246920000087
直至M3大小于或等于215-1时,停止执行。
为了更加清楚的理解本申请,以下结合公式(1)至(6)、图1所示对称量化以及图2所示模型的场景,以加法运算作为示例,对上述数据处理方法进行解释说明。
在一些实施例中,对称量化的中的量化零点取值为0。当量化零点取值为0时,公式(6)可以通过公式(15)表示如下:
yq/sy=aq/sa+bq/sb (15)
在一些实施例中,基于公式(5)和公式(15),xa对应于第一算子11A的输入数据,aq/sa表示第一算子11A的输出数据,aq表示第一算子11A的量化数据,sa表示第一算子11A的量化系数;xb对应于第一算子11B的输入数据,bq/sb表示第一算子11B的输出数据,bq表示第一算子11B的量化数据,sb表示第一算子11B的量化系数;aq/sa和bq/sb对应于第二算子12的输入数据,yq/sy表示第二算子12的输出数据,sy表示第二算子12的量化系数,且yq表示第二算子12的量化数据。其中,sa和sb均大于0。
在一些实施例中,通过比较sa和sb的大小关系,确定aq和bq对应取值范围的大小关系。
可以理解,当sa大于sb时,表示aq对应的取值范围大于bq对应的取值范围;当sb大于sa时,表示bq对应的取值范围大于aq对应的取值范围。
在一些实施例中,当sa大于sb时,基于sa对aq/sa和bq/sb进行放大;或者,当sb大于sa时,基于sb对aq/sa和bq/sb进行放大。以下以sa大于sb为例,对本申请一些实施例进行解释说明。
在一些实施例中,基于sa对aq和bq进行放大可以通过公式(12)表示如下:
yqsa/sy=aq+bqsa/sb (16)
可以理解,在公式(16)中,由于sa大于sb,可知sb/sa大于0,基于sa可以对aq/sa和bq/sb进行放大,即基于sa可以对第一算子11A和11B的输出数据进行放大处理。
可以理解,对第一算子11A和11B的输出数据进行放大处理,放大后得到的放大数据不仅不会出现精度损失,还可以提高数据精度。
可以理解,对应于公式(16),对应于第一算子11A的放大数据为aq,对应于第一算子11B的输出数据为bqsa/sb
在一些实施例中,公式(16)中yq求解方程可以通过公式(17)表示如下:
yq=(aq+bqsa/sb)sy/sa (17)
在一些实施例中,通过sy/sa(第二转换系数),可以将aq与bqsa/sb的加法结果数据映射至第二算子12的取值范围中。其中,当sy大于sa时,则是对加法结果数据进行放大后以映射至第二算子12的取值范围中;当sa大于sy时,则是对加法结果数据进行缩小后以映射至第二算子12的取值范围中。
可以理解,当sy大于sa时,对加法结果数据进行放大不仅不会出现精度损失,还可以提高数据精度,提高第二算子12的运算结果的准确度。或者,当sa大于sy时,基于较高精度的加法结果数据进行缩小,可以相对加法结果数据的精度损失,确保第二算子12的运算结果的准确度。
可以理解,对应非对称量化的中的量化零点取值不为0的情况,数据处理方法与公式公式(15)至(17)推导过程同理,即在执行第二算子12前,对第二算子12的输入数据进行放大后再进行第二算子12,最后对结果数据进行转换得到第二算子12的运算结果,确保第二算子12的运算结果的准确度,在此不加以赘述。
图3根据本申请的一些实施例,示出了一种数据处理方法的流程示意图。如图3所示,包括以下步骤:
S301:确定多个第一算子的量化系数以及第二算子的量化系数。
在一些实施例中,第二算子为多个第一算子的关联运算。第二算子的输入数据至少为两个,且第二算子包括加法运算、减法运算、比较最大值运算和比较最小值运算等运算类型。
在一些实施例中,例如公式(5)和公式(15),xa对应于第一算子11A的输入数据,aq/sa表示第一算子11A的输出数据,aq表示第一算子11A的量化数据,sa表示第一算子11A的量化系数;xb对应于第一算子11B的输入数据,bq/sb表示第一算子11B的输出数据,bq表示第一算子11B的量化数据,sb表示第一算子11B的量化系数;aq/sa和bq/sb对应于第二算子12的输入数据,yq/sy表示第二算子12的输出数据,sy表示第二算子12的量化系数,且yq表示第二算子12的量化数据。
S302:基于多个第一算子的量化系数的大小关系,确定第一转换系数。
在一些实施例中,例如公式(15)所示,当sa大于sb时,将sa作为第一转换系数;当sb大于sa时,将sb作为第一转换系数。
S303:基于第一转换系数,分别对多个第一算子的第一输出数据进行放大处理,得到多个第二输出数据。
在一些实施例中,例如公式(16)所示,由于sa大于sb,可知sb/sa大于0,基于sa可以对aq/sa和bq/sb进行放大,即基于sa可以对第一算子11A和11B的输出数据进行放大处理。
可以理解,对第一算子11A和11B的输出数据进行放大处理,放大后得到的放大数据不仅不会出现精度损失,还可以提高数据精度。其中,对应于第一算子11A的放大数据为aq,对应于第一算子11B的输出数据为bqsa/sb
S304:将多个第二输出数据输入第二算子执行第二算子对应的运算,得到第三输出数据。
在一些实施例中,例如公式(16)所示,将aq和bqsa/sb执行加法运算后的结果作为第三输出数据。
S305:基于第一转换系数和第二算子的量化系数的比值关系,确定第二转换系数。
在一些实施例中,公式(16)中的yq可以通过公式(17)进行求解。可以理解,sy/sa为第二转换系数。
S306:基于第二转换系数对第三输出数据进行转换,得到第四输出数据。
在一些实施例中,通过第二转换系数对aq与bqsa/sb执行加法运算的第三输出数据进行转换,使得aq与bqsa/sb执行加法运算的第三输出数据可以映射至第二算子12的取值范围中,以将第四输出数据作为第二算子12的量化数据。
可以理解,当sy大于sa时,对第三输出数据进行放大不仅不会出现精度损失,还可以提高数据精度,提高第二算子12的运算结果的准确度。或者,当sa大于sy时,基于较高精度的第三输出数据进行缩小,可以相对加法结果数据的精度损失,确保第二算子12的运算结果的准确度。
图4根据本申请的一些实施例,示出了电子设备10的框图。在一些实施例中,电子设备10可以包括一个或多个处理器1004,与处理器1004中的至少一个连接的系统控制逻辑1008,与系统控制逻辑1008连接的系统内存1012,与系统控制逻辑1008连接的非易失性存储器(non volatile memory,NVM)1016,以及与系统控制逻辑1008连接的网络接口1020。
在一些实施例中,处理器1004可以包括一个或多个单核或多核处理器。在一些实施例中,处理器1004可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。在电子设备10采用增强型基站(evolved node B,eNB)或无线接入网(radio access network,RAN)控制器的实施例中,处理器1004可以被配置为执行各种符合的实施例。
在一些实施例中,系统控制逻辑1008可以包括任意合适的接口控制器,以向处理器1004中的至少一个和/或与系统控制逻辑1008通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,系统控制逻辑1008可以包括一个或多个存储器控制器,以提供连接到系统内存1012的接口。系统内存1012可以用于加载以及存储数据和/或指令。在一些实施例中系统1000的内存1012可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(dynamic random access memory,DRAM)。
NVM 1016可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM 1016可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(hard disk drive,HDD),光盘(compactdisc,CD)驱动器,数字通用光盘(digital versatile disc,DVD)驱动器中的至少一个。
NVM 1016可以包括安装电子设备10的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口1020通过网络访问NVM 1016。
特别地,系统内存1012和NVM 1016可以分别包括:指令1024的暂时副本和永久副本。指令1024可以包括:由处理器1004中的至少一个执行时导致电子设备10实施如图3所示的方法的指令。在一些实施例中,指令1024、硬件、固件和/或其软件组件可另外地/替代地置于系统控制逻辑1008,网络接口1020和/或处理器1004中。
网络接口1020可以包括收发器,用于为电子设备10提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口1020可以集成于电子设备10的其他组件。例如,网络接口1020可以集成于处理器1004的,系统内存1012,NVM 1016,和具有指令的固件设备(未示出)中的至少一种,当处理器1004中的至少一个执行所述指令时,电子设备10实现如图3所示的方法。
网络接口1020可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口1020可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
在一个实施例中,处理器1004中的至少一个可以与用于系统控制逻辑1008的一个或多个控制器的逻辑封装在一起,以形成系统封装会话初始协议(sessioninitialization protocol,SIP)。在一个实施例中,处理器1004中的至少一个可以与用于系统控制逻辑1008的一个或多个控制器的逻辑集成在同一管芯上,以形成片上系统(system on chip,SOC)。
电子设备10可以进一步包括:输入/输出(I/O)设备1032。
图5根据本申请的一些实施例,示出了一种SOC 1100的框图。SOC 1100设置在电子设备10中。在图5中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SOC的可选特征。在图5中,SOC 1100包括:互连单元1150,其被耦合至应用处理器1110;系统代理单元1170;总线控制器单元1180;集成存储器控制器单元1240;直接存储器存取(direct memoryaccess,DMA)单元1160。
可以理解,如本文所使用的,术语“模块”可以指代或者包括专用集成电路(application specific integrated circuit,ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用、或群组)和/或存储器、组合逻辑电路、和/或提供所描述的功能的其他适当硬件组件,或者可以作为这些硬件组件的一部分。
可以理解,在本申请各实施例中,处理器可以是微处理器、数字信号处理器、微控制器等,和/或其任何组合。根据另一个方面,所述处理器可以是单核处理器,多核处理器等,和/或其任何组合。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(digital signal process,DSP)、微控制器、ASIC或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器、磁光盘、只读存储器(read-only memory,ROM)、随机存取存储器(random accessmemory,RAM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、电可擦除可编程只读存储器(electrically-erasable programmable read-onlymemory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息,例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本发明各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施例并没有将与解决本发明所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的范围。

Claims (10)

1.一种数据处理方法,应用于电子设备,其特征在于,所述电子设备上运行有神经网络模型,所述神经网络模型包括多个第一算子、第二算子;
所述方法包括:
获取所述神经网络模型在对待处理数据进行处理的过程中,由多个所述第一算子输出的多个第一输出数据;
对多个所述第一输出数据的定点数取值范围进行放大处理,得到多个第二输出数据;
将多个所述第二输出数据输入所述第二算子,得到所述第二算子的第三输出数据;
对所述第三输出数据的定点数取值范围进行转换处理,得到第四输出数据。
2.根据权利要求1所述的方法,其特征在于,所述对多个所述第一输出数据的定点数取值范围进行放大处理,得到多个第二输出数据,包括:
确定多个所述第一算子的第一量化系数;
基于多个所述第一量化系数的大小关系,确定第一转换系数;
基于所述第一转换系数对多个所述第一输出数据的定点数取值范围进行放大处理。
3.根据权利要求2所述的方法,其特征在于,所述基于多个所述第一量化系数的大小关系,确定第一转换系数,包括:
将多个所述第一量化系数中数值最大的一个所述第一量化系数作为所述第一转换系数。
4.根据权利要求2所述的方法,其特征在于,所述对所述第三输出数据的定点数取值范围进行缩小处理,得到第四输出数据,包括:
确定所述第二算子的第二量化系数;
基于所述第二量化系数与所述第一转换系数的比值关系,确定第二转换系数;
基于所述第二转换系数对所述第三输出数据的定点数取值范围进行转换处理。
5.根据权利要求4所述的方法,其特征在于,所述基于所述第二转换系数对所述第三输出数据的定点数取值范围进行转换处理,包括:
对应于所述第三输出数据的定点数取值范围小于所述第二输出数据的定点数取值范围,基于所述第二转换系数对所述第三输出数据的定点数取值范围进行缩小处理;
对应于所述第三输出数据的定点数取值范围大于所述第二输出数据的定点数取值范围,基于所述第二转换系数对所述第三输出数据的定点数取值范围进行放大处理。
6.根据权利要求2所述的方法,其特征在于,
所述第一算子的输入数据为:根据所述第一量化系数将所述第一输出数据进行反量化处理得到的第一输入数据,其中,所述第一输入数据为浮点数。
7.根据权利要求1至6中任一项所述的方法,其特征在于,
所述第二算子为多个所述第一算子的关联运算。
8.根据权利要求1至6中任一项所述的方法,其特征在于,所述第二算子包括以下至少一种运算:
加法运算、减法运算、比较最大值运算和比较最小值运算。
9.一种计算机可读存储介质,其特征在于,所述可读存储介质上存储有指令,所述指令在电子设备上执行时使所述电子设备实现权利要求1至8中任一项所述的方法。
10.一种电子设备,其特征在于,包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令;
以及处理器,是所述电子设备的处理器之一,用于执行所述存储器中存储的指令以实现权利要求1至8中任一项所述方法。
CN202310280277.3A 2023-03-21 2023-03-21 数据处理方法、存储介质及电子设备 Pending CN116149597A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310280277.3A CN116149597A (zh) 2023-03-21 2023-03-21 数据处理方法、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310280277.3A CN116149597A (zh) 2023-03-21 2023-03-21 数据处理方法、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN116149597A true CN116149597A (zh) 2023-05-23

Family

ID=86340829

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310280277.3A Pending CN116149597A (zh) 2023-03-21 2023-03-21 数据处理方法、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN116149597A (zh)

Similar Documents

Publication Publication Date Title
CN110263909B (zh) 图像识别方法及装置
US11249721B2 (en) Multiplication circuit, system on chip, and electronic device
CN110413812B (zh) 神经网络模型的训练方法、装置、电子设备及存储介质
CN110929865B (zh) 网络量化方法、业务处理方法及相关产品
CN110490296A (zh) 一种构造卷积神经网络(cnn)模型的方法和系统
CN111369450A (zh) 去除摩尔纹的方法与装置
CN110913219A (zh) 一种视频帧预测方法、装置及终端设备
WO2016056974A1 (en) Evaluation measure for hdr video frames
US20140092116A1 (en) Wide dynamic range display
US20150113027A1 (en) Method for determining a logarithmic functional unit
CN111861940A (zh) 一种基于条件连续调节的图像调色增强方法
US20220004857A1 (en) Neural network processing apparatus, neural network processing method, and neural network processing program
CN116149597A (zh) 数据处理方法、存储介质及电子设备
CN111145128B (zh) 色彩增强方法及相关装置
CN115762555A (zh) 一种动态音频信号调节传输方法
WO2019205064A1 (zh) 神经网络加速装置与方法
CN112911289B (zh) 一种dct/idct变换优化方法和系统
CN110209851B (zh) 模型训练方法、装置、电子设备及存储介质
WO2021057926A1 (zh) 一种神经网络模型训练方法及装置
CN114841325A (zh) 神经网络模型的数据处理方法、介质及电子设备
CN111160554A (zh) 信息处理方法及装置、电子设备和存储介质
CN111933162A (zh) 一种优化lc3编码器残差编码和噪声估计编码的方法
JP2019165434A (ja) 減少したクリップ領域を有するhdrイメージを生成する方法及び装置
CN110830806A (zh) 一种视频帧预测方法、装置及终端设备
CN113255576B (zh) 人脸识别方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination