CN109190758B - 用于展开卷积神经网络的张量数据的方法和装置 - Google Patents
用于展开卷积神经网络的张量数据的方法和装置 Download PDFInfo
- Publication number
- CN109190758B CN109190758B CN201811027026.XA CN201811027026A CN109190758B CN 109190758 B CN109190758 B CN 109190758B CN 201811027026 A CN201811027026 A CN 201811027026A CN 109190758 B CN109190758 B CN 109190758B
- Authority
- CN
- China
- Prior art keywords
- tensor
- convolution kernel
- slice
- dimension
- convolutional neural
- 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)
- Complex Calculations (AREA)
Abstract
公开了一种用于展开卷积神经网络的张量数据的方法和装置。该方法包括:根据第一张量和卷积神经网络加速器的硬件规格确定扩展维度;根据第一张量确定第二张量;以及根据用于第一张量的第一卷积核确定用于第二张量的第二卷积核。通过根据本公开的实施例的方法和装置,能够获得符合卷积神经网络加速器要求的规范形式的数据和运算参数,从而能够极大地提高卷积神经网络加速器的处理效率。
Description
技术领域
本公开总体上涉及卷积神经网络的技术领域,并且具体涉及用于展开卷积神经网络的张量数据的方法和装置。
背景技术
基于卷积神经网络的深度学习技术已经被广泛地应用于图像识别、视频分析、自然语言处理、辅助驾驶等不同的领域。卷积神经网络中的运算量通常很大。期望能够使用诸如通用的中央处理器(CPU)、图形处理器(GPU)或专用加速器等硬件高效地执行卷积神经网络中的运算。
由于芯片空间、硬件成本、设计复杂度等诸多方面的考虑和限制,卷积神经网络加速器(例如,可以包括乘加单元阵列)通常被设计为能够处理符合某些规范形状(例如,具有规定宽度、高度和/或通道数量)和/或规范数量的张量数据和卷积核,并且支持某些规范步长的卷积运算。
然而,实际交由卷积神经网络加速器执行的卷积运算可能各种各样,例如,输入的张量数据和权重参数可能具有各种各样的形状,并且要执行的卷积运算可能具有各种步长。数据和运算的多样性导致卷积神经网络加速器无法直接或无法高效率地处理,甚至根本无法处理。
发明内容
一方面,本公开提供一种用于展开卷积神经网络的张量数据的方法,该方法包括:根据第一张量和卷积神经网络加速器的硬件规格确定扩展维度;根据前述第一张量确定第二张量,前述第二张量在前述扩展维度上的维度值和通道数量分别是前述第一张量在前述扩展维度上的维度值的两倍和前述第一张量的通道数量的一半;以及根据用于前述第一张量的第一卷积核确定用于前述第二张量的第二卷积核,基于前述第一卷积核和前述第一张量的第一卷积运算的结果与基于前述第二卷积核和前述第二张量的第二卷积运算的结果相同。
另一方面,本公开提供一种计算机可读取的非临时存储介质,在其上存储有程序指令,前述程序指令在被执行时执行上述方法。
另一方面,本公开提供一种用于展开卷积神经网络的张量数据的装置,该装置包括:处理器,被配置为在启用时至少执行上述方法。
通过根据本公开的实施例的方法和装置,能够获得符合卷积神经网络加速器要求的规范形式的数据和运算参数,从而能够极大地提高卷积神经网络加速器的处理效率。
附图说明
图1示出根据本公开的实施例的方法的示例。
图2示出根据本公开的实施例的在宽度方向上扩展张量数据的示例。
图3示出根据本公开的实施例的在宽度方向上扩展卷积核的示例。
图4示出根据本公开的实施例的在宽度方向上扩展卷积核的示例。
图5示出根据本公开的实施例的在宽度方向上扩展卷积核的示例。
图6示出根据本公开的实施例的在高度方向上扩展张量数据的示例。
图7示出根据本公开的实施例的在高度方向上扩展卷积核的示例。
图8示出根据本公开的实施例的在高度方向上扩展卷积核的示例。
图9示出根据本公开的实施例的在高度方向上扩展卷积核的示例。
图10示出根据本公开的实施例的装置的示例。
具体实施方式
如前文所述,由于芯片空间、硬件成本、设计复杂度等诸多方面的考虑和限制,卷积神经网络加速器通常被设计为能够处理符合某些规范形状(例如,具有规定宽度、高度和/或通道数量)和/或规范数量的张量数据和卷积核,并且支持某些规范步长的卷积运算。
为了应对数据和运算的多样性,可以在卷积神经网络加速器设置额外的逻辑控制电路,例如用于控制乘加器的选择和时序控制等。然而,这样增加了硬件的设计成本和复杂度,并且可能由于乘加器的闲置而造成硬件资源的浪费。而且,即使在卷积神经网络加速器中增加这样的设置,也仍然可能由于数据或运算的不规范性,导致卷积神经网络加速器无法直接处理,或者无法高效率地处理,甚至根本无法处理。
在实际的应用中,被设计出来的卷积神经网络架构配置数据可以通过卷积神经网络编译器或卷积神经网络编译装置进行预处理,以便生成能够进一步提供给卷积神经网络加速器执行的指令集和数据集。
根据本公开的实施例的用于展开卷积神经网络的张量数据的方法可以在卷积神经网络编译器中执行,并生成符合卷积神经网络加速器的硬件规格的规范形式的运算数据和运算参数,从而使卷积神经网络加速器能够高效率地执行卷积神经网络中的运算。
如图1所示,根据本公开的实施例的示例方法100可以开始于步骤S110,根据要用于卷积运算的张量数据和卷积神经网络加速器的硬件规格确定扩展维度。
在下文中,步骤S110中的要用于卷积运算的张量数据也称为“第一张量”。在本文中,诸如“第一”、“第二”、“第三”等不带量词的充数词旨在用于区分不同的元素/元件/部件等,而不是用于强调次序或重要程度,而诸如“第一个”、“第二个”、“第三个”等带有量词的充数词可以用于表示一个序列中的不同元素或实体的次序或所在位置或重要程度。
对于一个设计好的卷积神经网络架构,该网络的每个卷积层的输入张量和输出张量的数量、通道数量等以及每个卷积层的卷积核的数量、形状、通道数量、体素值等均是已知的或者均是可确定的。
对于一个设计好的卷积神经网络加速器,可以知道或明确该卷积神经网络加速器的各种硬件规格或硬件参数,例如,卷积神经网络加速器中的乘加器阵列(卷积引擎)中的乘加器的配置方式、卷积神经网络加速器中的片上存储器的存储容量(例如,总容量、单行容量等)、卷积神经网络加速器中的卷积引擎支持的规范步长,并且可以进一步地根据这些硬件规格或硬件参数知道或确定该卷积神经网络加速器能够支持什么样的卷积运算和/或处理什么样的卷积运算的处理效率较高。
如果根据第一张量和卷积神经网络加速器的硬件规格确定第一张量的通道数量过多,例如,超出卷积神经网络加速器的处理能力,或者将导致卷积神经网络加速器的处理效率变低,则可以确定宽度和高度中的至少一个维度作为扩展维度,以便通过将第一张量在扩展维度上展开来降低第一张量在通道方向上的维度值,从而确保卷积神经网络加速器能够高效率地进行处理。
然后,示例方法100可以继续到步骤S120,根据第一张量确定第二张量。为了确保使用展开之后的第二张量执行的卷积运算的结果与使用原始的第一张量执行的卷积运算的结果完全相同,所确定的第二张量在扩展维度上的维度值和通道数量可以分别是第一张量在扩展维度上的维度值的两倍和第一张量的通道数量的一半。
然后,在示例方法100的步骤S130中,可以根据用于第一张量的第一卷积核确定用于第二张量的第二卷积核,使得基于第一卷积核和第一张量的第一卷积运算的结果与基于第二卷积核和第二张量的第二卷积运算的结果相同。
第二卷积核在扩展维度的维度方向上的步长可以是第一卷积核在扩展维度的维度方向上的步长的两倍。例如,如果第一卷积核在扩展维度的维度方向上的步长为1,则第二卷积核在扩展维度的维度方向上的步长可以为2。
另外,在第一张量的原始通道数量不是2的整数倍的情况下,可以事先例如使用全零数据在通道方向上对第一张量和第一卷积核进行填充,使得填充后的第一张量和相应的第一卷积核的通道数量是2的整数倍。根据不同的实施例,这样的填充处理可以借助于卷积神经网络加速器的硬件特性(例如,片上存储器的存储策略、乘加器阵列中与通道方向的处理相对应的加法器的配置等)自动完成,而不必专门处理;当然也可以通过专门的填充过程进行处理。
应当理解,根据不同的实施例,上述的第一张量、第一卷积核、第二张量和第二卷积核中的每一个的数量均可以是一个或多个。然而,为了方便,在下文中将以“数量为一个”为例进行描述。
对于第一张量在扩展维度的维度方向上的任意第i个(i是大于或等于1的整数)切片,第i个切片的第一子切片和第二子切片可以分别对应于第二张量在扩展维度的维度方向上的第2i-1个切片和第2i个切片,其中,第i个切片的第一子切片可以对应于第i个切片中在通道方向上的前半数通道上的数据,并且第i个切片的第二子切片可以对应于第i个切片中在通道方向上的后半数通道上的数据。
第二卷积核可以取决于第三卷积核。对于第一卷积核在扩展维度的维度方向上的任意第j个(j是大于或等于1的整数)切片,第j个切片的第一子切片和第二子切片可以分别对应于第三卷积核在扩展维度的维度方向上的第2j-1个切片和第2j个切片,其中,第j个切片的第一子切片可以对应于第j个切片中在通道方向上的前半数通道上的数据,并且第j个切片的第二子切片可以对应于第j个切片中在通道方向上的后半数通道上的数据。
在不同的实施例中,可以根据第一卷积运算和/或卷积神经网络加速器的硬件规格来确定第二卷积核与第三卷积核的对应关系,从而根据第三卷积核确定第二卷积核。
例如,在第一卷积运算不包括填充第一张量的操作并且卷积神经网络加速器允许卷积核在扩展维度上的维度值为偶数的情况下,第二卷积核可以与第三卷积核相同。
例如,在第一卷积运算不包括填充第一张量的操作并且卷积神经网络加速器禁止卷积核在扩展维度上的维度值为偶数的情况下,第二卷积核可以对应于在扩展维度的维度方向上按顺序将第三卷积核和一个零切片拼接在一起的结果。
例如,在第一卷积运算包括填充第一张量的操作的情况下,第二卷积核可以对应于在扩展维度的维度方向上按顺序将一个零切片和第三卷积核拼接在一起的结果。
图2至图5示出将宽度作为扩展维度并在宽度方向上执行一次扩展的示例,其中,图2示出在宽度方向上扩展第一张量T1的示例,并且图3至图5分别示出在宽度方向上根据不同情况扩展第一卷积核K1的示例。
在图2的示例中,第一张量T1的高度、宽度和通道数量分别为H、W和C,其中,W=5,即,第一张量T1在宽度方向上包括5个切片(在宽度方向上的切片也被称为“列切片”)。
如图2中的箭头EW的左侧所示,第一张量T1的每个列切片在通道方向上可以包括两个子切片,每个子切片的高度、宽度和通道数量分别为H、1和C/2。
例如,第一张量T1的第5个列切片的第一子切片5’可以对应于第5个列切片在通道方向上的前半数通道(即,前C/2个通道)上的数据,并且第一张量T1的第5个列切片的第二子切片5”可以对应于第5个列切片在通道方向上的后半数通道(即,后C/2个通道)上的数据。类似地,第一张量T1的第1个列切片可以包括第一子切片1’和第二子切片1”,第一张量T1的第2个列切片可以包括第一子切片2’和第二子切片2”,第一张量T1的第3个列切片可以包括第一子切片3’和第二子切片3”,并且第一张量T1的第4个列切片可以包括第一子切片4’和第二子切片4”。
如图2中的箭头EW的右侧所示,根据第一张量T1确定的第二张量T2的高度、宽度和通道数量分别为H、2W(即,10)和C/2,并且可以对应于在宽度方向上按顺序将第一张量T1的子切片1’、1”、2’、2”、3’、3”、4’、4”、5’和5”拼接在一起的结果。
在一个实施例中,可以按照第一张量T1的数据格式读取第一张量T1的存储数据,然后可以调整第一张量T1的各个列切片的体素并按照第二张量T2的数据格式生成第二张量T2。
在另一个实施例中,由于在存储器中的存储数据的连续性,所以在将宽度作为扩展维度的情况下,第一张量T1的存储数据实际上与第二张量T2的存储数据相同。因此,在该实施例中,可以直接按照第二张量T2的数据格式读取第一张量T1的存储数据,从而直接获得第二张量T2。
对于图2的示例中的第一张量T1和扩展EW,假设用于第一张量T1的第一卷积核K1如图3或图4或图5中的箭头EW左侧所示,其中,第一卷积核K1的高度、宽度和通道数量分别为H’、W’和C(即,与第一张量T1的通道数量相同),其中,W’=3,即,第一卷积核K1在宽度方向上包括3个切片(列切片)。
类似于第一张量T1,如图3或图4或图5中的箭头EW的左侧所示,第一卷积核K1的每个列切片在通道方向上可以包括两个子切片,每个子切片的高度、宽度和通道数为H’、1和C/2。
例如,第一卷积核K1的第3个列切片的第一子切片3’可以对应于第3个列切片在通道方向上的前半数通道(即,前C/2个通道)上的数据,并且第一卷积核K1的第3个列切片的第二子切片3”可以对应于第3个列切片在通道方向上的后半数通道(即,后C/2个通道)上的数据。
类似地,第一卷积核K1的第1个列切片可以包括第一子切片1’和第二子切片1”,并且第一卷积核K1的第2个列切片可以包括第一子切片2’和第二子切片2”。
如图3中的箭头EW的右侧所示,根据第一卷积核K1确定的第三卷积核K3的高度、宽度和通道数量分别为H’、2W’(即,6)和C/2,并且可以对应于在宽度方向上按顺序将第一卷积核K1的子切片1’、1”、2’、2”、3’和3”拼接在一起的结果。
类似于根据第一张量T1确定第二张量T2,在一个实施例中,可以按照第一卷积核K1的数据格式读取第一卷积核K1的存储数据,然后可以调整第一卷积核K1的各个列切片的体素并按照第三卷积核K3的数据格式生成第三卷积核K3。在另外的实施例中,可以利用在存储器中的存储数据的连续性,直接按照第三卷积核K3的数据格式读取第一卷积核K1的存储数据,从而直接获得第三卷积核K3。
然后,例如,在基于第一张量T1和第一卷积核K1的第一卷积运算不包括在宽度方向上填充第一张量T1的操作并且卷积神经网络加速器允许卷积核的宽度为偶数的情况下,如图3中的箭头EW的右侧所示,第二卷积核K2可以与第三卷积核K3相同,并且第二卷积核K2的高度、宽度和通道数量分别为H’、2W’(即,6)和C/2。
例如,在基于第一张量T1和第一卷积核K1的第一卷积运算不包括在宽度方向上填充第一张量T1的操作并且卷积神经网络加速器禁止卷积核的宽度为偶数的情况下,如图4中的箭头EW的右侧所示,可以在宽度方向上顺序将第三卷积核K3和一个零切片(列切片)P拼接在一起,从而获得第二卷积核K2,其中,零切片P可以是高度、宽度和通道数量分别为H’、1和C/2,并且零切片P中的每个体素的值为0,并且第二卷积核K2的高度、宽度和通道数量分别为H’、2W’+1(即,7)和C/2。
例如,在基于第一张量T1和第一卷积核K1的第一卷积运算包括在宽度方向上填充第一张量T1的操作的情况下,如图5中的箭头EW的右侧所示,可以在宽度方向上顺序将一个零切片(列切片)P和第三卷积核K3拼接在一起,从而获得第二卷积核K2,并且第二卷积核K2的高度、宽度和通道数量分别为H’、2W’+1(即,7)和C/2。
图6至图9示出将高度作为扩展维度并在高度方向上执行一次扩展的示例,其中,图6示出在高度方向上扩展第一张量T1的示例,并且图7至图9分别示出在高度方向上根据不同情况扩展第一卷积核K1的示例。
在图6的示例中,第一张量T1的高度、宽度和通道数量分别为H、W和C,其中,H=5,即,第一张量T1在高度方向上包括5个切片(在高度方向上的切片也被称为“行切片”)。
如图6中的箭头EH的左侧所示,第一张量T1的每个行切片在通道方向上可以包括两个子切片,每个子切片的高度、宽度和通道数量分别为1、W和C/2。
例如,第一张量T1的第1个行切片的第一子切片1’可以对应于第1个行切片在通道方向上的前半数通道(即,前C/2个通道)上的数据,并且第一张量T1的第1个行切片的第二子切片1”可以对应于第1个行切片在通道方向上的后半数通道(即,后C/2个通道)上的数据。类似地,第一张量T1的第2个行切片可以包括第一子切片2’和第二子切片2”,第一张量T1的第3个行切片可以包括第一子切片3’和第二子切片3”,第一张量T1的第4个行切片可以包括第一子切片4’和第二子切片4”,并且第一张量T1的第5个行切片可以包括第一子切片5’和第二子切片5”。
如图6中的箭头EH的右侧所示,根据第一张量T1确定的第二张量T2的高度、宽度和通道数量分别为2H(即,10)、W和C/2,并且可以对应于在高度方向上按顺序将第一张量T1的子切片1’、1”、2’、2”、3’、3”、4’、4”、5’和5”拼接在一起的结果。
可以按照第一张量T1的数据格式读取第一张量T1的存储数据,然后调整第一张量T1的各个行切片的的体素并按照第二张量T2的数据格式生成第二张量T2。
对于图6的示例中的第一张量T1和扩展EH,假设用于第一张量T1的第一卷积核K1如图7或图8或图9中的箭头EH左侧所示,其中,第一卷积核K1的高度、宽度和通道数量分别为H’、W’和C(即,与第一张量T1的通道数量相同),其中,H’=3,即,第一卷积核K1在高度方向上包括3个切片(行切片)。
类似于第一张量T1,如图7或图8或图9中的箭头EH的左侧所示,第一卷积核K1的每个行切片在通道方向上可以包括两个子切片,每个子切片的高度、宽度和通道数为1、W’和C/2。
例如,第一卷积核K1的第1个行切片的第一子切片1’可以对应于第1个行切片在通道方向上的前半数通道(即,前C/2个通道)上的数据,并且第一卷积核K1的第1个行切片的第二子切片1”可以对应于第1个行切片在通道方向上的后半数通道(即,后C/2个通道)上的数据。类似地,第一卷积核K1的第2个行切片可以包括第一子切片2’和第二子切片2”,并且第一卷积核K1的第3个行切片可以包括第一子切片3’和第二子切片3”。
如图7中的箭头EH的右侧所示,根据第一卷积核K1确定的第三卷积核K3的高度、宽度和通道数量分别为2H’(即,6)、W’和C/2,并且可以对应于在高度方向上按顺序将第一卷积核K1的子切片1’、1”、2’、2”、3’和3”拼接在一起的结果。
类似于根据第一张量T1确定第二张量T2,可以按照第一卷积核K1的数据格式读取第一卷积核K1的存储数据,然后调整第一卷积核K1的各个行切片的体素并按照第三卷积核K3的数据格式生成第三卷积核K3。
然后,例如,在基于第一张量T1和第一卷积核K1的第一卷积运算不包括在高度方向上填充第一张量T1的操作并且卷积神经网络加速器允许卷积核的高度为偶数的情况下,如图7中的箭头EH的右侧所示,第二卷积核K2可以与第三卷积核K3相同,并且第二卷积核K2的高度、宽度和通道数量分别为2H’(即,6)、W’和C/2。
例如,在基于第一张量T1和第一卷积核K1的第一卷积运算不包括在高度方向上填充第一张量T1的操作并且卷积神经网络加速器禁止卷积核的高度为偶数的情况下,如图8中的箭头EH的右侧所示,可以在高度方向上顺序将第三卷积核K3和一个零切片(行切片)P拼接在一起,从而获得第二卷积核K2,其中,零切片P可以是高度、宽度和通道数量分别为1、W’和C/2,并且零切片P中的每个体素的值为0,并且第二卷积核K2的高度、宽度和通道数量分别为2H’+1(即,7)、W’和C/2。
例如,在基于第一张量T1和第一卷积核K1的第一卷积运算包括在高度方向上填充第一张量T1的操作的情况下,如图9中的箭头EH的右侧所示,可以在高度方向上顺序将一个零切片(行切片)P和第三卷积核K3拼接在一起,从而获得第二卷积核K2,并且第二卷积核K2的高度、宽度和通道数量分别为2H’+1(即,7)、W’和C/2。
图2至图9示出在宽度方向或高度方向上扩展张量数据和相应的卷积核的示例。在另外的示例中,可以在宽度和高度两个方向上扩展张量数据和相应的卷积核的示例。
例如,可以先在宽度方向上扩展第一张量T1和第一卷积核K1,并获得中间张量TW和中间卷积核KW。中间卷积核KW在宽度方向上的步长可以成为第一卷积核K1在宽度方向上的步长的两倍,在高度方向上的步长与第一卷积核K1在高度方向上的步长相同。然后,可以在高度方向上扩展中间张量TW和中间卷积核KW,从而获得第二张量T2和第二卷积核K2。第二卷积核K2在宽度方向上的步长和在高度方向上的步长分别是第一卷积核K1在宽度方向上的步长和在高度方向上的步长的两倍。
例如,也可以先在高度方向上扩展第一张量T1和第一卷积核K1,并获得中间张量TH和中间卷积核KH。中间卷积核KW在高度方向上的步长可以成为第一卷积核K1在高度方向上的步长的两倍,在宽度方向上的步长与第一卷积核K1在宽度方向上的步长相同。然后,可以在宽度方向上扩展中间张量TH和中间卷积核KH,从而获得第二张量T2和第二卷积核K2。第二卷积核K2在宽度方向上的步长和在高度方向上的步长分别是第一卷积核K1在宽度方向上的步长和在高度方向上的步长的两倍。
在另外的实施例中,根据第一张量的通道数量和卷积神经网络加速器的硬件规格,可以在宽度和高度中的一个方向上执行多次例如,至少两次)扩展,也可以在宽度和高度两个方向上执行多次(例如,至少两次)扩展,例如,在宽度方向和高度方向上交替地进行扩展,或者先在宽度方向上执行一次或多次扩展、再在高度方向上执行一次或多次扩展,等等。
在宽度方向上扩展一次将使得所获得的张量和相应的卷积核的高度不变、宽度增加、通道数量减半,并且相应的卷积核在宽度方向上的步长将变为原来的2倍,而在高度方向上扩展一次将使得所获得的张量和相应的卷积核的宽度不变、高度增加、通道数量减半,并且相应的卷积核在高度方向上的步长将变为原来的2倍。
由此,可以在将张量数据和相应的卷积核提供给卷积神经网络加速器执行卷积运算之前调整张量数据和相应的卷积核的形状,使得所获得的张量数据和相应的运算参数(例如,卷积核)具有符合卷积神经网络加速器要求的规范形式,从而能够极大地提高卷积神经网络加速器的处理效率。
根据本公开的实施例的用于展开卷积神经网络的张量数据的方法(例如,示例方法100)可以在卷积神经网络编译器中执行。图10示出能够应用根据本公开的实施例的方法(例如,示例方法100)的装置的示例200。
如图10所示,示例装置200可以包括至少一个处理器PU。
根据不同的实施例,处理器PU可以是具有数据处理能力和/或指令执行能力的任何形式的处理单元,例如通用处理器CPU、图形处理器GPU、现场可编程门阵列FPGA等,也可以是专用的神经网络处理器或加速器等。处理器PU可以被配置为在启动(例如,通电)时至少执行根据本公开的实施例的方法的步骤。
另外,如图10所示,示例装置200还可以包括存储器MEM和I/O接口,并且处理器PU可以通过总线系统和/或其他形式的连接机构与存储器MEM以及I/O接口相连。
根据不同的实施例,存储器MEM可以包括各种形式的计算机可读写存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪速存储器等。可读写存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。
I/O接口可以用于向处理器PU提供参数或数据并且输出经过处理器PU处理的结果数据,并且根据不同的实施例,I/O接口可以包括有线或无线形式的网络接口、串行总线接口、红外线接口等任何适当形式的数据传输接口。
如图10所示,示例装置200可以通过I/O接口将经过扩展的张量数据和卷积核提供给卷积神经网络加速器CA。
在一个实施例中,卷积神经网络加速器CA可以包括输入缓冲器IB、权重缓冲器WB、控制器CTL、计算核心电路CC和输出缓冲器OB等部件。计算核心电路CC可以包括输入寄存器IR、一个或多个卷积引擎CE、一个或多个输出寄存器OR以及一个或多个池化电路PL等部件,其中,每个卷积引擎CE可以包括处理器阵列PA,例如可以是乘加器阵列。
应当理解,图10所示的示例装置200仅是示例性,而非限制性的。根据本公开的实施例的装置还可以具有其他部件和/或结构。
通过根据本公开的实施例的方法(例如,示例方法100)和装置(例如,示例装置200),能够获得符合卷积神经网络加速器(例如,图10的示例中的卷积神经网络加速器CA)要求的规范形式的数据和运算参数,从而能够极大地提高卷积神经网络加速器的处理效率。
另外,在一个实施例中,可以在一个或多个计算机可读取的非临时性存储介质上存储或实施能够执行根据本公开的实施例的方法的各个步骤的程序指令,使得这样的非临时性存储介质能够在被计算机或其他计算装置(例如处理器)读取时提供相应的程序指令,并使得计算机或其他计算装置能够根据所读取的程序指令执行相应的操作。根据不同的实施例,程序指令能够以诸如源代码、二进制代码、中间代码等各种形式或各种形式的不同组合而实施或存储在非临时性存储介质上。
贯穿说明书和权利要求书,除非上下文清楚地另有要求,否则措词“包括”、“包含”等应当以与排他性或穷尽性的意义相反的包括性的意义来解释,也就是说,应当以“包括但不限于”的意义来解释。另外,措词“在本文中”、“上文”、“下文”以及相似含义的措词在本申请中使用时应当指作为整体的本申请,而不是本申请的任何具体部分。在上下文允许时,在使用单数或复数的以上描述中的措词也可以分别包括复数或单数。关于在提及两个或多个项目的列表时的措词“或”,该措词涵盖该措词的以下解释中的全部:列表中的任何项目,列表中的所有项目,以及列表中的项目的任何组合。
虽然已经描述了本公开的一些实施例,但是这些实施例仅作为示例而呈现,而不打算限制本公开的范围。实际上,在本文中所描述的方法和系统可以采用多种其他形式来实施。另外,可以在不脱离本公开的范围的情况下,在本文中所描述的方法和装置的形式上做出各种省略、替换和改变。
Claims (10)
1.一种用于展开卷积神经网络的张量数据的方法,包括:
根据第一张量和卷积神经网络加速器的硬件规格确定扩展维度;
根据所述第一张量确定第二张量,所述第二张量在所述扩展维度上的维度值和通道数量分别是所述第一张量在所述扩展维度上的维度值的两倍和所述第一张量的通道数量的一半;以及
根据用于所述第一张量的第一卷积核确定用于所述第二张量的第二卷积核,基于所述第一卷积核和所述第一张量的第一卷积运算的结果与基于所述第二卷积核和所述第二张量的第二卷积运算的结果相同。
2.根据权利要求1所述的方法,所述第一卷积核在所述扩展维度的维度方向上的步长为1,并且所述第二卷积核在所述扩展维度的维度方向上的步长为2。
3.根据权利要求1所述的方法,其中,对于所述第一张量在所述扩展维度的维度方向上的任意第i个切片,i是大于或等于1的整数,所述第i个切片的第一子切片和第二子切片分别对应于所述第二张量在所述扩展维度的维度方向上的第2i-1个切片和第2i个切片,所述第一子切片对应于所述第i个切片中在通道方向上的前半数通道上的数据,并且所述第二子切片对应于所述第i个切片中在通道方向上的后半数通道上的数据。
4.根据权利要求1所述的方法,其中,所述第二卷积核取决于第三卷积核,对于所述第一卷积核在所述扩展维度的维度方向上的任意第j个切片,j是大于或等于1的整数,所述第j个切片的第一子切片和第二子切片分别对应于所述第三卷积核在所述扩展维度的维度方向上的第2j-1个切片和第2j个切片,所述第一子切片对应于所述第j个切片中在通道方向上的前半数通道上的数据,并且所述第二子切片对应于所述第j个切片中在通道方向上的后半数通道上的数据。
5.根据权利要求4所述的方法,其中,在所述第一卷积运算不包括填充所述第一张量的操作并且所述卷积神经网络加速器允许卷积核在所述扩展维度上的维度值为偶数的情况下,所述第二卷积核与所述第三卷积核相同。
6.根据权利要求4所述的方法,其中,在所述第一卷积运算不包括填充所述第一张量的操作并且所述卷积神经网络加速器禁止卷积核在所述扩展维度上的维度值为偶数的情况下,所述第二卷积核对应于在所述扩展维度的维度方向上按顺序将所述第三卷积核和一个零切片拼接在一起的结果。
7.根据权利要求4所述的方法,其中,在所述第一卷积运算包括在所述扩展维度的维度方向上填充所述第一张量的操作的情况下,所述第二卷积核对应于在所述扩展维度的维度方向上按顺序将一个零切片和所述第三卷积核拼接在一起的结果。
8.根据权利要求1至7中的任一项所述的方法,其中,所述扩展维度包括宽度或高度。
9.一种计算机可读取的非临时存储介质,在其上存储有程序指令,所述程序指令在被执行时执行根据权利要求1至8中的任一项所述的方法。
10.一种用于展开卷积神经网络的张量数据的装置,包括:
处理器,被配置为在启用时至少执行根据权利要求1至8中的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811027026.XA CN109190758B (zh) | 2018-09-04 | 2018-09-04 | 用于展开卷积神经网络的张量数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811027026.XA CN109190758B (zh) | 2018-09-04 | 2018-09-04 | 用于展开卷积神经网络的张量数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109190758A CN109190758A (zh) | 2019-01-11 |
CN109190758B true CN109190758B (zh) | 2021-06-15 |
Family
ID=64914357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811027026.XA Active CN109190758B (zh) | 2018-09-04 | 2018-09-04 | 用于展开卷积神经网络的张量数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109190758B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656623B (zh) * | 2019-03-13 | 2019-06-14 | 北京地平线机器人技术研发有限公司 | 执行卷积运算操作的方法及装置、生成指令的方法及装置 |
CN110046116B (zh) * | 2019-04-23 | 2020-08-21 | 上海燧原智能科技有限公司 | 一种张量填充方法、装置、设备及存储介质 |
CN110378471B (zh) * | 2019-07-24 | 2021-06-01 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN110443357B (zh) * | 2019-08-07 | 2020-09-15 | 上海燧原智能科技有限公司 | 卷积神经网络计算优化方法、装置、计算机设备及介质 |
CN110263923B (zh) * | 2019-08-12 | 2019-11-29 | 上海燧原智能科技有限公司 | 张量卷积计算方法及系统 |
EP4026057A4 (en) * | 2019-09-10 | 2023-02-15 | Huawei Technologies Co., Ltd. | METHOD AND DEVICE FOR GENERATION OF ARCHITECTURE-SPECIFIC FOLDING GRADIENT CORE |
CN111882029A (zh) * | 2020-06-22 | 2020-11-03 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法及装置 |
CN111860780A (zh) * | 2020-07-10 | 2020-10-30 | 逢亿科技(上海)有限公司 | 不规则卷积核卷积神经网络硬件加速系统及计算方法 |
WO2023092383A1 (en) * | 2021-11-25 | 2023-06-01 | Intel Corporation | Apparatus, method, device and medium for accelerating computation of process engine |
CN114625378A (zh) * | 2022-03-28 | 2022-06-14 | 北京地平线机器人技术研发有限公司 | 神经网络模型的编译方法、装置及计算机可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127297A (zh) * | 2016-06-02 | 2016-11-16 | 中国科学院自动化研究所 | 基于张量分解的深度卷积神经网络的加速与压缩方法 |
CN107516129A (zh) * | 2017-08-01 | 2017-12-26 | 北京大学 | 基于维度自适应的Tucker分解的深度网络压缩方法 |
CN107633295A (zh) * | 2017-09-25 | 2018-01-26 | 北京地平线信息技术有限公司 | 用于适配神经网络的参数的方法和装置 |
CN107729994A (zh) * | 2017-11-28 | 2018-02-23 | 北京地平线信息技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
CN107832842A (zh) * | 2017-11-28 | 2018-03-23 | 北京地平线信息技术有限公司 | 针对折叠特征数据执行卷积运算的方法和装置 |
CN107844827A (zh) * | 2017-11-28 | 2018-03-27 | 北京地平线信息技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
CN108154194A (zh) * | 2018-01-18 | 2018-06-12 | 北京工业大学 | 一种用基于张量的卷积网络提取高维特征的方法 |
CN108229672A (zh) * | 2018-02-13 | 2018-06-29 | 北京旷视科技有限公司 | 一种深度神经网络及其处理方法、装置和设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915322B (zh) * | 2015-06-09 | 2018-05-01 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法 |
US20180157940A1 (en) * | 2016-10-10 | 2018-06-07 | Gyrfalcon Technology Inc. | Convolution Layers Used Directly For Feature Extraction With A CNN Based Integrated Circuit |
US10733505B2 (en) * | 2016-11-10 | 2020-08-04 | Google Llc | Performing kernel striding in hardware |
US11157814B2 (en) * | 2016-11-15 | 2021-10-26 | Google Llc | Efficient convolutional neural networks and techniques to reduce associated computational costs |
CN107145939B (zh) * | 2017-06-21 | 2020-11-24 | 北京图森智途科技有限公司 | 一种低计算能力处理设备的计算机视觉处理方法及装置 |
CN108388537B (zh) * | 2018-03-06 | 2020-06-16 | 上海熠知电子科技有限公司 | 一种卷积神经网络加速装置和方法 |
-
2018
- 2018-09-04 CN CN201811027026.XA patent/CN109190758B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127297A (zh) * | 2016-06-02 | 2016-11-16 | 中国科学院自动化研究所 | 基于张量分解的深度卷积神经网络的加速与压缩方法 |
CN107516129A (zh) * | 2017-08-01 | 2017-12-26 | 北京大学 | 基于维度自适应的Tucker分解的深度网络压缩方法 |
CN107633295A (zh) * | 2017-09-25 | 2018-01-26 | 北京地平线信息技术有限公司 | 用于适配神经网络的参数的方法和装置 |
CN107729994A (zh) * | 2017-11-28 | 2018-02-23 | 北京地平线信息技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
CN107832842A (zh) * | 2017-11-28 | 2018-03-23 | 北京地平线信息技术有限公司 | 针对折叠特征数据执行卷积运算的方法和装置 |
CN107844827A (zh) * | 2017-11-28 | 2018-03-27 | 北京地平线信息技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
CN108154194A (zh) * | 2018-01-18 | 2018-06-12 | 北京工业大学 | 一种用基于张量的卷积网络提取高维特征的方法 |
CN108229672A (zh) * | 2018-02-13 | 2018-06-29 | 北京旷视科技有限公司 | 一种深度神经网络及其处理方法、装置和设备 |
Non-Patent Citations (3)
Title |
---|
High Performance Implementation of 3D Convolutional Neural Networks on a GPU;Qiang Lan 等;《Computational Intelligence and Neuroscience》;20171108;全文 * |
Tensor graph convolutional neural network;Tong Zhang 等;《arXiv》;20180327;全文 * |
TensorFlow 平台下基于深度学习的数字识别;靳涛 等;《信息技术与网络安全》;20180430;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109190758A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109190758B (zh) | 用于展开卷积神经网络的张量数据的方法和装置 | |
US20240152729A1 (en) | Convolutional neural network (cnn) processing method and apparatus performing high-speed and precision convolution operations | |
US20190130265A1 (en) | Method and apparatus for performing operations in convolutional neural network | |
KR102316670B1 (ko) | 연산 가속기 | |
US11468301B2 (en) | Method and apparatus for performing operation of convolutional layer in convolutional neural network | |
EP3407203B1 (en) | Statically schedulable feed and drain structure for systolic array architecture | |
US9886377B2 (en) | Pipelined convolutional operations for processing clusters | |
US20180260710A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
US11461632B2 (en) | Method and apparatus for adapting parameters of neural network | |
KR20200098684A (ko) | 행렬 곱셈기 | |
US20190138567A1 (en) | Hardware Implementation of Convolutional Layer of Deep Neural Network | |
KR20180012439A (ko) | 회선 신경망에서 가속기 및 이의 동작 방법 | |
KR20180109619A (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
CN109255438B (zh) | 调整张量数据的方法和装置 | |
CN109284782B (zh) | 用于检测特征的方法和装置 | |
CN113469350B (zh) | 一种适于npu的深度卷积神经网络加速方法和系统 | |
Niu et al. | 26ms inference time for resnet-50: Towards real-time execution of all dnns on smartphone | |
CN114201107A (zh) | 存储装置、操作存储装置的方法以及电子装置 | |
CN109102070B (zh) | 卷积神经网络数据的预处理方法和装置 | |
CN111125617A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
KR20200043617A (ko) | 고효율 연산 처리를 위한 인공 신경망 모듈 및 이의 스케쥴링 방법 | |
CN114118348A (zh) | 加速器、操作加速器的方法以及包括加速器的电子装置 | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
US20210357730A1 (en) | Multi-size convolutional layer background | |
CN113821471A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |