CN109255438B - 调整张量数据的方法和装置 - Google Patents
调整张量数据的方法和装置 Download PDFInfo
- Publication number
- CN109255438B CN109255438B CN201811080262.8A CN201811080262A CN109255438B CN 109255438 B CN109255438 B CN 109255438B CN 201811080262 A CN201811080262 A CN 201811080262A CN 109255438 B CN109255438 B CN 109255438B
- Authority
- CN
- China
- Prior art keywords
- tensor
- column
- sequence
- slices
- convolution
- 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.)
- Active
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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Apparatus For Radiation Diagnosis (AREA)
Abstract
公开了一种调整张量数据的方法和装置。该方法包括:根据第一张量和作为第一张量的调整目标的第二张量确定第三张量和第四张量;确定卷积核序列,使得第四张量对应于基于第三张量和卷积核序列的卷积运算的结果;以及使用卷积核序列对第三张量执行卷积运算。通过该方法和装置,能够利用存储数据的连续性高效率地实现张量数据的调整。
Description
技术领域
本公开总体上涉及人工神经网络的技术领域,并且具体地涉及一种调整张量数据的方法和装置。
背景技术
基于卷积神经网络的深度学习技术已经被广泛地应用于图像识别、视频分析、自然语言处理、辅助驾驶等不同的领域。
卷积神经网络中的运算量通常很大,为此可以通过诸如卷积神经网络加速器这样的专用硬件高效地执行卷积神经网络中的运算。
为了满足诸如运算效率、卷积神经网络加速器中的片上存储器的利用率、数据存取效率等不同方面的要求,可能需要在将张量数据(也称为“特征数据”)相应的卷积核提供给卷积神经网络加速器执行处理之前调整张量数据。
通常,可以从存储器中读取张量数据,然后可以在通用处理器的控制下,借助于多个寄存器并通过执行多个数据交换指令来实现张量数据的调整。
然而,要提供给卷积神经网络加速器的张量数据往往很大,导致通常的调整方式的处理效率极低,并且需要消耗大量的硬件(例如,寄存器)资源。期望能够高效率地调整张量数据。
发明内容
一方面,本公开提供了一种调整张量数据的方法,该方法可以包括:根据第一张量和第二张量确定第三张量和第四张量,前述第二张量是前述第一张量的调整目标并且与前述第一张量具有相同的高度、宽度和通道数量,前述第三张量的存储数据序列与前述第一张量的存储数据序列相同,前述第四张量的存储数据序列与前述第二张量的存储数据序列相同;确定卷积核序列,使得前述第四张量对应于基于前述第三张量和前述卷积核序列的卷积运算的结果;以及使用前述卷积核序列对前述第三张量执行卷积运算。
另一方面,本公开还提供了一种计算机可读取的非临时性存储介质,在其上存储有程序指令,前述程序指令可以在被执行时执行上述方法。
另一方面,本公开还提供了一种调整张量数据的装置。该装置可以包括处理器,并且处理器可以被配置为在被启动时至少执行上述方法。
另一方面,本公开还提供了一种调整张量数据的装置。该装置可以包括处理器和卷积引擎。处理器可以被配置为根据第一张量和第二张量确定第三张量和第四张量,以及确定卷积核序列使得前述第四张量对应于基于前述第三张量和前述卷积核序列的卷积运算的结果,前述第二张量是前述第一张量的调整目标并且与前述第一张量具有相同的高度、宽度和通道数量,前述第三张量的存储数据序列与前述第一张量的存储数据序列相同,前述第四张量的存储数据序列与前述第二张量的存储数据序列相同。卷积引擎可以被配置为使用前述卷积核序列对前述第三张量执行卷积运算。
通过根据本公开的实施例的方法和装置,能够利用存储数据的连续性高效率地实现张量数据的调整。
附图说明
图1示出根据本公开的实施例的调整张量数据的方法的示例。
图2示出根据本公开的实施例的张量与存储数据序列之间的对应关系的示例。
图3示出根据本公开的实施例的在通道方向上调整张量的示例。
图4示出根据本公开的实施例的在宽度方向上调整张量的示例。
图5示出根据本公开的实施例的在宽度方向上调整张量的示例。
图6示出根据本公开的实施例的在宽度方向上调整张量的示例。
图7示出根据本公开的实施例的在宽度方向上调整张量的示例。
图8示出根据本公开的实施例的在宽度方向上调整张量的示例。
图9示出根据本公开的实施例的在高度方向上调整张量的示例。
图10示出根据本公开的实施例的在高度方向上调整张量的示例。
图11示出根据本公开的实施例的在高度方向上调整张量的示例。
图12示出根据本公开的实施例的调整张量的示例。
图13示出根据本公开的实施例的调整张量数据的装置的示例。
具体实施方式
如前文所述,在实际的应用中,根据不同的需求,可能需要先调整张量数据,然后再将调整后的张量数据提供给卷积神经网络加速器。
例如,通过调整张量的通道、切片(包括行切片和列切片)、甚至体素的次序或位置,可以提高卷积神经网络加速器中的片上存储器的利用率和数据存取效率,并且也可以满足例如与卷积神经网络加速器的输出有关的数据后处理过程中的某些特殊处理要求,或者提高数据后处理的效率。
图1示出根据本公开的实施例的用于调整张量数据的方法的示例100。根据本公开的实施例的方法可以应用于例如卷积神经网络编译器或者卷积神经网络加速器或者卷积神经网络后处理器中。
如1所示,在示例方法100的步骤S110中,可以根据第一张量和第二张量确定第三张量和第四张量,其中,第一张量是要调整的张量数据,第二张量是第一张量的调整目标并且与第一张量具有相同的高度、宽度和通道数量,第三张量的存储数据序列与第一张量的存储数据序列相同,并且第四张量的存储数据序列与第二张量的存储数据序列相同。
然后,在示例方法100的步骤S120中,可以确定卷积核序列,使得第四张量对应于基于第三张量和所确定的卷积核序列的卷积运算的结果。
然后,在示例方法100的步骤S130中,可以使用所确定的卷积核序列对第三张量执行卷积运算。
在本文中,诸如“第一”、“第二”、“第三”等不带量词的充数词旨在用于区分不同的元素/元件/部件等,而不是用于强调次序或重要程度,而诸如“第一个”、“第二个”、“第三个”、“第i个”、“第i列”、“第i行”等带有量词的充数词可以用于表示一个序列中的不同元素或实体的次序或所在位置或重要程度。
另外,在本文中,按照描述张量数据的通常方式,对于高度、宽度和通道数量(也被称为“深度”)分别为H、W和C的任一张量T,T.Wx(0≤x<W)表示张量数据中按照从左到右的次序的第x个列的数据切片(也被称为“列切片”),T.Hy(0≤y<H)表示张量数据中按照从上到下的次序的第y个行的数据切片(也被称为“行切片”),并且T.Cz(0≤z<C)表示张量数据中按照从前到后的次序的第z个通道的数据切片(也被称为“通道切片”)。
进一步地,例如,Ti.Cz’→Tj.Cz”可以表示张量Ti的通道切片Ti.Cz’被调整为张量Tj的通道切片Tj.Cz”(或者说,张量Ti的通道切片Ti.Cz’对应于张量Tj的通道切片Tj.Cz”),使得与张量Ti的通道切片Ti.Cz’相对应的二维张量数据和与张量Tj的通道切片Tj.Cz”相对应的二维张量数据完全相同;例如,Ti.Hy.Pk→Tj.Hy’.Pk’可以表示张量Ti的行切片Ti.Hy的部分Pk被调整为张量Tj的行切片Tj.Hy’的部分Pk’;诸如此类。
另外,例如在采用从0开始计数的方式的情况下,如果示例方法100中的第一张量T0的高度、宽度和通道数量分别为H、W和C,则第一张量T0可以包括H×W×Z个体素(Voxel)。
在本文中,同时属于列切片T0.Wx、行切片T0.Hy和通道切片T0.Cz的体素可以表示为T0.Wx.Hy.Cz或T0.Ex,y,z,其中,体素在张量T0中的位置索引或坐标可以表示为三元组(x,y,z),并且相应的值为VCx+CWy+z。
为了描述要调整的张量、作为调整目标的张量以及中间张量的对应关系,在本文中,对于作为调整目标的张量(即,示例方法100中的第二张量)和其他中间张量(例如,示例方法100中的第三张量和第四张量)中的各个体素,不重新编号。
于是,例如,T0.C0→T1.C1可以意味着,对于任意的x(0≤x<W)和y(0≤y<H),体素T0.Ex,y,0的值和体素T1.Ex,y,1的值均为VCx+CWy;例如,T0.C3→T1.C2可以意味着,对于任意的x(0≤x<W)和y(0≤y<H),体素T0.Ex,y,3的值和体素T1.Ex,y,2的值均为VCx+CWy+3;例如,T0.H3→T1.H2可以意味着,对于任意的x(0≤x<W)和z(0≤z<C),体素T0.Ex,3,z的值和体素T1.Ex,2,z的值均为VCx+3CW+z;例如,T’0.W0.P0=T0.W0并且T’0.W0.P1=T0.W1可以意味着,对于任意的y(0≤y<H)和z(0≤z<C),体素T0.E0,y,z的值和体素T1.E0,y,z的值均为VCWy+z,并且体素T0.E1,y,z的值和体素T1.E0,y,C+z的值均为VC+CWy+z;诸如此类。
然而,应当理解,本公开不局限于任何特定的张量表示方式、编号方式、计数方式等。
对于用于卷积运算的卷积核,也可以采用类似的方式描述。例如,对于卷积核K,K.E0,0,3=1表示卷积核K中位于(0,0,3)处的体素K.E0,0,3的值为1,K.E0,0,2=0表示卷积核K中位于(0,0,2)处的体素K.E0,0,2的值为0,K.C0=1表示卷积核K中的通道切片K.C0上的所有体素的值均为1,K.C3=0表示卷积核K中的通道切片K.C3上的所有体素的值均为0,K.W1=1表示卷积核K中的列切片K.W1上的所有体素的值均为1,诸如此类。
通常,在一个张量或卷积核中,如果一个切片(可以是列切片或行切片或通道切片)包括非零体素(即,体素的值不等于0),则可以将该切片称为“非零切片”(在非零切片是通道切片的情况下,也可以称为“非零通道”),而如果一个切片(可以是列切片或行切片或通道切片)中的所有体素的值均为0,则可以将该切片称为“零切片”。
通常,数据按照线性序列的形式而连续地存储到存储器中。线性连续存储使得存储器中的相同的存储数据序列可以按照不同的数据格式或解读方式而对应于不同的张量数据。
例如,如图2所示,根据不同的数据格式或解读方式,连续地存储在存储器MEM(单行容量为16)中的地址ADDR_0至ADDR_3处的存储数据序列V0至V63可以对应于张量T(高度、宽度和通道数量分别为4、4和4),也可以对应于张量T’(高度、宽度和通道数量分别为4、2和8),还可以对应于张量T”(高度、宽度和通道数量分别为4、1和16)或T”’(高度、宽度和通道数量分别为2、8和4)。
以张量T为参考,例如,张量T’的列切片T’.W0的子切片T’.W0.P0对应于张量T的列切片T.W0(在图2中表示为“T’.W0.P0=T.W0”),并且张量T’的列切片T’.W0的子切片T’.W0.P1对应于张量T的列切片T.W1(在图2中表示为“T’.W.P1=T.W1”);张量T”’的行切片T”’.H1的子切片T”’.H1.P2对应于张量T的行切片T.H3(在图2中表示为“T”’.H1.P2=T.H3”)。
也就是说,图2的示例中的张量T、T’、T’和T”’具有不同的数据格式或表示形式,但是在存储到存储器中之后对应于相同的存储数据序列。
另外,图2中的存储数据序列V0至V63还可以对应于其他形式的张量。例如,图2中的存储数据序列V0至V63可以对应于高度、宽度和通道数量分别为1、1和64的张量T””(未示出),其中,T””.C0至T””.C63可以分别对应于V0至V63。
示例方法100利用在存储器中存储的数据的连续性,将从第一张量到第二张量的调整转换成从第三张量到第四张量的调整,并且通过卷积运算从第三张量获得第四张量。
然后,由于存储数据的连续性,获得第四张量也就意味着获得第二张量。例如,可以将所获得的第四张量存储到存储器中,从而获得第二张量的存储数据序列;然后,在后续的使用过程中,可以按照第二张量的数据格式读取存储数据序列,从而直接获得第二张量。由此,实现从第三张量到第四张量的调整相当于实现从第一张量到第二张量的调整。
数据存储的连续性使得前述转换不需要额外的处理代价,并且卷积运算可以直接使用卷积神经网络加速器来执行。由此,根据本公开的实施例的用于调整张量数据的方法能够通过诸如卷积神经网络加速器这样的硬件高效率且低成本地实现张量数据的调整。
通过根据本公开的实施例的方法,可以在通道方向上将第一张量T0调整为第二张量T1,其中,假设第一张量T0和第二张量T1中的每一个的高度、宽度和通道数量分别为H、W和C。
为此,在示例方法100的步骤S110中,可以使第三张量T’0与第一张量T0相同,并且使第四张量T’1与第二张量T1相同。于是,第三张量T’0和第二张量T’1中的每一个的高度、宽度和通道数量也分别为H、W和C。
于是,对于所期望的一个或多个调整中的任一调整T0.Cz→T1.Cz’(0≤z<C,0≤z’<C),示例方法100可以将其转换为T’0.Cz→T’1.Cz’。
相应地,在示例方法100的步骤S120中,可以使卷积核序列包括C(即,第三张量T’0的通道数量)个卷积核,其中,卷积核序列中的每个卷积核Ki(0≤i<C)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别等于1、1、1、1和C,并且每个卷积核Ki在通道方向上可以具有唯一非零通道,其中,对于任一调整T0.Cz→T1.Cz’或T’0.Cz→T’1.Cz’,卷积核序列可以包括卷积核Kz’,并且卷积核Kz’中的唯一非零通道为Kz’.Cz。
然后,在示例方法100的步骤S130中,可以使用所确定的卷积核序列对第三张量T’0执行普通卷积运算,从而获得第四张量T’1。
由于第四张量T’1和第二张量T1对应于相同的存储数据序列,所以获得第四张量T’1相当于获得第二张量T1。由此,通过卷积运算实现从第一张量T0到第二张量T1的调整。
图3示出通过根据本公开的实施例的方法在通道方向上调整张量数据的示例。
在图3的示例中,第一张量T0的高度、宽度和通道数量分别为H=4、W=4和C=4,并且包括H×W×Z=4×4×4=64个体素,各个体素T0.Ex,y,z(0≤x<4,0≤y<4,0≤z<4)的值分别为V4x+16y+z(从V0至V63),并且期望在通道方向上调整张量T0的各个通道切片的次序以获得第二张量T1,其中,所期望的调整包括T0.C0→T1.C1、T0.C1→T1.C2、T0.C2→T1.C3和T0.C3→T1.C0。
为此,可以在示例方法100的步骤S110中,使得第三张量T’0和第四张量T’1设置为分别与第一张量T0和第二张量T1相同,并且T0.C0→T1.C1、T0.C1→T1.C2、T0.C2→T1.C3和T0.C3→T1.C0分别等同于T’0.C0→T’1.C1、T’0.C1→T’1.C2、T’0.C’2→T’1.C’3和T’0.C3→T’1.C0。
然后,在步骤S120中,可以确定卷积核序列K0→K1→K2→K3,其中,K0至K3中的每个卷积核Ki(0≤i<4)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别1、1、1、1和第三张量T’0的通道数量(即,4)。
如图3所示,与T’0.C0→T’1.C1相对应地,卷积核序列可以包括卷积核K1,卷积核K1在卷积核序列中的位置(i=1)可以取决于张量T’1中的通道切片T’1.C1在张量T’1中的位置(第1个通道),并且K1中的唯一非零通道K1.C0的位置可以取决于张量T’0中的通道切片T’0.C0在张量T’0中的位置(第0个通道)。
与T’0.C1→T’1.C2相对应地,卷积核序列可以包括卷积核K2,卷积核K2在卷积核序列中的位置(i=2)可以取决于张量T’1中的通道切片T’1.C2在张量T’1中的位置(第2个通道),并且K2中的唯一非零通道K2.C1的位置可以取决于张量T’0中的通道切片T’0.C1在张量T’0中的位置(第1个通道)。
与T’0.C2→T’1.C3相对应地,卷积核序列可以包括卷积核K3,卷积核K3在卷积核序列中的位置(i=3)可以取决于张量T’1中的通道切片T’1.C3在张量T’1中的位置(第3个通道),并且K3中的唯一非零通道K3.C2的位置可以取决于张量T’0中的通道切片T’0.C2在张量T’0中的位置(第2个通道)。
与T’0.C3→T’1.C0相对应地,卷积核序列可以包括卷积核K0,卷积核K0在卷积核序列中的位置(i=0)可以取决于张量T’1中的通道切片T’1.C0在张量T’1中的位置(第0个通道),并且K0中的唯一非零通道K0.C3的位置可以取决于张量T’0中的通道切片T’0.C3在张量T’0中的位置(第3个通道)。
然后,可以在示例方法100的步骤S130中,使用所确定的卷积核序列K0→K1→K2→K3对第三张量T’0执行普通卷积运算并获得第四张量T’1,从而在通道方向上将第一张量T0调整为第二张量T1。
通过根据本公开的实施例的方法,还可以在宽度方向上将第一张量T0调整为第二张量T1,其中,同样假设第一张量T0和第二张量T1中的每一个的高度、宽度和通道数量分别为H、W和C。
第一张量T0可以对应于在宽度方向上的列切块序列Q0。第一张量T0或列切块序列Q0可以包括N(1≤N<W)个列切块。在W可以被N整除的情况下,列切块序列Q0中的每个列切块B0,j(0≤j<N)可以包括第一张量T0在宽度方向上的连续的R=W/N个列切片T0.WjR至T0.WjR+R-1。
同时,第二张量T1可以对应于在宽度方向上的列切块序列Q1。第二张量T1或列切块序列Q1可以包括N个列切块。在W可以被N整除的情况下,列切块序列Q1中的每个列切块B1,j可以包括第二张量T1在宽度方向上的连续的R=W/N个列切片T1.WjR至T1.WjR+R-1。
于是,在宽度方向上将第一张量T0调整为第二张量T1可以包括将第一张量T0的每个列切块B0,j以相同的列切片位置调整方式调整为第二张量T1的列切块B1,j,即,所期望的调整包括集合{T0.WjR+k→T1.WjR+k’|0≤j<N,0≤k<R,0≤k’<R}={T0.WjR→T1.WjR,……,T0.WjR+R-1→T1.WjR+R-1|0≤j<N}。
R可以被称为在宽度方向上的调整范围。在R=W(即,N=1)的情况下,意味着对第一张量T0在整个宽度范围内的所有列切片的位置进行调整。在N>1的情况下,意味着对第一张量T0的每个局部范围内的所有列切片的位置以相同的方式进行调整。例如,在W无法被N整除的情况下,可以考虑使R=W,从而在整个宽度范围内调整第一张量T0。
在示例方法的步骤S110中,可以利用存储数据的连续性,根据第一张量T0确定与第一张量T0对应于相同存储数据序列的第三张量T’0,并且根据第二张量T1确定与第二张量T0对应于相同存储数据序列的第四张量T’1。
在一个实施例中,可以使第三张量T’0和第四张量T’1中的每一个的高度、宽度和通道数量均分别为H、N=W/R和R×C,其中,第三张量T’0的第j(0≤j<N)个列切片T’0.Wj对应于第一张量T0或列切块序列Q0的第j个列切块B0,j中的所有列切片按照宽度方向次序在通道方向上的拼接结果,即,T’0.Wj.Pk=T0.WjR+k(0≤k<R),并且第四张量T’1的第j个列切片T’1.Wj对应于第二张量T1或列切块序列Q1的第j个列切块B1,j中的所有列切片按照宽度方向次序在通道方向上的拼接结果,即,T’1.Wj.Pk’=T1.WjR+k’(0≤k’<R)。
于是,从第一张量T0到第二张量T1的调整{T0.WjR+k→T1.WjR+k’|0≤j<N,0≤k<R,0≤k’<R}被转换为从第三张量T’0到第四张量T’1的调整{T’0.Wj.Pk→T’1.Wj.Pk’|0≤j<N,0≤k<R,0≤k’<R},而由于{T’0.Wj.Pk→T’1.Wj.Pk’|0≤j<N,0≤k<R,0≤k’<R}和{T’0.CkC+z→T’1.Ck’C+z|0≤z<C}对应于相同的调整操作,所以从第一张量T0到第二张量T1的在宽度方向上的调整{T0.WjR+k→T1.WjR+k’|0≤j<N,0≤k<R,0≤k’<R}实际上被转换为从第三张量T’0到第四张量T’1的在通道方向上的调整{T’0.CkC+z→T’1.Ck’C+z|0≤z<C}。
相应地,在该实施例中,在示例方法100的步骤S120中,可以使卷积核序列包括R×C(即,第三张量T’0的通道数量)个卷积核,其中,卷积核序列中的每个卷积核Ki(0≤i<R×C)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别等于1、1、1、1和R×C,并且每个卷积核Ki在通道方向上可以具有唯一非零通道,其中,对于任一调整T’0.CkC+z→T’1.Ck’C+z,卷积核序列可以包括卷积核Kk’C+z,并且卷积核Kk’C+z中的唯一非零通道为Kk’C+ z.CkC+z。
然后,在该实施例中,可以在示例方法100的步骤S130中,使用卷积核序列对第三张量T’0执行普通卷积运算,从而获得第四张量T’1。由于存储数据的连续性,获得第四张量T’1相当于获得第二张量T1,从而实现从第一张量T0到第二张量T1的宽度方向上的调整。
图4示出通过根据本公开的实施例的方法在宽度方向上调整张量数据的示例。
在图4的示例中,第一张量T0的高度、宽度和通道数量分别为H=4、W=4和C=4,并且包括H×W×Z=4×4×4=64个体素,各个体素T0.Ex,y,z(0≤x<4,0≤y<4,0≤z<4)的值分别为V4x+16y+z(从V0至V63),并且期望在宽度方向上调整张量T0的各个列切片的次序以获得第二张量T1,其中,所期望的调整包括T0.W0→T1.W1、T0.W1→T1.W3、T0.W2→T1.W0和T0.W3→T1.W2,并且R=4且N=W/R=1,即,期望调整第一张量T0在整个宽度范围内的所有列切片的位置。
为此,在示例方法100的步骤S110中,可以根据张量T0确定第三张量T’0,并且可以根据张量T1确定第四张量T’1,其中,T’0.W0.P0=T0.W0、T’0.W0.P1=T0.W1、T’0.W0.P2=T0.W2、T’0.W0.P3=T0.W3、T’1.W0.P0=T1.W0、T’1.W0.P1=T1.W1、T’1.W0.P2=T1.W2、T’1.W0.P3=T1.W3,使得第三张量T’0和第四张量T’1中的每一个的高度、宽度和高度分别为H=4、N=W/R=4/4=1和R×C=4×4=16。
于是,所期望的调整T0.W0→T1.W1、T0.W1→T1.W3、T0.W2→T1.W0和T0.W3→T1.W2分别转换为T’0.W0.P0→T’1.W0.P1、T’0.W0.P1→T’1.W0.P3、T’0.W0.P2→T’1.W0.P0和T’0.W0.P3→T’1.W0.P2,其分别等同于{T’0.C0→T’1.C4,T’0.C1→T’1.C5,T’0.C2→T’1.C6,T’0.C3→T’1.C7}、{T’0.C4→T’1.C12,T’0.C5→T’1.C13,T’0.C6→T’1.C14,T’0.C7→T’1.C15}、{T’0.C8→T’1.C0,T’0.C9→T’1.C1,T’0.C10→T’1.C2,T’0.C11→T’1.C3}和{T’0.C12→T’1.C8,T’0.C13→T’1.C9,T’0.C14→T’1.C10,T’0.C15→T’1.C11}。
然后,如图5所示,在步骤S120中,可以确定卷积核序列K0→K1→……→K14→K15,其中,K0至K15中的每个卷积核Ki(0≤i<16)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别1、1、1、1和张量T’0的通道数量(即,16)。
如图4和图5所示,与T’0.C0→T’1.C4相对应地,卷积核序列可以包括卷积核K4,卷积核K4在卷积核序列中的位置(i=4)可以取决于张量T’1中的通道切片T’1.C4在张量T’1中的位置(第4个通道),并且K4中的唯一非零通道K4.C0的位置可以取决于张量T’0中的通道切片T’0.C0在张量T’0中的位置(第0个通道)。类似地,还可以确定卷积核序列中的其他卷积核K0至K3以及K5至K15。
然后,可以在示例方法100的步骤S130中,使用所确定的卷积核序列K0→K1→……→K14→K15对第三张量T’0执行普通卷积运算,并获得第四张量T’1。由于存储数据的连续性,获得第四张量T’1相当于获得第二张量T1,从而实现从第一张量T0到第二张量T1的宽度方向上的调整。
图6示出通过根据本公开的实施例的方法在宽度方向上调整张量数据的另一示例。
在图6的示例中,第一张量T0的高度、宽度和通道数量分别为H=4、W=4和C=4,并且包括H×W×Z=4×4×4=64个体素,各个体素T0.Ex,y,z(0≤x<4,0≤y<4,0≤z<4)的值分别为V4x+16y+z(从V0至V63),并且期望在宽度方向上调整张量T0的各个列切片的次序以获得第二张量T1,其中,所期望的调整包括T0.W0→T1.W1、T0.W1→T1.W0、T0.W2→T1.W3和T0.W3→T1.W2,并且R=2且N=W/R=2,即,期望调整第一张量T0在每个宽度为2的局部范围内的所有列切片的位置。
为此,在示例方法100的步骤S110中,可以根据第一张量T0确定第三张量T’0,并且可以根据第二张量T1确定第四张量T’1,其中,T’0.W0.P0=T0.W0、T’0.W0.P1=T0.W1、T’0.W1.P0=T0.W2、T’0.W1.P1=T0.W3、T’1.W0.P0=T1.W0、T’1.W0.P1=T1.W1、T’1.W1.P0=T1.W2、T’1.W1.P1=T1.W3,使得第三张量T’0和第四张量T’1中的每一个的高度、宽度和高度分别为H=4、N=2和R×C=2×4=8。
于是,所期望的调整T0.W0→T1.W1、T0.W1→T1.W0、T0.W2→T1.W3和T0.W3→T1.W2分别转换为T’0.W0.P0→T’1.W0.P1、T’0.W0.P1→T’1.W0.P0、T’0.W1.P0→T’1.W1.P1和T’0.W1.P1→T’1.W1.P0,其中,{T’0.Wx.P0→T’1.W0.P1|0≤x<2}={T’0.W0.P0→T’1.W0.P1,T’0.W1.P0→T’1.W1.P1}等同于{T’0.Cz→T’1.Cz+4|0≤z<4}={T’0.C0→T’1.C4,T’0.C1→T’1.C5,T’0.C2→T’1.C6,T’0.C3→T’1.C7},并且{T’0.Wx.P1→T’1.W0.P0|0≤x<2}={T’0.W0.P1→T’1.W0.P0,T’0.W1.P1→T’1.W1.P0}等同于{T’0.Cz+4→T’1.Cz|0≤z<4}{T’0.C4→T’1.C0,T’0.C5→T’1.C1,T’0.C6→T’1.C2,T’0.C7→T’1.C3}。
然后,如图7所示,在步骤S120中,可以确定卷积核序列K0→K1→K2→K3→K4→K5→K6→K7,其中,K0至K7中的每个卷积核Ki(0≤i<8)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别1、1、1、1和张量T’0的通道数量(即,8)。
如图6和图7所示,与T’0.C0→T’1.C4相对应地,卷积核序列可以包括卷积核K4,卷积核K4在卷积核序列中的位置(i=4)可以取决于张量T’1中的通道切片T’1.C4在张量T’1中的位置(第4个通道),并且K4中的唯一非零通道K4.C0的位置可以取决于张量T’0中的通道切片T’0.C0在张量T’0中的位置(第0个通道)。类似地,还可以确定卷积核序列中的其他卷积核K0至K3以及K5至K7。
然后,可以在示例方法100的步骤S130中,使用所确定的卷积核序列K0→K1→K2→K3→K4→K5→K6→K7对第三张量T’0执行普通卷积运算,并获得第四张量T’1。由于存储数据的连续性,获得第四张量T’1相当于获得第二张量T1,从而实现从第一张量T0到第二张量T1的宽度方向上的调整。
在另一个实施例中,在期望在宽度方向上将第一张量T0调整为第二张量T1的情况下,在示例方法100的步骤S110中,也可以使第三张量T’0与第一张量T0相同(高度、宽度和通道数量分别为H、W和C),并且使第四张量T’1的高度、宽度和通道数量分别为H、N=W/R和R×C,其中,第四张量T’1的第j(0≤j<N)个列切片T’1.Wj对应于第二张量T1或列切块序列Q1的第j个列切块B1,j中的所有列切片按照宽度方向次序在通道方向上的拼接结果,即,T’1.Wj.Pk’=T1.WjR+k’(0≤k’<R)。
相应地,在该实施例中,在示例方法100的步骤S120中,可以使卷积核序列包括R个卷积核的数量,其中,卷积核序列中的每个卷积核Ki(0≤i<R)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别等于1、R、1、R和C(即,第三张量T’0的通道数量),并且每个卷积核Ki在宽度方向上可以具有唯一非零列切片,其中,对于任一调整T0.WjR+k→T1.WjR+k’(0≤j<N,0≤k<R,0≤k’<R),卷积核序列可以包括卷积核Kk’,并且卷积核Kk’中的唯一非零列切片为Kk’.Wk。
然后,在该实施例中,可以在示例方法100的步骤S130中,使用卷积核序列对第三张量T’0执行深度可分离卷积(Depthwise Separable Convolution)运算,从而获得第四张量T’1。由于存储数据的连续性,获得第四张量T’1相当于获得第二张量T1,从而实现从第一张量T0到第二张量T1的宽度方向上的调整。
图8示出通过根据本公开的实施例的方法在宽度方向上调整张量数据的另一示例。
在图8的示例中,第一张量T0的高度、宽度和通道数量分别为H=4、W=4和C=4,并且包括H×W×Z=4×4×4=64个体素,各个体素T0.Ex,y,z(0≤x<4,0≤y<4,0≤z<4)的值分别为V4x+16y+z(从V0至V63),并且期望在宽度方向上调整张量T0的各个列切片的次序以获得第二张量T1,其中,所期望的调整包括T0.W0→T1.W1、T0.W1→T1.W3、T0.W2→T1.W0和T0.W3→T1.W2,并且R=4且N=W/R=1,即,期望调整第一张量T0在整个宽度范围内的所有列切片的位置。
为此,在示例方法100的步骤S110中,可以根据张量T0确定第三张量T’0,并且可以根据张量T1确定第四张量T’1,其中,T’0=T0、T’1.W0.P0=T1.W0、T’1.W0.P1=T1.W1、T’1.W0.P2=T1.W2、T’1.W0.P3=T1.W3,使得第三张量T’0的高度、宽度和高度分别为H=4、W=4和C=4,并且第四张量T’1的高度、宽度和高度分别为H=4、N=W/R=4/2=2和R×C=2×4=8。
然后,如图8所示,在步骤S120中,可以确定卷积核序列K0→K1,其中,K0至K1中的每个卷积核Ki(0≤i<2)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别1、2、1、2和4。
与{T0.W0×2+0→T1.W0×2+1,T0.W1×2+0→T1.W1×2+1}相对应地,卷积核序列可以包括卷积核K1,卷积核K1在卷积核序列中的位置(i=1)可以取决于切片T1.W0×2+1在张量T1的列切块B1,0中的位置或者切片T1.W1×2+1在张量T1的列切块B1,1中的位置(k’=1),并且K1中的唯一非零列切片K1.W0的位置可以取决于切片T0.W0×2+0在张量T0的列切块B0,0中的位置或者切片T0.W1×2+0在张量T1的列切块B0,1中的位置(k=0)。
与{T0.W0×2+1→T1.W0×2+0,T0.W1×2+1→T1.W1×2+0}相对应地,卷积核序列可以包括卷积核K0,卷积核K0在卷积核序列中的位置(i=0)可以取决于切片T1.W0×2+0在张量T1的列切块B1,0中的位置或者切片T1.W1×2+0在张量T1的列切块B1,1中的位置(k’=0),并且K0中的唯一非零列切片K1.W1的位置可以取决于切片T0.W0×2+1在张量T0的列切块B0,0中的位置或者切片T0.W1×2+1在张量T1的列切块B0,1中的位置(k=1)。
然后,如图8所示,可以在示例方法100的步骤S130中,使用卷积核序列对第三张量T’0执行深度可分离卷积运算,从而获得第四张量T’1。由于存储数据的连续性,获得第四张量T’1相当于获得第二张量T1,从而实现从第一张量T0到第二张量T1的宽度方向上的调整。
在另外的实施例中,可以总是使R=W,从而始终在整个宽度范围内进行调整,而不必关心是否在每个局部范围内具有重复或相同的调整操作。
通过根据本公开的实施例的方法,还可以在高度方向上将第一张量T0调整为第二张量T1,其中,同样假设第一张量T0和第二张量T1中的每一个的高度、宽度和通道数量分别为H、W和C。
第一张量T0可以对应于在高度方向上的行切块序列Q’0。第一张量T0或行切块序列Q’0可以包括N’(1≤N’<H)个行切块。在H可以被N’整除的情况下,行切块序列Q’0中的每个行切块B’0,j(0≤j<N’)可以包括第一张量T0在高度方向上的连续的R’=H/N’个行切片T0.HjR’至T0.HjR’+R’-1。
同时,第二张量T1可以对应于在高度方向上的行切块序列Q’1。第二张量T1或行切块序列Q’1可以包括N’个行切块。在H可以被N’整除的情况下,行切块序列Q’1中的每个行切块B’1,j可以包括第二张量T1在高度方向上的连续的R’=H/N’个行切片T1.HjR’至T1.HjR’+R’-1。
于是,在高度方向上将第一张量T0调整为第二张量T1可以包括将第一张量T0的每个行切块B’0,j以相同的列切片位置调整方式调整为第二张量T1的列切块B1,j,即,所期望的调整包括集合{T0.HjR’+k→T1.HjR’+k’|0≤j<N’,0≤k<R’,0≤k’<R’}={T0.HjR’→T1.HjR’,……,T0.HjR’+R’-1→T1.HjR’+R’-1|0≤j<N’}。
R’可以被称为在高度方向上的调整范围。在R’=H(即,N’=1)的情况下,意味着对第一张量T0在整个高度范围内的所有行切片的位置进行调整。在N’>1的情况下,意味着对第一张量T0的每个局部范围内的所有行切片的位置以相同的方式进行调整。例如,在H无法被N’整除的情况下,可以考虑使R’=H,从而在整个高度范围内调整第一张量T0。
在示例方法的步骤S110中,可以利用存储数据的连续性,根据第一张量T0确定与第一张量T0对应于相同存储数据序列的第三张量T’0,并且根据第二张量T1确定与第二张量T0对应于相同存储数据序列的第四张量T’1。
在一个实施例中,在示例方法的步骤S110中,可以先确定与第一张量T0对应于相同存储数据序列的张量T”0以及与第二张量T1对应于相同存储数据序列的张量T”1,其中,张量T”0和张量T”1中的每一个的高度、宽度和通道数量均分别为N’=H/R’、W×R和C,张量T”0的第j(0≤j<N’)个行切片T”0.Hj对应于第一张量T0或行切块序列Q’0的第j个行切块B’0,j中的所有行切片按照宽度方向次序在通道方向上的拼接结果,即,T”0.Hj.Pk=T0.HjR’+k(0≤k<R’),并且张量T”1的第j个行切片T”1.Hj对应于第二张量T1或行切块序列Q’1的第j个行切块B’1,j中的所有行切片按照宽度方向次序在通道方向上的拼接结果,即,T”1.Hj.Pk’=T1.HjR’+k’(0≤k’<R’)。
于是,从第一张量T0到第二张量T1的调整{T0.HjR’+k→T1.HjR’+k’|0≤j<N’,0≤k<R’,0≤k’<R’}被转换为从张量T”0到张量T”1的调整{T”0.Hj.Pk→T”1.Hj.Pk’|0≤j<N’,0≤k<R’,0≤k’<R’},而由于{T”0.Hj.Pk→T”1.Hj.Pk’|0≤j<N’,0≤k<R’,0≤k’<R’}和集合{T”0.WjW+k→T”1.WjW+k’|0≤j<N’,0≤k<R’,0≤k’<R’}对应于相同的调整操作,所以从第一张量T0到第二张量T1的在高度方向上的调整{T0.HjR’+k→T1.HjR’+k’|0≤j<N’,0≤k<R’,0≤k’<R’}实际上被转换为从张量T”0到张量T”1的宽度方向上的调整{T”0.WjW+k→T”1.WjW+k’|0≤j<N’,0≤k<R’,0≤k’<R’},并且在宽度上的调整范围为张量T”0的宽度W×R。
然后,可以按照在宽度方向上调整张量的方式,确定与张量T”0对应于相同存储数据序列的第三张量T’0以及与张量T”1对应于相同存储数据序列的第四张量T’1,并确定相应的卷积核序列,使得能够通过使用所确定的卷积核序列对第三张量T’0执行卷积运算来获得第四张量T’1。
例如,在步骤S110中,可以使第三张量T’0对应于张量T”0的所有列切片按照宽度方向次序在通道方向上的拼接结果,并且使第四张量T’1对应于张量T”1的所有列切片按照宽度方向次序在通道方向上的拼接结果。然后,在步骤S120中,可以参照与图4和图5中的示例相类似的方式确定卷积核序列,并在步骤S130中使用所确定的卷积核序列对第三张量T’0执行普通卷积运算,从而获得第四张量T’1。
例如,在步骤S110中,也可以使第三张量T’0与张量T”0相同,并且使第四张量T’1对应于张量T”1的所有列切片按照宽度方向次序在通道方向上的拼接结果。然后,在步骤S120中,可以参照与图8中的示例相类似的方式确定卷积核序列,并在步骤S130中使用所确定的卷积核序列对第三张量T’0执行深度可分离卷积运算,从而获得第四张量T’1。
在另外的实施例中,无论所期望的调整是在整个高度范围内的、还是针对每个局部范围内的,可以总是使R’=H(相应地,N’=H/R’=1)。
由于第四张量T’1、张量T”1和第二张量T1对应于相同存储数据序列,所以获得第四张量T’1相当于获得第二张量T1。
图9示出通过根据本公开的实施例的方法在高度方向上调整张量数据的示例。
在图9的示例中,第一张量T0的高度、宽度和通道数量分别为H=4、W=2和C=2,并且包括H×W×Z=4×2×2=16个体素,各个体素T0.Ex,y,z(0≤x<2,0≤y<4,0≤z<2)的值分别为V2x+4y+z(从V0至V15),并且期望在高度方向上调整张量T0的各个行切片的次序以获得第二张量T1,其中,所期望的调整包括T0.H0→T1.H1、T0.H1→T1.H0、T0.H2→T1.H3和T0.H3→T1.H2,并且R’=2且N’=H/R’=2,即,期望调整第一张量T0在每个高度为2的局部范围内的所有行切片的位置。
为此,在示例方法100的步骤S110中,可以先根据第一张量T0确定张量T”0,并且可以根据第二张量T1确定张量T”1,使得T”0.H0.P0=T0.H0、T”0.H0.P1=T0.H1、T”0.H1.P0=T0.H2、T”0.H1.P1=T0.H3、T”1.H0.P0=T1.H0、T”1.H0.P1=T1.H1、T”1.H1.P0=T1.H2、T”1.H1.P1=T1.H3,其中,张量T”0和张量T”1中的每一个的高度、宽度和高度均分别为N’=2、R×W=2×2=4和C=4,并且张量T”0和第一张量T0在存储器中对应于相同的存储数据序列,张量T”1和第二张量T1在存储器中对应于相同的存储数据序列。
于是,所期望的调整T0.H0→T1.H1、T0.H1→T1.H0、T0.H2→T1.H3和T0.H3→T1.H2可以分别转换为T”0.H0.P0→T”1.H0.P1、T”0.H0.P1→T”1.H0.P0、T”0.H1.P0→T”1.H1.P1和T”0.H1.P1→T”1.H1.P0。
如图9所示,对于张量T”0和张量T”1,操作{T”0.H0.P0→T”1.H0.P1,T”0.H0.P1→T”1.H0.P0,T”0.H1.P0→T”1.H1.P1,T”0.H1.P1→T”1.H1.P0}等同于操作{T”0.W0→T”1.W2,T”0.W1→T”1.W3,T”0.W2→T”1.W0,T”0.W3→T”1.W1},使得在高度方向上所期望的从第一张量T0到第二张量T1的调整{T0.H0→T1.H1,T0.H1→T1.H0,T0.H2→T1.H3,T0.H3→T1.H2}转换为在宽度方向上的从张量T”0到张量T”1的调整{T”0.W0→T”1.W2,T”0.W1→T”1.W3,T”0.W2→T”1.W0,T”0.W3→T”1.W1}。
进一步地,可以按照在宽度方向上在整个宽度范围内调整张量的方式,确定与张量T”0对应于相同存储数据序列的第三张量T’0以及与张量T”1对应于相同存储数据序列的第四张量T’1,并确定相应的卷积核序列。
如图10所示,在步骤S110中,可以参考图4和图5的示例的方式,确定第三张量T’0和第四张量T’1,使得T’0.W0.P0=T”0.W0、T’0.W0.P1=T”0.W1、T’0.W0.P2=T”0.W2、T’0.W0.P3=T”0.W3、T’1.W0.P0=T”1.W0、T’1.W0.P1=T’1.W1、T’1.W0.P2=T”1.W2、T’1.W0.P3=T”1.W3,从而将在宽度方向上的从张量T”0到张量T”1的调整{T”0.W0→T”1.W2,T”0.W1→T”1.W3,T”0.W2→T”1.W0,T”0.W3→T”1.W1}转换为在通道方向上的从第三张量T’0到第四张量T’1的调整{T’0.C0→T’1.C4,T’0.C1→T’1.C5,T’0.C2→T’1.C6,T’0.C3→T’1.C7,T’0.C4→T’1.C0,T’0.C5→T’1.C1,T’0.C6→T’1.C2,T’0.C7→T’1.C3}。
然后,如图10所示,在步骤S120中,可以参考图4和图5的示例的方式,确定卷积核序列卷积核序列K0→K1→……→K6→K7,其中,K0至K7中的每个卷积核Ki(0≤i<8)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别1、1、1、1和张量T’0的通道数量(即,8)。
如图10所示,例如,与T’0.C0→T’1.C4相对应地,卷积核序列可以包括卷积核K4,卷积核K4在卷积核序列中的位置(i=4)可以取决于张量T’1中的通道切片T’1.C4在张量T’1中的位置(第4个通道),并且K4中的唯一非零通道K4.C0的位置可以取决于张量T’0中的通道切片T’0.C0在张量T’0中的位置(第0个通道)。类似地,还可以确定卷积核序列中的其他卷积核K0至K3以及K5至K7。
然后,在步骤S130中,可以使用所确定的卷积核序列K0→K1→……→K6→K7对第三张量T’0执行普通卷积运算,从而获得第四张量T’1。
另外,如图11所示,在步骤S110中,可以参考图8的示例的方式,确定第三张量T’0和第四张量T’1,使得T’0=T”0、T’1.W0.P0=T”1.W0、T’1.W0.P1=T’1.W1、T’1.W0.P2=T”1.W2、T’1.W0.P3=T”1.W3。与图8的示例不同地,在图11的示例中,在宽度方向上在整个宽度范围内调整张量T”0,即,对于图11的示例中的在宽度方向上从T”0或T’0到T”1的调整而言,相应的调整范围R=4,并且张量T”0或T’0以及张量T”1中的每一个均只包括一个等同于张量本身的列切块。
然后,如图11所示,在步骤S120中,可以参考图8的示例的方式,确定卷积核序列卷积核序列K0→K1→K2→K3,其中,K0至K3中的每个卷积核Ki(0≤i<4)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别1、4、1、4和2。
与T’0.W0×4+0→T”1.W0×4+2相对应地,卷积核序列可以包括卷积核K2,卷积核K2在卷积核序列中的位置(i=2)可以取决于切片T”1.W0×4+2在张量T”1(或其列切块)中的位置(k’=2),并且K2中的唯一非零列切片K2.W0的位置可以取决于切片T”0.W0×4+0在张量T”0(或其列切块)中的位置切片T’0.W0×4+0在张量T’0(或其列切块)中的位置(k=0)。
类似地,可以确定卷积核序列中的卷积核K0、卷积核K1和卷积核K3。
然后,在步骤S130中,可以使用所确定的卷积核序列K0→K1→K2→K3对第三张量T’0执行深度可分离卷积运算,从而获得第四张量T’1。
由于第四张量T’1、张量T”1和第二张量T1对应于相同存储数据序列,所以获得第四张量T’1相当于获得第二张量T1。
在图4至图11的示例中,分别示出通过根据本公开的实施例的方法,在通道方向、宽度方向和高度方向中的一个维度方向上调整张量的示例。在另外的实施例中,可以结合各个示例并实现在通道方向、宽度方向和高度方向中的至少两个维度方向上调整张量。
另外,通过根据本公开的实施例的方法,还可以实现调整第一张量T0中的任何一个或多个体素。
为此,在示例方法的步骤S110中,可以利用存储数据的连续性,根据第一张量T0确定与第一张量T0对应于相同存储数据序列的第三张量T’0,并且根据第二张量T1确定与第二张量T0对应于相同存储数据序列的第四张量T’1。
假设第一张量T0和作为第一张量T0的调整目标的第二张量T1中的每一个的高度、宽度和通道数量分别为H、W和C,则第三张量T’0和第四张量T’1中的每一个的高度、宽度和通道数量可以分别为1、1和H×W×C,其中,第一张量T0中的每个体素T0.Ex,y,z对应于第三张量T’0中的每个通道上的唯一体素T’0.E0,0,Cx+CWy+z(0≤x<W,0≤y<H,0≤z<C),并且第二张量T’1中的每个体素T’1.Ex,y,z对应于第四张量T”1中的每个通道上的唯一体素T’1.E0,0,Cx+CWy+z(0≤x<W,0≤y<H,0≤z<C)。
第三张量T’0可以被视为张量T”0的所有行切片按照高度方向次序在通道方向上的拼接结果,其中,张量T”0对应于第一张量T0的所有列切片按照宽度方向次序在通道方向上的拼接结果。另外,第三张量T’0也可以被视为张量T”0的所有列切片按照宽度方向次序在通道方向上的拼接结果,其中,张量T”0对应于第一张量T0的所有行切片按照高度方向次序在通道方向上的拼接结果。
类似地,第四张量T’1可以被视为张量T”1的所有行切片按照高度方向次序在通道方向上的拼接结果,其中,张量T”1对应于第二张量T1的所有列切片按照宽度方向次序在通道方向上的拼接结果。另外,第四张量T’1也可以被视为张量T”1的所有列切片按照宽度方向次序在通道方向上的拼接结果,其中,张量T”1对应于第二张量T1的所有行切片按照高度方向次序在通道方向上的拼接结果。
然后,从第一张量T0到第二张量T1的任一调整T0.Ex,y,z→T1.Ex’,y’,z’可以转换为从第三张量T’0到第四张量T’1的在通道方向上的调整T’0.CCx+CWy+z→T’1.CCx’+CWy’+z’,其中,0≤x<W,0≤y<H,0≤z<C,0≤x’<W,0≤y’<H,0≤z’<C。
然后,在示例方法的步骤S120中,可以使卷积核序列包括H×W×C(即,第三张量T’0的通道数量)个卷积核,其中,卷积核序列中的每个卷积核Ki(0≤i<H×W×C)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别等于1、1、1、1和H×W×C,并且每个卷积核Ki在通道方向上可以具有唯一非零通道,其中,对于任一调整T0.Ex,y,z→T1.Ex’,y’,z’或T’0.CCx+CWy+z→T’1.CCx’+CWy’+z’,卷积核序列可以包括卷积核K Cx’+CWy’+z’,并且卷积核KCx’+CWy’+z’中的唯一非零通道为KCx’+CWy’+z’.CCx+CWy+z。
然后,在示例方法100的步骤S130中,可以使用所确定的卷积核序列对第三张量T’0执行普通卷积运算,从而获得第四张量T’1。
由于第四张量T’1和第二张量T1对应于相同的存储数据序列,所以获得第四张量T’1相当于获得第二张量T1。由此,通过卷积运算实现从第一张量T0到第二张量T1的调整。
图12示出通过根据本公开的实施例的方法调整第一张量T0中的若干体素的位置的示例。
在图12的示例中,第一张量T0的高度、宽度和通道数量分别为H=2、W=2和C=2,并且包括H×W×Z=2×2×2=8个体素,各个体素T0.Ex,y,z(0≤x<2,0≤y<2,0≤z<2)的值分别为V2x+4y+z(从V0至V7),并且从第一张量T0到第二张量T1的期望的调整包括T0.E0,0,0→T1.E0,0,0、T0.E0,0,1→T1.E0,0,1、T0.E1,0,0→T1.E0,1,0、T0.E1,0,1→T1.E0,1,1、T0.E0,1,0→T1.E1,0,0、T0.E0,1,1→T1.E1,0,1、T0.E1,1,0→T1.E1,1,0、T0.E1,1,1→T1.E1,1,1。
为此,可以在示例方法100的步骤S110中,根据第一张量T0确定与第一张量T0对应于相同存储数据序列的第三张量T’0,并且根据第二张量T1确定与第二张量T0对应于相同存储数据序列的第四张量T’1,其中,第一张量T0中的每个体素T0.Ex,y,z对应于第三张量T’0中的每个通道上的唯一体素T’0.E0,0,Cx+CWy+z(0≤x<2,0≤y<2,0≤z<2),并且第二张量T’1中的每个体素T’1.Ex,y,z对应于第四张量T”1中的每个通道上的唯一体素T’1.E0,0,Cx+CWy+z(0≤x<2,0≤y<2,0≤z<2)。
于是,所期望的调整T0.E0,0,0→T1.E0,0,0、T0.E0,0,1→T1.E0,0,1、T0.E1,0,0→T1.E0,1,0、T0.E1,0,1→T1.E0,1,1、T0.E0,1,0→T1.E1,0,0、T0.E0,1,1→T1.E1,0,1、T0.E1,1,0→T1.E1,1,0、T0.E1,1,1→T1.E1,1,1被转换为T’0.C0→T’1.C0、T’0.C1→T’1.C1、T’0.C2→T’1.C4、T’0.C3→T’1.C5、T’0.C4→T’1.C2、T’0.C5→T’1.C3、T’0.C6→T’1.C6、T’0.C7→T’1.C7。
然后,在示例方法100的步骤S120中,可以确定卷积核序列K0→K1→K2→K3→K4→K5→K6→K7,其中,K0至K7中的每个卷积核Ki(0≤i<8)的高度、宽度、高度方向步长、宽度方向步长和通道数量可以分别1、1、1、1和第三张量T’0的通道数量(即,8)。
如图12所示,例如,与T0.E1,0,0→T1.E0,1,0或T’0.C2→T’1.C4相对应地,卷积核序列可以包括卷积核K4,卷积核K4在卷积核序列中的位置(i=4)可以取决于张量T’1中的通道切片T’1.C4在张量T’1中的位置(第4个通道),并且K4中的唯一非零通道K4.C2的位置可以取决于张量T’0中的通道切片T’0.C2在张量T’0中的位置(第2个通道)。
类似地,可以确定卷积核序列中的其他卷积核K0至K3和K5至K7。
然后,可以在示例方法100的步骤S130中,使用所确定的卷积核序列K0→K1→K2→K3→K4→K5→K6→K7对第三张量T’0执行普通卷积运算并获得第四张量T’1,从而按照所期望的调整将第一张量T0调整为第二张量T1。
根据本公开的实施例的方法(例如,示例方法100)利用在存储器中存储的数据的连续性,将从第一张量T0到第二张量T1的调整转换成从第三张量T’0到第四张量T’1的调整,并且通过卷积运算从第三张量T’0获得第四张量T’1。
然后,由于存储数据的连续性,获得第四张量T’1也就意味着获得第二张量T1。例如,可以将所获得的第四张量T’1存储到存储器中,从而获得第二张量T1的存储数据序列;然后,在后续的使用过程中,可以按照第二张量T1的数据格式读取存储数据序列,从而直接获得第二张量T1。由此,实现从第三张量T’0到第四张量T’1的调整相当于实现从第一张量T0到第二张量T1的调整。
数据存储的连续性使得前述转换不需要额外的处理代价,并且卷积运算可以直接使用卷积神经网络加速器来执行。由此,根据本公开的实施例的方法(例如,示例方法100)能够通过诸如卷积神经网络加速器这样的硬件高效率且低成本地实现张量数据的调整。
如前文所述,根据本公开的实施例的方法(例如,示例方法100)可以应用于例如卷积神经网络编译器或者卷积神经网络加速器或者卷积神经网络后处理器中。
例如,卷积神经网络后处理器在接收到来自卷积神经网络加速器的张量数据之后,可以例如分析准备对所接收的张量数据执行的后处理操作的程序指令或程序代码,并根据期望的处理效率和/或性能要求,确定期望对所接收的张量数据执行的调整操作和相应的目标张量。然后,卷积神经网络后处理器可以执行例如示例方法100中的步骤S110和S120。然后,卷积神经网络后处理器可以将所确定的第三张量和卷积核序列提供给例如卷积神经网络加速器,并指示卷积神经网络加速器执行普通卷积运算或深度可分离卷积运算,从而获得与第二张量相对应的存储数据序列。
例如,也可以由卷积神经网络编译器分析准备对所接收的张量数据执行的后处理操作的程序指令或程序代码,并根据在后处理中期望的处理效率和/或性能要求,确定在后处理操作中要求或期望的调整操作和相应的目标张量。然后,卷积神经网络编译器可以将所确定的第三张量和卷积核序列,例如修改预先设计好的卷积神经网络,例如可以在卷积神经网络的输出层之后添加一个或多个卷积层。
图13示出能够应用根据本公开的实施例的方法(例如,示例方法100)的装置的示例200。该示例装置200可以是卷积神经网络编译器或者卷积神经网络后处理器,也可以是卷积神经网络编译器或者卷积神经网络后处理器中的部件。
如图13所示,示例装置200可以包括至少一个处理器PU。
根据不同的实施例,处理器PU可以是具有数据处理能力和/或指令执行能力的任何形式的处理单元,例如通用处理器CPU、图形处理器GPU、现场可编程门阵列FPGA等,也可以是专用的神经网络处理器或加速器等。
处理器PU可以被配置为在启动(例如,通电)时至少执行根据本公开的实施例的方法(例如,示例方法100)的步骤。
例如,处理器PU还可以被配置为分析准备对所接收的张量数据执行的后处理操作的程序指令或程序代码COD。
另外,如图13所示,示例装置200还可以包括存储器MEM和I/O接口,并且处理器PU可以通过总线系统和/或其他形式的连接机构与存储器MEM以及I/O接口相连。
根据不同的实施例,存储器MEM可以包括各种形式的计算机可读写存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪速存储器等。可读写存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。
I/O接口可以用于向处理器PU提供参数或数据并且输出经过处理器PU处理的结果数据,并且根据不同的实施例,I/O接口可以包括有线或无线形式的网络接口、串行总线接口、红外线接口等任何适当形式的数据传输接口。
如图13所示,示例装置200可以通过I/O接口将经过扩展的张量数据和卷积核提供给卷积神经网络加速器CA。
在一个实施例中,卷积神经网络加速器CA可以包括输入缓冲器IB、权重缓冲器WB、控制器CTL、计算核心电路CC和输出缓冲器OB等部件。计算核心电路CC可以包括输入寄存器IR、一个或多个卷积引擎CE、一个或多个输出寄存器OR以及一个或多个池化电路PL等部件,其中,每个卷积引擎CE可以包括处理器阵列PA,例如可以是乘加器阵列。
应当理解,图13所示的示例装置200仅是示例性,而非限制性的。根据本公开的实施例的装置还可以具有其他部件和/或结构。
在另外的实施例中,根据本公开的实施例的装置还可以包括处理器和卷积引擎,其中,处理器可以被配置为根据第一张量和第二张量确定第三张量和第四张量,以及确定卷积核序列使得所述第四张量对应于基于所述第三张量和所述卷积核序列的卷积运算的结果,并且卷积引擎可以被配置为使用所确定的卷积核序列对第三张量执行卷积运算。
根据不同的实施例,处理器可以是具有数据处理能力和/或指令执行能力的任何形式的处理单元,例如通用处理器CPU、图形处理器GPU、现场可编程门阵列FPGA等。
在一个实施例中,卷积引擎可以是例如图13的示例中的卷积神经网络加速器CA或者图13的示例中的卷积神经网络加速器CA中的卷积引擎CE。
另外,在一个实施例中,可以在一个或多个计算机可读取的非临时性存储介质上存储或实施能够执行根据本公开的实施例的方法的各个步骤的程序指令,使得这样的非临时性存储介质能够在被计算机或其他计算装置(例如处理器)读取时提供相应的程序指令,并使得计算机或其他计算装置能够根据所读取的程序指令执行相应的操作。根据不同的实施例,程序指令能够以诸如源代码、二进制代码、中间代码等各种形式或各种形式的不同组合而实施或存储在非临时性存储介质上。
贯穿说明书和权利要求书,除非上下文清楚地另有要求,否则措词“包括”、“包含”等应当以与排他性或穷尽性的意义相反的包括性的意义来解释,也就是说,应当以“包括但不限于”的意义来解释。另外,措词“在本文中”、“上文”、“下文”以及相似含义的措词在本申请中使用时应当指作为整体的本申请,而不是本申请的任何具体部分。在上下文允许时,在使用单数或复数的以上描述中的措词也可以分别包括复数或单数。关于在提及两个或多个项目的列表时的措词“或”,该措词涵盖该措词的以下解释中的全部:列表中的任何项目,列表中的所有项目,以及列表中的项目的任何组合。
另外,在本文中,诸如“至少两个”、“多个”(等同于“至少两个”)、“两个”等明确指示数量多于一个的修饰词用于强调被修饰的对象具有复数形式。诸如“一个”、“每个”、“任何一个”、“任意一个”、“任一”等明确指示数量等于一个的修饰词用于强调被修饰的对象具有单数形式。诸如“至少一个”、“一个或多个”等修饰词用于强调被修饰的对象可以具有复数形式,也可以具有单数形式。在没有上述修饰词的情况下,或者在使用诸如“任何”等数量含义不明确的修饰词的情况下,意味着本公开的技术方案不关注或不局限于所描述的对象的特定数量,并且可以根据上下文,将所描述的对象理解为可以具有单数形式或复数形式。
虽然已经描述了本公开的一些实施例,但是这些实施例仅作为示例而呈现,而不打算限制本公开的范围。实际上,在本文中所描述的方法和系统可以采用多种其他形式来实施。另外,可以在不脱离本公开的范围的情况下,在本文中所描述的方法和装置的形式上做出各种省略、替换和改变。
Claims (17)
1.一种调整张量数据的方法,包括:
根据第一张量和第二张量确定第三张量和第四张量,所述第二张量是所述第一张量的调整目标并且与所述第一张量具有相同的高度、宽度和通道数量,所述第三张量的存储数据序列与所述第一张量的存储数据序列相同,所述第四张量的存储数据序列与所述第二张量的存储数据序列相同;
确定卷积核序列,使得所述第四张量对应于基于所述第三张量和所述卷积核序列的卷积运算的结果;以及
使用所述卷积核序列对所述第三张量执行卷积运算;
其中,所述第二张量是在所述第一张量的通道方向、宽度方向和高度方向中的一个维度方向上或至少两个维度方向上对所述第一张量进行调整获得的。
2.根据权利要求1所述的方法,其中,所述第三张量与所述第一张量相同,并且所述第四张量与所述第二张量相同。
3.根据权利要求1所述的方法,其中,
所述第一张量在宽度方向上的第一列切块序列包括第一数量的第一列切块,每个第一列切块包括第二数量的列切片,所述第二张量在宽度方向上的第二列切块序列包括所述第一数量的第二列切块,每个第二列切块包括所述第二数量的列切片,每个第一列切块以相同的列切片位置调整方式调整为对应的第二列切块,
所述第三张量在宽度方向上的每个列切片对应于所述第一列切块序列中的相应的第一列切块中的所有列切片按照宽度方向次序在通道方向上的拼接结果,并且
所述第四张量在宽度方向上的每个列切片对应于所述第二列切块序列中的相应的第二列切块中的所有列切片按照宽度方向次序在通道方向上的拼接结果。
4.根据权利要求1所述的方法,其中,
所述第一张量在高度方向上的第一行切块序列包括第一数量的第一行切块,每个第一行切块包括第二数量的行切片,所述第二张量在高度方向上的第二行切块序列包括所述第一数量的第二行切块,每个第二行切块包括所述第二数量的行切片,每个第一行切块以相同的行切片位置调整方式调整为对应的第二行切块,
所述第三张量对应于第五张量的所有列切片按照宽度方向次序在通道方向上的拼接结果,所述第五张量在高度方向上的每个行切片对应于所述第一行切块序列中的相应的第一行切块中的所有行切片按照高度方向次序在宽度方向上的拼接结果,并且
所述第四张量对应于第六张量的所有列切片按照宽度方向次序在通道方向上的拼接结果,所述第六张量在高度方向上的每个行切片对应于所述第二行切块序列中的相应的第二行切块中的所有行切片按照高度方向次序在宽度方向上的拼接结果。
5.根据权利要求4所述的方法,其中,所述第二数量等于1。
6.根据权利要求1所述的方法,其中,
所述第三张量对应于第五张量的所有行切片按照高度方向次序在通道方向上的拼接结果,所述第五张量对应于所述第一张量的所有列切片按照宽度方向次序在通道方向上的拼接结果,并且
所述第四张量对应于第六张量的所有行切片按照高度方向次序在通道方向上的拼接结果,所述第六张量对应于所述第二张量的所有列切片按照宽度方向次序在通道方向上的拼接结果。
7.根据权利要求2至6中的任一项所述的方法,其中,
所述卷积核序列中的卷积核的数量等于所述第三张量的通道数量,
所述卷积核序列中的每个卷积核的高度、宽度、高度方向步长、宽度方向步长和通道数量分别等于1、1、1、1和所述第三张量的通道数量,
所述卷积核序列中的每个卷积核在通道方向上具有唯一非零通道,所述唯一非零通道上的每个体素的值为1,并且
对于所述第三张量中的第一通道和所述第四张量中与所述第一通道相对应的第二通道,所述卷积核序列包括第一卷积核,所述第一卷积核在所述卷积核序列中的位置取决于所述第二通道在所述第四张量中的位置,并且所述第一卷积核中的唯一非零通道的位置取决于所述第一通道在所述第三张量中的位置。
8.根据权利要求7所述的方法,其中,所述卷积运算为普通卷积运算。
9.根据权利要求1所述的方法,其中,
所述第一张量在宽度方向上的第一列切块序列包括第一数量的第一列切块,每个第一列切块包括第二数量的列切片,所述第二张量在宽度方向上的第二列切块序列包括所述第一数量的第二列切块,每个第二列切块包括所述第二数量的列切片,每个第一列切块以相同的列切片位置调整方式调整为对应的第二列切块,
所述第三张量与所述第一张量相同,并且
所述第四张量在宽度方向上的每个列切片对应于所述第二列切块序列中的相应的第二列切块中的所有列切片按照宽度方向次序在通道方向上的拼接结果。
10.根据权利要求9所述的方法,其中,
所述卷积核序列中的卷积核的数量等于所述第二数量,
所述卷积核序列中的每个卷积核的高度、宽度、高度方向步长、宽度方向步长和通道数量分别等于1、所述第二数量、1、所述第二数量和所述第三张量的通道数量,
所述卷积核序列中的每个卷积核在宽度方向上具有唯一非零列切片,所述唯一非零列切片上的每个体素的值为1,
对于每个第一列切块中的第一列切片和对应的第二列切块中的对应的第二列切片,所述卷积核序列包括第一卷积核,所述第一卷积核在所述卷积核序列中的位置取决于所述第二列切片在所述第二列切块中的位置,并且所述第一卷积核中的唯一非零列切片的位置取决于所述第一列切片在所述第一列切块中的位置。
11.根据权利要求10所述的方法,其中,所述卷积运算为深度可分离卷积运算。
12.根据权利要求1所述的方法,其中,
所述第一张量在高度方向上的第一行切块序列包括第一数量的第一行切块,每个第一行切块包括第二数量的行切片,所述第二张量在高度方向上的第二行切块序列包括所述第一数量的第二行切块,每个第二行切块包括所述第二数量的行切片,每个第一行切块以相同的行切片位置调整方式调整为对应的第二行切块,
所述第三张量对应于所述第一行切块序列中的相应的第一行切块中的所有行切片按照高度方向次序在宽度方向上的拼接结果,并且
所述第四张量对应于第五张量的所有列切片按照宽度方向次序在通道方向上的拼接结果,所述第五张量在高度方向上的每个行切片对应于所述第二行切块序列中的相应的第二行切块中的所有行切片按照高度方向次序在宽度方向上的拼接结果。
13.根据权利要求12所述的方法,其中,
所述卷积核序列中的卷积核的数量等于所述第三张量的宽度,
所述卷积核序列中的每个卷积核的高度、宽度、高度方向步长、宽度方向步长和通道数量分别等于1、所述第三张量的宽度、1、所述第三张量的宽度和所述第三张量的通道数量,
所述卷积核序列中的每个卷积核在宽度方向上具有唯一非零列切片,所述唯一非零列切片上的每个体素的值为1,
对于所述第三张量中的第一行切片中的第一列切片和所述第五张量中的相同位置处的第二行切片中的对应的第二列切片,所述卷积核序列包括第一卷积核,所述第一卷积核在所述卷积核序列中的位置取决于所述第二列切片在所述第二行切片中的位置,并且所述第一卷积核中的唯一非零列切片的位置取决于所述第一列切片在所述第三张量中的位置。
14.根据权利要求13所述的方法,其中,所述卷积运算为深度可分离卷积运算。
15.一种计算机可读取的非临时性存储介质,在其上存储有程序指令,所述程序指令在被执行时执行根据权利要求1至14中的任一项所述的方法。
16.一种调整张量数据的装置,包括:
处理器,被配置为在被启动时至少执行根据权利要求1至14中的任一项所述的方法。
17.一种调整张量数据的装置,包括:
处理器,被配置为根据第一张量和第二张量确定第三张量和第四张量,以及确定卷积核序列使得所述第四张量对应于基于所述第三张量和所述卷积核序列的卷积运算的结果,所述第二张量是所述第一张量的调整目标并且与所述第一张量具有相同的高度、宽度和通道数量,所述第三张量的存储数据序列与所述第一张量的存储数据序列相同,所述第四张量的存储数据序列与所述第二张量的存储数据序列相同;以及
卷积引擎,被配置为使用所述卷积核序列对所述第三张量执行卷积运算;
其中,所述第二张量是在所述第一张量的通道方向、宽度方向和高度方向中的一个维度方向上或至少两个维度方向上对所述第一张量进行调整获得的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811080262.8A CN109255438B (zh) | 2018-09-17 | 2018-09-17 | 调整张量数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811080262.8A CN109255438B (zh) | 2018-09-17 | 2018-09-17 | 调整张量数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109255438A CN109255438A (zh) | 2019-01-22 |
CN109255438B true CN109255438B (zh) | 2020-07-17 |
Family
ID=65046946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811080262.8A Active CN109255438B (zh) | 2018-09-17 | 2018-09-17 | 调整张量数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109255438B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885628B (zh) * | 2019-03-20 | 2020-05-12 | 上海燧原智能科技有限公司 | 一种张量转置方法、装置、计算机及存储介质 |
CN110046116B (zh) * | 2019-04-23 | 2020-08-21 | 上海燧原智能科技有限公司 | 一种张量填充方法、装置、设备及存储介质 |
CN110188773B (zh) * | 2019-05-24 | 2021-06-22 | 北京迈格威科技有限公司 | 图像处理方法及装置 |
CN110263923B (zh) * | 2019-08-12 | 2019-11-29 | 上海燧原智能科技有限公司 | 张量卷积计算方法及系统 |
CN110866590A (zh) * | 2019-10-22 | 2020-03-06 | Oppo广东移动通信有限公司 | 数据处理方法及装置、电子设备、存储介质 |
CN112633490B (zh) * | 2020-12-31 | 2023-09-26 | 上海寒武纪信息科技有限公司 | 执行神经网络模型的数据处理装置、方法及相关产品 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389585A (zh) * | 2015-10-20 | 2016-03-09 | 深圳大学 | 一种基于张量分解的随机森林优化方法及系统 |
US9875104B2 (en) * | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
CN106127297B (zh) * | 2016-06-02 | 2019-07-12 | 中国科学院自动化研究所 | 基于张量分解的深度卷积神经网络的加速与压缩方法 |
CN107516129B (zh) * | 2017-08-01 | 2020-06-02 | 北京大学 | 基于维度自适应的Tucker分解的深度网络压缩方法 |
CN107729994B (zh) * | 2017-11-28 | 2020-05-26 | 南京地平线机器人技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
-
2018
- 2018-09-17 CN CN201811080262.8A patent/CN109255438B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109255438A (zh) | 2019-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109255438B (zh) | 调整张量数据的方法和装置 | |
CN111667051B (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
Ye et al. | Inverted pyramid multi-task transformer for dense scene understanding | |
KR102068576B1 (ko) | 합성곱 신경망 기반 이미지 처리 시스템 및 방법 | |
CN110349146B (zh) | 基于轻量级卷积神经网络的织物缺陷识别系统的搭建方法 | |
Ye et al. | 3d depthwise convolution: Reducing model parameters in 3d vision tasks | |
CN106855952B (zh) | 基于神经网络的计算方法及装置 | |
CN111382867A (zh) | 神经网络压缩的方法、数据处理的方法及相关装置 | |
US20210350205A1 (en) | Convolution Processing Method and Apparatus for Convolutional Neural Network, and Storage Medium | |
CN111539526B (zh) | 一种神经网络卷积的方法和设备 | |
CN107680028B (zh) | 用于缩放图像的处理器和方法 | |
Olmedo et al. | Point to point processing of digital images using parallel computing | |
DE102020107828A1 (de) | Komprimierung für spärliche datenstrukturen unter verwendung von modus-suchannäherung | |
JP2020107042A (ja) | 学習モデル生成装置、学習モデル生成方法、及びプログラム | |
Chen et al. | Invasive weed optimization algorithm for solving permutation flow-shop scheduling problem | |
CN117475150A (zh) | 一种基于SAC-UNet的高效语义分割方法 | |
CN117237623A (zh) | 一种无人机遥感图像语义分割方法及系统 | |
CN111047025B (zh) | 一种卷积计算方法及装置 | |
CN101640795A (zh) | 一种视频解码优化方法及装置 | |
Park et al. | Accelerators for biologically-inspired attention and recognition | |
US20210241068A1 (en) | Convolutional neural network | |
CN114820755A (zh) | 一种深度图估计方法及系统 | |
Lin et al. | Object detection in RGB-D images via anchor box with multi-reduced region proposal network and multi-pooling | |
Liu et al. | Real-time monocular depth estimation for low-power embedded systems using deep learning | |
KR20130038903A (ko) | 알고리즘의 고유 병렬화의 정량화 및 분석 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |