CN114254744A - 数据处理设备及方法、电子设备和存储介质 - Google Patents
数据处理设备及方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN114254744A CN114254744A CN202011003078.0A CN202011003078A CN114254744A CN 114254744 A CN114254744 A CN 114254744A CN 202011003078 A CN202011003078 A CN 202011003078A CN 114254744 A CN114254744 A CN 114254744A
- Authority
- CN
- China
- Prior art keywords
- data
- processing
- convolution
- winograd
- unit
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Abstract
本公开涉及一种数据处理设备及方法、电子设备和存储介质,设备包括:Winograd预变换单元,用于根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据;多个矩阵乘单元,与Winograd预变换单元的输出端连接,用于对预变换处理数据执行矩阵乘操作,得到中间数据;Winograd后变换单元,与多个矩阵乘单元的输出端连接,用于根据卷积处理类型,对中间数据执行第二Winograd变换处理,得到后变换处理数据;累加单元,与Winograd后变换单元的输出端连接,用于对后变换处理数据进行累加处理,得到输入数据的卷积处理结果。本公开实施例中提出的设备具有较高的硬件通用性。
Description
技术领域
本公开涉及数据处理领域,尤其涉及一种数据处理设备及方法、电子设备和存储介质。
背景技术
卷积神经网络在计算机视觉、语音识别、自然语言处理等领域得到广泛的应用。普通卷积(直接按照原始定义的卷积方式进行卷积计算)由于其计算灵活、适应性强等特点,在各类人工智能(AI,Artificial Intelligence)加速器或处理器中都有支持。
然而随着卷积神经网络技术的发展,可以提升卷积网络运行速度的其他类型卷积也得到广泛的应用。因此,如何令AI加速器或处理器与不同类型的卷积相适应,成为目前一个亟待解决的问题。
发明内容
本公开提出了一种数据处理方案。
根据本公开的一方面,提供了一种数据处理设备,适用于至少一种卷积处理类型的卷积,所述至少一种卷积处理类型包括Winograd卷积,所述设备包括:Winograd预变换单元,用于根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据;多个矩阵乘单元,与所述Winograd预变换单元的输出端连接,用于对所述预变换处理数据执行矩阵乘操作,得到中间数据;Winograd后变换单元,与所述多个矩阵乘单元的输出端连接,用于根据所述当前卷积的卷积处理类型,对所述中间数据执行第二Winograd变换处理,得到后变换处理数据;累加单元,与所述Winograd后变换单元的输出端连接,用于对所述后变换处理数据进行累加处理,得到所述输入数据的卷积处理结果。
在一种可能的实现方式中,所述Winograd预变换单元包括:第一缓存单元,用于获取所述输入数据中的多个输入数据块,并对获取到的所述多个输入数据块进行缓存;第一变换单元,用于对所述第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据。
在一种可能的实现方式中,所述输入数据块在通道方向上的长度为N,在通道以外的至少一个方向上的长度为1,N为大于1的数值,且N不大于所述输入数据在通道方向上的长度。
在一种可能的实现方式中,所述第一变换单元用于:获取所述第一缓存单元缓存的N个通道分别对应的具有特定大小的第一数据块,并对所述N个通道分别对应的第一数据块分别进行第一Winograd变换处理,得到N个通道分别对应的第二数据块;将所述N个通道分别对应的第二数据块沿着通道方向进行组合,得到所述预变换处理数据。
在一种可能的实现方式中,所述第一变换单元用于:根据第一查找表,确定第二数据块中每个第二元素在第一数据块中对应的多个第一元素所在的位置,其中,所述第一数据块为所述输入数据块的N个通道分别对应的数据块,所述第二数据块为对所述N个通道分别对应的第一数据块分别进行第一Winograd变换处理所得到的N个通道分别对应的数据块;根据第二查找表,对所述第二数据块中每个第二元素对应的多个第一元素进行运算,得到所述第二数据块。
在一种可能的实现方式中,所述第一变换单元包括多个加法器,其中,所述多个加法器用于对所述输入数据块的N个通道中每个通道对应的第一数据块中的数据进行运算,得到所述每个通道对应的第二数据块。
在一种可能的实现方式中,所述Winograd后变换单元包括:第二缓存单元,用于对所述中间数据中的多个中间数据块进行缓存;第二变换单元,用于对所述第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据。
在一种可能的实现方式中,所述第二变换单元用于:获取所述第二缓存单元缓存的多个数据所组成的第三数据块,并对所述第三数据块进行第二Winograd变换处理,得到对应的第四数据块;根据所述第四数据块包括的多个第四元素,得到所述后变换处理数据。
在一种可能的实现方式中,所述第二变换单元用于:根据第三查找表,确定第四数据块中每个第四元素在第三数据块中对应的多个第三元素所在的位置,其中,所述第三数据块为所述第二缓存单元缓存的数据块,所述第四数据块为对所述第三数据块进行第二Winograd变换处理所得到的数据块;根据第四查找表,对所述第四数据块中每个第四元素对应的多个第三元素进行运算,得到所述第四数据块。
在一种可能的实现方式中,所述Winograd后变换单元包括多个累加器和/或累减器,其中,所述多个累加器和/或累减器用于对所述第二缓存单元缓存的第三数据块中的数据进行运算,得到第四数据块。
在一种可能的实现方式中,所述至少一种卷积处理类型还包括普通卷积;所述Winograd预变换单元还用于:在所述当前卷积为普通卷积的情况下,将所述输入数据作为所述预变换处理数据;所述Winograd后变换单元用于:在所述当前卷积为普通卷积的情况下,将所述中间数据作为所述后变换处理数据。
在一种可能的实现方式中,所述矩阵乘单元包括MAC阵列,所述MAC阵列包括多个MAC单元;所述多个矩阵乘单元利用相同的权值参数,对所述预变换处理数据进行矩阵乘处理,得到所述中间数据。
在一种可能的实现方式中,所述权值参数包括多个卷积核在每个通道的对应数据组成的向量。
根据本公开的一方面,提供了一种数据处理方法,所述方法包括:根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据;对所述预变换处理数据执行矩阵乘操作,得到中间数据;根据所述当前卷积的卷积处理类型,对所述中间数据执行第二Winograd变换处理,得到后变换处理数据;对所述后变换处理数据进行累加处理,得到所述输入数据的卷积处理结果。
所述方法适用于至少一种卷积处理类型的卷积,所述至少一种卷积处理类型包括Winograd卷积。
在一种可能的实现方式中,所述根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据,包括:获取所述输入数据中的多个输入数据块,并对获取到的所述多个输入数据块进行缓存;对所述第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据。
在一种可能的实现方式中,所述输入数据块在通道方向上的长度为N,在通道以外的至少一个方向上的长度为1,N为大于1的数值,且N不大于所述输入数据在通道方向上的长度。
在一种可能的实现方式中,所述对所述第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据,包括:获取所述第一缓存单元缓存的N个通道分别对应的具有特定大小的第一数据块,并对所述N个通道分别对应的第一数据块分别进行第一Winograd变换处理,得到N个通道分别对应的第二数据块;将所述N个通道分别对应的第二数据块沿着通道方向进行组合,得到所述预变换处理数据。
在一种可能的实现方式中,所述对所述第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据,包括:根据第一查找表,确定第二数据块中每个第二元素在第一数据块中对应的多个第一元素所在的位置,其中,所述第一数据块为所述输入数据块的N个通道分别对应的数据块,所述第二数据块为对所述N个通道分别对应的第一数据块分别进行第一Winograd变换处理所得到的N个通道分别对应的数据块;根据第二查找表,对所述第二数据块中每个第二元素对应的多个第一元素进行运算,得到所述第二数据块。
在一种可能的实现方式中,所述对所述第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据,包括:通过多个加法器对所述输入数据块的N个通道中每个通道对应的第一数据块中的数据进行运算,得到所述每个通道对应的第二数据块。
在一种可能的实现方式中,所述根据所述当前卷积的卷积处理类型,对所述中间数据执行第二Winograd变换处理,得到后变换处理数据,包括:对所述中间数据中的多个中间数据块进行缓存;对所述第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据。
在一种可能的实现方式中,所述对所述第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据,包括:获取所述第二缓存单元缓存的多个数据所组成的第三数据块,并对所述第三数据块进行第二Winograd变换处理,得到对应的第四数据块;根据所述第四数据块包括的多个第四元素,得到所述后变换处理数据。
在一种可能的实现方式中,所述对所述第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据,包括:根据第三查找表,确定第四数据块中每个第四元素在第三数据块中对应的多个第三元素所在的位置,其中,所述第三数据块为所述第二缓存单元缓存的数据块,所述第四数据块为对所述第三数据块进行第二Winograd变换处理所得到的数据块;根据第四查找表,对所述第四数据块中每个第四元素对应的多个第三元素进行运算,得到所述第四数据块。
在一种可能的实现方式中,所述对所述第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据,包括通过多个累加器和/或累减器对所述第二缓存单元缓存的第三数据块中的数据进行运算,得到第四数据块。
在一种可能的实现方式中,所述至少一种卷积处理类型还包括普通卷积;所述根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据,包括:在所述当前卷积为普通卷积的情况下,将所述输入数据作为所述预变换处理数据;所述根据所述当前卷积的卷积处理类型,对所述中间数据执行第二Winograd变换处理,得到后变换处理数据,包括:在所述当前卷积为普通卷积的情况下,将所述中间数据作为所述后变换处理数据。
在一种可能的实现方式中,所述对所述预变换处理数据执行矩阵乘操作,得到中间数据,包括:通过多个矩阵乘单元,利用相同的权值参数,对所述预变换处理数据进行矩阵乘处理,得到所述中间数据;其中,所述矩阵乘单元包括MAC阵列,所述MAC阵列包括多个MAC单元。
在一种可能的实现方式中,所述权值参数包括多个卷积核在每个通道的对应数据组成的向量。
根据本公开的一方面,提供了一种电子设备,包括:
处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:执行上述数据处理方法。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述数据处理方法。
在本公开实施例中,通过包含Winograd预变换单元、多个矩阵乘单元、Winograd后变换单元以及累加单元的数据处理设备,根据当前卷积的卷积处理类型,依次对输入数据执行第一Winograd变换处理、矩阵乘操作、第二Winograd变换处理以及累加处理,从而得到输入数据的卷积处理结果,通过上述设备,可以利用Winograd预变换单元和Winograd后变换单元来基于卷积处理类型对输入数据执行相应的Winograd变换处理,来使得输入数据可以通过数据处理设备完成与卷积处理类型对应的卷积处理,从而实现通过同样一套硬件资源来对输入数据执行不同类型的卷积处理,提高数据处理设备的通用性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出根据本公开一实施例的数据处理设备的框图。
图2示出根据本公开一实施例的预变换单元对输入数据进行预变换操作的示意图。
图3示出根据本公开一实施例的后变换单元对获取结果进行后变换操作的示意图。
图4示出根据本公开一实施例的数据处理方法的流程图。
图5示出根据本公开一应用示例的数据处理设备示意图。
图6示出根据本公开实施例的一种电子设备的框图。
图7示出根据本公开实施例的一种电子设备的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开一实施例的数据处理设备的框图。如图所示,该设备可以为终端设备、服务器或者其他处理设备等。其中,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal DigitalAssistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。
在一些可能的实现方式中,该数据处理设备也可以包括处理器和存储器,处理器可以调用存储器中存储的计算机可读指令。在一些可能的实现方式中,该数据处理设备可以为处理器或是处理芯片等,在一个示例中,该数据处理设备可以为中央处理器(CPU,Central Processing Unit)、图形处理器(GPU,Graphics Processing Unit)、人工智能(AI,Artificial Intelligence)处理器或是其他通用处理器等。
如图1所示,在一种可能的实现方式中,所述设备适用于至少一种卷积处理类型的卷积,至少一种卷积处理类型包括Winograd卷积,设备包括:
Winograd预变换单元11,用于根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据;
多个矩阵乘单元12,与Winograd预变换单元的输出端连接,用于对预变换处理数据执行矩阵乘操作,得到中间数据;
Winograd后变换单元13,与多个矩阵乘单元的输出端连接,用于根据当前卷积的卷积处理类型,对中间数据执行第二Winograd变换处理,得到后变换处理数据;
累加单元14,与Winograd后变换单元的输出端连接,用于对后变换处理数据进行累加处理,得到输入数据的卷积处理结果。
其中,输入数据可以是输入至数据处理设备,或是输入至数据处理设备中的计算模块的数据,其数据类型和数据内容均可以根据数据处理的需求灵活决定。在一种可能的实现方式中,输入数据可以是原始图像的特征图(feature map)或者原始图像;在一种可能的实现方式中,输入数据也可以是特征图或原始图像中的部分数据,比如切割后的特征图或是特征向量等。
通过上述公开实施例可以看出,本公开实施例提出的数据处理设备,适用于至少一种卷积处理类型。卷积处理类型包含的类型数量以及具体的种类可以根据实际情况灵活决定,不局限于下述各公开实施例。
在一种可能的实现方式中,卷积处理类型可以包括普通卷积和/或Winograd卷积。其中,普通卷积可以是根据原始的卷积定义方式所实现的卷积计算。在一种可能的实现方式中,卷积处理类型也可以包括其他形式的卷积,比如Depthwise卷积等。
在一种可能的实现方式中,在卷积处理类型包括普通卷积和Winograd卷积的情况下,本公开实施例提出的数据处理设备可以根据指令,对输入数据执行普通卷积的卷积处理或是Winograd卷积的卷积处理;在一种可能的实现方式中,在卷积处理类型包括普通卷积、Winograd卷积以及如Depthwise卷积等其他卷积的情况下,本公开实施例提出的数据处理设备可以根据指令,对输入数据执行普通卷积的卷积处理,或是指令所指示的某种卷积的卷积处理。后续各公开实施例以卷积处理类型至少包括Winograd卷积为例,对数据处理设备的实现方式进行说明,卷积处理类型包含三种以上卷积的情况,可以参考后续各公开实施例进行灵活扩展,不再一一进行说明。
通过卷积处理类型的多种实现形式,可以利用本公开实施例提出的数据处理设备这一套硬件设备,实现多种类型的卷积,从而提高数据处理设备的通用性、灵活性和适用范围。
随着卷积处理类型实现方式的不同,Winograd预变换单元与Winograd后变换单元的实现形式也可以灵活发生变化。通过上述公开实施例可以看出,Winograd预变换单元可以根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据。因此,随着卷积处理类型包含的卷积种类的不同,Winograd预变换单元的硬件实现方式,以及基于硬件实现方式所实现的变换方法,均可能发生变化。在一种可能的实现方式中,在卷积处理类型包括普通卷积以及Winograd卷积的情况下,Winograd预变换单元可以根据指令所指示的卷积处理类型,对输入数据执行普通卷积对应的操作,或是Winograd卷积所对应的第一Winograd变换处理,其中第一Winograd变换处理可以是根据Winograd卷积的定义所实现的处理方式,具体如何进行,其实现过程可以参考下述各公开实施例,在此先不做展开。在一种可能的实现方式中,在卷积处理类型包括普通卷积、Winograd卷积以及其他类型的卷积(比如Depthwise卷积的情况下),Winograd预变换单元的硬件结构可能与上述可以执行普通卷积和Winograd卷积的Winograd预变换单元的结构不同,从而使得Winograd预变换单元可以通过同一套硬件实现普通卷积、Winograd卷积或是Depthwise卷积的变换等。
Winograd预变换单元得到的预变换处理数据的数据形式,可以根据输入数据的实际情况,以及卷积处理类型的实际情况所共同决定,因此在本公开实施例中不做限制。Winograd预变换单元的数量在本公开实施例中不做限定,可以根据输入数据的数据量和数据大小来灵活决定,在一种可能的实现方式中,数据处理设备可以包含一个Winograd预变换单元,在一种可能的实现方式中,数据处理设备也可以同时包含多个Winograd预变换单元。
Winograd后变换单元的实现方式可以参考Winograd预变换单元,详见下述各公开实施例,在此先不做展开。其中,Winograd后变换单元对中间数据执行的第二Winograd变换处理,其实现形式也可以根据Winograd卷积的定义所确定。
虽然不同卷积处理类型,在卷积处理方式上存在差异,但是均可以具有共性的卷积操作(比如矩阵乘操作以及累加操作等),因此,在一种可能的实现方式中,本公开实施例中的数据处理设备可以包括矩阵乘单元和累加单元,从而实现基于不同的卷积处理类型的共性卷积操作。其中,矩阵乘单元可以对预变换数据执行矩阵乘操作来得到中间数据,矩阵乘操作可以是根据卷积的定义,将卷积核与待卷积的数据进行相乘的操作来得到中间数据。而累加单元可以对后变换处理数据进行累加处理,其中累加处理可以是根据卷积的定义,将卷积核在待卷积的数据上进行移动从而实现多次矩阵乘操作后,得到的多个中间数据进行相加的操作;在一种可能的实现方式中,由于中间数据还可能通过Winograd后变换单元处理为后变换处理数据,因此累加单元执行的累加处理的对象可以为后变换处理数据,从而得到输入数据的卷积处理结果。在一种可能的实现方式中,矩阵乘单元和累加单元的硬件实现形式,可以根据数据处理设备可以实现的多种卷积处理类型中,具有共性的操作所需要的硬件所决定,不局限于下述各公开实施例。
矩阵乘单元和累加单元的数量在本公开实施例中不做限定,同样可以根据输入数据的数据量和数据大小来灵活决定,在一种可能的实现方式中,数据处理设备可以包含一个矩阵乘单元和累加单元,在一种可能的实现方式中,数据处理设备也可以同时包含多个矩阵乘单元和累加单元,在一种可能的实现方式中,矩阵乘单元和累加单元的数量也可以与Winograd预变换单元和Winograd后变换单元的数量匹配或一致。
在一种可能的实现方式中,Winograd预变换单元和Winograd后变换单元可以随着卷积处理类型的不同,执行相应的操作,矩阵乘单元和累加单元则可以在不同的卷积处理类型下,执行相同的操作;进一步地,在一种可能的实现方式中,本公开实施例中提出的Winograd预变换单元,在卷积处理类型不同的情况下,虽然执行相应的操作,但是读取数据的方式可以是一致的,而累加单元由于在不同的卷积处理类型下执行相同的操作,因此输出的卷积处理结果的形式也可以是一致的,因此,在一种可能的实现方式中,本公开实施例提出的数据处理设备,在卷积处理类型不同的情况下,可以通过相同的数据接口与其他设备或模块等进行数据传递,且输出处理设备获取的输入数据在不同的卷积处理类型下,具有相同的数据排布方式(layout)。
在本公开实施例中,通过包含Winograd预变换单元、多个矩阵乘单元、Winograd后变换单元以及累加单元的数据处理设备,根据当前卷积的卷积处理类型,依次对输入数据执行第一Winograd变换处理、矩阵乘操作、第二Winograd变换处理以及累加处理,从而得到输入数据的卷积处理结果,通过上述过程,可以利用Winograd预变换单元和Winograd后变换单元来基于卷积处理类型对输入数据执行相应的Winograd变换处理,来使得输入数据可以通过数据处理设备完成与卷积处理类型对应的卷积处理,从而实现通过同样一套硬件资源来对输入数据执行不同类型的卷积处理,提高数据处理设备的通用性。
在一种可能的实现方式中,Winograd预变换单元可以包括:
第一缓存单元,用于获取输入数据中的多个输入数据块,并对获取到的多个输入数据块进行缓存;
第一变换单元,用于对第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据。
其中,第一缓存单元可以用于对输入数据进行缓存来得到多个输入数据块,缓存得到的输入数据块的格式可以根据缓存方式灵活决定,不局限于下述各公开实施例。输入数据块的数量则可以根据输入数据的大小以及缓存的方式所共同决定,在本公开实施例中也不做限制。
如上述公开实施例所述,数据处理设备可以适用于至少一种卷积处理类型的卷积,因此在一种可能的实现方式中,对于不同的卷积处理类型,第一缓存单元可以通过采用相同的输入数据缓存方式,来提升Winograd预变换单元的数据处理通用性,即在一种可能的实现方式中,第一缓存单元可以通过面向不同的卷积处理类型,采用相同的缓存方式,来成为面向不同卷积处理类型的通用数据输入接口。如何选取缓存方式,使其可以适应不同的卷积处理类型,其实现形式可以根据卷积处理类型包括的卷积形式所灵活确定。
在一种可能的实现方式中,在卷积处理类型包括普通卷积和Winograd卷积的情况下,可以按照普通卷积的数据排布方式来对输入数据进行读取,并按照读取的顺序将读取的输入数据块缓存到第一缓存单元中。举例来说,在一个示例中,由于普通卷积一般通过NCHWC’的格式进行读取后再执行卷积操作,而Winograd卷积一般通过NCHW的格式进行读取后再执行卷积操作,针对不同的卷积处理类型,如果采用不同的数据排布方式进行数据存储和读取,容易降低数据存储与处理的便捷性和通用性。因此,在一种可能的实现方式中,可以按照统一的缓存方式对数据进行缓存,来得到缓存数据。在一个示例中,可以从输入数据中,在数据处理设备的每个时钟周期,读取一个在通道方向(C方向)上的长度为N,其他方向均为单位长度1的向量Vi作为输入向量,并将其缓存到第一缓存单元中,作为缓存的输入数据块。在这种情况下,输入数据块在通道方向上的长度为N,在通道以外的至少一个方向上的长度为1,其中,N可以为大于1的数值,且N不大于输入数据在通道方向上的长度。在一种可能的实现方式中,N的取值可以根据数据处理设备中矩阵乘单元的硬件处理能力以及处理效率等因素所灵活决定,在一个示例中,根据矩阵乘单元的硬件处理能力,N的取值可以为16。
通过上述过程,可以使得缓存单元获取的多个输入数据块的格式符合要求,继而使得经过第一变换单元后进入到矩阵乘单元中的预变换数据的格式,符合卷积处理类型所需的数据排布格式。
图2示出根据本公开一实施例的第一缓存单元获取输入数据中的多个输入数据块的示意图,如图所示,在一个示例中,对于大小为H、W和C方向上的大小分别为4、4和16的输入数据D,可以获取C方向上的多个单位向量Vi(大小为1×1×16)作为输入数据块,即可以按照d0~d15的顺序,依次将d0在C通道方向上对应的向量Vi0、d1在C通道方向上对应的向量Vi1、d2在C通道方向上对应的向量Vi2等等,依次作为输入数据块进行缓存。
需要注意的是,在C通道方向上的数据量过大,比如输入数据在C通道上的大小可能为32、48等超过16的情况下,由于数据处理设备中各单元的算力可能存在限制,如果直接根据C通道上数据的大小,来获取除C方向以外,其他方向均为单位长度的向量Vi作为输入数据块(即Vi的大小可能为1×1×32或1×1×64等),可能会不便于后续的操作。在这种情况下,可以根据第一变换单元或矩阵乘单元等硬件可以实际处理的数据大小,来确定缓存的输入数据块Vi的大小。在一个示例中,在矩阵乘单元中的硬件可以支持处理的数据在C通道方向上的大小为16,且输入数据在C通道方向上的大小超过16的情况下,可以将H和W方向上的大小为单位长度,C方向上的大小为16的向量Vi(即大小为1×1×16)作为输入数据块,然后分别沿H、W以及C方向进行移动,来遍历整个输入数据,从而得到多个用于缓存的输入数据块。
通过上述过程,在普通卷积和Winograd卷积对输入数据具有不同的数据排布(layout)需求的情况下,也可以通过同一第一缓存单元对输入数据中的多个输入数据块以同样的格式进行缓存,从而为输入数据提供一个通用的数据输入接口。
在通过第一缓存单元对输入数据中的多个输入数据块进行缓存后,可以通过第一变换单元,对第一缓存单元缓存的数据执行第一Winograd变换处理。第一变换单元具体如何实现第一Winograd变换处理在本公开实施例中不做限制,在一种可能的实现方式中,第一变换单元用于:
获取第一缓存单元缓存的N个通道分别对应的具有特定大小的第一数据块,并对N个通道分别对应的第一数据块分别进行第一Winograd变换处理,得到N个通道分别对应的第二数据块;
将N个通道分别对应的第二数据块沿着通道方向进行组合,得到预变换处理数据。
其中,第一数据块可以是对第一缓存单元缓存的多个输入数据块所构成的缓存数据,在N个通道上分别截取所得到的数据块,第一数据块的特定大小可以根据Winograd卷积的实际卷积要求所确定,在本公开实施例中不做限制。
举例来说,如上述公开实施例所述,第一缓存单元可以获取多个大小为1×1×N的输入数据块Vi并进行缓存,在一个示例中,如图2所示,Winograd卷积的数据处理规模为F(2×2,3×3),即卷积核的规模为3×3,输出数据的规模为2×2的情况下,可以对缓存的多个输入数据块Vi所共同构成的大小为4×4×N的缓存数据,在N个通道上分别截取,来得到N个大小为4×4×1的第一数据块Di。
在获取到多个第一数据块以后,可以对N个通道分别对应的第一数据块进行第一Winograd变换处理,来得到N个通道分别对应的第二数据块。
其中,第一Winograd变换处理的方式可以根据Winograd卷积的卷积定义方式,以及第一数据块的数据大小所灵活决定,不局限于下述公开实施例。在一种可能的实现方式中,在Winograd卷积的数据处理规模为F(2×2,3×3)的情况下,对第一数据块进行的第一Winograd变换处理,可以是将N个通道分别对应的形式为平面向量的第一数据块Di,进行BTDiB转换,来得到转换后的多个平面向量Ri作为第二数据块。在一个示例中,根据Winograd卷积的定义,BTDiB转换后,第二数据块Ri中每个数据与第一数据块Di中每个数据之间的对应关系可以通过下述公式(1)进行表示:
其中,d0~d15为第一数据块中包含的多个第一元素,而公式(1)中矩阵内每一项的计算结果,为第二数据块中包含的多个第二元素,从公式(1)可以看出,第二数据块中的各第二元素,与第一数据块中的多个第一元素之间,存在一定的对应关系。基于此对应关系,可以将N个通道分别对应的第一数据块,通过第一Winograd变换处理,变换为N个通道分别对应的第二数据块。其中,在一种可能的实现方式中,N个通道的第一数据块所进行的第一Winograd变换处理,可以为并行执行,即N个第一数据块同时执行第一Winograd变换处理来得到N各第二数据块;在一种可能的实现方式中,N个通道的第一数据块所进行的第一Winograd变换处理也可以为按照预设顺序依次执行,具体如何设置预设顺序可以根据实际情况灵活决定,在本公开实施例中不做限制。
在一些例子中,得到的N个通道分别对应的第二数据块,也可以沿着通道方向进行组合,来得到预变换处理数据。第二数据块在通道方向上的组合方向可以根据对应的第一数据块在通道方向上的排列形式所确定,在本公开实施例中不做限定。
在一些例子中,通过获取第一缓存单元缓存的N个通道分别对应的具有特定大小的第一数据块,并对N个第一数据块分别进行第一Winograd变换处理,得到N个第二数据块,从而将N个第二数据块沿通道方向进行组合,得到预变换处理数据。通过上述过程,可以将第一变换单元执行的第一Winograd变换处理操作,转换为并行的多个通道方向上的矩阵变换,从而有效提升Winograd预变换单元实现的可行性。
如上述公开实施例所述,第一数据块可以包含多个第一元素d0~d15,第二数据块可以包含多个第二元素,且各第二元素与多个第一元素之间可以存在一定的对应关系。因此,在一种可能的实现方式中,可以将第二数据块中的第二元素与第一数据块中的第一元素之间的对应关系,存储在查找表中,从而可以基于查找表来实现第一Winograd变换处理。因此,在一种可能的实现方式中,第一变换单元可以用于:
根据第一查找表,确定第二数据块中每个第二元素在第一数据块中对应的多个第一元素所在的位置,其中,第一数据块为输入数据块的N个通道分别对应的数据块,第二数据块为对N个通道分别对应的第一数据块分别进行第一Winograd变换处理所得到的N个通道分别对应的数据块;
根据第二查找表,对第二数据块中每个第二元素对应的多个第一元素进行运算,得到第二数据块。
其中,第一查找表和第二查找表的存储位置和实现方式均可以根据实际情况灵活决定,在一种可能的实现方式中,第一查找表和第二查找表可以存储在第一缓存单元中。在一种可能的实现方式中,第一查找表和第二查找表可以为同一个查找表,即在一个查找表中同时存储第二元素与第一元素之间的对应关系和运算关系;在一种可能的实现方式中,第一查找表和第二查找表也可以是不同的查找表,即可以通过不同的查找表,分别存储第二元素与第一元素之间的对应关系和运算关系;具体选择几个查找表,可以根据实际情况灵活选择。
通过上述公开实施例可以看出,在一种可能的实现方式中,可以通过第一查找表确定第二数据块中各第二元素与第一数据块中多个第一元素之间的对应关系,举例来说,在一个示例中,根据公式(1),第二数据块中Ri中的第二元素r0,可以分别对应第一数据块Di中的第一元素d0、d2、d8以及d10,第二元素r1则可以分别对应第一元素d1、d2、d9及d10等。
由于第二元素需要通过多个第一元素进行运算所得到,因此,在一种可能的实现方式中,还可以进一步通过第二查找表,确定第二元素对应的各第一元素之间的运算关系。举例来说,在一个示例中,根据公式(1),第二数据块中的第二元素r0,可以通过多个第一元素进行d0-d2-d8+d10的运算所得到。
通过根据第一查找表确定第二数据块中每个第二元素在第一数据块中对应的多个第一元素所在的位置,通过第二查找表对第二数据块中每个第二元素对应的多个第一元素进行运算,得到第二数据块,通过上述过程,可以利用查找表快速便捷地实现第一Winograd变换处理,提升了第一Winograd变换处理的便捷性,继而提升数据处理的效率。
通过公式(1)可以看出,第一数据块与第二数据块之间各元素的第一Winograd变换处理,均可以通过加减法实现,因此,在一种可能的实现方式中,第一变换单元可以包括多个加法器,其中,多个加法器用于对输入数据块的N个通道中每个通道对应的第一数据块中的数据进行运算,得到每个通道对应的第二数据块。
其中,多个加法器对N个通道中每个通道对应的第一数据块中的数据进行何种运算,可以参考上述各公开实施例以及公式(1),在此不再赘述。在一种可能的实现方式中,基于上述公开实施例中公式(1)可以看出,在一个示例中,第一变换单元可以通过一个或多个4输入加法器来实现,在第一变换单元包括一个4输入加法器的情况下,第一变换单元可以在每个时钟周期完成对一个输入数据块的第一Winograd变换处理;在第一变换单元包括多个4输入加法器的情况下,第一变换单元可以在每个时钟周期完成对多个输入数据块的第一Winograd变换处理。
通过包括多个加法器的第一变换单元,实现第一Winograd变换处理,可以大大降低第一变换单元的硬件实现难度和成本,从而节约数据处理设备的成本。
如上述各公开实施例所述,至少一种卷积处理类型还可以包括普通卷积,在这种情况下,Winograd预变换单元还可以用于:在当前卷积为普通卷积的情况下,将输入数据作为预变换处理数据。如上述各公开实施例所述,Winograd预变换单元可以包括第一缓存单元和第一变换单元,因此,在一种可能的实现方式中,在当前卷积为普通卷积的情况下,第一缓存单元可以用于获取输入数据中的多个输入数据块,并对获取到的多个输入数据块进行缓存,而第一变换单元则可以用于将第一缓存单元缓存的数据直接作为预变换处理数据,输出至矩阵乘单元。
通过上述过程,可以利用同一套硬件结构的Winograd预变换单元,针对普通卷积和Winograd卷积这些不同的卷积处理类型,实现对应的数据处理,从而增强数据处理设备的硬件通用性。
综上所述,在一种可能的实现方式中,Winograd预变换单元的数据处理过程可以为,通过第一缓存单元获取多个输入数据块Vi并在各时钟周期依次进行缓存,在当前卷积为普通卷积的情况下,将缓存的输入数据块Vi作为预变换处理数据,输入至矩阵乘单元;在当前卷积为Winograd卷积的情况下,通过公式(1)中的变换方式,直接将对应的Vi进行相应的相加和/或相减操作,来得到预变换处理数据。举例来说,在一个示例中,在依次按照Vi0、Vi1、Vi2等的顺序,对Vi进行缓存的情况下,根据第一查找表,在缓存到输入数据块Vi10的情况下,可以通过Vi0、Vi2、Vi8以及Vi10,根据第二查找表,按照公式(1)中矩阵第一项所指出的加减操作(即C通道上的每个输出数据按照d0-d2-d8+d10的方式进行计算),得到预变换处理数据R中的第一个输出向量Vo0(即r0沿C通道方向延伸所对应的输出向量)。以此类推,可以分别得到预变换处理数据R中的其他输出向量Vo1~Vo15,得到的多个输出向量可以分别输入至矩阵乘单元中。
在一些可能的实现方式中,在卷积处理类型包括其他的卷积处理类型,比如Depthwise卷积的情况下,输入数据D与预变换处理数据R之间的变换关系可能发生变化,即通过D得到R的计算方式可能产生变化,在这种情况下,预变换操作可能不仅包含对缓存数据的相加和/或相减,也可能采取其他的如相乘等操作形式,在一些可能的实现方式中,可以根据这些卷积处理类型的具体卷积变换方式,来确定R与D之间的变换关系,从而相应的更改第一缓存单元的数据缓存方式、第一变换单元的变换方式以及Winograd预变换单元实现的硬件结构等,具体如何改变可以根据实际情况进行相应扩展,在此不再一一赘述。
Winograd预变换单元得到的预变换处理数据可以输入到矩阵乘单元中进行矩阵乘操作从而得到中间数据,该中间数据可以进一步输入到Winograd后变换单元来进行第二Winograd变换处理。矩阵乘单元以及中间数据的实现形式详见后续各公开实施例,在此先不做展开。
同理,如上述各公开实施例所述,Winograd后变换单元中的第二Winograd后变换处理也可以根据实际情况灵活决定。在一种可能的实现方式中,Winograd后变换单元可以包括:
第二缓存单元,用于对中间数据中的多个中间数据块进行缓存;
第二变换单元,用于对第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据。
其中,第二缓存单元可以用于对中间数据进行缓存来得到多个中间数据块,缓存得到的中间数据块的格式可以根据缓存方式灵活决定,不局限于下述各公开实施例。中间数据块的数量则可以根据中间数据的大小以及缓存的方式所共同决定,在本公开实施例中也不做限制。
与Winograd预变换单元类似,第二缓存单元的实现形式可以根据实际情况灵活决定,在一种可能的实现方式中,第二缓存单元对中间数据进行缓存的方式可以为:在每个时钟周期,对矩阵乘单元输出的中间数据直接进行缓存,得到中间数据块。在一个示例中,矩阵乘单元输出的可能是经过矩阵乘操作所得到的一维数据结果,在这种情况下,第二缓存单元可以直接将矩阵乘单元输出的每个一维数据作为中间数据块进行缓存。
在通过第二缓存单元对中间数据中的多个中间数据块进行缓存后,可以通过第二变换单元,对第二缓存单元缓存的数据执行第二Winograd变换处理。第二变换单元具体如何实现第二Winograd变换处理在本公开实施例中不做限制,在一种可能的实现方式中,第二变换单元用于:
获取第二缓存单元缓存的多个数据所组成的第三数据块,并对第三数据块进行第二Winograd变换处理,得到对应的第四数据块;
根据第四数据块包括的多个第四元素,得到后变换处理数据。
其中,第三数据块可以是对第二缓存单元缓存的多个中间数据块所构成的缓存数据,第三数据块的特定大小可以根据Winograd卷积的实际卷积要求所确定,在本公开实施例中不做限制。
举例来说,如上述公开实施例所述,第二缓存单元可以获取多个一维的中间数据进行缓存,在一个示例中,如图3所示,在Winograd卷积的数据处理规模为F(2×2,3×3)的情况下,矩阵乘单元输出的中间数据可以为图中的一维数据x,在这种情况下,第二缓存单元可以在每个时钟周期对矩阵乘单元输出的中间数据x进行缓存并依次记为x0、x1以及x2等,进一步地,第二变换单元可以获取16个一维中间数据所共同组成大小为4×4×1的第三数据块X。
在获取到第三数据块以后,可以对第三数据块进行第二Winograd变换处理,来得到第四数据块。
其中,第二Winograd变换处理的方式可以根据Winograd卷积的卷积定义方式,以及第三数据块的数据大小所灵活决定,不局限于下述公开实施例。在一种可能的实现方式中,在Winograd卷积的数据处理规模为F(2×2,3×3)的情况下,对第三数据块进行的第二Winograd变换处理,可以是对第三数据块X,进行ATXA转换,来得到转换后的大小为2×2的数据R’作为第四数据块。在一个示例中,根据Winograd卷积的定义,ATXA转换后,R’中每个数据与X中每个数据之间的对应关系可以通过下述公式(2)进行表示:
其中,x0~x15的实现形式可以参考图3中公开的数据X。从图3中还可以看出,图3中公开的中间数据X,通过上述公开实施例提到的ATXA转换,可以变换为后变换数据R’,变换后R’的数据规模与X不同,在本公开实施例中R’的规模为2×2,R’中的数据r’0~r’3,可以为中间数据X中的x0~x15按照公式(2)中的计算方式进行相应的加/减法计算所得到的。
基于公式(2)中公开的第二Winograd变换的具体变换过程可以看出,在一种可能的实现方式中,在获取矩阵乘单元输出的多个中间数据x所组成的第三数据块后,可以通过公式(2)中的变换方式,得到第二Winograd变换处理的结果R’来作为第四数据块。进一步地,对于Winograd卷积来说,第四数据块R’中包含的各数据r’0~r’3可以记为第四元素,在一个示例中,各第四元素可以分别作为后变换处理数据r’输入至累加单元中来执行累加操作,来进一步得到Winograd卷积的卷积处理结果。
通过获取第二缓存单元缓存的多个数据所组成的第三数据块,并对第三数据块进行第二Winograd变换处理,得到第四数据块,从而根据第四数据块中包含的多个第四元素来得到后变换处理数据。通过上述过程,可以将第二变换单元执行的第二Winograd变换处理操作,转换为易于执行的矩阵变换操作,从而有效提升Winograd后变换单元实现的可行性。
如上述公开实施例所述,第三数据块可以由第二缓存单元缓存的多个数据组成,在一种可能的实现方式中,可以将第三数据块中包含的各数据作为第三数据块中的多个第三元素,比如可以将第三数据块X中的各一维数据x0~x15作为第三元素。上述公开实施例中也提到第四数据块中的各数据可以作为第四元素,而第四数据块通过对第三数据块进行第二Winograd变换处理所得到,则第四元素与第三元素之间可以存在一定的对应关系,比如上述公开实施例中公式(2)所述的对应关系。因此,在一种可能的实现方式中,可以将第四数据块中的第四元素与第三数据块中的第三元素之间的对应关系,存储在查找表中,从而可以基于查找表来实现第二Winograd变换处理。因此,在一种可能的实现方式中,第二变换单元可以用于:
根据第三查找表,确定第四数据块中每个第四元素在第三数据块中对应的多个第三元素所在的位置,其中,第三数据块为第二缓存单元缓存的数据块,第四数据块为对第三数据块进行第二Winograd变换处理所得到的数据块;
根据第四查找表,对第四数据块中每个第四元素对应的多个第三元素进行运算,得到第四数据块。
其中,第三查找表和第四查找表的存储位置和实现方式也均可以根据实际情况灵活决定,在一种可能的实现方式中,第三查找表和第四查找表可以存储在第二缓存单元中。与第一查找表和第二查找表类似,第三查找表和第四查找表可以通过同一个查找表所共同实现,也可以分别通过两个查找表分别实现,根据实际情况灵活选择即可。
通过上述公开实施例可以看出,在一种可能的实现方式中,可以通过第三查找表确定第四数据块中各第四元素与第三数据块中多个第三元素之间的对应关系,举例来说,在一个示例中,根据公式(2),第四数据块中R’i中的第四元素r’0,可以分别对应第三数据块X中的第三元素x0、x1、x2、x4、x5、x6、x8、x9及x10,第四元素r’1则可以分别对应第三元素x1、x2、x3、x5、x6、x7、x9、x10及x11等。
由于第四元素需要通过多个第三元素进行运算所得到,因此,在一种可能的实现方式中,还可以进一步通过第四查找表,确定第四元素对应的各第三元素之间的运算关系。举例来说,在一个示例中,根据公式(2),第四数据块中的第四元素r’0,可以通过多个第三元素进行x0+x1+x2+x4+x5+x6+x8+x9+x10的运算所得到。
在一个示例中,针对公式(2)中提出的后变换操作,其对应的第三查找表的实现形式可以如下述公式(3)所示,对应的第四查找表的实现形式可以如下述公式(4)所示:
在公式(3)中,x0对应的累加/减的使能情况(即是否进行累加/减操作)显示在其中的最低位,1表示累加操作,则从r’0_aen对应的使能情况可以看出,r’0的计算过程中,分别对x0、x1、x2、x4、x5、x6、x8、x9以及x10进行了累加或累减操作,这与公式(2)中r’0的计算方式是对应的。在公式(4)中,x0对应的加减法标志位也在最低位,且1表示减法操作,则从r’0_sub对应的使能情况可以看出,r’0的计算过程中,所有参与累加或累减操作的数据位,执行的均为加法操作,这与公式(2)中r’0的计算方式也是对应的。因此,在一个示例中,基于公式(3)的第三查找表和公式(4)的第四查找表,第二变换单元可以实现第二Winograd变换处理。
通过根据第三查找表确定第四数据块中每个第四元素在第三数据块中对应的多个第三元素所在的位置,通过第四查找表对第四数据块中每个第四元素对应的多个第三元素进行运算,得到第四数据块,通过上述过程,可以利用查找表快速便捷地实现第二Winograd变换处理,提升了第二Winograd变换处理的便捷性,继而提升数据处理的效率。
通过公式(2)可以看出,第三数据块与第四数据块之间各元素的第二Winograd变换处理,均可以通过加减法实现,因此,在一种可能的实现方式中,第二变换单元可以包括多个累加器和/或累减器,其中,多个累加器/累减器可以用于对第二缓存单元缓存的第三数据块中的数据进行运算,得到第四数据块。
其中,多个累加器/累减器对第三数据块中的数据进行何种运算,可以参考上述各公开实施例以及公式(2),在此不再赘述。在一种可能的实现方式中,基于上述公开实施例中公式(2)可以看出,在一个示例中,第二变换单元可以通过4个累加器或累减器来实现。
通过包括多个累加器和/或累减器的第二变换单元,实现第二Winograd变换处理,可以大大降低第二变换单元的硬件实现难度和成本,从而节约数据处理设备的成本。
如上述各公开实施例所述,至少一种卷积处理类型还可以包括普通卷积,在这种情况下,Winograd后变换单元还可以用于:在当前卷积为普通卷积的情况下,将中间数据作为后变换处理数据。如上述各公开实施例所述,Winograd后变换单元可以包括第二缓存单元和第二变换单元,因此,在一种可能的实现方式中,在当前卷积为普通卷积的情况下,第二缓存单元可以用于获取中间数据中的多个中间数据块,并对获取到的多个中间数据块进行缓存,而第二变换单元则可以用于将第二缓存单元缓存的数据直接作为后变换处理数据,输出至累加单元。
通过上述过程,可以利用同一套硬件结构的Winograd后变换单元,针对普通卷积和Winograd卷积这些不同的卷积处理类型,实现对应的数据处理,从而增强数据处理设备的硬件通用性。
综上所述,在一种可能的实现方式中,Winograd后变换单元的数据处理过程可以为,通过第二缓存单元获取多个中间数据xi(x0~x15)等并在各时钟周期依次进行缓存,在当前卷积为普通卷积的情况下,将缓存的中间数据x0作为后变换处理数据,输入至累加单元;在当前卷积为Winograd卷积的情况下,通过公式(2)中的变换方式,直接将对应的xi进行相应的相加和/或相减操作,来得到后变换处理数据。举例来说,在一个示例中,在依次按照x0、x1、x2等的顺序,对xi进行缓存的情况下,依据第三查找表,在缓存到中间数据x10的情况下,可以通过x0、x1、x2、x4、x5、x6、x8、x9及x10,依据第四查找表,按照公式(2)中所指出的加减操作,得到后变换处理数据R’中的第一个第四元素r’0。以此类推,可以分别得到后变换处理数据R’中的其他第四元素r’1~r’3,得到的多个第四元素可以分别输入至累加单元中。
在一些可能的实现方式中,在卷积处理类型包括其他的卷积处理类型,比如Depthwise卷积的情况下,第二缓存单元的数据缓存方式、第二变换单元的变换方式以及Winograd后变换单元实现的硬件结构等,具体如何改变可以根据实际情况进行相应扩展,在此不再一一赘述。
如上述各公开实施例所述,数据处理设备还包括多个矩阵乘单元,矩阵乘单元可以与Winograd预变换单元的输出端连接,对预变换处理数据进行矩阵乘操作来得到中间数据。其中,矩阵乘单元的数量可以根据实际情况灵活决定,在本公开实施例中不做限定。在一种可能的实现方式中,矩阵乘单元的数量可以与Winograd预变换单元、Winograd后变换单元以及累加单元的数量一致,在一个示例中,矩阵乘单元的数量可以为16个,且每个矩阵乘单元可以分别与一个Winograd预变换单元和Winograd后变换单元对应连接。
矩阵乘单元的实现方式可以灵活决定,不局限于下述各公开实施例。在一种可能的实现方式中,矩阵乘单元包括MAC阵列,MAC阵列包括多个MAC单元;
多个矩阵乘单元利用相同的权值参数,对预变换处理数据进行矩阵乘处理,得到中间数据。
其中,MAC阵列可以为乘积累加运算(MAC,Multiply Accumulate)阵列。每个MAC阵列中可以包括多个MAC单元,MAC单元可以由可以对数据之间进行点积运算的乘积累加运算器构成,MAC单元的数量在本公开实施例中不做限制,可以根据实际情况灵活选择,在一个示例中,每个MAC阵列中可以包含16个MAC单元。
如上述各公开实施例所述,矩阵乘单元可以对预变换处理数据执行矩阵乘操作,在一种可能的实现方式中,矩阵乘单元可以将预变换处理数据与待进行卷积的卷积核之间进行矩阵乘操作,其中,待进行卷积的卷积核可能预先存储在数据处理设备的某个存储单元中,具体的存储位置在本公开实施例中不做限制,在实际应用中,矩阵乘单元可以直接从卷积核的存储位置获取卷积核。在一种可能的实现方式中,多个矩阵乘单元可以利用相同的卷积核,对预变换处理数据进行矩阵乘处理,得到中间数据。
在一种可能的实现方式中,在卷积核的数据规模较大的情况下,矩阵乘单元可能无法直接实现预变换处理数据与卷积核之间的矩阵乘操作,在这种情况下,矩阵乘单元可以获取卷积核中的部分数据作为权值参数,来实现预变换处理数据与权值参数之间的矩阵乘操作。由于矩阵乘单元的数量为多个,因此在一种可能的实现方式中,多个矩阵乘单元可以利用相同的权值参数,对预变换处理数据进行矩阵乘处理,得到中间数据。
通过多个矩阵乘单元利用相同的权值参数,对预变换处理数据进行矩阵乘处理,来得到中间数据,可以利用多个矩阵乘单元,对预变换处理数据实现并行处理,从而有效提升数据的处理效率,且可以充分利用卷积核数据的可重用性,减少对数据缓存的访问。
权值参数的获取方式可以根据实际情况灵活决定,在一种可能的实现方式中,可以将多个卷积核在每个通道的对应数据组成的向量所共同构成的weight(M)矩阵,作为权值参数。在这种情况下,多个矩阵乘单元即MAC阵列可以共享一个weight(M)矩阵,且矩阵乘单元中的MAC阵列在与权值参数进行矩阵乘处理的过程中,可以利用MAC阵列中的多个MAC单元,在每个MAC单元中实现向量之间的点积,举例来说,如上述各公开实施例所述,Winograd预变换单元输出的预变换处理数据可以为向量Vo,在一个示例中,在MAC阵列中的每个MAC单元内,可以实现向量Vo与组成权值参数中的其中一个向量之间的点积,则多个MAC单元构成的MAC阵列则可以实现向量Vo与权值参数之间的矩阵乘处理。
在权值参数包括多个卷积核在每个通道的对应数据组成的向量的情况下,矩阵乘单元可以利用MAC阵列中包含的多个MAC单元,并行实现预变换处理数据与权值参数中各向量之间的点积操作,从而进一步提升矩阵乘处理过程的运算效率,继而提升数据处理设备的工作效率。
如上述各公开实施例所述,数据处理设备还包括累加单元,累加单元可以与Winograd后变换单元的输出端连接,来对后变换处理数据进行累加处理,来得到输入数据的卷积处理结果。其中,累加处理的实现形式,可以根据卷积的定义以及输入的后变换处理数据的实际情况灵活决定。在一种可能的实现方式中,累加处理可以包括如下两类处理中的至少一类:其中一类可以为针对同一个卷积核执行的不同的点积操作结果,在通过Winograd后变换单元进行处理后所进行的累加,另一类可以为在针对同一个通道方向上所进行多个点积操作的情况下,针对同一个通道方向上所对应的多个点积操作结果,在通过Winograd后变换单元进行处理后所进行的累加。举例来说,在一个示例中,累加单元可以对同一个卷积核内部不同权值参数的点积结果进行累加,以及可以对输入数据中同一个卷积核对应的不同通道的卷积结果进行累加,从而得到输入数据的卷积处理结果。
通过上述的累加方式,本公开实施例提出的数据处理设备可以减小将点积操作后的中间数据写出到外部缓存的可能性,减少与外部缓存之间的数据交互,提升数据处理的效率。
图4示出根据本公开一实施例的数据处理方法的流程图,该方法可以应用于数据处理设备或数据处理系统等,数据处理设备可以为终端设备、服务器或者其他处理设备等。其中,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。
在一些可能的实现方式中,该数据处理方法也可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
如图4所示,在一种可能的实现方式中,所述数据处理方法适用于至少一种卷积处理类型的卷积,至少一种卷积处理类型包括Winograd卷积,方法包括:
步骤S11,根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据。
步骤S12,对预变换处理数据执行矩阵乘操作,得到中间数据。
步骤S13,根据当前卷积的卷积处理类型,对中间数据执行第二Winograd变换处理,得到后变换处理数据。
步骤S14,对后变换处理数据进行累加处理,得到输入数据的卷积处理结果。
在一种可能的实现方式中,步骤S11包括:获取输入数据中的多个输入数据块,并对获取到的多个输入数据块进行缓存;对第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据。
在一种可能的实现方式中,输入数据块在通道方向上的长度为N,在通道以外的至少一个方向上的长度为1,N为大于1的数值,且N不大于输入数据在通道方向上的长度。
在一种可能的实现方式中,对第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据,包括:获取第一缓存单元缓存的N个通道分别对应的具有特定大小的第一数据块,并对N个通道分别对应的第一数据块分别进行第一Winograd变换处理,得到N个通道分别对应的第二数据块;将N个通道分别对应的第二数据块沿着通道方向进行组合,得到预变换处理数据。
在一种可能的实现方式中,对第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据,包括:根据第一查找表,确定第二数据块中每个第二元素在第一数据块中对应的多个第一元素所在的位置,其中,第一数据块为输入数据块的N个通道分别对应的数据块,第二数据块为对N个通道分别对应的第一数据块分别进行第一Winograd变换处理所得到的N个通道分别对应的数据块;根据第二查找表,对第二数据块中每个第二元素对应的多个第一元素进行运算,得到第二数据块。
在一种可能的实现方式中,对第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据,包括:通过多个加法器对输入数据块的N个通道中每个通道对应的第一数据块中的数据进行运算,得到每个通道对应的第二数据块。
在一种可能的实现方式中,步骤S13包括:对中间数据中的多个中间数据块进行缓存;对第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据。
在一种可能的实现方式中,对第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据,包括:获取第二缓存单元缓存的多个数据所组成的第三数据块,并对第三数据块进行第二Winograd变换处理,得到对应的第四数据块;根据第四数据块包括的多个第四元素,得到后变换处理数据。
在一种可能的实现方式中,对第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据,包括:根据第三查找表,确定第四数据块中每个第四元素在第三数据块中对应的多个第三元素所在的位置,其中,第三数据块为第二缓存单元缓存的数据块,第四数据块为对第三数据块进行第二Winograd变换处理所得到的数据块;根据第四查找表,对第四数据块中每个第四元素对应的多个第三元素进行运算,得到第四数据块。
在一种可能的实现方式中,对第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据,包括通过多个累加器和/或累减器对所述第二缓存单元缓存的第三数据块中的数据进行运算,得到第四数据块。
在一种可能的实现方式中,至少一种卷积处理类型还包括普通卷积;根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据,包括:在当前卷积为普通卷积的情况下,将输入数据作为预变换处理数据;根据当前卷积的卷积处理类型,对中间数据执行第二Winograd变换处理,得到后变换处理数据,包括:在当前卷积为普通卷积的情况下,将中间数据作为后变换处理数据。
在一种可能的实现方式中,步骤S12包括:通过多个矩阵乘单元,利用相同的权值参数,对预变换处理数据进行矩阵乘处理,得到中间数据;其中,矩阵乘单元包括MAC阵列,MAC阵列包括多个MAC单元。
在一种可能的实现方式中,权值参数包括多个卷积核在每个通道的对应数据组成的向量。
应用场景示例
随着AI技术的发展,如何使得数据处理器可以和不同类型的卷积相适应,成为目前一个亟待解决的问题。
本公开应用示例提出了一种数据处理设备,可以利用同一套硬件资源,兼容不同卷积处理类型下的卷积。
图5示出根据本公开一应用示例的数据处理设备示意图,通过图5可以看出,本公开应用示例中,数据处理设备可以包括:
16个Winograd预变换单元(Wg_pre)、16个矩阵乘单元(Maca0~15)、16个Winograd后变换单元(Wg_pst)以及16个累加单元(Acc0~Acc15)。
其中,每个矩阵乘单元完成向量卷积V*M中点积相乘的操作,其中V可以是来自特征图(featuremap)这一输入数据在通道(Channel)C方向的向量经过Winograd预变换单元的处理后所输出的预变换处理数据,M可以是由16个不同卷积核对应位置在C方向的向量组成的权值参数矩阵。为充分利用卷积核数据的可重用性,减少对数据缓存的访问,16个矩阵乘单元可以共享同一个weight(M)矩阵。
在一个示例中,每个矩阵乘单元可以由包括16个MAC单元(mac_cell)的MAC阵列构成,每个mac_cell可以完成2个向量的点积操作,16个mac_cell按照systolic的方式共用一个特征图中的V向量。
累加单元可以对同一个卷积核内部不同点的点积结果,以及特征图中同一个卷积核对应的不同通道组(channel group)的点积结果进行累加,从而减小将点积操作后的中间数据写出到外部缓存的可能性,进一步减少本公开实施例中的数据处理设备与外部缓存之间的数据交互。
在一种可能的实现方式中,由于F(2x2,3x3)的Winograd在神经网络卷积中得到广泛应用,为兼容该形式的Winograd卷积,本公开实施例中的数据处理设备在每个矩阵乘单元的输入、输出数据通路中增加了Winograd预变换单元(Wg_pre)和Winograd后变换单元(Wg_pst),从而在数据处理设备进行Winograd卷积的过程中,完成特征图这一输入数据的Winograd矩阵变换(矩阵乘单元中weight(M)数据的Winograd矩阵转换可以通过离线完成)。除Wg_pre、Wg_pst两个单元之外,其他单元(矩阵乘单元和累加单元等)可以在Winograd与普通卷积这两种卷积处理类型的模式下完全共用,且在这两种模式下,数据处理设备对外的数据接口及数据排布(layout)完全一致。
在一种可能的实现方式中,Winograd预变换单元可以在Winograd卷积的计算过程中,对输入数据特征图D中的各通道对应的第一数据块Di完成BTDiB的第一Winograd变换处理,其第一Winograd变换处理的过程如图2所示。从图中可以看出,在本公开应用示例中,Winograd预变换单元可以对输入数据特征图D在C方向的向量Vi(在本公开应用示例中Vi的向量尺寸可以为16)进行缓存,然后在缓存多个向量Vi后,获取缓存的N个通道分别对应的,H和W方向上的大小为4x4的第一数据块Di做BTDiB转换,来得到转换后的平面矩阵Ri(在数据处理设备进行普通卷积操作的过程中,不对D进行上述转换,即Ri=Di),Ri中每个点与Di中每个点的对应关系如下可以参考上述公开实施例中的公式(1)。
通过公式(1)可以看出,Ri中每个数据的计算可以通过输入数据Di中某4个数据进行加/减法操作得到,由于Winograd卷积的形式使得公式(1)固定,因此具体加/减法操作及操作数在D中对应的位置都可以通过查找表得到。举例来说,在d10对应的C方向上的向量Vi0输入以后,可以通过公式(1)计算出由16个C方向上的r0(r0=d0+d2-d8+d10)组成的向量Vo0。同理,在以后数据处理设备的每个时钟周期,可以依次计算r1~r15的16个C方向上的向量(Vo1~Vo15)。因此,在一个示例中,可以利用一个4输入加法器及2个较小的查找表,来实现Winograd预变换单元中BTDiB的第一变换处理。
在数据处理设备执行普通卷积的过程中,如上述公开示例所述,可以无需进行BTDiB的转换,在这种情况下,在一个示例中,为了与进行Winograd卷积的过程一致,可以在d10数据输入后,再将d0对应的16个channel的数据组成Vo0来输出给MAC单元。
在一种可能的实现方式中,在数据处理设备执行Winograd卷积的过程中,Winograd后变换单元可以对矩阵乘单元输出的中间数据所组成的大小为4×4的第三数据块X完成ATXA转换,该数据转换流程如图3所示。从图中可以看出,在一个示例中,对于矩阵乘单元每个时钟周期输出的一个中间数据x,可以通过公式R=ATXA进行计算,来得到后变换数据r’。其中,r’与x之间的具体对应关系可以参考上述公开实施例中的公式(2)。
通过上述公开实施例可以看出,在一个示例中,为实现ATXA的转换,Winograd后变换单元可以通过4个累加/减器(r’0~r’3)来进行实现,当数据x0~x15输入时,可以通过查找表确定x0~x15输入的情况下,累加/减器是否执行累加操作,r’0~r’3累加/减器对应的第三查找表分别为可以参考上述公式(3),在此不再赘述。
在一种可能的实现方式中,累加/减器具体执行加法还是减法,也可以通过查找表的形式决定,在r’0~r’3的累加/减器中,x0~x15对应的第四查找表可以参考上述公式(4),在此也不再赘述。
由R=ATXA中r’0~r’3的计算公式(2)可以看出,在x10、x11、x14以及x15输入的情况下,r’0、r’1、r’2以及r’3等后变换处理数据可分别输出到累加单元。
在一种可能的实现方式中,在数据处理设备执行普通卷积的情况下,Winograd后变换单元可以直接将矩阵乘单元输出的中间数据d作为后变换处理数据输送给累加单元。
在一个示例中,基于图5的数据处理设备,实现卷积的过程可以为:数据处理设备中的Winograd预变换单元,在每个时钟周期,从第一静态存储器存储的特征图中获取一个大小为1×1×N的向量Voi并进行缓存,在缓存到第十个向量Vo10的情况下,Winograd预变换单元可以根据当前卷积的卷积处理类型,对缓存到的多个向量进行处理来得到预变换处理数据,比如在当前卷积为普通卷积的情况下,直接将缓存的第一个向量Vo0作为预变换处理数据,在当前卷积为Winograd卷积的情况下,利用查找表和加法器,通过上述各公开实施例的方式对缓存到的多个Voi进行第一变换处理得到预变换处理数据;通过上述任意方式得到的预变换处理数据输入到矩阵乘单元中,分别在各mac_cell中与权值参数中的各向量进行点积操作,得到多个点积操作结果作为中间数据,以向量的形式输入到Winograd后变换单元,Winograd后变换单元同样可以根据当前卷积的卷积处理类型,对输入的中间数据执行相应处理来得到后变换处理数据,比如在当前卷积为普通卷积的情况下,将输入的中间数据直接作为后变换处理数据,在当前卷积为Winograd卷积的情况下,利用查找表和加法器,通过上述各公开实施例中提出的方式对中间数据进行第二变换处理,得到后变换处理数据;通过上述任意方式得到的后变换处理数据输入到累加单元中,累加单元可以对同一个卷积核内部不同点的点积结果所对应的后变换处理数据,以及特征图中同一个卷积核对应的不同通道组(channel group)的点积结果所对应的后变换处理数据进行累加,从而得到与卷积处理类型对应的卷积处理结果。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性计算机可读存储介质或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为上述方法。
在实际应用中,上述存储器可以是易失性存储器(volatile memory),例如RAM;或者非易失性存储器(non-volatile memory),例如ROM,快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器提供指令和数据。
上述处理器可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本公开实施例不作具体限定。
电子设备可以被提供为终端、服务器或其它形态的设备。
基于前述实施例相同的技术构思,本公开实施例还提供了一种计算机程序,该计算机程序被处理器执行时实现上述方法。
图6是根据本公开实施例的一种电子设备800的框图。例如,电子设备800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等终端。
参照图6,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在电子设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当电子设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到电子设备800的打开/关闭状态,组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关人员信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器804,上述计算机程序指令可由电子设备800的处理器820执行以完成上述方法。
图7是根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图7,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态人员信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (16)
1.一种数据处理设备,其特征在于,适用于至少一种卷积处理类型的卷积,所述至少一种卷积处理类型包括Winograd卷积,所述设备包括:
Winograd预变换单元,用于根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据;
多个矩阵乘单元,与所述Winograd预变换单元的输出端连接,用于对所述预变换处理数据执行矩阵乘操作,得到中间数据;
Winograd后变换单元,与所述多个矩阵乘单元的输出端连接,用于根据所述当前卷积的卷积处理类型,对所述中间数据执行第二Winograd变换处理,得到后变换处理数据;
累加单元,与所述Winograd后变换单元的输出端连接,用于对所述后变换处理数据进行累加处理,得到所述输入数据的卷积处理结果。
2.根据权利要求1所述的设备,其特征在于,所述Winograd预变换单元包括:
第一缓存单元,用于获取所述输入数据中的多个输入数据块,并对获取到的所述多个输入数据块进行缓存;
第一变换单元,用于对所述第一缓存单元缓存的数据执行第一Winograd变换处理,得到预变换处理数据。
3.根据权利要求2所述的设备,其特征在于,所述输入数据块在通道方向上的长度为N,在通道以外的至少一个方向上的长度为1,N为大于1的数值,且N不大于所述输入数据在通道方向上的长度。
4.根据权利要求2或3所述的设备,其特征在于,所述第一变换单元用于:
获取所述第一缓存单元缓存的N个通道分别对应的具有特定大小的第一数据块,并对所述N个通道分别对应的第一数据块分别进行第一Winograd变换处理,得到N个通道分别对应的第二数据块;
将所述N个通道分别对应的第二数据块沿着通道方向进行组合,得到所述预变换处理数据。
5.根据权利要求2至4中任意一项所述的设备,其特征在于,所述第一变换单元用于:
根据第一查找表,确定第二数据块中每个第二元素在第一数据块中对应的多个第一元素所在的位置,其中,所述第一数据块为所述输入数据块的N个通道分别对应的数据块,所述第二数据块为对所述N个通道分别对应的第一数据块分别进行第一Winograd变换处理所得到的N个通道分别对应的数据块;
根据第二查找表,对所述第二数据块中每个第二元素对应的多个第一元素进行运算,得到所述第二数据块。
6.根据权利要求2至5中任意一项所述的设备,其特征在于,所述第一变换单元包括多个加法器,其中,
所述多个加法器用于对所述输入数据块的N个通道中每个通道对应的第一数据块中的数据进行运算,得到所述每个通道对应的第二数据块。
7.根据权利要求1至6中任意一项所述的设备,其特征在于,所述Winograd后变换单元包括:
第二缓存单元,用于对所述中间数据中的多个中间数据块进行缓存;
第二变换单元,用于对所述第二缓存单元缓存的数据进行第二Winograd变换处理,得到后变换处理数据。
8.根据权利要求7中所述的设备,其特征在于,所述第二变换单元用于:
获取所述第二缓存单元缓存的多个数据所组成的第三数据块,并对所述第三数据块进行第二Winograd变换处理,得到对应的第四数据块;
根据所述第四数据块包括的多个第四元素,得到所述后变换处理数据。
9.根据权利要求7或8所述的设备,其特征在于,所述第二变换单元用于:
根据第三查找表,确定第四数据块中每个第四元素在第三数据块中对应的多个第三元素所在的位置,其中,所述第三数据块为所述第二缓存单元缓存的数据块,所述第四数据块为对所述第三数据块进行第二Winograd变换处理所得到的数据块;
根据第四查找表,对所述第四数据块中每个第四元素对应的多个第三元素进行运算,得到所述第四数据块。
10.根据权利要求7至9中任意一项所述的设备,其特征在于,所述Winograd后变换单元包括多个累加器和/或累减器,其中,
所述多个累加器和/或累减器用于对所述第二缓存单元缓存的第三数据块中的数据进行运算,得到第四数据块。
11.根据权利要求1至10中任意一项所述的设备,其特征在于,所述至少一种卷积处理类型还包括普通卷积;
所述Winograd预变换单元还用于:
在所述当前卷积为普通卷积的情况下,将所述输入数据作为所述预变换处理数据;
所述Winograd后变换单元用于:
在所述当前卷积为普通卷积的情况下,将所述中间数据作为所述后变换处理数据。
12.根据权利要求1至11中任意一项所述的设备,其特征在于,所述矩阵乘单元包括MAC阵列,所述MAC阵列包括多个MAC单元;
所述多个矩阵乘单元利用相同的权值参数,对所述预变换处理数据进行矩阵乘处理,得到所述中间数据。
13.根据权利要求12所述的设备,其特征在于,所述权值参数包括多个卷积核在每个通道的对应数据组成的向量。
14.一种数据处理方法,其特征在于,所述方法包括:
根据当前卷积的卷积处理类型,对输入数据执行第一Winograd变换处理,得到预变换处理数据;
对所述预变换处理数据执行矩阵乘操作,得到中间数据;
根据所述当前卷积的卷积处理类型,对所述中间数据执行第二Winograd变换处理,得到后变换处理数据;
对所述后变换处理数据进行累加处理,得到所述输入数据的卷积处理结果。
15.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1至13中任意一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至13中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011003078.0A CN114254744A (zh) | 2020-09-22 | 2020-09-22 | 数据处理设备及方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011003078.0A CN114254744A (zh) | 2020-09-22 | 2020-09-22 | 数据处理设备及方法、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114254744A true CN114254744A (zh) | 2022-03-29 |
Family
ID=80789648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011003078.0A Pending CN114254744A (zh) | 2020-09-22 | 2020-09-22 | 数据处理设备及方法、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114254744A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461978A (zh) * | 2022-04-13 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
-
2020
- 2020-09-22 CN CN202011003078.0A patent/CN114254744A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461978A (zh) * | 2022-04-13 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
CN114461978B (zh) * | 2022-04-13 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7238141B2 (ja) | 顔と手を関連付けて検出する方法及び装置、電子機器、記憶媒体及びコンピュータプログラム | |
CN113378862B (zh) | 一种图像处理方法及装置、电子设备和存储介质 | |
JP2022508988A (ja) | 顔認識のための圧縮-拡張深さ方向畳み込みニューラルネットワーク | |
CN111597029B (zh) | 数据处理方法及装置、电子设备和存储介质 | |
JP2021531554A (ja) | 画像処理方法及び装置、電子機器並びに記憶媒体 | |
WO2022247103A1 (zh) | 图像处理方法及装置、电子设备和计算机可读存储介质 | |
CN110930336B (zh) | 图像处理方法及装置、电子设备和存储介质 | |
CN112785672B (zh) | 图像处理方法及装置、电子设备和存储介质 | |
US20220188982A1 (en) | Image reconstruction method and device, electronic device, and storage medium | |
CN113298091A (zh) | 图像处理方法及装置、电子设备和存储介质 | |
CN111985635A (zh) | 一种加速神经网络推理处理的方法、装置及介质 | |
CN113139947A (zh) | 图像处理方法及装置、电子设备和存储介质 | |
CN114254744A (zh) | 数据处理设备及方法、电子设备和存储介质 | |
CN111556248B (zh) | 拍摄方法、装置、存储介质及移动终端 | |
CN112055156B (zh) | 预览图像更新方法、装置、移动终端及存储介质 | |
CN115512116B (zh) | 图像分割模型优化方法、装置、电子设备及可读存储介质 | |
CN109635926B (zh) | 用于神经网络的注意力特征获取方法、装置及存储介质 | |
CN111784773A (zh) | 图像处理方法及装置、神经网络训练方法及装置 | |
CN107193530B (zh) | 一种生成随机数的方法和装置 | |
US20230010981A1 (en) | Methods and apparatuses for high performance and accuracy fixed-point scale implementation | |
CN113378863B (zh) | 一种图像处理方法及装置、电子设备和存储介质 | |
CN115457024A (zh) | 冷冻电镜图像处理方法、装置、电子设备及存储介质 | |
CN112749709A (zh) | 图像处理方法及装置、电子设备和存储介质 | |
CN114005124A (zh) | 采样方法及装置、电子设备和存储介质 | |
CN113159275A (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 |