数据处理方法、装置和乘加器及存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理方法、装置和乘加器及存储介质。
背景技术
CNN(Convolutional Neutral Network;卷积神经网络)中最核心的部分为卷积计算,卷积计算的本质即为多次乘法并累加(即乘累加)的操作。现有技术中的乘累加即首先通过乘数的最低位与被乘数的所有位进行相乘,接着乘数的倒数第二位与被乘数的所有位进行相乘,然后乘数的倒数第三位与被乘数的所有位进行相乘,依次类推,直至乘数的最高位与被乘数的所有位进行相乘,最后基于二进制数加法原则对所有相乘结果按位相加得到最终的乘累加数据。可见,现有技术中计算乘累加数据需要进行多次的数据相乘,从而造成占用大量资源,以及功耗消耗较大。
发明内容
鉴于上述问题,本申请实施例提供了一种数据处理方法、装置和乘加器及存储介质,从而避免了通过多次的数据相乘获取乘累加数据的过程中资源占用较大以及功耗消耗较大的问题。
为了解决上述问题,根据本申请实施例的第一方面,提供了一种数据处理方法,所述方法包括:
获取待卷积对象;
将所述待卷积对象输入至卷积神经网络进行卷积运算,得到目标数据处理结果;其中,对于所述卷积神经网络的当前网络层,执行以下数据处理步骤得到所述当前网络层对应的数据处理结果;
所述数据处理步骤包括:
获取预设的卷积核包括的第一低比特码值,以及目标对象包括的第二低比特码值;在所述当前网络层为输入层的情况下,所述目标对象为所述待卷积对象;在所述当前网络层为所述卷积神经网络中除了所述输入层以外的其他网络层的情况下,所述目标对象为所述当前网络层对应的上一网络层的数据处理结果;
在所述第一低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取所述第一低比特码值和所述第二低比特码值之间的简化乘累加数据;
对所述简化乘累加数据进行还原数据处理,得到所述当前网络层对应的数据处理结果。
根据本申请实施例的第二方面,提供了一种数据处理装置,所述装置包括:
对象获取模块,用于获取待卷积对象;
处理结果获取模块,用于将所述待卷积对象输入至卷积神经网络进行卷积运算,得到目标数据处理结果;其中,对于所述卷积神经网络的当前网络层,执行以下数据处理步骤得到所述当前网络层对应的数据处理结果;
所述数据处理步骤包括:
获取预设的卷积核包括的第一低比特码值,以及目标对象包括的第二低比特码值;在所述当前网络层为输入层的情况下,所述目标对象为所述待卷积对象;在所述当前网络层为所述卷积神经网络中除了所述输入层以外的其他网络层的情况下,所述目标对象为所述当前网络层对应的上一网络层的数据处理结果;
在所述第一低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取所述第一低比特码值和所述第二低比特码值之间的简化乘累加数据;
对所述简化乘累加数据进行还原数据处理,得到所述当前网络层对应的数据处理结果。
根据本申请实施例的第三方面,提供了一种乘加器,包括处理器以及存储器,其中,
所述处理器执行所述存储器所存放的计算机程序代码,以实现本申请所述的数据处理方法。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现本申请所述的数据处理方法的步骤。
本申请实施例包括以下优点:
本申请实施例首先获取待卷积对象;然后将所述待卷积对象输入至卷积神经网络进行卷积运算,得到目标数据处理结果;其中,对于所述卷积神经网络的当前网络层,执行以下数据处理步骤得到所述当前网络层对应的数据处理结果;所述数据处理步骤包括:获取预设的卷积核包括的第一低比特码值,以及目标对象包括的第二低比特码值;在所述当前网络层为输入层的情况下,所述目标对象为所述待卷积对象;在所述当前网络层为所述卷积神经网络中除了所述输入层以外的其他网络层的情况下,所述目标对象为所述当前网络层对应的上一网络层的数据处理结果;接着在所述第一低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取所述第一低比特码值和所述第二低比特码值之间的简化乘累加数据;最后对所述简化乘累加数据进行还原数据处理,得到所述当前网络层对应的数据处理结果。这样,由于本申请可以针对卷积神经网络中的当前网络层,从低比特码值乘累加对应关系查找获取到简化乘累加数据,无需进行多次数据相乘的过程,并且采用数据简化方法获取简化乘累加数据,可以减少数据运算的复杂度,从而减少资源占用,以及避免功耗消耗较大。
附图说明
图1是本申请的一种数据处理方法实施例的步骤流程图;
图2是本申请的一种数据处理方法可选实施例的步骤流程图;
图3是本申请的一种数据处理装置实施例的结构框图;
图4为本申请的一种乘加器的硬件结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
首先,对本申请的应用场景进行说明,本申请可以应用于通过卷积神经网络对待卷积对象进行卷积运算的过程。由于卷积神经网络通常包括多个网络层,这样,任一网络层均可以通过本申请中所述的数据处理步骤获取到该任一个网络层的数据处理结果。其中,若该当前网络层为卷积神经网络的中间层或者输入层,则该数据处理结果为该卷积神经网络的中间值,该中间值可以作为下一网络层的输入,若该当前网络层为卷积神经网络的最后一层,则可以得到目标数据处理结果,该目标数据处理结果可以为该卷积神经网络输出的识别数据,示例地,若该卷积神经网络用于对人脸识别,且该待卷积对象包括目标图像某个区域对应的待卷积图像,该目标图像中包含人脸图像,则该最后一层的目标数据处理结果即可以为该待卷积图像存在人脸的概率值,该概率值越大,表示该待卷积图像越可能为人脸,上述示例只是举例说明,本申请对此不作限定。
参照图1,示出了本申请的一种数据处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,获取待卷积对象。
其中,该待卷积对象可以包括待卷积图像、待卷积音频、或者待卷积视频等通过传感器采集到的对象。
步骤102,将待卷积对象输入至卷积神经网络进行卷积运算,得到目标数据处理结果;其中,对于卷积神经网络的当前网络层,执行以下数据处理步骤得到当前网络层对应的数据处理结果。
其中,数据处理步骤包括:
S11、获取预设的卷积核包括的第一低比特码值,以及目标对象包括的第二低比特码值。
在本步骤中,在当前网络层为输入层的情况下,目标对象为待卷积对象;在当前网络层为卷积神经网络中除了输入层以外的其他网络层的情况下,目标对象为当前网络层对应的上一网络层的数据处理结果。
在本发明实施例中,该第一低比特码值和该第二低比特码值均为低比特位数对应的码值,其中,低比特位数可以为1-bit、2-bit、4-bit、6-bit等。示例地,在该低比特位数为2-bit的情况下,对应的低比特码值可以包括0、1、2和3;在该低比特位数为4-bit的情况下,对应的低比特码值可以包括0、1、2、3、4、5、6、7、8、9、10、11、12、13、14和15,示例地,若该待卷积对象包括待卷积图像,则该第一低比特码值可以为像素值,上述示例只是举例说明,本发明对此不作限定。
另外,若本发明中的第一低比特码值对应第一低比特位数,以及第二低比特码值对应第二低比特位数,则在一种可能的实现方式中,该第一低比特位数和该第二低比特位数可以相同,例如,该第一低比特位数和第二低比特位数均为2-bit,此时,该第一低比特码值和该第二低比特码值分别为2-bit对应的码值,这样,本发明中的当前网络层的卷积运算过程即为2-bit*2-bit的乘累加编码的过程,示例地,若需要计算的乘累加运算式为:1*0+2*1+3*0+2*3+…+1*3+2*2,可见,该第一低比特码值和该第二低比特码值均为2-bit对应的码值,则第一低比特码值可以包括1、2、3、2、…、1、2,第二低比特码值可以包括0、1、0、3、…、3、2;在另一种可能的实现方式中,该第一低比特位数和该第二低比特位数可以不相同,例如,该第一低比特位数为2-bit,第二低比特位数为4-bit,此时,该第一低比特码值为2-bit对应的低比特码值,该第二低比特码值为4-bit对应的低比特码值,这样,本发明中的当前网络层的卷积运算过程即为2-bit*4-bit的乘累加编码的过程,示例地,若需要计算的乘累加运算式为1*4+2*7+3*6+2*5+…+1*8+2*7,可见,该第一低比特码值为2-bit对应的码值,该第二低比特码值为4-bit对应的码值,则第一低比特码值可以包括1、2、3、2、…、1、2,第二低比特码值可以包括4、7、6、5、…、8、7。
S12、在第一低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取第一低比特码值和第二低比特码值之间的简化乘累加数据。
在本发明实施例中,该第一低比特码值的码值数量与该第二低比特码值的码值数量相同,因此,本步骤还可以在第二低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取所述第一低比特码值和所述第二低比特码值之间的简化乘累加数据。其中,该预设数值条件可以包括该码值数量为预设数值的倍数。例如,若该预设数值为2,则在该码值数量为偶数的情况下,可以确定该码值数量满足预设数值条件,在该码值数量为奇数的情况下,可以确定该码值数量不满足预设数值条件;若该预设数值为3,则在该码值数量为3的倍数的情况下,可以确定该码值数量满足预设数值条件,在该码值数量不为3的倍数的情况下,可以确定该码值数量不满足预设数值条件,上述示例只是举例说明,本发明对此不作限定。
其中,该低比特码值乘累加对应关系可以包括第一低比特码值样本的码值组合和第二低比特码值样本的码值组合以及简化乘累加数据样本之间的对应关系。示例地,如表1所示,表1中的第一行和第一列中的数值组合均为低比特码值样本的码值组合,如第一行中的数值组合为第一低比特码值样本的码值组合,第一列中的数值组合为第二低比特码值样本的码值组合,由表1可知,该第一低比特码值样本和第二低比特码值样本均为2-bit对应的码值,并且码值组合的组合码值数量为2,因此,该第一低比特码值样本和第二低比特码值样本的码值组合均为(0,0)、(0,1)、(0,2)、(0,3)、(1,0)、(1,1)、(1,2)、(1,3)、(2,0)、(2,1)、(2,2)、(2,3)、(3,0)、(3,1)、(3,2)、(3,3)。表1中除了第一行和第一列以外的其他数值即为简化乘累加数据样本,例如,第j行第1列的码值组合和第1行第i列的码值组合对应的简化乘累加数据样本位于表1中的第i行第i列。
表1低比特码值乘累加对应关系
|
(0,0) |
(0,1) |
(0,2) |
(0,3) |
(1,0) |
(1,1) |
(1,2) |
(1,3) |
(2,0) |
(2,1) |
(2,2) |
(2,3) |
(3,0) |
(3,1) |
(3,2) |
(3,3) |
(0,0) |
18 |
15 |
12 |
9 |
15 |
14 |
13 |
12 |
12 |
13 |
14 |
15 |
9 |
12 |
15 |
18 |
(0,1) |
15 |
12 |
9 |
6 |
12 |
11 |
10 |
9 |
9 |
10 |
11 |
12 |
6 |
9 |
12 |
15 |
(0,2) |
12 |
9 |
6 |
3 |
9 |
8 |
7 |
6 |
6 |
7 |
8 |
9 |
3 |
6 |
9 |
12 |
(0,3) |
9 |
6 |
3 |
0 |
6 |
5 |
4 |
3 |
3 |
4 |
5 |
6 |
0 |
3 |
6 |
9 |
(1,0) |
15 |
12 |
9 |
6 |
12 |
11 |
10 |
9 |
9 |
10 |
11 |
12 |
6 |
9 |
12 |
15 |
(1,1) |
14 |
11 |
8 |
5 |
11 |
10 |
9 |
8 |
8 |
9 |
10 |
11 |
5 |
8 |
11 |
14 |
(1,2) |
13 |
10 |
7 |
4 |
10 |
9 |
8 |
7 |
7 |
8 |
9 |
10 |
4 |
7 |
10 |
13 |
(1,3) |
12 |
9 |
6 |
3 |
9 |
8 |
7 |
6 |
6 |
7 |
8 |
9 |
3 |
6 |
9 |
12 |
(2,0) |
12 |
9 |
6 |
3 |
9 |
8 |
7 |
6 |
6 |
7 |
8 |
9 |
3 |
6 |
9 |
12 |
(2,1) |
13 |
10 |
7 |
4 |
10 |
9 |
8 |
7 |
7 |
8 |
9 |
10 |
4 |
7 |
10 |
13 |
(2,2) |
14 |
11 |
8 |
5 |
11 |
10 |
9 |
8 |
8 |
9 |
10 |
11 |
5 |
8 |
11 |
14 |
(2,3) |
15 |
12 |
9 |
6 |
12 |
11 |
10 |
9 |
9 |
10 |
11 |
12 |
6 |
9 |
12 |
15 |
(3,0) |
9 |
6 |
3 |
0 |
6 |
5 |
4 |
3 |
3 |
4 |
5 |
6 |
0 |
3 |
6 |
9 |
(3,1) |
12 |
9 |
6 |
3 |
9 |
8 |
7 |
6 |
6 |
7 |
8 |
9 |
3 |
6 |
9 |
12 |
(3,3) |
15 |
12 |
9 |
6 |
12 |
11 |
10 |
9 |
9 |
10 |
11 |
12 |
6 |
9 |
12 |
15 |
(3,3) |
18 |
15 |
12 |
9 |
15 |
14 |
13 |
12 |
12 |
13 |
14 |
15 |
9 |
12 |
15 |
18 |
进一步地,可以首先从第一低比特码值和第二低比特码值中获取待卷积码值对,待卷积码值对中包括第一低比特码值以及与第一低比特码值进行卷积运算的第二低比特码值,接着将待卷积码值对按照卷积运算顺序进行分组得到码值对小组;然后基于低比特码值乘累加对应关系,获取每个码值对小组的小组简化乘累加数据,最后根据小组简化乘累加数据获取所述简化乘累加数据,另外,在本发明的另一可能的实施例中,本发明可以将待卷积码值对进行随机分组得到码值对小组,其中,码值对小组中包括的待卷积码值对的数量为预设数值,本申请对此不作限定。示例地,若需要计算的乘累加运算式为1*0+2*1+3*0+2*3+…+1*3+2*2,且该预设数值为2(即低比特码值乘累加对应关系中的码值组合包括的组合码值数量为2),则可以确定1*0中的1和0为第一个待卷积码值对,2*1中的2和1为第二个待卷积码值对,3*0中的3和0为第三个待卷积码值对,2*3中的2和3为第四个待卷积码值对,…,1*3中的1和3为第n-1个待卷积码值对,2*2中的2和2为第n个待卷积码值对,这样,可以按照卷积运算顺序将第一个待卷积码值对和第二个待卷积码值对作为第一个码值对小组,以及将第三个待卷积码值对和第四个待卷积码值对作为第二个码值对小组,在n满足预设数值条件(即n为偶数)的情况下,将第n-1个待卷积码值对和第n个待卷积码值对作为第n/2个码值对小组,这样,可以通过查找表1,获取第一个码值对小组的小组简化乘累加数据为10,第二个码值对小组的小组简化乘累加数据为6,第i/2个码值对小组的小组简化乘累加数据为10,最后将各个码值对小组的小组简化乘累加数据进行累加得到简化乘累加数据。
需要说明的是,表1中的简化乘累加数据样本是以码值组合包括的组合码值数量为2为例进行说明的,当然,简化乘累加数据样本中的码值组合的组合码值数量还可以为其他数值,例如,该第一低比特码值样本和第二低比特码值样本均为2-bit对应的码值,该码值组合的组合码值数量为3(即该预设数值为3),此时,该第一低比特码值样本和第二低比特码值样本的码值组合均有64种,这样,本步骤在按照卷积运算顺序进行分组时,需要依次将三个待卷积码值作为一个码值对小组,示例地,继续以乘累加运算式为1*0+2*1+3*0+2*3+…+1*3+2*2为例进行说明,可以确定1*0中的1和0为第一个待卷积码值对,2*1中的2和1为第二个待卷积码值对,3*0中的3和0为第三个待卷积码值对,2*3中的2和3为第四个待卷积码值对,…,1*3中的1和3为第n-1个待卷积码值对,2*2中的2和2为第n个待卷积码值对,这样,可以按照卷积运算顺序将第一个待卷积码值对和第二个待卷积码值对以及第三个待卷积码值对作为第一个码值对小组,以及将第四个待卷积码值对和第五个待卷积码值对以及第六个待卷积码值对作为第二个码值对小组,在n满足预设数值条件(即n为3的倍数)的情况下,将第n-2个待卷积码值对、第n-1个待卷积码值对和第n个待卷积码值对作为第n/3个码值对小组。这样,可以通过低比特码值乘累加对应关系,获取各个码值对小组的小组简化乘累加数据,最后将各个码值对小组的小组简化乘累加数据进行累加得到简化乘累加数据。
步骤13、对简化乘累加数据进行还原数据处理,得到当前网络层对应的数据处理结果。
其中,由于码值对小组的实际乘累加数据为偶数,使得实际乘累加数据的最低位均为0,在多个码值对小组的实际乘累加数据进行累加时最低位仍为0,因此,为了避免对最低位的冗余计算,低比特码值乘累加对应关系中的简化乘累加数据样本为不包含最低位的乘累加数据。
另外,码值对小组的实际乘累加数据可以为正数或者负数,因此,实际乘累加数据存在符号位,但是,符号位造成计算复杂,为了避免该问题,本申请中低比特码值乘累加对应关系中的简化乘累加数据样本为不包括符号位的乘累加数据。
综上,本申请获取到的简化乘累加数据需要进行还原数据处理,即可以对简化乘累加数据进行移位数据处理和减法数据处理,得到当前网络层对应的数据处理结果,其中,通过将二进制左移一位以进行最低位的还原(即补充最低位0),以及进行减法数据处理使得目标乘累加数据恢复符号位。
采用上述方法,首先获取待卷积对象;然后将待卷积对象输入至卷积神经网络进行卷积运算,得到目标数据处理结果;其中,对于卷积神经网络的当前网络层,执行以下数据处理步骤得到当前网络层对应的数据处理结果;数据处理步骤包括:获取预设的卷积核包括的第一低比特码值,以及目标对象包括的第二低比特码值;在当前网络层为输入层的情况下,目标对象为待卷积对象;在当前网络层为卷积神经网络中除了输入层以外的其他网络层的情况下,目标对象为当前网络层对应的上一网络层的数据处理结果;接着在第一低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取第一低比特码值和第二低比特码值之间的简化乘累加数据;最后对简化乘累加数据进行还原数据处理,得到当前网络层对应的数据处理结果。这样,由于本申请可以针对卷积神经网络中的当前网络层,从低比特码值乘累加对应关系查找获取到简化乘累加数据,无需进行多次数据相乘的过程,并且采用数据简化方法获取简化乘累加数据,可以减少数据运算的复杂度,从而减少资源占用,以及避免功耗消耗较大。
图2为本发明实施例示出的一种数据处理方法实施例的步骤流程图,图1中所述的数据处理步骤具体可以包括如下步骤:
步骤201,获取预设的卷积核包括的第一低比特码值,以及目标对象包括的第二低比特码值。
其中,在当前网络层为输入层的情况下,目标对象为待卷积对象;在当前网络层为卷积神经网络中除了输入层以外的其他网络层的情况下,目标对象为当前网络层对应的上一网络层的数据处理结果;该待卷积对象可以包括待卷积图像、待卷积音频、或者待卷积视频等通过传感器采集到的对象。
在本发明实施例中,该第一低比特码值和该第二低比特码值均为低比特位数对应的码值,其中,低比特位数可以为1-bit、2-bit、4-bit、6-bit等。示例地,在该低比特位数为2-bit的情况下,对应的低比特码值可以包括0、1、2和3;在该低比特位数为4-bit的情况下,对应的低比特码值可以包括0、1、2、3、4、5、6、7、8、9、10、11、12、13、14和15,上述示例只是举例说明,本发明对此不作限定。
另外,若本发明中的第一低比特码值对应第一低比特位数,以及第二低比特码值对应第二低比特位数,则在一种可能的实现方式中,该第一低比特位数和该第二低比特位数可以相同,例如,该第一低比特位数和第二低比特位数均为2-bit,此时,该第一低比特码值和该第二低比特码值分别为2-bit对应的码值,这样,本发明即为2-bit*2-bit的乘累加编码过程;在另一种可能的实现方式中,该第一低比特位数和该第二低比特位数可以不相同,例如,该第一低比特位数为2-bit,第二低比特位数为4-bit,此时,该第一低比特码值为2-bit对应的低比特码值,该第二低比特码值为4-bit对应的低比特码值,这样,本发明即为计算2-bit*4-bit的乘累加编码过程。
为了方便叙述,本实施例将以2-bit*2-bit的乘累加编码过程为例进行说明。
步骤202,构建低比特码值乘累加对应关系。
在本步骤中,可以通过以下方式构建低比特码值乘累加对应关系:
S21、获取第一低比特码值样本对应的第一真值,以及第二低比特码值样本对应的第二真值。
在本步骤中,由于在卷积神经网络中,通常卷积核以及卷积结果等均存在符号位,考虑到计算机中的数字往往以二进制形式存在,因此,本申请需要获取存在符号位的第一真值以及第二真值,该第一真值即为第一低比特码值样本对应的真实数值,该第二真值即为第二低比特码值样本对应的真实数值,通常可以将该第一低比特码值样本对应的第一真值设置为对称数值,同理地,该第二低比特码值样本对应的第二真值也设置为对称数值。其中,第一真值和第一低比特码值样本之间的对应关系式可以表示为M=(X+(2m-1))/2,M表示第一低比特码值样本,X表示第一真值,m为第一低比特码值样本的第一低比特位数,示例地,若该第一低比特位数为2bit,则该对应关系式可以表示为M=(X+(22-1))/2,此时第一低比特码值样本和第一真值存在表2所示的对应关系,如表2所示:
表2第一低比特码值样本和第一真值之间的对应关系
第一低比特码值样本 |
0 |
1 |
2 |
3 |
第一真值 |
-3 |
-1 |
1 |
3 |
同理地,若该第一低比特位数为4bit,则该对应关系式可以表示为M=(X+(24-1))/2,当然,第二真值和第二低比特码值样本之间也存在上述所述的对应关系式,不再赘述。
S22、获取第一真值和第二真值之间的真值乘积。
可以计算指定第一真值与每一个第二真值之间的真值乘积,该指定第一真值为第一真值中的任一个真值。
其中,继续以2-bit*2-bit的乘累加编码过程为例进行说明,如表3所示,示出了一种2-bit*2-bit的乘法真值表:
表3 2-bit*2-bit的乘法真值表
|
-3 |
-1 |
1 |
3 |
-3 |
9 |
3 |
-3 |
-9 |
-1 |
3 |
1 |
-1 |
-3 |
1 |
-3 |
-1 |
1 |
3 |
3 |
-9 |
-3 |
3 |
9 |
表3中的第一行中的数值为在第一低比特码值样本为2-bit的情况下对应的第一真值,第一列中的数值为在第二低比特码值样本为2-bit的情况下对应的第二真值,第1行第j列的第一真值和第i行第1列的第二真值的真值乘积为第i行第j列中的数值。
S23、将真值乘积进行排序组合得到真值乘积集,并将真值乘积集中包括的真值乘积进行求和得到真值乘积和值。
其中,真值乘积集中包括的真值乘积的数量为预设数值。本步骤可以首先获取指定真值乘积对应的多个指定真值乘积集,该指定真值乘积集中包括指定真值乘积和任一个真值乘积,从而可以计算指定真值乘积集中的指定真值乘积与任一个真值乘积之间的真值乘积和值,该指定真值乘积为任一个真值乘积。
示例地,如表3可知,真值乘积包括-9,-3,-1,1,3,9,因此,在预设数值为2的情况下,若指定真值乘积为-9,则指定真值乘积集可以包括{-9,-9}、{-9,-3}、{-9,-1}、{-9,1}、{-9,3}、{-9,9},从而可以计算每个指定真值乘积集对应的真值乘积和值,同理地,依次获取每个真值乘积对应的真值乘积集,从而可以计算各个真值乘积集对应的真值乘积和值,为了便于后续查表,可以将真值乘积和值表示为表格形式,如表4所示:
表4真值乘积和值表
|
-9 |
-3 |
-1 |
1 |
3 |
9 |
-9 |
-18 |
-12 |
-10 |
-8 |
-6 |
0 |
-3 |
-12 |
-6 |
-4 |
-2 |
0 |
6 |
-1 |
-10 |
-4 |
-2 |
0 |
2 |
8 |
1 |
-8 |
-2 |
0 |
2 |
4 |
10 |
3 |
-6 |
0 |
2 |
4 |
6 |
12 |
9 |
0 |
6 |
8 |
10 |
12 |
18 |
如表4所示,第一行中的数值和第一列中的数值即为不同的真值乘积,第1行第j列的真值乘积和第i行第1列的真值乘积之间的真值乘积和值为第i行第j列中的数值。
S24、将真值乘积和值进行简化处理得到简化和值。
由表4可知,表4中的真值乘积和值均为偶数,因此,在该真值乘积和值用二进制表示时,最低位为0,并且表4中的真值乘积和值存在正数和负数,为了减少计算复杂度,以及节省计算资源,本申请可以将真值乘积和值对应的二进制中的最低位去除,并且将所有的真值乘积和值转换为正整数,从而省去符号位,即可以将真值乘积和值按照简化处理公式进行简化处理得到简化和值,若该第一低比特码值样本的第一低比特位数和该第二低比特码值样本的第二低比特位数相同,则该简化处理公式为:Rr=(R+2*(2m-1)*(2m-1))/2,其中,R为真值乘积和值,Rr为简化和值,m为第一低比特码值样本的第一低比特位数,若该第一低比特码值样本的第一低比特位数和该第二低比特码值样本的第二低比特位数不相同,则该简化处理公式为:Rr=(R+2*(2a-1)*(2b-1))/2,a表示第一低比特码值样本的第一低比特位数,b表示第二低比特码值样本的第二低比特位数。
S25、根据简化和值构建第一低比特码值样本和第二低比特码值样本之间的低比特码值乘累加对应关系。
在该第一低比特码值样本和第二低比特码值样本均为m-bit对应的码值,并且码值组合的组合码值数量为2的情况下,该低比特码值乘累加对应关系如表1所示。表1中的简化乘累加数据样本的计算公式可以为:Rr=((2*M0-(2m-1))*(2*N0-(2m-1))+(2*M1-(2m-1))*(2*N1-(2m-1))+2*(2m-1)*(2m-1))/2,其中,M0和M1为第一低比特码值样本,N0和N1为第二低比特码值样本,m为第一低比特码值样本的第一低比特位数,若以2-bit*2-bit的乘累加编码过程为例,则Rr=((2*M0-3))*(2*N0-3)+(2*M1-3)*(2*N1-3)+18)/2,上述示例只是举例说明,本发明对此不作限定。
需要说明的是,由于在第一低比特码值的码值数量满足预设数值条件的情况下,本发明可以获取到全部的第一低比特码值和第二低比特码值之间的简化乘累加数据,在第一低比特码值的码值数量不满足预设数值条件的情况下,则存在无法获取到简化乘累加数据的部分第一低比特码值,以及与部分第一低比特码值对应的部分第二低比特码值,因此,本申请需要针对两种情况执行相应的步骤,具体地,在第一低比特码值的码值数量满足预设数值条件的情况,执行步骤203和步骤204;在第一低比特码值的码值数量不满足预设数值条件的情况,执行步骤205至步骤208。
步骤203,在第一低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取所述第一低比特码值和所述第二低比特码值之间的简化乘累加数据。
具体过程可以参考步骤102,不再赘述。
需要说明的是,由于可以将该低比特码值乘累加对应关系存储于存储器中,从而处理器可以从存储器中读取该低比特码值乘累加对应关系。示例地,该存储器可以为外部存储器,如DDR内存(Double Data Rate SDRAM,双倍速率SDRAM)、硬盘、SD卡(SecureDigital Memory Card,安全数码卡)等,该存储器还可以是内部存储器,如对于FPGA(Field-Programmable Gate Array;现场可编程门阵列),该内部存储器可以为Block RAM(块随机存储器;Block Random Access Memory)、LUT(Look-Up-Table;显示查找表)或者Flip-flop;对于ASIC(Application Specific Integrated Circuit;专用集成电路),该内部存储器可以为RAM(随机存储器;RandomAccess Memory),或者门电路等。
步骤204,对简化乘累加数据进行移位数据处理和减法数据处理,得到当前网络层对应的数据处理结果。
具体过程可以参考步骤102,不再赘述。
为了便于对本申请理解,以r=x1*y1+x2*y2+...+xt*yt为例进行进一步说明,r为当前网络层对应的数据处理结果,x1、x2、…、xt为第一低比特码值,y1、y2、…、yt为第二低比特码值,若预设数值为2,且t为偶数,则本发明可以将R1=x1*y1+x2*y2作为第一个计算单元,…,将Rt/2=xt-1*yt-1+xt*yt作为第t/2个计算单元,则此时,r=R1+...+Rt/2,为了使得计算R1、…、Rt/2之间计算和值过程简化,可以获取R1对应的第一个小组简化乘累加数据以及Rt/2对应的第t/2个小组简化乘累加数据从而可以获取到简化乘累加数据若该第一低比特码值样本的第一低比特位数和该第二低比特码值样本的第二低比特位数相同,则已知因此,rr=(r+t*(2n-1)*(2n-1))/2,这样,可以得到r=rr*2-t*(2n-1)*(2n-1),可见,“rr*2”中的“*2”即为对简化乘累加数据恢复最低位,“-t*(2n-1)*(2n-1)”即为恢复简化乘累加数据的符号位,若该第一低比特码值样本的第一低比特位数和该第二低比特码值样本的第二低比特位数不相同,则已知因此,rr=(r+t*(2a-1)*(2b-1))/2,这样,可以得到r=rr*2-t*(2a-1)*(2b-1)。
步骤205,在第一低比特码值的码值数量不满足预设数值条件的情况下,从第一低比特码值中获取满足预设数值条件的最大码值数量的第一指定低比特码值,以及从第二低比特码值中获取与第一指定低比特码值进行卷积运算的第二指定低比特码值。
其中,该预设数值条件为预设数值的倍数,因此,最大码值数量小于码值数量,且为预设数值的最大倍数。示例地,若该第一低比特码值的码值数量为d,该预设数值为2,则在d不为偶数的情况下,该最大码值数量即为d-1,此时,可以按照卷积运算顺序从第一低比特码值中获取d-1个第一指定低比特码值,并从第二低比特码值中获取与d-1个第一指定低比特码值进行卷积运算的d-1个第二指定低比特码值,当然也可以随机从第一低比特码值中获取d-1个第一指定低比特码值,本发明对此不作限定;若该第一低比特码值的码值数量为k,该预设数值为3,则在k不为3的倍数的情况下,则可以根据k除以3得到的余数确定该最大码值数量,例如该余数为1,最大码值数量即为k-1,该余数为2,最大码值数量即为k-2,上述示例只是举例说明,本申请对此不作限定。
步骤206,基于低比特码值乘累加对应关系,获取第一指定低比特码值和第二指定低比特码值之间的指定码值简化乘累加数据。
同样地,由于可以将该低比特码值乘累加对应关系存储于存储器中,从而处理器可以从存储器中读取该低比特码值乘累加对应关系。具体过程可以参考步骤102中的获取简化乘累加数据的过程,不再赘述。
步骤207,获取第一剩余低比特码值和第二剩余低比特码值之间的剩余码值乘累加数据。
其中,第一剩余低比特码值为第一低比特码值中除了第一指定低比特码值以外的低比特码值,第二剩余低比特码值为第二低比特码值中的与第一剩余低比特码值进行卷积运算的低比特码值。在本步骤中,可以采用现有技术中的乘累加方法计算该剩余码值乘累加数据,不再赘述。
步骤208,根据指定码值简化乘累加数据和剩余码值乘累加数据,获取当前网络层对应的数据处理结果。
在本步骤中,首先需要对指定码值简化乘累加数据进行还原数据处理,得到待合并数据处理结果,并将该待合并数据处理结果与剩余码值乘累加数据进行合并得到当前网络层对应的数据处理结果。其中,对该指定码值简化乘累加数据进行还原数据处理可以参考步骤102,不再赘述。
另外,本申请可以将上述所述的数据处理方法编译成相应的代码,并将编译好的代码加载于FPGA或ASIC中,从而可以充分利用低比特的特性来降低资源消耗。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
采用上述方法,首先获取待卷积对象;然后将待卷积对象输入至卷积神经网络进行卷积运算,得到目标数据处理结果;其中,对于卷积神经网络的当前网络层,执行以下数据处理步骤得到当前网络层对应的数据处理结果;数据处理步骤包括:获取预设的卷积核包括的第一低比特码值,以及目标对象包括的第二低比特码值;在当前网络层为输入层的情况下,目标对象为待卷积对象;在当前网络层为卷积神经网络中除了输入层以外的其他网络层的情况下,目标对象为当前网络层对应的上一网络层的数据处理结果;接着在第一低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取第一低比特码值和第二低比特码值之间的简化乘累加数据;最后对简化乘累加数据进行还原数据处理,得到当前网络层对应的数据处理结果。这样,由于本申请可以针对卷积神经网络中的当前网络层,从低比特码值乘累加对应关系查找获取到简化乘累加数据,无需进行多次数据相乘的过程,并且采用数据简化方法获取简化乘累加数据,可以减少数据运算的复杂度,从而减少资源占用,以及避免功耗消耗较大。
参照图3,示出了本申请的一种数据处理装置300实施例的结构框图,具体可以包括如下模块:
对象获取模块301,用于获取待卷积对象;
处理结果获取模块302,用于将所述待卷积对象输入至卷积神经网络进行卷积运算,得到目标数据处理结果;其中,对于所述卷积神经网络的当前网络层,执行以下数据处理步骤得到所述当前网络层对应的数据处理结果;
所述数据处理步骤包括:
获取预设的卷积核包括的第一低比特码值,以及目标对象包括的第二低比特码值;在所述当前网络层为输入层的情况下,所述目标对象为所述待卷积对象;在所述当前网络层为所述卷积神经网络中除了所述输入层以外的其他网络层的情况下,所述目标对象为所述当前网络层对应的上一网络层的数据处理结果;
在所述第一低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取所述第一低比特码值和所述第二低比特码值之间的简化乘累加数据;
对所述简化乘累加数据进行还原数据处理,得到所述当前网络层对应的数据处理结果。
在本申请的一个可选实施例中,所述数据处理步骤包括:
从所述第一低比特码值和所述第二低比特码值中获取待卷积码值对;所述待卷积码值对中包括所述第一低比特码值以及与所述第一低比特码值进行卷积运算的第二低比特码值;
将所述待卷积码值对按照卷积运算顺序进行分组得到码值对小组;
基于所述低比特码值乘累加对应关系,获取每个码值对小组的小组简化乘累加数据;
根据所述小组简化乘累加数据获取所述简化乘累加数据。
在本申请的一个可选实施例中,所述数据处理步骤包括:
对所述简化乘累加数据进行移位数据处理和减法数据处理,得到所述当前网络层对应的数据处理结果。
在本申请的一个可选实施例中,所述数据处理步骤还包括:
在所述第一低比特码值的码值数量不满足预设数值条件的情况下,从所述第一低比特码值中获取满足所述预设数值条件的最大码值数量的第一指定低比特码值,以及从所述第二低比特码值中获取与所述第一指定低比特码值进行卷积运算的第二指定低比特码值;
基于所述低比特码值乘累加对应关系,获取所述第一指定低比特码值和所述第二指定低比特码值之间的指定码值简化乘累加数据;
获取第一剩余低比特码值和第二剩余低比特码值之间的剩余码值乘累加数据;所述第一剩余低比特码值为所述第一低比特码值中除了所述第一指定低比特码值以外的低比特码值,所述第二剩余低比特码值为所述第二低比特码值中的与所述第一剩余低比特码值进行卷积运算的低比特码值;
根据所述指定码值简化乘累加数据和所述剩余码值乘累加数据,获取所述当前网络层对应的数据处理结果。
在本申请的一个可选实施例中,所述预设数值条件包括所述码值数量为预设数值的倍数。
在本申请的一个可选实施例中,所述数据处理步骤还包括:
构建所述低比特码值乘累加对应关系。
在本申请的一个可选实施例中,所述数据处理步骤包括:
获取第一低比特码值样本对应的第一真值,以及第二低比特码值样本对应的第二真值;
获取所述第一真值和所述第二真值之间的真值乘积;
将所述真值乘积进行排序组合得到真值乘积集,并将所述真值乘积集中包括的真值乘积进行求和得到真值乘积和值;所述真值乘积集中包括的真值乘积的数量为预设数值;
将所述真值乘积和值进行简化处理得到简化和值;
根据所述简化和值构建所述第一低比特码值样本和所述第二低比特码值样本之间的低比特码值乘累加对应关系。
采用上述装置,首先获取待卷积对象;然后将待卷积对象输入至卷积神经网络进行卷积运算,得到目标数据处理结果;其中,对于卷积神经网络的当前网络层,执行以下数据处理步骤得到当前网络层对应的数据处理结果;数据处理步骤包括:获取预设的卷积核包括的第一低比特码值,以及目标对象包括的第二低比特码值;在当前网络层为输入层的情况下,目标对象为待卷积对象;在当前网络层为卷积神经网络中除了输入层以外的其他网络层的情况下,目标对象为当前网络层对应的上一网络层的数据处理结果;接着在第一低比特码值的码值数量满足预设数值条件的情况下,基于低比特码值乘累加对应关系,获取第一低比特码值和第二低比特码值之间的简化乘累加数据;最后对简化乘累加数据进行还原数据处理,得到当前网络层对应的数据处理结果。这样,由于本申请可以针对卷积神经网络中的当前网络层,从低比特码值乘累加对应关系查找获取到简化乘累加数据,无需进行多次数据相乘的过程,并且采用数据简化方法获取简化乘累加数据,可以减少数据运算的复杂度,从而减少资源占用,以及避免功耗消耗较大。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。
图4为本申请一实施例提供的乘加器的硬件结构示意图。如图4所示,该数据处理装置可以包括输入设备40、处理器41、输出设备42、存储器43和至少一个通信总线44。通信总线44用于实现元件之间的通信连接。存储器43可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,存储器43中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。
可选的,上述处理器41例如可以为中央处理器(Central Processing Unit,简称CPU)、应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,该处理器41通过有线或无线连接耦合到上述输入设备40和输出设备42。
可选的,上述输入设备40可以包括多种输入设备,例如可以包括面向用户的用户接口、面向设备的设备接口、软件的可编程接口、摄像头、传感器中至少一种。可选的,该面向设备的设备接口可以是用于设备与设备之间进行数据传输的有线接口、还可以是用于设备与设备之间进行数据传输的硬件插入接口(例如USB接口、串口等);可选的,该面向用户的用户接口例如可以是面向用户的控制按键、用于接收语音输入的语音输入设备以及用户接收用户触摸输入的触摸感知设备(例如具有触摸感应功能的触摸屏、触控板等);可选的,上述软件的可编程接口例如可以是供用户编辑或者修改程序的入口,例如芯片的输入引脚接口或者输入接口等;可选的,上述收发信机可以是具有通信功能的射频收发芯片、基带处理芯片以及收发天线等。麦克风等音频输入设备可以接收语音数据。输出设备42可以包括显示器、音响等输出设备。
在本实施例中,该数据处理装置的处理器包括用于执行背景的设置装置中各模块的功能,具体功能和技术效果参照上述实施例即可,此处不再赘述。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据处理方法、装置和乘加器及存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。