数据处理方法及数据处理装置

文档序号:29091298发布日期:2022-03-02 02:53阅读:95来源:国知局
数据处理方法及数据处理装置

1.本公开涉及人工智能技术领域,具体涉及神经网络加速计算领域,更具体地,涉及一种数据处理方法及数据处理装置。


背景技术:

2.目前边缘设备如自动驾驶等领域的计算需要在资源和功耗低的情况下满足计算精度高和计算延迟小的特点,而相关技术的计算能力无法满足如双目深度估计等实际应用。制约计算能力的主要原因是输入数据量大,无法满足计算所需输入的数据量,因而在计算过程中需要完成大量数据传输,增加了数据通信开销。
3.现阶段,输入数据速率与计算能力不匹配的问题是专用加速器面临的挑战,而对于双目深度估计等应用,计算实时性要求高,尤其是双目视觉算法中,要求同时计算左图与右图两个数据流,且要求两个数据流同时输出。相关技术中的边缘端设备受功耗和设备面积的制约,利用极低的硬件成本同时计算两个数据流具有十分重要的意义。


技术实现要素:

4.有鉴于此,本公开提供了一种数据处理方法及数据处理装置。
5.本公开的一个方面提供了一种数据处理方法,包括:
6.从第一缓存中获取待处理图像的数据矩阵和目标卷积层的权重矩阵;
7.将上述数据矩阵和上述权重矩阵按行分割为多个数据流,并分别写入多个第二缓存中,其中,每个上述第二缓存具有对应的计算单元;
8.对于每个上述第二缓存,在上述第二缓存中的已写入数据流满足计算窗口需求的情况下,基于预设步长,将上述已写入数据流构建第一数据序列和第二数据序列;
9.基于上述预设步长,将上述第一数据序列和上述第二数据序列分别从上述计算单元的两侧输入,其中,上述计算单元包括串联的多个计算节点;以及
10.将多个上述计算节点累加的部分积输入加法树中,得到当前计算窗口的输出值。
11.根据本公开的实施例,其中,上述数据矩阵的维度为m,上述权重矩阵的维度为n,其中,上述m为正整数,上述n为小于m的正整数;
12.其中,将上述数据矩阵和上述权重矩阵按行分割为多个数据流,包括:
13.对上述数据矩阵和上述权重矩阵按行进行分割,得到m个数据向量和n个权重向量;以及
14.将m个上述数据向量中的第(kn+i)个上述数据向量和n个上述权重向量中的第i个上述权重向量构建为第i个上述数据流,其中,上述k为0或小于m/n的正整数,上述i为小于或等于n的正整数。
15.根据本公开的实施例,上述数据处理方法还包括:
16.在上述已写入数据流中包括上述数据向量的n个激活值和上述权重向量的n个权重值的情况下,确定上述已写入数据流满足上述计算窗口需求。
17.根据本公开的实施例,其中,上述基于预设步长,将上述已写入数据流构建第一数据序列和第二数据序列,包括:
18.以上述预设步长为间隔,基于上述已写入数据流中的n个激活值来构建第一数据序列;以及
19.以上述预设步长为间隔,基于上述已写入数据流中的n个权重值来构建第二数据序列。
20.根据本公开的实施例,其中,
21.上述数据矩阵包括归属于第一待处理图像的第一数据矩阵和归属于第二待处理图像的第二数据矩阵;
22.上述权重矩阵包括归属于第一目标卷积层的第一权重矩阵和归属于第二目标卷积层的第二权重矩阵;
23.其中,上述第一数据矩阵的维度和第二数据矩阵的维度相等,上述第一权重矩阵的维度和第二权重矩阵的维度相等。
24.根据本公开的实施例,其中,上述将上述数据矩阵和上述权重矩阵按行分割为多个数据流,包括:
25.将上述第一数据矩阵和上述第一权重矩阵按行分割为多个第一数据流;
26.将上述第二数据矩阵和上述第二权重矩阵按行分割为多个第二数据流。
27.根据本公开的实施例,其中,上述已写入数据流包括上述第一数据流中的多个激活值和多个权重值、上述第二数据流中的多个激活值和多个权重值;
28.其中,上述基于预设步长,将上述已写入数据流构建第一数据序列和第二数据序列,包括:
29.在上述预设步长为1的情况下,将上述第一数据流中的多个激活值和上述第二数据流中的多个激活值交替构建得到上述第一数据序列;以及
30.将上述第一数据流中的多个权重值和上述第二数据流中的多个权重值交替构建得到上述第二数据序列。
31.根据本公开的实施例,其中,上述基于预设步长,将上述已写入数据流构建第一数据序列和第二数据序列,包括:
32.在上述预设步长为n的情况下,将上述第一数据流中的多个激活值和上述第二数据流中的多个激活值以(n-1)位为间隔,交替构建得到上述第一数据序列,其中,上述n为大于1的正整数;以及
33.将上述第一数据流中的多个权重值和上述第二数据流中的多个权重值以(n-1)位为间隔,交替构建得到上述第二数据序列。
34.根据本公开的实施例,上述数据处理方法还包括:
35.将上述当前计算窗口的输出值作为一个元素,遍历所有计算窗口的输出值,得到用于表示上述目标卷积层对上述数据矩阵的运算结果的输出矩阵。
36.本公开的另一个方面提供了一种数据处理装置,包括:
37.获取模块,用于从第一缓存中获取待处理图像的数据矩阵和目标卷积层的权重矩阵;
38.分割模块,用于将上述数据矩阵和上述权重矩阵按行分割为多个数据流,并分别
写入多个第二缓存中,其中,每个上述第二缓存具有对应的计算单元;
39.数据序列构建模块,用于对于每个上述第二缓存,在上述第二缓存中的已写入数据流满足计算窗口需求的情况下,基于预设步长,将上述已写入数据流构建第一数据序列和第二数据序列;
40.计算模块,用于基于上述预设步长,将上述第一数据序列和上述第二数据序列分别从上述计算单元的两侧输入,其中,上述计算单元包括串联的多个计算节点;以及
41.输出模块,用于将多个上述计算节点累加的部分积输入加法树中,得到当前计算窗口的输出值。
42.基于以上技术方案,本公开的数据处理方法及数据处理装置相对于现有技术至少具有以下优势之一:
43.本公开的提供的数据处理方法可以对双目相机采集到的左右两张视差图进行运算,通过对左右两张视差图的卷积计算,可以解决在边缘设备如fpga等中部署双目视觉中的立体匹配算法的问题、降低计算所需硬件资源、降低硬件执行中对双数据流的等待、提高算法部署的实用性、实时性。
附图说明
44.通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
45.图1示意性示出了可以应用本公开的数据处理方法的示例性系统架构;
46.图2示意性示出了根据本公开实施例的数据处理方法的流程图
47.图3示意性示出了根据本公开实施例的计算节点的示意图;
48.图4示意性示出了根据本公开实施例的计算单元的示意图;
49.图5示意性示出了根据本公开实施例的计算阵列的示意图;
50.图6示意性示出了根据本公开实施例的计算单元的结构;
51.图7示意性示出了根据本公开实施例的脉动阵列计算双数据流任务的各个时间节点的计算结果示意图;
52.图8示意性示出了根据本公开实施例的数据处理装置的框图;
53.图9示意性示出了根据本公开实施例的适于实现数据处理方法的电子设备的框图。
具体实施方式
54.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
55.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
56.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
57.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
58.在本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
59.在实现本公开的发明构思过程中,发明人发现利用硬件加速乘累加操作是深度学习加速器的关键加速方向,如加速单个cnn(卷积神经网络)层对于提升计算速度可起决定作用。传统脉动阵列可以应用于cnn的窗口计算,加速卷积神经网络的计算过程,传统脉动阵列可以将权重固定在脉动阵列中,将参数进行流动,最终利用加法树完成一次输出,此种方案未考虑权重的流动,灵活性较低。
60.具体地,本公开的实施例提供了一种数据处理方法及数据处理装置。该方法包括:从第一缓存中获取待处理图像的数据矩阵和目标卷积层的权重矩阵;将数据矩阵和权重矩阵按行分割为多个数据流,并分别写入多个第二缓存中,其中,每个第二缓存具有对应的计算单元;对于每个第二缓存,在第二缓存中的已写入数据流满足计算窗口需求的情况下,基于预设步长,将已写入数据流构建第一数据序列和第二数据序列;基于预设步长,将第一数据序列和第二数据序列分别从计算单元的两侧输入,其中,计算单元包括串联的多个计算节点;以及将多个计算节点累加的部分积输入加法树中,得到当前计算窗口的输出值。
61.根据本公开的实施例,该数据处理方法可以从软件层面压缩模型规模,降低模型的存储空间和数据传输数量后,也可以利用本公开计算压缩后的数据。综上,本公开的数据处理方法可以在硬件消耗极低的情况下可以同时计算2个数据流数据,并且输出结果在同一阵列交替输出,保证了2个数据流的时序同步。
62.在本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
63.在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
64.图1示意性示出了可以应用本公开的数据处理方法的示例性系统架构。
65.如图1所示,待处理图像的数据矩阵和目标卷积层的权重矩阵可以存储于第一缓存110中,将数据矩阵和权重矩阵按行分割为多个数据流,并分别写入第二缓存121、122、123、124、125、126中,其中,每个第二缓存具有对应的计算单元;对于每个第二缓存,在第二缓存中的已写入数据流满足计算窗口需求的情况下,基于预设步长,将已写入数据流构建第一数据序列和第二数据序列;基于预设步长,将第一数据序列和第二数据序列分别从计算单元的两侧输入,其中,计算单元包括串联的多个计算节点;以及将多个计算节点累加的
部分积输入加法树中,得到当前计算窗口的输出值。第一计算存储模块131可以存储第二缓存121、122、123计算所需的数据,第二计算存储模块可以存储124、125、126计算所需的数据,计算窗口的输出值可以传输至输出值存储模块140。
66.图2示意性示出了根据本公开实施例的数据处理方法的流程图。
67.如图2所示,该数据处理方法包括操作s201~s205。
68.在操作s201,从第一缓存中获取待处理图像的数据矩阵和目标卷积层的权重矩阵。
69.在操作s202,将数据矩阵和权重矩阵按行分割为多个数据流,并分别写入多个第二缓存中,其中,每个第二缓存具有对应的计算单元。
70.在操作s203,对于每个第二缓存,在第二缓存中的已写入数据流满足计算窗口需求的情况下,基于预设步长,将已写入数据流构建第一数据序列和第二数据序列。
71.在操作s204,基于预设步长,将第一数据序列和第二数据序列分别从计算单元的两侧输入,其中,计算单元包括串联的多个计算节点。
72.在操作s205,将多个计算节点累加的部分积输入加法树中,得到当前计算窗口的输出值。
73.根据本公开的实施例,数据矩阵的维度为m,权重矩阵的维度为n,其中,m为正整数,n为小于m的正整数;
74.其中,将数据矩阵和权重矩阵按行分割为多个数据流,包括:
75.对数据矩阵和权重矩阵按行进行分割,得到m个数据向量和n个权重向量;以及
76.将m个数据向量中的第(kn+i)个数据向量和n个权重向量中的第i个权重向量构建为第i个数据流,其中,k为0或小于m/n的正整数,i为小于或等于n的正整数。
77.根据本公开的实施例,上述数据处理方法还包括:
78.在已写入数据流中包括数据向量的n个激活值和权重向量的n个权重值的情况下,确定已写入数据流满足计算窗口需求。
79.根据本公开的实施例,其中,基于预设步长,将已写入数据流构建第一数据序列和第二数据序列,包括:
80.以预设步长为间隔,基于已写入数据流中的n个激活值来构建第一数据序列;以及
81.以预设步长为间隔,基于已写入数据流中的n个权重值来构建第二数据序列。
82.根据本公开的实施例,其中,
83.数据矩阵包括归属于第一待处理图像的第一数据矩阵和归属于第二待处理图像的第二数据矩阵;
84.权重矩阵包括归属于第一目标卷积层的第一权重矩阵和归属于第二目标卷积层的第二权重矩阵;
85.其中,第一数据矩阵的维度和第二数据矩阵的维度相等,第一权重矩阵的维度和第二权重矩阵的维度相等。
86.根据本公开的实施例,其中,将数据矩阵和权重矩阵按行分割为多个数据流,包括:
87.将第一数据矩阵和第一权重矩阵按行分割为多个第一数据流;
88.将第二数据矩阵和第二权重矩阵按行分割为多个第二数据流。
89.根据本公开的实施例,其中,已写入数据流包括第一数据流中的多个激活值和多个权重值、第二数据流中的多个激活值和多个权重值;
90.其中,基于预设步长,将已写入数据流构建第一数据序列和第二数据序列,包括:
91.在预设步长为1的情况下,将第一数据流中的多个激活值和第二数据流中的多个激活值交替构建得到第一数据序列;以及
92.将第一数据流中的多个权重值和第二数据流中的多个权重值交替构建得到第二数据序列。
93.根据本公开的实施例,其中,基于预设步长,将已写入数据流构建第一数据序列和第二数据序列,包括:
94.在预设步长为n的情况下,将第一数据流中的多个激活值和第二数据流中的多个激活值以(n-1)位为间隔,交替构建得到第一数据序列,其中,n为大于1的正整数;以及
95.将第一数据流中的多个权重值和第二数据流中的多个权重值以(n-1)位为间隔,交替构建得到第二数据序列。
96.根据本公开的实施例,上述数据处理方法还包括:
97.将当前计算窗口的输出值作为一个元素,遍历所有计算窗口的输出值,得到用于表示目标卷积层对数据矩阵的运算结果的输出矩阵。
98.本公开的一个实施例中,提供了一种数据处理方法,包括:
99.操作s1,从第一缓存中获取待处理图像的数据矩阵和目标卷积层的权重矩阵。
100.根据本公开的实施例,数据矩阵和目标卷积层的权重矩阵过可以通过axi总线传入第一缓存中,但不限于此,还可以将摄像机实时采集的数据送入第一缓存中。
101.操作s2,将数据矩阵和权重矩阵按行分割为多个数据流,并分别写入多个第二缓存中,其中,每个第二缓存具有对应的计算单元。
102.根据本公开的实施例,每一个计算单元的计算数据至少需要包括一次完整乘累加计算所需的数据,其中,乘累加计算可以是卷积计算。之后分批次送入第二缓存中。在第二缓存中,设置标志单次数据量满足最低计算要求的指示信号,计算阵列控制电路根据指示信号启动一次完整计算,同时数据继续从第一缓存中送入阵列中,当数据不足完成一次完整窗口计算时,停止计算。
103.根据本公开的实施例,数据流可以包括灰度图像数据等。
104.根据本公开的实施例,计算阵列可以包括多个计算单元,每个计算单元可以包括多个计算节点。
105.操作s3,对于每个所述第二缓存,在所述第二缓存中的已写入数据流满足计算窗口需求的情况下,基于预设步长,将所述已写入数据流构建第一数据序列和第二数据序列。
106.操作s4,基于预设步长,将第一数据序列和第二数据序列分别从计算单元的两侧输入,其中,计算单元包括串联的多个计算节点。
107.图3示意性示出了根据本公开实施例的计算节点的示意图。
108.如图3所示,计算节点310内为乘法操作,
109.可以通过公式(4)表示。
110.y=w
×
x;
ꢀꢀꢀꢀ
(4)
111.公式(4)中w为数据流的一个权重向量,x为数据流的一个激活向量,计算完成可以
存入计算单元专用缓存321、322,结果可以表示为:
112.y1=y1+y
113.y2=y2+y
114.其中y1代表数据流1的专用缓存结果,y2代表数据流2的专用缓存结果。
115.图4示意性示出了根据本公开实施例的计算单元的示意图。
116.如图4所示,计算单元400内可以包括3个串联的计算节点411、412、413。第一数据序列可以包括激活值rx1、lx1、rx2、lx2,第二数据序列可以还包括权重值rw1、lw1、rw2、lw2,第一数据序列和第二数据序列分别从计算单元400的两侧输入。计算单元400可以通过脉动形式将双向流动的第一数据序列rx1、lx1、rx2、lx2和第二数据序列rw1、lw1、rw2、lw2进行乘加计算,并交替两个数据序列。数据序列进入计算阵列的方式为数据流中的激活值正向按照节拍送入阵列,数据流中的权重值反向按照节拍送入计算阵列。
117.图5示意性示出了根据本公开实施例的计算阵列的示意图。
118.如图5所示,计算阵列500可以包括3个计算单元。计算阵列500可以是应用于深度学习加速器的双向双数据流脉动计算阵列,计算内容可以是通过公式(5)表示。
[0119][0120]
公式(5)中,datas为总数据块,data为输入数据流的计算窗口数据,len()为数据量,y[k]为第k个窗口的计算结果,w为权重矩阵,x为数据矩阵。图5中纵向的3个计算节点构成一个加法树。利用该双向双数据流脉动阵列结构计算所述双路数据流成一个加法树。利用该双向双数据流脉动阵列结构计算所述双路数据流单个计算单元可以得到计算完成后的计算结果包括第一数据流的部分计算窗口的部分积,n个计算单元可以得到第一数据流的完整计算窗口的部分积,n为窗口尺寸的行数,每个奇数周期将n个部分积在计算单元中第一数据流的专用缓存中进行累加操作,可得到n个计算部分积累加结果,最后将所有累加后的部分积送入加法树中得到第一数据流在一个计算窗口的输出值。对于第二数据流的计算,所有偶数周期送入第二数据流的当前计算窗口的权重值和激活值,每次送入一组,在计算阵列中这些权重值与激活值会对向流动,中间间隔的是另一组数据流,n个计算单元可以得到第二数据流的完整计算窗口的部分积,n为窗口尺寸的行数,每个偶数周期将n个部分积在计算单元中第二数据流的专用缓存中进行累加操作,可得到n个计算部分积的累加结果,最后将所有这些部分积的累加结果送入加法树中得到第二数据流的最终一个计算窗口的输出值。
[0121]
图6示意性示出了根据本公开实施例的计算单元的结构。
[0122]
如图6所示,专用缓存611、612可以是用于储存第一数据流与第二数据流,在判断单元621经奇偶周期判断后送入串行累加单元,和来自乘法运算的结果进行加法运算,与专用缓存中的已存在值累加后存入该专用缓存中,替换掉原来存在的值,更新完成专用缓存中的值。
[0123]
在得到整个计算窗口的的输出值后,将计算阵列中所有并行计算单元的结果送入加法树中,复位专用缓存中的值为0,开始重新进行对应数据流部分积的累加;加法树根据所有对应专用缓存中的输入值进行求和操作,可以得到完整计算窗口的计算结果,并将该计算结果存入输出专用缓存中;根据双向双数据流的计算阵列和其数据流流动时的计算过程,可以得到第一数据流与第二数据流的计算窗口中部分积结果,将部分积结果送入加法
树可最终得到计算窗口的输出值。
[0124]
图7示意性示出了根据本公开实施例的各个时间节点的计算结果示意图。
[0125]
如图7所示,在预设步长为1的情况下,将第一数据流中的激活值rx0、rx1、rx2和第二数据流中的激活值1x0、lx1、1x2交替构建得到第一数据序列;将第一数据流中的权重值rw0、rw1、rw2和第二数据流中的多个权重值lw0、lw1、1w2交替构建得到第二数据序列。
[0126]
3*3的计算阵列可以由3个3*1的计算单元组成,一个3*1的计算单元中各计算节点计算第一数据流的情况可以是,x从计算节点0流向计算节点2,w由计算节点2流向计算节点0,且计算可复用权重,w在流到计算节点0时重新回到计算节点2,
[0127]
在时刻0:rx0在计算节点0,rw0在计算节点2;
[0128]
在时刻1:rx0在计算节点1,rw0在计算节点1;lx0在计算节点0,lw0在计算节点2;
[0129]
在时刻2:rx0在计算节点2,rw0在计算节点0;lx0在计算节点1,lw0在计算节点1;rx1在计算节点0,rw1在计算节点2;
[0130]
在时刻3:lw1在计算节点2;lx0在计算节点2,lw0在计算节点0;rx1在计算节点1,rw1在计算节点1;lx1在计算节点0;
[0131]
在时刻4:rx1在计算节点2;lw1在计算节点2;lx1在计算节点1,rw1在计算节点1;rx2在计算节点0,lw0在计算节点0。
[0132]
其中,所述第一数据流和第二数据流的激活值和权重值分别从计算单元两边对向流入。第一数据流和第二数据流的权重值和激活值交替输入计算单元;计算节点1节点的计算情况可以通过表一表示。
[0133]
表一
[0134]
时刻1计算节点1输出rx0*rw0时刻2计算节点1输出lx0*lw0时刻3计算节点1输出rx1*rw1时刻4计算节点1输出lx1*lw1
[0135]
在计算节点1中,时刻1、时刻3、时刻5分别输出了第一数据流的在第一窗口的积,并将这些积按照公式(6)规则在第一数据流专用缓存进行累加计算。
[0136]
y1=y1+y(奇次运算);
ꢀꢀ
(6)
[0137]
并行的n路同步完成n个该计算过程,送入加法树得到完整窗口的计算结果。
[0138]
在计算节点1中,时刻2、时刻4、时刻6分别输出了第二数据流的第一窗口的积,并将这些积按照公式(7)的规则在第二数据流专用缓存进行累加计算。
[0139]
y2=y2+y(偶次运算)
ꢀꢀꢀꢀ
(7)
[0140]
并行的n路同步完成n个该计算过程,送入与第一数据流相同的加法树,通过在不同时钟周期复用该加法树得到完整窗口的计算结果。
[0141]
图8示意性示出了根据本公开实施例的数据处理装置的框图。
[0142]
如图8所示,根据本公开实施例的数据处理装置800可以包括:获取模块810、分割模块820、数据序列构建模块830、计算模块840和输出模块850。
[0143]
获取模块810,用于从第一缓存中获取待处理图像的数据矩阵和目标卷积层的权重矩阵;
[0144]
分割模块820,用于将数据矩阵和权重矩阵按行分割为多个数据流,并分别写入多
个第二缓存中,其中,每个第二缓存具有对应的计算单元;
[0145]
数据序列构建模块830,用于对于每个第二缓存,在第二缓存中的已写入数据流满足计算窗口需求的情况下,基于预设步长,将已写入数据流构建第一数据序列和第二数据序列;
[0146]
计算模块840,用于基于预设步长,将第一数据序列和第二数据序列分别从计算单元的两侧输入,其中,计算单元包括串联的多个计算节点;以及
[0147]
输出模块850,用于将多个计算节点累加的部分积输入加法树中,得到当前计算窗口的输出值。
[0148]
根据本公开的实施例,其中,数据矩阵的维度为m,权重矩阵的维度为n,其中,m为正整数,n为小于m的正整数;
[0149]
分割模块可以包括:
[0150]
分隔单元,用于对数据矩阵和权重矩阵按行进行分割,得到m个数据向量和n个权重向量。
[0151]
构建单元,用于将m个数据向量中的第(kn+i)个数据向量和n个权重向量中的第i个权重向量构建为第i个数据流,其中,k为0或小于m/n的正整数,i为小于或等于n的正整数。
[0152]
根据本公开的实施例,上述数据处理装置还可以包括:确定模块。
[0153]
确定模块,用于在已写入数据流中包括数据向量的n个激活值和权重向量的n个权重值的情况下,确定已写入数据流满足计算窗口需求。
[0154]
根据本公开的实施例,数据序列构建模块可以包括:第一数据序列构建单元和第二数据序列构建单元。
[0155]
第一数据序列构建单元,用于以预设步长为间隔,基于已写入数据流中的n个激活值来构建第一数据序列。
[0156]
第二数据序列构建单元,用于以预设步长为间隔,基于已写入数据流中的n个权重值来构建第二数据序列。
[0157]
根据本公开的实施例,其中,
[0158]
数据矩阵包括归属于第一待处理图像的第一数据矩阵和归属于第二待处理图像的第二数据矩阵;
[0159]
权重矩阵包括归属于第一目标卷积层的第一权重矩阵和归属于第二目标卷积层的第二权重矩阵;
[0160]
其中,第一数据矩阵的维度和第二数据矩阵的维度相等,第一权重矩阵的维度和第二权重矩阵的维度相等。
[0161]
根据本公开的实施例,分隔模块可以包括:第一分隔单元和第二分隔单元。
[0162]
第一分隔单元,用于将第一数据矩阵和第一权重矩阵按行分割为多个第一数据流。
[0163]
第二分隔单元,用于将第二数据矩阵和第二权重矩阵按行分割为多个第二数据流。
[0164]
根据本公开的实施例,其中,已写入数据流包括第一数据流中的多个激活值和多个权重值、第二数据流中的多个激活值和多个权重值。
[0165]
数据序列构建模块可以包括:第一交替构建单元和第二交替构建单元。
[0166]
第一交替构建单元,用于在预设步长为1的情况下,将第一数据流中的多个激活值和第二数据流中的多个激活值交替构建得到第一数据序列;以及
[0167]
第二交替构建单元,用于将第一数据流中的多个权重值和第二数据流中的多个权重值交替构建得到第二数据序列。
[0168]
根据本公开的实施例,数据序列构建模块可以包括第三交替构建单元和第四交替构建单元。
[0169]
第三交替构建单元,用于在预设步长为n的情况下,将第一数据流中的多个激活值和第二数据流中的多个激活值以(n-1)位为间隔,交替构建得到第一数据序列,其中,n为大于1的正整数;以及
[0170]
第四交替构建单元,用于将第一数据流中的多个权重值和第二数据流中的多个权重值以(n-1)位为间隔,交替构建得到第二数据序列。
[0171]
根据本公开的实施例,数据处理装置还可以包括遍历模块。
[0172]
遍历模块,用于将当前计算窗口的输出值作为一个元素,遍历所有计算窗口的输出值,得到用于表示目标卷积层对数据矩阵的运算结果的输出矩阵。
[0173]
根据本公开的实施例的模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0174]
例如,获取模块810、分割模块820、数据序列构建模块830、计算模块840和输出模块850中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,获取模块810、分割模块820、数据序列构建模块830、计算模块840和输出模块850中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块810、分割模块820、数据序列构建模块830、计算模块840和输出模块850中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0175]
需要说明的是,本公开的实施例中数据处理装置部分与本公开的实施例中数据处理方法部分是相对应的,数据处理装置部分的描述具体参考数据处理方法部分,在此不再赘述。
[0176]
图9示意性示出了根据本公开实施例的适于实现数据处理方法的电子设备的框图。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0177]
如图9所示,根据本公开实施例的计算机电子设备900包括处理器901,其可以根据存储在只读存储器(rom)902中的程序或者从存储部分908加载到随机访问存储器(ram)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0178]
在ram 903中,存储有电子设备900操作所需的各种程序和数据。处理器901、rom 902以及ram 903通过总线904彼此相连。处理器901通过执行rom 902和/或ram 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom 902和ram 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0179]
根据本公开的实施例,电子设备900还可以包括输入/输出(i/o)接口905,输入/输出(i/o)接口905也连接至总线904。电子设备900还可以包括连接至i/o接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至i/o接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
[0180]
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0181]
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0182]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0183]
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 902和/或ram 903和/或rom 902和ram 903以外的一个或多个存储器。
[0184]
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行本公开实施例所提供的方法的程序代码,当计算机程序产品在电子设备上运行时,该程序代码用于使电子设备实现本公开实施例所提供的xx方法。
[0185]
在该计算机程序被处理器901执行时,执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0186]
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分909被下载和安装,和/或从可拆卸介质911被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0187]
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c++,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0188]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
[0189]
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1