掌桥专利:专业的专利平台
掌桥专利
首页

一种数据处理方法、装置、设备及存储介质

文献发布时间:2023-06-19 11:19:16


一种数据处理方法、装置、设备及存储介质

技术领域

本发明涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。

背景技术

随着人工智能技术的发展,图像可以在多方面进行自动处理,降低了人工成本,提高了效率和准确率。例如,可以采用处理阵列进行图像数据的卷积处理,但是卷积过程中经常出现处理阵列的利用率低的现象,从而增加了能耗,降低了效率。

发明内容

本发明提供一种数据处理方法、装置、设备及存储介质,以解决相关技术中的缺陷。

根据本发明实施例的第一方面,提供一种一种数据处理方法,所述方法包括:

根据卷积运算的步长对待处理数据进行采样,得到至少一个第一采样结果,其中,所述步长大于1;

根据所述卷积运算的步长对卷积核进行采样,得到至少一个第二采样结果,其中,所述至少一个第一采样结果和所述至少一个第二采样结果一一对应;

将所述至少一个第一采样结果和所述至少一个第二采样结果,对应的输入至处理阵列,以使所述处理阵列输出处理结果。

结合本公开提供的任一实施方式,所述根据卷积运算的步长对待处理数据进行采样,得到至少一个第一采样结果,包括:

按照所述步长对所述待处理数据进行行采样,得到至少一个第一行采样结果,其中,所述至少一个第一行采样结果的并集为所述待处理数据;

按照所述步长对所述待处理数据进行列采样,得到至少一个第一列采样结果,其中,所述至少一个第一列采样结果的并集为所述待处理数据;

分别将每个所述第一行采样结果和每个所述第一列采样结果的交集,确定为第一采样结果。

结合本公开提供的任一实施方式,所述根据卷积运算的步长对卷积核进行采样,得到至少一个第二采样结果,包括:

按照所述步长对所述卷积核进行行采样,得到至少一个第二行采样结果,其中,所述至少一个第二行采样结果的并集为所述卷积核;

按照所述步长对所述卷积核进行列采样,得到至少一个第二列采样结果,其中,所述至少一个第二列采样结果的并集为所述待处理数据;

分别将每个所述第二行采样结果和每个所述第二列采样结果的交集,确定为第二采样结果。

结合本公开提供的任一实施方式,所述将所述至少一个第一采样结果和所述至少一个第二采样结果,输入至对应的处理阵列,以使所述处理阵列输出处理结果,包括:

针对每个第一采样结果,将该第一采样结果输入至所述处理阵列,并将与该第一采样结果对应的第二采样结果输入至所述处理阵列;并

控制所述处理阵列根据该第一采样结果和对应的第二采样结果,确定对应的子处理结果;

控制所述处理阵列根据每个第一采样结果分别对应的子处理结果,输出处理结果。

结合本公开提供的任一实施方式,所述针对每个第一采样结果,将该第一采样结果输入至所述处理阵列,包括:

针对每个第一采样结果,将该第一采样结果的多个数值输入至所述处理阵列的多个单元中,使得所述多个数值在所述多个单元中的相对位置与所述多个数值在该第一采样结果中的相对位置相同。

结合本公开提供的任一实施方式,所述处理阵列包括有效阵列、分布在所述有效阵列周围的至少一个溢出行和至少一个溢出列,其中,所述有效阵列包括多个用于存储和处理数据的单元,所述溢出行和所述溢出列包括多个用于存储数据的单元;

所述将该第一采样结果的多个数值,输入至所述处理阵列的多个单元中,包括:

将该第一采样结果的多个数值,输入至所述处理阵列的多个单元中,使得该第一采样结果中首行首列的数值输入至所述用于存储和处理数据的单元首行首列的中。

结合本公开提供的任一实施方式,所述控制所述处理阵列根据该第一采样结果和对应的第二采样结果,确定对应的子处理结果,包括:

针对对应的第二采样结果中的每个权重值,控制所述处理阵列采用该第一采样结果中与该权重值对应的数值,与该权重值确定部分和;

控制所述处理阵列根据该对应的第二采样结果中各权重值分别对应的部分和确定部分结果;

控制所述处理阵列根据至少一个部分结果,确定该第一采样结果对应的子处理结果。

结合本公开提供的任一实施方式,所述针对对应的第二采样结果中的每个权重值,控制所述处理阵列采用该第一采样结果中与该权重值对应的数值,与该权重值确定部分和,包括:

针对对应的第二采样结果中的首个权重值,控制所述处理阵列采用该第一采样结果在所述处理阵列的初始位置对应单元中的数值与该首个权重值确定部分和。

结合本公开提供的任一实施方式,所述针对对应的第二采样结果中的每个权重值,控制所述处理阵列采用该第一采样结果中与该权重值对应的数值,与该权重值确定部分和,包括:

针对对应的第二采样结果中的每个非首个权重值,根据该第一采样结果中与该非首个权重值对应的第一数值,以及该第一采样结果中与该非首个权重值的上一个权重值对应的第二数值在该第一采样结果中的位置关系,确定所述第一采样结果的移动方式,并控制所述处理阵列采用确定的移动方式将所述第二数值移动至对应单元;

控制所述处理阵列采用移动后的对应单元中的数值与该非第一个权重值确定部分和。

结合本公开提供的任一实施方式,还包括:

根据所述处理阵列、所述卷积核以及所述步长,确定所述待处理数据的行数与列数;

根据所述卷积核以及所述步长,确定重叠行数与重叠列数;

根据所述待处理数据的行数与列数、所述重叠行数以及所述重叠列数,对待处理图像的数据进行采样,得到多个待处理数据。

结合本公开提供的任一实施方式,所述待处理数据为单通道数据或多通道数据中的一个通道,所述卷积核为单通道卷积核或多通道卷积核中的一个通道。

根据本发明实施例的第二方面,提供一种数据处理装置,所述装置包括:

控制器,用于根据卷积运算的步长对待处理数据进行采样,得到至少一个第一采样结果,其中,所述步长大于1;根据所述卷积运算的步长对卷积核进行采样,得到至少一个第二采样结果,其中,所述至少一个第一采样结果和所述至少一个第二采样结果一一对应;以及将所述至少一个第一采样结果和所述至少一个第二采样结果,对应的输入至处理阵列;

所述处理阵列,用于对所述至少一个第一采样结果和所述至少一个第二采样结果进行处理,并输出处理结果。

结合本公开提供的任一实施方式,所述控制器,用于按照所述步长对所述待处理数据进行行采样,得到至少一个第一行采样结果,其中,所述至少一个第一行采样结果的并集为所述待处理数据;按照所述步长对所述待处理数据进行列采样,得到至少一个第一列采样结果,其中,所述至少一个第一列采样结果的并集为所述待处理数据;分别将每个所述第一行采样结果和每个所述第一列采样结果的交集,确定为第一采样结果。

结合本公开提供的任一实施方式,所述控制器,用于按照所述步长对所述卷积核进行行采样,得到至少一个第二行采样结果,其中,所述至少一个第二行采样结果的并集为所述卷积核;按照所述步长对所述卷积核进行列采样,得到至少一个第二列采样结果,其中,所述至少一个第二列采样结果的并集为所述待处理数据;分别将每个所述第二行采样结果和每个所述第二列采样结果的交集,确定为第二采样结果。

结合本公开提供的任一实施方式,所述控制器用于针对每个第一采样结果,将该第一采样结果输入至所述处理阵列,并将与该第一采样结果对应的第二采样结果输入至所述处理阵列;并

所述处理阵列,用于根据该第一采样结果和对应的第二采样结果,确定对应的子处理结果;以及根据每个第一采样结果分别对应的子处理结果,输出处理结果。

结合本公开提供的任一实施方式,所述控制器用于针对每个第一采样结果,将该第一采样结果的多个数值输入至所述处理阵列的多个单元中,使得所述多个数值在所述多个单元中的相对位置与所述多个数值在该第一采样结果中的相对位置相同。

结合本公开提供的任一实施方式,所述处理阵列包括有效阵列、分布在所述有效阵列周围的至少一个溢出行和至少一个溢出列,其中,所述有效阵列包括多个用于存储和处理数据的单元,所述溢出行和所述溢出列包括多个用于存储数据的单元;

所述控制器,用于将该第一采样结果的多个数值,输入至所述处理阵列的多个单元中,使得该第一采样结果中首行首列的数值输入至所述用于存储和处理数据的单元的首行首列中。

结合本公开提供的任一实施方式,所述处理阵列,用于针对对应的第二采样结果中的每个权重值,采用该第一采样结果中与该权重值对应的数值,与该权重值确定部分和;

根据该对应的第二采样结果中各权重值分别对应的部分和确定部分结果;以及

根据至少一个部分结果,确定该第一采样结果对应的子处理结果。

结合本公开提供的任一实施方式,所述处理阵列用于针对对应的第二采样结果中的首个权重值,采用该第一采样结果在所述处理阵列的初始位置对应单元中的数值与该首个权重值确定部分和。

结合本公开提供的任一实施方式,所述控制器,用于针对对应的第二采样结果中的每个非首个权重值,根据该第一采样结果中与该非首个权重值对应的第一数值,以及该第一采样结果中与该非首个权重值的上一个权重值对应的第二数值在该第一采样结果中的位置关系,确定所述第一采样结果的移动方式;

所述处理阵列,用于采用确定的移动方式将所述第二数值移动至对应单元;并采用移动后的对应单元中的数值与该非首个权重值确定部分和。

结合本公开提供的任一实施方式,所述控制器,还用于根据所述处理阵列、所述卷积核以及所述步长,确定所述待处理数据的行数与列数;根据所述卷积核以及所述步长,确定重叠行数与重叠列数;根据所述待处理数据的行数与列数、所述重叠行数以及所述重叠列数,对待处理图像的数据进行采样,得到多个待处理数据。

结合本公开提供的任一实施方式,所述待处理数据为单通道数据或多通道数据中的一个通道,所述卷积核为单通道卷积核或多通道卷积核中的一个通道。

根据本发明实施例的第三方面,提供一种电子设备,所述设备包括存储器、处理器,以及本发明实施例第二方面所述的装置。

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

根据上述实施例可知,通过对待处理数据和卷积核进行同步的采样,以得到至少一个第一采样结果和至少一个第二采样结果,而且第一采样结果和第二采样结果间一一对应,进而可以依次将对应的第一采样结果和第二采样结果输入至处理阵列,以得到处理结果。由于对待处理数据和卷积核的采样都是基于卷积运算的步长进行的,因此对应的第一采样结果和第二采样结果之间相互匹配,即第二采样结果对于第一采样结果的卷积运算的步长为1,进而当输入至处理阵列后能够使每个单元均能够被利用,提高了处理阵列的利用率,避免了能耗浪费,而且提高了处理效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是本发明实施例示出的数据处理方法的流程图;

图2是本发明实施例示出的待处理数据的示意图;

图3是本发明实施例示出的至少一个第一采样结果的示意图;

图4是本发明实施例示出的卷积核的示意图;

图5是本发明实施例示出的至少一个第而采样结果的示意图;

图6是本发明实施例示出的得出处理结果的流程图;

图7是本发明实施例示出的处理阵列的结构示意图;

图8是本发明实施例示出的处理阵列中单元的结构示意图;

图9是本发明实施例示出的得出子处理结果的流程图;

图10是本发明实施例示出的第一采样结果在处理阵列上向左移动的示意图;

图11是本发明实施例示出的第一采样结果在处理阵列上向上移动的示意图;

图12是本发明实施例示出的第一采样结果在处理阵列上向右移动的示意图;

图13是本发明实施例示出的待处理数据的采样方式的示意图;

图14是本发明实施例示出的电子设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

第一方面,本发明至少一个实施例提供了一种数据处理方法,请参照附图1,其示出了该方法的流程,包括步骤S101至步骤S103。

其中,该方法可以由终端设备或服务器等电子设备执行,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal Digital Assistant,PDA)手持设备、计算设备、车载设备、可穿戴设备等,该方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。或者,可以通过服务器执行该方法,服务器可以为本地服务器、云端服务器等。

在步骤S101中,根据卷积运算的步长对待处理数据进行采样,得到至少一个第一采样结果,其中,所述步长大于1。

其中,采样的方式可以是下采样,也就是从待处理数据中挑选部分数据,组成第一采样结果,通过一次下采样可以得到一个第一采样结果,通过多次下采样则可以得到多个第一采样结果。不同的第一采样结果间不存在数据重叠,而全部的第一采样结果可以组成完整的待采样数据,也就是说,可以将待处理数据作为一个第一采样结果,或将待处理数据拆分为多个第一采样结果。

卷积运算的步长指的是,卷积核在待处理数据上移动的步长;卷积运算中,卷积核每移动一步进行一次计算。同理,根据步长进行采样,指的是按照步长在待处理数据中进行挑选,挑选所得到的结果即为第一采样结果;采样的起点是未被其他采样过程选择的数据,而以不同的位置为起点所得到的第一采样结果不同,且不存在重叠。例如,待处理数据分为17个子数据,步长为2时,首先以第一个子数据为起点进行步长为2的采样,得到由第1、3、5、7、9、11、13、15、17个子数据组成的第一采样结果,再以第二个子数据为起点进行步长为2的采样,得到由第2、4、6、8、10、12、14、16个子数据组成的第一采样结果,至此待处理数据已被全部选择,因此采样结束,得到上述两个第一采样结果。

在步骤S102中,根据所述卷积运算的步长对卷积核进行采样,得到至少一个第二采样结果,其中,所述至少一个第一采样结果和所述至少一个第二采样结果一一对应。

其中,采样的方式可以是下采样,也就是从卷积核中挑选部分权重值,组成第二采样结果,通过一次下采样可以得到一个第二采样结果,通过多次下采样则可以得到多个第二采样结果。不同的第二采样结果间不存在重叠,而全部的第二采样结果可以组成完整的卷积核,也就是说,可以将卷积核作为一个第二采样结果,或将卷积核拆分为多个第二采样结果。

根据步长进行采样,指的是按照步长在卷积核中进行挑选,挑选所得到的结果即为第二采样结果;采样的起点是未被其他采样过程选择的权重值,而以不同的位置为起点所得到的第二采样结果不同,且不存在重叠。例如,待卷积核分为9个权重值,步长为2时,首先以第一个权重值为起点进行步长为2的采样,得到由第1、3、5、7、9个子权重值组成的第二采样结果,再以第二个权重值为起点进行步长为2的采样,得到由第2、4、6、8个权重值组成的第二采样结果,至此卷积核已被全部选择,因此采样结束,得到上述两个第二采样结果。

由于对待处理数据的采样和对卷积核的采样均是根据步长进行的,因此第一采样结果的数量和第二采样结果的数量是相同的。由于卷积运算中,卷积核每移动一步进行一次计算,因此整个卷积运算过程中,待处理数据的子数据与卷积核的权重值之间具有对应关系,进而第一采样结果和第二采样结果也是有对应关系的,即至少一个第一采样结果和至少一个第二采样结果是一一对应的。相互对应的第一采样结果和第二采样结果,指的是待处理数据中的子数据,和卷积过程中与之进行计算的权重值。具体匹配时,可以以采样的起点位置进行匹配,也就是说,第一采样结果的起点在待处理数据中的相对位置,与第二采样结果的起点在卷积核中的相对位置相同,则确认上述第一采样结果与第二采样结果相互对应,例如,上述提到的待处理数据的示例和卷积核的示例中,起点为第1个子数据的第一采样结果,与起点为第1个权重值的第二采样结果相互对应,即由第1、3、5、7、9、11、13、15、17个子数据组成的第一采样结果,与由第1、3、5、7、9个权重值组成的第二采样结果相对应;起点为第2个子数据的第一采样结果,与起点为第2个权重值的第二采样结果相互对应,即由第2、4、6、8、10、12、14、16、18个子数据组成的第一采样结果,与由第2、4、6、8个权重值组成的第二采样结果相对应。

在步骤S103中,将所述至少一个第一采样结果和所述至少一个第二采样结果,对应的输入至处理阵列,以使所述处理阵列输出处理结果。

其中,将第一对相互对应的第一采样结果和第二采样结果输入处理阵列,再将第二对相互对应的第一采样结果和第二采样结果输入处理阵列,直至将最后一对相互对应的第一采样结果和第二采样结果输入处理阵列,从而可控制处理阵列输出处理结果,其中,处理结果指的是,待处理数据被卷积核卷积后的结果。

需要注意的是,所述待处理数据为单通道数据或多通道数据中的一个通道,所述卷积核为单通道卷积核或多通道卷积核中的一个通道。也就是说,当卷积核和/或待处理数据为多通道时,各个通道是对应进行卷积的,该方法针对的是单个卷积核通道对单个待处理数据进行卷积的过程,而将方法在各个通道中分别使用,并将各个处理进行结合,便可以得到多通道卷积的结果。

根据上述实施例可知,通过对待处理数据和卷积核进行同步的采样,以得到至少一个第一采样结果和至少一个第二采样结果,而且第一采样结果和第二采样结果间一一对应,进而可以依次将对应的第一采样结果和第二采样结果输入至处理阵列,以得到处理结果。由于对待处理数据和卷积核的采样都是基于卷积运算的步长进行的,因此对应的第一采样结果和第二采样结果之间相互匹配,即第二采样结果对于第一采样结果的卷积运算的步长为1,进而当输入至处理阵列后能够使每个单元均能够被利用,提高了处理阵列的利用率,避免了能耗浪费,而且提高了处理效率。

具体来说,常用的卷积神经网络加速器,其处理阵列一般为二维连接架构,在单指令流多数据流(Single Instruction Multiple Data,SIMD)的操作模式下,单条指令控制所有单元进行相同的操作(如:移位、访存、MAC等)。而当卷积运算的步长大于1时,处理阵列的部分单元计算的结果是不需要的,这将大大降低处理阵列的利用率。例如,当步长stride=2时,SIMD模式下处理阵列的利用率只有1/4,当步长stride=3时,SIMD模式下处理阵列的利用率只有1/9。通过本实施例提供的处理方法,将处理阵列的每次运算转化为第二采样结果对于第一采样结果的步长为1的卷积运算,因此使处理阵列的利用率达到百分之百。

本公开的一些实施例中,可以按照下述方式根据卷积运算的步长对待处理数据进行采样,得到至少一个第一采样结果:首先,按照所述步长对所述待处理数据进行行采样,得到至少一个第一行采样结果,其中,所述至少一个第一行采样结果的并集为所述待处理数据;接下来,按照所述步长对所述待处理数据进行列采样,得到至少一个第一列采样结果,其中,所述至少一个第一列采样结果的并集为所述待处理数据;最后,分别将每个所述第一行采样结果和每个所述第一列采样结果的交集,确定为第一采样结果。

卷积运算时,卷积核在待处理数据上的移动分为两个方向,即行方向和列方向两个方向,因此卷积核中的权重值与待处理数据中的子数据的对应关系,是分为行和列两个维度的。分别按照行和列进行采样后,再将采样结果进行两两组合(即使每个第一行采样结果均与每个第一列采样结果进行组合),得到多个第一采样结果,这样可以使第一采样结果与第二采样结果能够在行和列两个维度均对应。

另外,行采样和列采样均采用步骤S101中介绍的采样方式进行采样。由于从两个维度进行采样,因此若步长为S,则第一采样结果的数量为S

在一个示例中,待处理数据为如图2所示的17*17的数据块,而卷积运算的步长为2,因此按照上述行采样、列采样,最后取交集的方式,可以得到如图3所示的301、302、303和304四个第一采样结果,其中,第一采样结果301为第1、3、5、7、9、11、13、15和17行与第1、3、5、7、9、11、13、15和17列(9*9)的交集,第一采样结果302为第1、3、5、7、9、11、13、15和17行与第2、4、6、8、10、12、14和16列(9*8)的交集,第一采样结果303为第2、4、6、8、10、12、14和16行与第1、3、5、7、9、11、13、15和17列(8*9)的交集,第一采样结果304为第2、4、6、8、10、12、14和16行与第2、4、6、8、10、12、14和16列(8*8)的交集。

本公开的一些实施例中,可以按照下述方式根据卷积运算的步长对卷积核进行采样,得到至少一个第二采样结果:首先,按照所述步长对所述卷积核进行行采样,得到至少一个第二行采样结果,其中,所述至少一个第二行采样结果的并集为所述卷积核;接下来,按照所述步长对所述卷积核进行列采样,得到至少一个第二列采样结果,其中,所述至少一个第二列采样结果的并集为所述待处理数据;最后,分别将每个所述第二行采样结果和每个所述第二列采样结果的交集,确定为第二采样结果。

卷积运算时,卷积核在待处理数据上的移动分为两个方向,即行方向和列方向两个方向,因此卷积核中的权重值与待处理数据中的子数据的对应关系,是分为行和列两个维度的。分别按照行和列进行采样后,再将采样结果进行两两组合(即使每个第二行采样结果均分别与每个第二列采样结果进行组合),得到多个第二采样结果,这样可以使第一采样结果与第二采样结果能够在行和列两个维度均对应。

另外,行采样和列采样均采用步骤S102中介绍的采样方式进行采样。由于从两个维度进行采样,因此若步长为S,则第一采样结果的数量为S

在一个示例中,卷积核为如图4所示的3*3的卷积核,而卷积运算的步长为2,因此按照上述行采样、列采样,最后取交集的方式,可以得到如图5所示的501、502、503和504四个第二采样结果,其中,第二采样结果501为第1和3行与第1和3列的交集(即图中的A、C、G、I四个权重值),第二采样结果502为第1和3行与第2列的交集(即图中的B和H两个权重值),第二采样结果503为第2行与第1和3列的交集(即图中的D和F两个权重值),第二采样结果504为第2行与第2列的交集(即图中的权重值E)。

图3所示的四个第一采样结果和图5所示的四个第二采样结果,均是按照步长2进行采样得到的,因此是可以一一对应的,具体的,第一采样结果301与第二采样结果501对应,第一采样结果302与第二采样结果502对应,第一采样结果303与第二采样结果503对应,第一采样结果304与第二采样结果504对应。

本公开的一些实施例中,可以按照如图6所示的方式将所述至少一个第一采样结果和所述至少一个第二采样结果,输入至对应的处理阵列,以使所述处理阵列输出处理结果,包括步骤S601至步骤S603。

在步骤S601中,针对每个第一采样结果,将该第一采样结果输入至所述处理阵列,并将与该第一采样结果对应的第二采样结果输入至所述处理阵列。

在步骤S602中,控制所述处理阵列根据该第一采样结果和对应的第二采样结果,确定对应的子处理结果。

在步骤S603中,控制所述处理阵列根据每个第一采样结果分别对应的子处理结果,输出处理结果。

其中,步骤S601和步骤S602均为重复步骤(即重复N次,其中,N为第一采样结果的数量),也就是针对每个第一采样结果及其对应的第二采样结果均执行步骤S601和步骤S602。具体来说,先将第一个第一采样结果输入处理阵列,再将第一个第二采样结果输入处理阵列,并控制处理阵列根据上述输入得出第一个子处理结果;然后将第二个第一采样结果输入处理阵列,再将第二个第二采样结果输入处理阵列,并控制处理阵列根据上述输入得出第二个子处理结果;直至得出最后一个子处理结果(即第N个子处理结果)。例如,针对图3所示的四个第一采样结果和图5所示的四个第二采样结果执行步骤S601和步骤S602时,可以先将第一采样结果301输入至处理阵列,再将第二采样结果501输入处理阵列,从而控制处理阵列根据第一采样结果301和第二采样结果501得出第一个子处理结果;然后将第一采样结果302输入至处理阵列,再将第二采样结果502输入处理阵列,从而控制处理阵列根据第一采样结果302和第二采样结果502得出第二个子处理结果;然后将第一采样结果303输入至处理阵列,再将第二采样结果503输入处理阵列,从而控制处理阵列根据第一采样结果303和第二采样结果503得出第三个子处理结果;最后将第一采样结果304输入至处理阵列,再将第二采样结果504输入处理阵列,从而控制处理阵列根据第一采样结果304和第二采样结果504得出第四个子处理结果。

其中,步骤S601可以按照下述方式执行:针对每个第一采样结果,将该第一采样结果的多个数值输入至所述处理阵列的多个单元中,使得所述多个数值在所述多个单元中的相对位置与所述多个数值在该第一采样结果中的相对位置相同。第一采样结果包括多行多列的数值,处理阵列包括多行多列的单元,每个单元用于存储一个数值。数值在第一采样结果中的排列方式与数值在处理阵列中的排列方式完全一致,形象地说,处理阵列是一层多行多列的单元,而第一采样结果是一层多行多列的数值,而且多行多列的单元与多行多列的数值相互平行且一一对应,第一采样结果输入时,将多行多列的数值整体映射至多行多列的单元内。

请参照附图7,处理阵列可以包括有效阵列、分布在所述有效阵列周围的至少一个溢出行和至少一个溢出列,其中,所述有效阵列包括多个用于存储和处理数据的单元(即图7中圆形的单元PE),所述溢出行和所述溢出列包括多个用于存储数据的单元PE(即图7中六边形的单元PE)。用于存储和处理数据的单元的行数大于第一采样结果的行数、等于第一采样结果的行数或比第一采样结果的行数小1,用于存储和处理数据的单元的列数大于第一采样结果的列数、等于第一采样结果的列数或比第一采样结果的列数小1,上述关系是待处理数据得出时(将在下文进行详细描述)和第一采样结果得出时(已在前文进行了详细描述)决定的。例如,图3所示的四个第一采样结果输入图7所示的处理阵列(包括10*10个单元,中心的8*8个单元为用于存储和处理数据的单元,中心的8*8个单元周围,上下各具有两行用于存储数据的单元,左右各具有两列用于存储数据的单元)中,四个第一采样结果的行数和列数均为8或9,因此满足上述关系。

其中,用于存储和处理数据的单元及相邻单元间的连接关系如图8所示,从图中可以看到,用于存储和处理数据的单元内具有内部寄存器R0、运算单元ALU以及相关的数据加载和存储电路模块M,而且每个用于存储和处理数据的单元内均连接一个移位寄存器堆和静态随机存取存储器(Static Random-Access Memory,SRAM),移位寄存器堆内具有R1、R2、R3、R4等多个移位寄存器。而用于存储数据的单元,相较于用于存储和处理数据的单元,其他结构相同,但不具有运算单元ALU。相邻的单元间通过移位寄存器堆实现连接,在处理阵列中,每个单元与其各个方向(即上、下、左和右)的相邻单元均连接。

基于上述处理阵列的结构,第一采样结果输入时,可以将该第一采样结果的多个数值,输入至所述处理阵列的多个单元中,使得该第一采样结果中首行首列的数值输入至所述用于存储和处理数据的单元的首行首列的中,即将首个数值输入至首个用于存储和处理数据的单元中,由于第一采样结果在处理阵列的存储和移动是以整体为单位统一进行的(即单指令流多数据流(Single Instruction Multiple Data,SIMD)的操作模式),因此首个数值定位后,便实现了整个第一采样结果与处理阵列的定位。第一采样结果的行数,可以小于或等于用于存储和处理数据的单元的行数,或比用于存储和处理数据的单元的行数大1,因此最多有一行数值存储在用于存储数据的单元中,而这种情况下,多出的一行数值是不需要被第二采样结果卷积的,因此既保证了第一采样结果与第二采样结果间的卷积运算,又避免了浪费能耗浪费和效率降低;同理,第一采样结果的列数,可以小于或等于用于存储和处理数据的单元的列数,或比用于存储和处理数据的单元的列数大1,因此最多有一列数值存储在用于存储数据的单元中,而这种情况下,多出的一列数值是不需要被第二采样结果卷积的,因此既保证了第一采样结果与第二采样结果间的卷积运算,又避免了浪费能耗浪费和效率降低。

其中,步骤S602可以按照如图9所示的方式执行,包括步骤S901至步骤S903。

在步骤S901中,针对对应的第二采样结果中的每个权重值,控制所述处理阵列采用该第一采样结果中与该权重值对应的数值,与该权重值确定部分和。

在步骤S902中,控制所述处理阵列根据该对应的第二采样结果中各权重分别对应的部分和确定部分结果。

在步骤S903中,控制所述处理阵列根据至少一个部分结果,确定该第一采样结果对应的子处理结果。

其中,步骤S901为重复步骤(即重复M次,其中,M为该对应的第二采样结果中权重值的数量),也就是针对第二采样结果的每个权重值均执行步骤S901,从而可以依次得到每个权重值对应的部分和(即第1个至第M个部分和)。确定部分和时,可以将第一权重值与对应的数值相乘得到。

其中,步骤S901可以按照下述执行:针对对应的第二采样结果中的首个权重值,控制所述处理阵列采用该第一采样结果在所述处理阵列的初始位置对应单元中的数值与该首个权重值确定部分和;针对对应的第二采样结果中的每个非首个权重值,根据该第一采样结果中与该非首个权重值对应的第一数值,以及该第一采样结果中与该非首个权重值的上一个权重值对应的第二数值在该第一采样结果中的位置关系,确定所述第一采样结果的移动方式,并控制所述处理阵列采用确定的移动方式将所述第二数值移动至对应单元,以及控制所述处理阵列采用移动后的对应单元中的数值与该非首个权重值确定部分和。例如,第j个非首个权重值在第j-1个非首个权重值右侧,则将第一采样结果相对于处理阵列向左移动一个单元。由于第一采样结果的移动是以整体为单位统一进行的(即单指令流多数据流(Single Instruction Multiple Data,SIMD)的操作模式),因此移动时每个单元根据移动方向将其存储的数值发送至相邻的单元,例如,第一采样结果相对于处理阵列向左移动一个单元,则每个单元均将存储的数值发送至其左侧相邻的单元。

其中,步骤S902中,根据各个部分和得出部分结果时,可以将各个部分和进行求和,得出部分结果。执行时,单元第一次得出部分和后将其存储,单元之后每次得出部分和后均与存储的部分和求和,并将求和结果作为新的部分和进行存储。

其中,步骤S904中,可以将用于存储和处理数据的单元所得出的部分结果,按照各个单元的位置关系进行对应排列,得出多行多列的子处理结果。

下面以图3所示的四个第一采样结果和图5所示的四个第二采样结果为例,进一步详细说明求解子处理结果的过程。

第一采样结果301和第二采样结果501:首先确定A为首个权重值,保持第一采样结果输入至处理矩阵时的初始位置,即(1,1)存储在首行首列个用于存储和处理数据的单元中,(1,3)存储在首行第二列个用于存储和处理数据的单元中,(3,1)存储在第二行首列个用于存储和处理数据的单元中,(3,3)存储在第二行第二列个用于存储和处理数据的单元中,第9行数值(即最后一行数值)存储在用于存储和处理数据的单元组成的8*8阵列的下侧第一行用于存储数据的单元中,第9列数值(即最后一列数值)存储在用于存储和处理数据的单元组成的8*8阵列的右侧第一列用于存储数据的单元中;然后每个用于存储和处理数据的单元均将存储的数据与A相乘得出部分和,以首行首列的用于存储和处理数据的单元为例,得出部分和A*(1,1),并进行存储,以首行第二列的用于存储和处理数据的单元为例,得出部分和A*(1,3),并进行存储,以第二行首列的用于存储和处理数据的单元为例,得出部分和A*(3,1),并进行存储,以第二行第二列的用于存储和处理数据的单元为例,得出部分和A*(3,3),并进行存储,其他用于存储和处理数据的单元得出部分和的过程不再一一赘述,但需要注意的是,用于存储数据的单元不进行运算,因此也不得出部分和,这是因为图4所示的卷积核在图2所示的数据上以步长为2进行卷积运算得到的结果为8*8的数据阵列,即卷积过程中第一采样结果301的最后一行只与第二采样结果501的权重值G和I相乘,而无需与A和C相乘,卷积过程中第一采样结果301的最后一列只与第二采样结果501的权重值C和I相乘,而无需与A和G相乘;然后针对C这个非首个权重值,由于C在A的右侧,因此请参照附图10,将第一采样结果相对于处理阵列整体向左移动一个单元,即每个单元的移位寄存器堆中的R1将其存储的数据发送至其左侧的单元的移位寄存器堆中的R1,即(1,3)存储在首行首列个用于存储和处理数据的单元中,(1,5)存储在首行第二列个用于存储和处理数据的单元中,(3,3)存储在第二行首列个用于存储和处理数据的单元中,(3,5)存储在第二行第二列个用于存储和处理数据的单元中,首列数值存储在用于存储和处理数据的单元组成的8*8阵列的左侧第一列用于存储数据的单元中;然后每个用于存储和处理数据的单元均将存储的数据与C相乘得出部分和,以首行首列的用于存储和处理数据的单元为例,得出部分和C*(1,3),并与原来存储的部分和A*(1,1)相加后,得到最新的部分和A*(1,1)+C*(1,3)进行存储,以首行第二列的用于存储和处理数据的单元为例,得出部分和C*(1,5),并与原来存储的部分和A*(1,3)相加后,得到最新的部分和A*(1,3)+C*(1,5)进行存储,以第二行首列的用于存储和处理数据的单元为例,得出部分和C*(3,3),并与原来存储的部分和A*(3,1)相加后,得到最新的部分和A*(3,1)+C*(3,3)进行存储,以第二行第二列的用于存储和处理数据的单元为例,得出部分和C*(3,5),并与原来存储的部分和A*(3,3)相加后,得到最新的部分和A*(3,3)+C*(3,5)进行存储,其他用于存储和处理数据的单元得出部分和的过程不再一一赘述,但需要注意的是,用于存储数据的单元不进行运算,因此也不得出部分和,这是因为图4所示的卷积核在图2所示的数据上以步长为2进行卷积运算得到的结果为8*8的数据阵列,即卷积过程中第一采样结果301的首列只与第二采样结果501的权重值A和G相乘,而无需与C和I相乘;然后针对I这个非首个权重值,由于I在C的下侧,因此请参照附图11,将第一采样结果相对于处理阵列整体向上移动一个单元,即每个单元的移位寄存器堆中的R1将其存储的数据发送至其上侧的单元的移位寄存器堆中的R1,即(3,3)存储在首行首列个用于存储和处理数据的单元中,(3,5)存储在首行第二列个用于存储和处理数据的单元中,(5,3)存储在第二行首列个用于存储和处理数据的单元中,(5,5)存储在第二行第二列个用于存储和处理数据的单元中,首行数值存储在用于存储和处理数据的单元组成的8*8阵列的上侧第一行用于存储数据的单元中;然后每个用于存储和处理数据的单元均将存储的数据与I相乘得出部分和,以首行首列的用于存储和处理数据的单元为例,得出部分和I*(3,3),并与原来存储的部分和A*(1,1)+C*(1,3)相加后,得到最新的部分和A*(1,1)+C*(1,3)+I*(3,3)进行存储,以首行第二列的用于存储和处理数据的单元为例,得出部分和I*(3,5),并与原来存储的部分和A*(1,3)+C*(1,5)相加后,得到最新的部分和A*(1,3)+C*(1,5)+I*(3,5)进行存储,以第二行首列的用于存储和处理数据的单元为例,得出部分和I*(5,3),并与原来存储的部分和A*(3,1)+C*(3,3)相加后,得到最新的部分和A*(3,1)+C*(3,3)+I*(5,3)进行存储,以第二行第二列的用于存储和处理数据的单元为例,得出部分和I*(5,5),并与原来存储的部分和A*(3,3)+C*(3,5)相加后,得到最新的部分和A*(3,3)+C*(3,5)+I*(5,5)进行存储,其他用于存储和处理数据的单元得出部分和的过程不再一一赘述,但需要注意的是,用于存储数据的单元不进行运算,因此也不得出部分和,这是因为图4所示的卷积核在图2所示的数据上以步长为2进行卷积运算得到的结果为8*8的数据阵列,即卷积过程中第一采样结果301的首行只与第二采样结果501的权重值A和C相乘,而无需与G和I相乘;最后针对G这个非首个权重值,由于G在I的左侧,因此请参照附图12,将第一采样结果相对于处理阵列整体向右移动一个单元,即每个单元的移位寄存器堆中的R1将其存储的数据发送至其右侧的单元的移位寄存器堆中的R1,即(3,1)存储在首行首列个用于存储和处理数据的单元中,(3,3)存储在首行第二列个用于存储和处理数据的单元中,(5,1)存储在第二行首列个用于存储和处理数据的单元中,(5,3)存储在第二行第二列个用于存储和处理数据的单元中,末列数值存储在用于存储和处理数据的单元组成的8*8阵列的上侧第一行用于存储数据的单元中;然后每个用于存储和处理数据的单元均将存储的数据与G相乘得出部分和,以首行首列的用于存储和处理数据的单元为例,得出部分和G*(3,1),并与原来存储的部分和A*(1,1)+C*(1,3)+I*(3,3)相加后,得到首行首列个用于存储和处理数据的单元的部分结果A*(1,1)+C*(1,3)+I*(3,3)+G*(3,1)进行存储,以首行第二列的用于存储和处理数据的单元为例,得出部分和G*(3,3),并与原来存储的部分和A*(1,3)+C*(1,5)+I*(3,5)相加后,得到最新的部分和A*(1,3)+C*(1,5)+I*(3,5)+G*(3,3)进行存储,以第二行首列的用于存储和处理数据的单元为例,得出部分和G*(5,1),并与原来存储的部分和A*(3,1)+C*(3,3)+I*(5,3)相加后,得到最新的部分和A*(3,1)+C*(3,3)+I*(5,3)+G*(5,1)进行存储,以第二行第二列的用于存储和处理数据的单元为例,得出部分和I*(5,3),并与原来存储的部分和A*(3,3)+C*(3,5)+I*(5,5)相加后,得到最新的部分和A*(3,3)+C*(3,5)+I*(5,5)+I*(5,3)进行存储,其他用于存储和处理数据的单元得出部分和的过程不再一一赘述,但需要注意的是,用于存储数据的单元不进行运算,因此也不得出部分和,这是因为图4所示的卷积核在图2所示的数据上以步长为2进行卷积运算得到的结果为8*8的数据阵列。最后将全部用于存储和处理数据的单元的部分结果进行按需排列,得到第一采样结果301对应的子处理结果。

第一采样结果302和第二采样结果502:首先确定B为首个权重值,保持第一采样结果输入至处理矩阵时的初始位置,即(1,2)存储在首行首列个用于存储和处理数据的单元中,(1,4)存储在首行第二列个用于存储和处理数据的单元中,(3,2)存储在第二行首列个用于存储和处理数据的单元中,(3,4)存储在第二行第二列个用于存储和处理数据的单元中,第9行数值(即最后一行数值)存储在用于存储和处理数据的单元组成的8*8阵列的下侧第一行用于存储数据的单元中;然后每个用于存储和处理数据的单元均将存储的数据与B相乘得出部分和,以首行首列的用于存储和处理数据的单元为例,得出部分和B*(1,2),并进行存储,以首行第二列的用于存储和处理数据的单元为例,得出部分和B*(1,4),并进行存储,以第二行首列的用于存储和处理数据的单元为例,得出部分和B*(3,2),并进行存储,以第二行第二列的用于存储和处理数据的单元为例,得出部分和B*(3,4),并进行存储,其他用于存储和处理数据的单元得出部分和的过程不再一一赘述,但需要注意的是,用于存储数据的单元不进行运算,因此也不得出部分和,这是因为图4所示的卷积核在图2所示的数据上以步长为2进行卷积运算得到的结果为8*8的数据阵列,即卷积过程中第一采样结果302的最后一行只与第二采样结果502的权重值H相乘,而无需与B相乘;然后针对H这个非首个权重值,由于H在B的下侧,因此将第一采样结果相对于处理阵列整体向上移动一个单元,即每个的移位寄存器堆中的R1单元将其存储的数据发送至其上侧的单元的移位寄存器堆中的R1,即(3,2)存储在首行首列个用于存储和处理数据的单元中,(3,4)存储在首行第二列个用于存储和处理数据的单元中,(5,2)存储在第二行首列个用于存储和处理数据的单元中,(5,4)存储在第二行第二列个用于存储和处理数据的单元中,首行数值存储在用于存储和处理数据的单元组成的8*8阵列的上侧第一行用于存储数据的单元中;然后每个用于存储和处理数据的单元均将存储的数据与H相乘得出部分和,以首行首列的用于存储和处理数据的单元为例,得出部分和H*(3,2),并与原来存储的部分和B*(1,2)相加后,得到首行首列个用于存储和处理数据的单元的部分结果B*(1,2)+H*(3,2)进行存储,以首行第二列的用于存储和处理数据的单元为例,得出部分和H*(3,4),并与原来存储的部分和B*(1,4)相加后,得到最新的部分和B*(1,4)+H*(3,4)进行存储,以第二行首列的用于存储和处理数据的单元为例,得出部分和H*(5,2),并与原来存储的部分和B*(3,2)相加后,得到最新的部分和B*(3,2)+H*(5,2)进行存储,以第二行第二列的用于存储和处理数据的单元为例,得出部分和H*(5,4),并与原来存储的部分和B*(3,4)相加后,得到最新的部分和B*(3,4)+H*(5,4)进行存储,其他用于存储和处理数据的单元得出部分和的过程不再一一赘述,但需要注意的是,用于存储数据的单元不进行运算,因此也不得出部分和,这是因为图4所示的卷积核在图2所示的数据上以步长为2进行卷积运算得到的结果为8*8的数据阵列,即卷积过程中第一采样结果302的首行只与第二采样结果502的权重值B相乘,而无需与H相乘;最后将全部用于存储和处理数据的单元的部分结果进行按需排列,得到第一采样结果302对应的子处理结果。

第一采样结果303和第二采样结果503:首先确定D为首个权重值,保持第一采样结果输入至处理矩阵时的初始位置,即(2,1)存储在首行首列个用于存储和处理数据的单元中,(2,3)存储在首行第二列个用于存储和处理数据的单元中,(4,1)存储在第二行首列个用于存储和处理数据的单元中,(4,3)存储在第二行第二列个用于存储和处理数据的单元中,第9列数值(即最后一列数值)存储在用于存储和处理数据的单元组成的8*8阵列的右侧第一列用于存储数据的单元中;然后每个用于存储和处理数据的单元均将存储的数据与D相乘得出部分和,以首行首列的用于存储和处理数据的单元为例,得出部分和D*(2,1),并进行存储,以首行第二列的用于存储和处理数据的单元为例,得出部分和D*(2,3),并进行存储,以第二行首列的用于存储和处理数据的单元为例,得出部分和D*(4,1),并进行存储,以第二行第二列的用于存储和处理数据的单元为例,得出部分和D*(4,3),并进行存储,其他用于存储和处理数据的单元得出部分和的过程不再一一赘述,但需要注意的是,用于存储数据的单元不进行运算,因此也不得出部分和,这是因为图4所示的卷积核在图2所示的数据上以步长为2进行卷积运算得到的结果为8*8的数据阵列,即卷积过程中第一采样结果303的最后一列只与第二采样结果503的权重值F相乘,而无需与D相乘;然后针对F这个非首个权重值,由于F在D的右侧,因此将第一采样结果相对于处理阵列整体向左移动一个单元,即每个单元的移位寄存器堆中的R1将其存储的数据发送至其左侧的单元的移位寄存器堆中的R1,即(2,3)存储在首行首列个用于存储和处理数据的单元中,(2,5)存储在首行第二列个用于存储和处理数据的单元中,(4,3)存储在第二行首列个用于存储和处理数据的单元中,(4,5)存储在第二行第二列个用于存储和处理数据的单元中,首列数值存储在用于存储和处理数据的单元组成的8*8阵列的左侧第一列用于存储数据的单元中;然后每个单元均将存储的数据与F相乘得出部分和,以首行首列的用于存储和处理数据的单元为例,得出部分和F*(2,3),并与原来存储的部分和D*(2,1)相加后,得到首行首列个用于存储和处理数据的单元的部分结果D*(2,1)+F*(2,3)进行存储,以首行第二列的用于存储和处理数据的单元为例,得出部分和F*(2,5),并与原来存储的部分和D*(2,3)相加后,得到最新的部分和D*(2,3)+F*(2,5)进行存储,以第二行首列的用于存储和处理数据的单元为例,得出部分和F*(4,3),并与原来存储的部分和D*(4,1)相加后,得到最新的部分和D*(4,1)+F*(4,3)进行存储,以第二行第二列的用于存储和处理数据的单元为例,得出部分和F*(4,5),并与原来存储的部分和D*(4,3)相加后,得到最新的部分和D*(4,3)+F*(4,5)进行存储,其他用于存储和处理数据的单元得出部分和的过程不再一一赘述,但需要注意的是,用于存储数据的单元不进行运算,因此也不得出部分和,这是因为图4所示的卷积核在图2所示的数据上以步长为2进行卷积运算得到的结果为8*8的数据阵列,即卷积过程中第一采样结果303的首列只与第二采样结果503的权重值D相乘,而无需与F相乘;最后将全部用于存储和处理数据的单元的部分结果进行按需排列,得到第一采样结果303对应的子处理结果。

第一采样结果304和第二采样结果504:首先确定E为首个权重值,保持第一采样结果输入至处理矩阵时的初始位置,即(2,2)存储在首行首列个用于存储和处理数据的单元中,(2,4)存储在首行第二列个用于存储和处理数据的单元中,(4,1)存储在第二行首列个用于存储和处理数据的单元中,(4,4)存储在第二行第二列个用于存储和处理数据的单元中;然后每个单元均将存储的数据与E相乘得出部分和,以首行首列的用于存储和处理数据的单元为例,得出首行首列个用于存储和处理数据的单元的部分结果E*(2,2)进行存储,以首行第二列的用于存储和处理数据的单元为例,得出部分和E*(2,4),并进行存储,以第二行首列的用于存储和处理数据的单元为例,得出部分和E*(4,2),并进行存储,以第二行第二列的用于存储和处理数据的单元为例,得出部分和E*(4,4),并进行存储,其他用于存储和处理数据的单元得出部分和的过程不再一一赘述;最后将全部用于存储和处理数据的单元的部分结果进行按需排列,得到第一采样结果304对应的子处理结果。

其中,步骤S603可以按照下述方式执行:将多个子处理结果求和,得到处理结果。由于子处理结果是多行多列的部分结果,而且各个子处理结果的行数列数均相等(这是由于用于存储和处理数据的单元的行数列数相等),因此将对应位置的部分结果相加,并将各个位置所得的和作为处理结果,即将用于存储和处理数据的单元所得到的各个部分和进行求和得到该单元的值,每个单元的值构成处理结果。例如,上述图3和图5的示例中,首行首列个用于存储和处理数据的单元共得到四个部分和,将这四个部分和相加,得到处理结果中该单元对应位置的值,即A*(1,1)+C*(1,3)+I*(3,3)+G*(3,1)+B*(1,2)+H*(3,2)+D*(2,1)+F*(2,3)+E*(2,2),首行第二列个用于存储和处理数据的单元共得到四个部分和,将这四个部分和相加,得到处理结果中该单元对应位置的值,即A*(1,3)+C*(1,5)+I*(3,5)+G*(3,3)+B*(1,4)+H*(3,4)+D*(2,3)+F*(2,5)+E*(2,4);第二行首列个用于存储和处理数据的单元共得到四个部分和,将这四个部分和相加,得到处理结果中该单元对应位置的值,即A*(3,1)+C*(3,3)+I*(5,3)+G*(5,1)+B*(3,2)+H*(5,2)+D*(4,1)+F*(4,3)+E*(4,2);第二行第二列个用于存储和处理数据的单元共得到四个部分和,将这四个部分和相加,得到处理结果中该单元对应位置的值,即A*(3,3)+C*(3,5)+I*(5,5)+I*(5,3)+B*(3,4)+H*(5,4)+D*(4,3)+F*(4,5)+E*(4,4)。

本公开的一些实施例中,待处理数据是根据图像的数据得到的,为了使待处理数据采样后的第一采样结果和处理阵列匹配,可以采用下述方式得到待处理数据:首先,根据所述处理阵列、所述卷积核以及所述步长,确定所述待处理数据的行数与列数;接下来,根据所述卷积核以及所述步长,确定重叠行数与重叠列数;最后,根据所述待处理数据的行数与列数、所述重叠行数以及所述重叠列数,对待处理图像的数据进行采样,得到多个待处理数据。

其中,重叠行数和重叠列数也可以相等,可以采用下述方式确定重叠行数和重叠列数P:

P=K-S,其中,K为卷积核的行数(行数和列数相等),S为卷积运算的步长。另外,K大于或等于S。

其中,待处理数据的行数和列数可以相等,可以采用下述方式确定待处理数据的行数和列数L:

L=S*a+P,其中,S为卷积运算的步长,a为用于存储和处理数据的单元的行数(行数和列数相等)。

如图13所示,对待处理图像的数据进行采样时,将L*L的一个采样框,放置在待处理图像的数据的左上角位置,取采样框内的数据为第一个待处理数据,然后将采样框向右移动L-P,取采样框内的数据为第二个待处理数据,再向右移动L-P后再次采样,直至采样框无法向右移动L-P,然后再从取样框在左上角的位置向下移动L-P进行采样,然后再重复第一行采样的过程,第二行采样结束后,继续向下移动L-P,直至无法继续向下移动L-P,且每次移动后,均对新的一行执行与第一行一致的采样。

根据本发明实施例的第二方面,提供一种数据处理装置,所述装置包括:

控制器,用于根据卷积运算的步长对待处理数据进行采样,得到至少一个第一采样结果,其中,所述步长大于1;根据所述卷积运算的步长对卷积核进行采样,得到至少一个第二采样结果,其中,所述至少一个第一采样结果和所述至少一个第二采样结果一一对应;以及将所述至少一个第一采样结果和所述至少一个第二采样结果,对应的输入至处理阵列;

所述处理阵列,用于对所述至少一个第一采样结果和所述至少一个第二采样结果进行处理,并输出处理结果。

本公开的一些实施例中,所述控制器,用于按照所述步长对所述待处理数据进行行采样,得到至少一个第一行采样结果,其中,所述至少一个第一行采样结果的并集为所述待处理数据;按照所述步长对所述待处理数据进行列采样,得到至少一个第一列采样结果,其中,所述至少一个第一列采样结果的并集为所述待处理数据;分别将每个所述第一行采样结果和每个所述第一列采样结果的交集,确定为第一采样结果。

本公开的一些实施例中,所述控制器,用于按照所述步长对所述卷积核进行行采样,得到至少一个第二行采样结果,其中,所述至少一个第二行采样结果的并集为所述卷积核;按照所述步长对所述卷积核进行列采样,得到至少一个第二列采样结果,其中,所述至少一个第二列采样结果的并集为所述待处理数据;分别将每个所述第二行采样结果和每个所述第二列采样结果的交集,确定为第二采样结果。

本公开的一些实施例中,所述控制器用于针对每个第一采样结果,将该第一采样结果输入至所述处理阵列,并将与该第一采样结果对应的第二采样结果输入至所述处理阵列;并

所述处理阵列,用于根据该第一采样结果和对应的第二采样结果,确定对应的子处理结果;以及根据每个第一采样结果分别对应的子处理结果,输出处理结果。

本公开的一些实施例中,所述控制器用于针对每个第一采样结果,将该第一采样结果的多个数值输入至所述处理阵列的多个单元中,使得所述多个数值在所述多个单元中的相对位置与所述多个数值在该第一采样结果中的相对位置相同。

本公开的一些实施例中,所述处理阵列包括有效阵列、分布在所述有效阵列周围的至少一个溢出行和至少一个溢出列,其中,所述有效阵列包括多个用于存储和处理数据的单元,所述溢出行和所述溢出列包括多个用于存储数据的单元;

所述控制器,用于将该第一采样结果的多个数值,输入至所述处理阵列的多个单元中,使得该第一采样结果中首行首列的数值输入至所述用于存储和处理数据的单元的首行首列中。

本公开的一些实施例中,所述处理阵列,用于针对对应的第二采样结果中的每个权重值,采用该第一采样结果中与该权重值对应的数值,与该权重值确定部分和;

根据该对应的第二采样结果中各权重值分别对应的部分和确定部分结果;以及

根据至少一个部分结果,确定该第一采样结果对应的子处理结果。

本公开的一些实施例中,所述处理阵列用于针对对应的第二采样结果中的首个权重值,采用该第一采样结果在所述处理阵列的初始位置对应单元中的数值与该首个权重值确定部分和。

本公开的一些实施例中,所述控制器,用于针对对应的第二采样结果中的每个非首个权重值,根据该第一采样结果中与该非首个权重值对应的第一数值,以及该第一采样结果中与该非首个权重值的上一个权重值对应的第二数值在该第一采样结果中的位置关系,确定所述第一采样结果的移动方式;

所述处理阵列,用于采用确定的移动方式将所述第二数值移动至对应单元;并采用移动后的对应单元中的数值与该非首个权重值确定部分和。

本公开的一些实施例中,所述控制器,还用于根据所述处理阵列、所述卷积核以及所述步长,确定所述待处理数据的行数与列数;根据所述卷积核以及所述步长,确定重叠行数与重叠列数;根据所述待处理数据的行数与列数、所述重叠行数以及所述重叠列数,对待处理图像的数据进行采样,得到多个待处理数据。

本公开的一些实施例中,所述待处理数据为单通道数据或多通道数据中的一个通道,所述卷积核为单通道卷积核或多通道卷积核中的一个通道。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在第一方面有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本公开实施例提供的数据处理装置可以包括芯片、AI芯片等。

第三方面,本发明至少一个实施例提供了一种电子设备,请参照附图14,其示出了该设备的结构,所述设备包括存储器、处理器,以及本申请实施例提供的数据处理装置。所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时基于第一方面所述的方法对数据进行处理。

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

在本发明中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“多个”指两个或两个以上,除非另有明确的限定。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

相关技术
  • 一种物联网设备数据处理方法、装置、设备及存储介质
  • 穿戴式设备及其数据处理方法、装置、设备、存储介质
技术分类

06120112879546