CN107832839A - 执行卷积神经网络中的运算的方法和装置 - Google Patents
执行卷积神经网络中的运算的方法和装置 Download PDFInfo
- Publication number
- CN107832839A CN107832839A CN201711041806.5A CN201711041806A CN107832839A CN 107832839 A CN107832839 A CN 107832839A CN 201711041806 A CN201711041806 A CN 201711041806A CN 107832839 A CN107832839 A CN 107832839A
- Authority
- CN
- China
- Prior art keywords
- array
- parameter
- partial arithmetic
- operational parameter
- arithmetic result
- 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.)
- Granted
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 77
- 238000000034 method Methods 0.000 title claims abstract description 47
- 241001269238 Data Species 0.000 claims abstract description 22
- 230000006835 compression Effects 0.000 claims description 16
- 238000007906 compression Methods 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000007935 neutral effect Effects 0.000 description 8
- 241000208340 Araliaceae Species 0.000 description 5
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 5
- 235000003140 Panax quinquefolius Nutrition 0.000 description 5
- 238000003491 array Methods 0.000 description 5
- 235000008434 ginseng Nutrition 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012938 design process Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000001537 neural effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000005194 fractionation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- 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
-
- 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
-
- 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/0495—Quantised networks; Sparse networks; Compressed networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
- Apparatus For Radiation Diagnosis (AREA)
Abstract
本申请涉及用于执行卷积神经网络中的运算的方法和装置,该方法包括:拆分卷积神经网络中的选定层的权重参数以获得包含多个运算参数的运算参数阵列;分别使用所获得的运算参数阵列中的每个运算参数执行选定层的运算,以获得包括多个部分运算结果的部分运算结果阵列;以及基于所获得的部分运算结果阵列,生成选定层的一个或多个输出数据。通过该方法能够提高卷积神经网络中的运算的执行效率。
Description
技术领域
本申请总体上涉及人工卷积神经网络的技术领域,并且具体地涉及执行卷积神经网络中的运算的方法和装置。
背景技术
基于卷积神经网络的深度学习技术已经被广泛地应用于图像识别、视频分析、自然语言处理、辅助驾驶等不同的领域。
卷积神经网络可以包含多个层。在每个层中,使用该层的权重参数对该层的输入数据(也被称为输入特征数据)执行该层的卷积运算,以获得相应的输出数据(也被称为激活值或输出特征数据)。
在卷积神经网络中,每个特征数据可以具有一定的宽度和高度,并且可以具有一个或多个通道,每个通道可以携带该特征数据的一类信息。相应地,每个层的权重参数可以包含一个或多个核(也可以称为卷积核),所有的核可以具有相同的宽度、相同的高度和相同的深度(也被称为通道的数量)。换句话说,每个层的权重参数可以具有例如宽度、高度、深度和核的数量等维度。
期望能够使用诸如通用的中央处理器(CPU)、图形处理器(GPU)或专用加速器等硬件高效地执行卷积神经网络中的运算。然而,随着卷积神经网络的前向推理过程的进行,每层的权重参数的大小可能越来越大,例如,可能具有更多数量的通道和/或更多数量的核。在某一层的权重参数很大而无法被完全地缓存在与用于执行神经网络中的运算的处理器相关联的高速存储器(例如,处理器内或与处理器相关联的高速缓冲存储器)中,导致无法正确地和/或高效地执行该层的运算。
发明内容
本申请涉及一种执行卷积神经网络中的运算的方法,其包括:在深度和核的数量之中的至少一个维度上拆分卷积神经网络中的选定层的权重参数以获得包含多个运算参数的运算参数阵列,运算参数阵列的每行的所有运算参数来自权重参数的核的集合的同一子集并且没有相同的通道,并且每列的每个运算参数分别来自权重参数的核的集合的不同子集并且具有相同的一个或多个通道;分别使用运算参数阵列中的每个运算参数,对选定层的输入数据中的与所使用的运算参数的通道相对应的通道上的数据执行选定层的运算,以获得包括多个部分运算结果的部分运算结果阵列;以及基于部分运算结果阵列,生成选定层的一个或多个输出数据。
另外,本申请还涉及一种执行卷积神经网络中的运算的装置,其包括被配置为至少执行上述方法的一个或多个处理器。
另外,本申请还涉及一种执行卷积神经网络中的运算的装置,其包括:拆分器,被配置为在深度和核的数量之中的至少一个维度上拆分卷积神经网络中的选定层的权重参数以获得包含多个运算参数的运算参数阵列,运算参数阵列的每行的所有运算参数来自权重参数的核的集合的同一子集并且没有相同的通道,并且每列的每个运算参数分别来自权重参数的核的集合的不同子集并且具有相同的一个或多个通道;运算器,被配置为分别使用运算参数阵列中的每个运算参数,对选定层的输入数据中的与所使用的运算参数的通道相对应的通道上的数据执行选定层的运算,以获得包括多个部分运算结果的部分运算结果阵列;以及生成器,被配置为基于部分运算结果阵列,生成选定层的一个或多个输出数据。
另外,本申请还涉及一种非临时性存储介质,在其上存储有程序指令,所述程序指令在被计算装置执行时执行上述方法。
通过根据本申请的实施例的方法,可以提高硬件的运算效率或者提高硬件的利用率,并且还可以回避硬件对于参数的大小的限制。
附图说明
图1示出根据本申请的实施例的示例方法的流程图。
图2示出根据本申请的实施例的权重参数和相应的阵列表示的示例。
图3示出根据本申请的实施例的拆分权重参数的方式的示例。
图4示出根据本申请的实施例的根据输入数据拆分权重参数的示例。
图5示出根据本申请的实施例的使用拆分出的运算参数执行运算的示例。
图6示出根据本申请的实施例的生成输出数据的示例。
图7示出根据本申请的实施例的生成输出数据的示例。
图8示出根据本申请的实施例的生成输出数据的示例。
图9示出根据本申请的实施例的生成输出数据的示例。
图10示出根据本申请的实施例的生成输出数据的示例。
图11示出根据本申请的实施例的可用于实现根据本申请的实施例的方法的装置的框图。
图12示出根据本申请的实施例的可用于实现根据本申请的实施例的方法的装置的框图。
具体实施方式
图1示出根据本申请的实施例的示例方法100的流程图。如图1所示,针对卷积神经网络中的选定层,在步骤S101中,在深度和核的数量之中的至少一个维度上拆分卷积神经网络中的选定层的权重参数,以获得包含多个运算参数的运算参数阵列。然后,在步骤S105中,分别使用通过步骤S101所获得的运算参数阵列中的每个运算参数,对选定层的输入数据中的与所使用的运算参数的通道相对应的通道上的数据执行选定层的运算,以获得包括多个部分运算结果的部分运算结果阵列。然后,在步骤S110中,基于通过步骤S105所获得的部分运算结果阵列,生成选定层的一个或多个输出数据。
在一个实施例中,可以在卷积神经网络的设计时预先确定或知道卷积神经网络中的每个层所要执行的运算以及每个层中所要使用的权重参数的大小和在各个维度上的量值,并且可以预先确定或知道在执行卷积神经网络的过程中用于对各个层中的权重参数进行的高速缓存的高速存储器的容量或者在高速存储器中为每一层的权重参数或同时为多个层的权重参数预留的容量,或者在知道用于支持卷积神经网络的乘加运算的硬件电路中的乘法器和加法器的布置方式的情况下,可以预先确定或知道需要同时处理多少组的核的运算或者多少组的通道的运算以便能够获得较好的或所期望的硬件利用率或执行效率。
由此,可以根据诸如高速存储器的容量、高速存储器中预留给权重参数的容量、乘法器和加法器的布置方式、运算的并行度要求、卷积神经网络的设计、执行卷积神经网络的运算的进程或线程的上限或下限、针对某种或某些应用场景的经验数据等一个或多个方面,预先确定出需要对卷积神经网络中的哪些层的权重参数进行拆分,或者说,可以预先确定出需要选择卷积神经网络中的哪些层作为步骤S101中的选定层。
在另外的实施例中,也可以在卷积神经网络的运算过程中,例如在实际地执行某一层的运算之前,根据诸如高速存储器的容量、高速存储器中预留给权重参数的容量、高速存储器中当前可用于该层的权重参数的容量、乘法器和加法器的布置方式、运算的并行度要求、卷积神经网络的设计、处理器和/或操作系统的当前的性能等一个或多个方面,确定需要对该层的权重参数进行拆分。如果需要,则可以将该层作为步骤S101中的选定层。
在另外的实施例中,也可以在卷积神经网络的运算过程中,例如在实际地执行某个中间层的运算之前,根据诸如高速存储器的容量、高速存储器中预留给权重参数的容量、高速存储器中当前可用于该层的权重参数的容量、乘法器和加法器的布置方式、运算的并行度要求、卷积神经网络的设计、处理器和/或操作系统的当前的性能等一个或多个方面,确定在从该中间层开始的连续的多个层中,需要对哪个(些)层的权重参数进行拆分,并将哪个(些)层作为选定层。
在另外的实施例中,在卷积神经网络中,通常可能是靠后的一层或多层具有较大的权重参数,因此可以在卷积神经网络的设计过程中,将在卷积神经网络中靠后的一层或多层作为步骤S101中的选定层。
在另外的实施例中,如果卷积神经网络的某一层接收到多个部分输入数据,所接收到的多个部分输入数据的集合对应于一个完整的输入数据,并且任何两个部分输入数据均不具有相同的通道,换句话说,如果将一个输入特征数据在深度的方向上拆分成多个部分输入数据,并将多个部分输入数据分别提供给该层,则可以将该层作为步骤S101中的选定层。
在另外的实施例中,也可以不进行上述的任何预先的或实时的判断,而是对卷积神经网络中的每个层的权重参数都进行拆分。换句话说,卷积神经网络中的每个层都可以作为步骤S101中的选定层。
另外,可以在步骤S101中判断卷积神经网络中的某个(些)层是否可以作为选定层。
为了使拆分前后的运算结果保持一致,可以选择在深度(即,通道方向)和核的数量之中的至少一个维度上对选定层的权重参数进行拆分。如果将一个权重参数视为在深度和核的数量这两个维度上的阵列,其中,每行对应于每个核的不同的通道,每列对应于各个核在相同的通道上的部分,则在深度和核的数量之中的至少一个维度上对选定层的权重参数进行拆分可以被视为在行的方向和/或列的方向上将该阵列划分成若干部分。
图2示出根据本申请的实施例的权重参数和相应的阵列表示的示例。
在图2中的箭头的左侧示出具有三个核K1至K3的权重参数,每个核(K1或K2或K3)具有三个通道C1至C3,其中,核K1的三个通道分别表示为K1_C1、K1_C2和K1_C3,核K2的三个通道分别表示为K2_C1、K2_C2和K2_C3,核K3的三个通道分别表示为K3_C1、K3_C2和K3_C3。
在图2中的箭头的右侧示出在深度和核的数量这两个维度上的阵列表示,其中,该阵列具有三行和三列,核K1的三个通道K1_C1、K1_C2和K1_C3对应于阵列的第一行,核K2的三个通道K2_C1、K2_C2和K2_C3对应于阵列的第二行,核K3的三个通道K3_C1、K3_C2和K3_C3对应于阵列的第三行,并且K1至K3中与通道C1相对应的部分K1_C1、K2_C1和K2_C1对应于阵列的第一列,K1至K3中与通道C2相对应的部分K1_C2、K2_C2和K2_C2对应于阵列的第二列,并且K1至K3中与通道C3相对应的部分K1_C3、K2_C3和K2_C3对应于阵列的第三列。
应当理解,卷积神经网络中的权重参数不局限于图2所示的示例,而是可以具有任意数量的核以及任意的通道数量。
这样,如前文所述,在深度和核的数量之中的至少一个维度上对选定层的权重参数进行拆分可以被视为在行的方向和/或列的方向上对相应的阵列进行拆分。
图3示出根据本申请的实施例的拆分权重参数的方式的示例。
在一个示例中,可以如图3中的(a)所示那样地将图2中的阵列按照列划分成3个部分(这相当于在深度的维度上将权利参数拆分成3个部分),从而形成具有1行和3列的运算参数阵列,其中包括3个运算参数,分别对应在于核K1至K3中的对应于通道C1的部分、核K1至K3中的对应于通道C2的部分以及核K1至K3中的对应于通道C3的部分。
在另外的示例中,可以如图3中的(b)所示那样地将图2中的阵列按照行划分成3个部分(这相当于在核的数量的维度上将权利参数拆分成3个部分),从而形成具有3行和1列的运算参数阵列,其中包括3个运算参数,分别对应于核K1至K3。
在另外的示例中,可以如图3中的(c)所示那样地将图2中的阵列划分成3行3列(这相当于同时在核的数量和深度两个维度上将权利参数拆分成9个部分),从而形成具有3行和3列的运算参数阵列,其中包括9个运算参数,分别对应于一个核的一个通道。
在另外的示例中,可以如图3中的(d)所示那样地划分图2中的阵列以形成具有1行和2列的运算参数阵列(这相当于在深度的维度上将权利参数拆分成2个部分),其中包括2个运算参数,第1列的运算参数(图3中表示为C1)对应于核K1至K3在通道C1上的部分,第2列的运算参数对应于核K1至K3在通道C1和C2上的部分(图3中表示为K1_(C2-C3)、K2_(C2-C3)和K3_(C2-C3))。
在另外的示例中,可以如图3中的(e)所示那样地划分图2中的阵列以形成具有2行和3列的运算参数阵列(这相当于同时在深度和核的数量这两个维度上将权利参数拆分成6个部分),其中包括6个运算参数,第1行的运算参数分别对应于核K1和K2在通道C1、C2和C3上的部分,第1行的运算参数分别对应于核K3在通道C1、C2和C3上的部分。
在另外的示例中,可以如图3中的(f)所示那样地划分图2中的阵列从而形成具有2行和2列的运算参数阵列(这相当于同时在深度和核的数量这两个维度上将权利参数拆分成6个部分),其中包括4个运算参数,第1行第1列的运算参数对应于核K1在通道C1和C2上的部分(图3中表示为K1_(C1-C2)),第1行第2列的运算参数对应于核K1在通道C3上的部分,第2行第1列的运算参数对应于核K2和K3在通道C1和C2上的部分(图3中表示为K2_(C1-C2)和K3_(C1-C2)),第2行第2列的运算参数对应于核K2和K3在通道C3上的部分。
应当理解,在深度和核的数量之中的至少一个维度上拆分权重参数的方式不限于图3所示的示例。可以采用任何适当的方式在深度和核的数量之中的至少一个维度上拆分权重参数来获得包含多个运算参数的运算参数阵列,并且可以使运算参数阵列的每行的所有运算参数均来自权重参数的核的集合的同一子集并且没有相同的通道,并且运算参数阵列的每列的每个运算参数分别来自权重参数的核的集合的不同子集并且具有相同的一个或多个通道。
如前文所述,在步骤S101中,可以根据很多不同的条件来确定是否对选定层的参数进行拆分,相应地,也可以根据这些条件来判断拆分之后所获得的运算参数阵列是否符合要求。
在一个实施例中,在步骤S101中,可以在权重参数的大小超出第一阈值的情况下拆分权重参数,并且可以使所获得的运算参数阵列中的每个运算参数的大小均小于或等于第一阈值。
在一个示例中,可以根据用于对权重参数进行高速缓存的高速存储器的容量或者高速存储器的可用于存储权重参数的容量来设置第一阈值。
在另外的示例中,也可以将第一阈值设置为高速存储器的容量的1/5、1/2、2/3,或者可以将第一阈值设置为等于高速存储器的容量。
在另外的示例中,还可以由卷积神经网络的设计人员在卷积神经网络的设计过程中根据经验或统计数据并结合对卷积神经网络的应用场景等方面的考虑来设置第一阈值,例如可以设置为32kb、64kb、128kb等。
应当理解,第一阈值的设置方式不限于上述示例。可以根据需要,将第一阈值设置为任何适当的值或期望的值。另外,可以针对整个卷积神经网络设置一个第一阈值,并将该第一阈值应用于每个层;也可以针对每个选定层分别设置相应的第一阈值。另外,第一阈值可以是固定的值,也可以在卷积神经网络的前向推理过程中根据系统(包括硬件和/或软件)的情况(例如,性能、可用资源等)和/或学习的情况(例如,卷积神经网络中的每层的参数也可以是在前向推理过程中通过学习而动态调整的)来更新。
在另外的实施例中,在步骤S101中,可以在权重参数的核的数量超出第二阈值的情况下拆分权重参数,并且可以使所获得的运算参数阵列中的每个运算参数的核的数量均小于或等于第二阈值。
在一个示例中,可以由卷积神经网络的设计人员在卷积神经网络的设计过程中根据经验或统计数据并结合对卷积神经网络的应用场景等方面的考虑来设置第二阈值,例如可以设置为8、32、64等。
在另外的示例中,也可以根据高速存储器的容量与每个核的大小来设置第二阈值。例如,可以将第二阈值的值设置为小于或等于高速存储器的可用于存储权重参数的容量除以每个核的大小的结果值。
在另外的示例中,如果基于支持神经网络的计算的硬件相关的参数,确定在设计N个卷积核的情况下,软件和/或硬件方面的成本和性能相对较好,例如,可以省去加法器的选择/使能电路的设计,或者可以取得相对较好的处理上的并行度,则可以将第二阈值设置为N。例如,假设权重参数的核的数量为K并且第二阈值为N,可以使运算参数阵列具有K/N行并且每行中的每个运算参数的核小于或等于N,这样可以有利于在针对每个运算参数使用并行的方式执行运算时提高并行度或者资源的利用率。
应当理解,第二阈值的设置方式不限于上述示例。可以根据需要,将第二阈值设置为任何适当的值或期望的值。另外,可以针对整个卷积神经网络设置一个第二阈值,并将该第二阈值应用于每个层;也可以针对每个选定层分别设置相应的第二阈值。另外,第二阈值可以是固定的值,也可以在卷积神经网络的前向推理过程中根据系统(包括硬件和/或软件)的情况(例如,性能、可用资源等)和/或学习的情况(例如,卷积神经网络中的每层的参数也可以是在前向推理过程中通过学习而动态调整的)来更新。
在另外的实施例中,在步骤S101中,可以在权重参数的核的数量大于或等于第一预定数量的情况下拆分权重参数,并且可以使所获得的运算参数阵列的行数等于第一预定数量的倍数。
在一个示例中,可以根据用于处理卷积神经网络中的运算的处理器(例如,CPU、GPU或专用的加速器等)的数量来设置第一预定数量。
在另外的示例中,可以根据高速存储器的容量(例如,总容量或者预留用于存储权重参数的容量)除以卷积神经网络中的某个权重参数(例如,大小最大的权重参数或者大小最小的权重参数)的核的大小所得到的结果来设置第一预定数量。
在另外的示例中,如果基于支持神经网络的计算的硬件相关的参数,确定在设计例如N个卷积核的情况下,软件和/或硬件方面的成本和性能相对较好,例如,可以省去加法器的选择/使能电路的设计,或者可以取得相对较好的处理上的并行度,则可以将第一预定数量设置为N。这样的设置方式可以有利于在针对每行的运算参数使用并行的方式执行运算时提高并行度或者资源的利用率。
应当理解,第一预定数量的设置方式不限于上述示例。可以根据需要,将第一预定数量设置为任何适当的值或期望的值。另外,可以针对整个卷积神经网络设置一个第一预定数量,并将该第一预定数量应用于每个层;也可以针对每个选定层分别设置相应的第一预定数量。另外,第一预定数量可以是固定的值,也可以在卷积神经网络的前向推理过程中根据系统(包括硬件和/或软件)的情况(例如,性能、可用资源等)和/或学习的情况(例如,卷积神经网络中的每层的参数也可以是在前向推理过程中通过学习而动态调整的)来更新。
在另外的实施例中,在步骤S101中,可以在权重参数的通道的数量超出第三阈值的情况下拆分权重参数,并且可以使所获得的运算参数阵列中的每个运算参数的通道的数量均小于或等于第三阈值。
在一个示例中,可以由卷积神经网络的设计人员在卷积神经网络的设计过程中根据经验或统计数据并结合对卷积神经网络的应用场景等方面的考虑来设置第三阈值,例如可以设置为8、32、64等。
在另外的示例中,可以根据高速存储器的容量(例如,总容量或者预留用于存储权重参数的容量)除以卷积神经网络中的某个权重参数(例如,大小最大的权重参数或者大小最小的权重参数)在单个通道上的大小所得到的结果来设置第三阈值。
在另外的示例中,在支持神经网络的乘加运算的硬件电路中,可以包括一组或多组乘法器和加法器的布置,每组乘法器和加法器的布置中可以包括一个或多个乘法器以及一个或多个加法器。基于每组乘法器和加法器的布置,确定在权重参数的深度值为M时,乘法器和加法器的使用率最高(或相对较高),并且例如可以省去选择/使能电器的设计/布置,则可以将第三阈值设置为M。例如,假设权重参数的深度为D并且第三阈值为M,则可以使运算参数阵列具有D/M列并且每列中的每个运算参数的深度小于或等于M,这样可以有利于在针对每个运算参数使用并行的方式执行运算时提高并行度或者资源的利用率。
应当理解,第三阈值的设置方式不限于上述示例。可以根据需要,将第三阈值设置为任何适当的值或期望的值。另外,可以针对整个卷积神经网络设置一个第三阈值,并将该第三阈值应用于每个层;也可以针对每个选定层分别设置相应的第三阈值。另外,第三阈值可以是固定的值,也可以在卷积神经网络的前向推理过程中根据系统(包括硬件和/或软件)的情况(例如,性能、可用资源等)和/或学习的情况(例如,卷积神经网络中的每层的参数也可以是在前向推理过程中通过学习而动态调整的)来更新。
在另外的实施例中,在步骤S101中,可以在权重参数的通道的数量大于或等于第二预定数量的情况下拆分权重参数,并且可以使所获得的运算参数阵列的列数等于第二预定数量的倍数。
在一个示例中,可以根据用于处理卷积神经网络中的运算的处理器(例如,CPU、GPU或专用的加速器等)的数量来设置第二预定数量。
在另外的示例中,可以根据高速存储器的容量(例如,总容量或者预留用于存储权重参数的容量)除以卷积神经网络中的某个权重参数(例如,大小最大的权重参数或者大小最小的权重参数)的深度所得到的结果来设置第二预定数量。
在另外的示例中,在支持神经网络的乘加运算的硬件电路中,可以包括一组或多组乘法器和加法器的布置,每组乘法器和加法器的布置中可以包括一个或多个乘法器以及一个或多个加法器。基于每组乘法器和加法器的布置,确定在权重参数的深度值为M时,乘法器和加法器的使用率最高(或相对较高),并且例如可以省去选择/使能电器的设计/布置,则可以将第二预定数量设置为M。这样的设置方式可以有利于在针对每列的运算参数使用并行的方式执行运算时提高并行度或者资源的利用率。
应当理解,第二预定数量的设置方式不限于上述示例。可以根据需要,将第二预定数量设置为任何适当的值或期望的值。另外,可以针对整个卷积神经网络设置一个第二预定数量,并将该第二预定数量应用于每个层;也可以针对每个选定层分别设置相应的第二预定数量。另外,第二预定数量可以是固定的值,也可以在卷积神经网络的前向推理过程中根据系统(包括硬件和/或软件)的情况(例如,性能、可用资源等)和/或学习的情况(例如,卷积神经网络中的每层的参数也可以是在前向推理过程中通过学习而动态调整的)来更新。
在另外的实施例中,如果卷积神经网络的某一层接收到多个部分输入数据,所接收到的多个部分输入数据的集合对应于一个完整的输入数据,并且任何两个部分输入数据均不具有相同的通道,换句话说,如果一个输入特征数据在深度的方向上被拆分成多个部分输入数据,并将多个部分输入数据分别提供给该层,则在步骤S101中,在该层中,可以根据每个部分输入数据拆分该层的权重参数,使得所获得的运算参数阵列的列数等于所接收到的多个部分输入数据的数量,并且每列的所有运算参数与所接收到的多个部分输入数据中的一个对应于相同的一个或多个通道。
例如,如图4所示,假设在卷积神经网络中的某一层接收到两个输入数据FD1和FD2,并且可以确定FD1和FD2实际上对应于一个完整的特征数据FD的两个部分(如图4中的箭头A1所示),其中,FD1对应于FD在通道C1和C2上的部分(图4中分别表示为FD_C1和FD_C2),并且FD2对应于FD在通道C3至C5上的部分(图4中分别表示为FD_C3、FD_C4和FD_C5)。如前文所述,可以将该层作为步骤S101中的选定层,或者在步骤S101中执行上述判断并将该层作为选定层。
在这样的情况下,可以根据所接收到的FD1和FD2,将该层中包括两个核(K1和K2)的权重参数在深度的维度上拆分(如图4中的箭头A2所示)成两个部分,其中,与FD1相对应的部分中包含部分核FD1_K1(包含核K1的通道C1和C2)和FD1_K2(包含核K2的通道C1和C2),与FD2相对应的部分中包含部分核FD2_K1(包含核K1的通道C3至C5)和FD2_K2(包含核K2的通道C3至C5)。相应地,这相当于将与权重参数相对应的阵列垂直地划分(如图4中的箭头A3所示)成两个部分,从而生成包含1行2列(即两个运算参数)的运算参数阵列(如图4中的箭头A4所指向的部分),其中,第1行第1列的运算参数与FD1对应于相同的多个通道(即C1和C2),第1行第2列的运算参数与FD2对应于相同的多个通道(即C3至C5)。
在另外的实施例中,在步骤S101中,可以根据多个条件确定是否拆分参数,并使得所获得的运算参数阵列同时满足多个条件。
在一个示例中,可以拆分参数,使得所获得的运算参数阵列中的每个运算参数的大小均小于或等于第一阈值,并且所获得的运算参数阵列中的每个运算参数的大小均小于或等于第一阈值。
在另外的示例中,可以拆分参数,使得所获得的运算参数阵列的行数等于第一预定数量的倍数并且运算参数阵列中的每个运算参数的通道的数量均小于或等于第三阈值。
在另外的示例中,可以拆分参数,使得所获得的运算参数阵列的行数等于第一预定数量的倍数并且运算参数阵列的列数等于第二预定数量的倍数。
在另外的示例中,在所获得的运算参数阵列包括大小超出第一阈值的运算参数的情况下,可以至少对大小超出第一阈值的运算参数所在的行和/或列在深度和核的数量之中的至少一个维度上进行细分,使得经细分后的运算参数阵列中的每个运算参数的大小均小于或等于第一阈值。
在通过步骤S101获得包含多个运算参数的运算参数阵列之后,方法100可以继续到步骤S105,其中,分别使用所获得的运算参数阵列中的每个运算参数,对选定层的输入数据中的与所使用的运算参数的通道相对应的通道上的数据执行选定层的运算,以获得包括多个部分运算结果的部分运算结果阵列。
图5示出根据本申请的实施例的使用拆分出的运算参数执行运算的示例。在图5中,假设针对输入数据FD使用具有3个核K1至K3执行卷积运算,其中,FD具有5个通道,分别为FD_C1至FD_C2,并且核K1至K3中的每一个也具有5个通道,分别为K1_C1~K1_C5、K2_C1~K2_C5和K3_C1~K3_C5。
如图5所示,假设在步骤S101中将权重参数在深度和核的数量这两个维度上拆分成4个部分,从而获得包含两行两列的运算参数阵列,其中,运算参数阵列的第1行第1列的运算参数对应于核K1在通道C1和C2上的部分以及核K2在C1和C2上的部分,第1行第2列的运算参数对应于核K1和K2在通道C3至C5上部分,第2行第1列的运算参数对应于核K3至K5在通道C1和C2上的部分,并且第2行第2列的运算参数对应于核K3至K5在通道C3至C5上的部分。
在步骤S105中,使用运算参数阵列的第1行第1列的运算参数对输入数据FD的通道C1和C2上的部分执行卷积运算,生成部分运算结果FD’_(C1-C2)_1;使用运算参数阵列的第1行第2列的运算参数对输入数据FD的通道C3至C5上的部分执行卷积运算,生成部分运算结果FD’_(C3-C2)_2;使用运算参数阵列的第2行第1列的运算参数对输入数据FD的通道C1和C2上的部分执行卷积运算,生成部分运算结果FD’_(C3-C5)_1;并且使用运算参数阵列的第2行第2列的运算参数对输入数据FD的通道C3至C5上的部分执行卷积运算,生成部分运算结果FD’_(C3-C5)_2。
如图5所示,所生成的4个部分运算结果可以形成具有2行2列的部分运算结果阵列。在图5中的双向箭头的下方和上方分别示出所生成的部分运算结果阵列和该阵列中的每个部分运算结果的更直观的形式。
图5示出卷积层的示例。然而,根据本申请的实施例的方法的原理同样可以适用于卷积神经网络中的其他类型的层。例如,如果图5中的特征数据FD是一个残差层的输入数据,则可以在步骤S101中对该残差层中的权重参数在深度和核的数量中的至少一个维度上进行拆分,以获得包含多个运算参数的运算参数阵列;然后,在步骤S105中,分别使用该运算参数阵列中的每个运算参数,对该残差层的输入数据中的与所使用的运算参数的通道相对应的通道上的数据执行运算,包括分别对使用每个运算参数所计算出的部分结果与输入数据中的对应通道上的数据进行逐点加运算。由此,可以获得包括多个部分运算结果的部分运算结果阵列。
步骤S105可以依次针对每个运算参数串行地执行,也可以针对每个运算参数并行地执行,也可以针对每行或每列并行地执行。
在获得部分运算结果阵列之后,方法100可以继续到步骤S110,以基于所获得的部分运算结果阵列来生成一个或多个输出数据。如果选定层是卷积神经网络的最终的输出层,则可以基于所获得的部分运算结果阵列生成一个输出数据,作为整个卷积神经网络的最终输出结果。如果选定层是卷积神经网络的输入层或中间层(隐藏层),则可以根据需要选择以下面的任何一种方式生成输出数据,并将所生成的输出数据提供给下一层:
-将部分运算结果阵列的每个部分运算结果分别作为选定层的输出数据提供给下一层;
-基于所获得的部分运算结果阵列生成一个输出数据并提供给出下一喜忧参半;以及
-合并部分运算结果阵列中的一些相邻的行的部分运算结果和/或一些相邻的列的部分运算结果,从而将部分运算结果阵列压缩成具有更少的行和/或列的部分运算结果阵列,然后将压缩后的部分运算结果阵列中的每个部分运算结果分别作为选定层的输出数据提供给下一层。
在一个实施例,对于具有多个列的部分运算结果阵列,可以通过对部分运算结果阵列的每个行中的所有部分运算结果进行逐点加运算,将部分运算结果阵列压缩成一列,然后将压缩后的部分运算结果阵列中的每个部分运算结果分别作为选定层的一个输出数据提供给下一层。
例如,对于图5中的部分运算结果阵列FD’,如图6所示,可以对FD’的第1行中的所有部分运算结果(FD’_(C1-C2)_1和FD’_(C1-C2)_2)进行逐点累加,并且对FD’的第2行中的所有部分运算结果(FD’_(C3-C5)_1和FD’_(C3-C5)_2)进行逐点累加,从而生成压缩后的部分运算结果阵列FD”。压缩后的部分运算结果阵列FD”包含2行1列,其中,第1行的部分运算结果FD’_(C1-C2)对应于在通道C1和C2上的部分运算结果,第2行的部分运算结果FD’_(C3-C5)对应于在通道C3至C5上的部分运算结果。然后,可以将FD’_(C1-C2)和FD’_(C3-C5)作为两个输出数据提供给下一层。
然后,在下一层中可以继续应用方法100。例如,如前文所述,可以在步骤S101中,响应于接收到多个部分输入数据,根据每个部分输入数据拆分该层的权重参数,使得所获得的运算参数阵列的列数等于该层所接收到的多个部分输入数据的数量,并且每列的所有运算参数与所接收到的多个部分输入数据中的一个对应于相同的一个或多个通道。
在另外的实施例中,对于包含多个行的部分运算结果阵列,可以通过将部分运算结果阵列的每个列中的所有部分运算结果在深度方向上拼接在一起,将部分运算结果阵列压缩成一行,然后将压缩后的部分运算结果阵列中的每个部分运算结果分别作为选定层的一个输出数据提供给下一层。
例如,对于图5中的部分运算结果阵列FD’,如图7所示,可以将FD’的第1列中的所有部分运算结果(FD’_(C1-C2)_1和FD’_(C3-C5)_1)在深度方向上将各自的通道拼接在一起,并且将FD’的第1列中的所有部分运算结果(FD’_(C1-C2)_2和FD’_(C3-C5)_2)在深度方向上将各自的通道拼接在一起,从而生成压缩后的部分运算结果阵列FD”。压缩后的部分运算结果阵列FD”包含1行2列,其中,第1列的部分运算结果FD’_1和第2列的部分运算结果FD’_2均具有通道C1至C5。然后,可以将FD’_1和FD’_2作为两个输出数据提供给下一层。
随后,在下一层中,例如,可以针对每个部分输入数据,使用该层的权重参数执行运算,然后对运算后所获得的结果逐点累加。例如,如图8所示,在下一层中接收到例如图7所示的两个部分输入数据FD’_1和FD’_2,并且在下一层中的权重参数具有K1至K3这三个核,每个核具有C1至C5五个通道,则可以先使用权重参数分别对每个部分输入数据FD’_1和FD’_2执行运算,并获得两个部分输出数据FD”_1和FD”_2,然后可以对FD”_1和FD”_2进行逐点累加,从而获得下一层的最终输出数据FD”’。在图8所示的示例中,也可以不进行最后的逐点加运算,而是直接将两个部分输出数据FD”_1和FD”_2直接提供给再下一层。在另外的示例中,在下一层中,也可以先对所接收到的两个部分输入数据进行逐点累加,然后针对所获得的完整的输入数据执行常规的运算,或者应用根据本申请的实施例的方法执行运算。在另外的示例中,在下一层中,也可以直接应用本申请的实施例的方法,先对下一层的权重参数进行拆分。
在另外的实施例中,对于包含多个行和多个列的部分运算结果阵列,可以通过对部分运算结果阵列的每行的部分运算结果进行逐点累加并且将压缩后的部分运算结果阵列的每列的所有部分运算结果在深度方向上拼接在一起,或者通过将部分运算结果阵列的每列的所有部分运算结果在深度方向上拼接在一起并且对压缩后的部分运算结果阵列的每行的部分运算结果进行逐点累加,来生成一个输出数据。
例如,可以如图9所示那样地将图6和图7所示的示例结合起来,从而生成一个输出数据FD’,也可以如图10所示那样地将图6和图7所示的示例结合起,从而生成一个输出数据FD’。可以意识到,图9和图10所示的示例中的最终的输出数据是相同的。
在另外的实施例中,对于包含多个行和多个列的部分运算结果阵列,可以通过采用与前文所述的压缩方式相类似的方式对部分运算结果阵列在行和/或列上进行压缩,从而获得具有更少的行和/或列的部分运算结果阵列,然后将压缩后的部分运算结果阵列中的每个部分运算结果分别作为输出数据提供给下一层。
例如,具有3行3列的部分运算结果阵列,可以对第1行第1列的部分运算结果和第1行第2列的部分运算结果进行逐点累加,从而获得具有3行2列的部分运算结果阵列;然后,将压缩后的部分运算结果阵列的第2行第1列的部分运算结果和第3行第2列的部分运算结果在深度方向上将各自的通道拼接在一起,从而获得具有2行2列的更小的部分运算结果阵列;然后,将所获得的具有2行2列的更小的部分运算结果阵列中的每个部分运算结果分别作为输出数据提供给下一层。
图11和图12示出根据本申请的实施例的可以用于执行上述方法的装置的框图。
如图11所示,示例装置1100可以包括一个或多个处理器1110。处理器1110可以是具有数据处理能力和/或指令执行能力的任何形式的处理单元,例如通用CPU、GPU或者专用的神经网络处理器或加速器等。例如,处理器1110可以执行根据本申请的实施例的方法。另外,处理器1110还可以控制装置1110中的其他部件,以执行所期望的功能。
处理器1110可以通过总线系统和/或其他形式的连接机构(未示出)与存储器1120以及I/O接口1130相连。
存储器1120可以包括各种形式的计算机可读写存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪速存储器等。可读写存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。例如,在配合神经网络专用处理器使用的情况下,存储器1120也可以是承载专用处理器的芯片上的RAM。存储器1120可以包括用于指示装置1100执行根据本申请实施例的对神经网络的特征数据进行适配的方法的程序指令。
I/O接口1130可以用于向处理器1110提供参数或数据并且输出经过处理器1110处理的结果数据。
另外,如图12所示,示例装置1200可以包括拆分器1210、运算器1220和生成器1230。
拆分器1210可以被配置为被配置为在深度和核的数量之中的至少一个维度上拆分卷积神经网络中的选定层的权重参数以获得包含多个运算参数的运算参数阵列,运算参数阵列的每行的所有运算参数来自权重参数的核的集合的同一子集并且没有相同的通道,并且每列的每个运算参数分别来自权重参数的核的集合的不同子集并且具有相同的一个或多个通道。在一个实施例中,拆分器1210可以被配置为执行例如示例方法100中的步骤S101。
运算器1220可以被配置为分别使用运算参数阵列中的每个运算参数,对选定层的输入数据中的与所使用的运算参数的通道相对应的通道上的数据执行选定层的运算,以获得包括多个部分运算结果的部分运算结果阵列。在一个实施例中,运算器1220可以被配置为执行例如示例方法100中的步骤S105。
生成器1230可以被配置为基于部分运算结果阵列,生成选定层的一个或多个输出数据。在一个实施例中,生成器1230可以被配置为执行例如示例方法100中的步骤S110。
应当理解,图11和图12所示的装置1100和1200仅是示例性的,而非限制性的。根据需要,根据本申请的实施例的装置可以具有其他部件和/或结构。
通过根据本申请的实施例的方法和/或装置,能够将卷积神经网络中的大参数的卷积操作拆分成若干小的卷积操作,并保持拆分前后的结果一致,有利于提高运行的并行度和/或执行效率。另外,还可以绕开硬件(例如专用的硬件加速器)的限制,从而可以适用于使用任意大小的权重参数的卷积操作。另外,通过将大的权重参数拆分成若干小的权重参数,可以确保高速存储器能够完全地缓存每次运算中的权重参数,从而可以确保运算的正确性,并能够减少数据搬运的次数,有利于提高硬件的执行效率。
除非上下文清楚地另有要求,否则贯穿说明书和权利要求书,措词“包括”、“包含”等应当以与排他性或穷尽性的意义相反的包括性的意义来解释,也就是说,应当以“包括但不限于”的意义来解释。另外,措词“在本文中”、“上文”、“下文”以及相似含义的措词在本申请中使用时应当指作为整体的本申请,而不是本申请的任何具体部分。在上下文允许时,在使用单数或复数的以上描述中的措词也可以分别包括复数或单数。关于在提及两个或多个项目的列表时的措词“或”,该措词涵盖该措词的以下解释中的全部:列表中的任何项目,列表中的所有项目,以及列表中的项目的任何组合。
本申请实施例的以上详细描述不打算是穷尽性的或者将本申请局限于上文所公开的确切形式。尽管以上出于说明的目的而描述了本申请的具体实施例和示例,但是如本领域技术人员将认识到的那样,在本申请范围内可能有各种等效的修改。例如,尽管处理或块以给定的次序呈现,但是替代的实施例可以以不同的次序执行具有这些步骤的处理或者以不同的次序采用具有这些块的系统,并且一些处理或块可以被删除、移动、添加、细分、组合和/或修改。这些处理或块中的每个可以以各种不同的方式来实现。另外,虽然处理或块有时被示为串行执行,但是替代地,这些处理或块也可以并行执行,或者可以在不同时间执行。
可以将在本文中所提供的本申请的教导应用于其他系统,而不必是上述的系统。可以组合上述的各个实施例的元件和动作,以提供另外的实施例。
虽然已经描述了本申请的一些实施例,但是这些实施例仅作为示例而呈现,而不打算限制本申请的范围。实际上,在本文中所描述的新颖方法和系统可以以多种其他形式来实施。另外,可以在不脱离本申请的范围的情况下,在本文中所描述的方法和系统的形式上做出各种省略、替换和改变。
Claims (15)
1.一种执行卷积神经网络中的运算的方法,包括:
在深度和核的数量之中的至少一个维度上拆分所述卷积神经网络中的选定层的权重参数以获得包含多个运算参数的运算参数阵列,所述运算参数阵列的每行的所有运算参数来自所述权重参数的核的集合的同一子集并且没有相同的通道,并且每列的每个运算参数分别来自所述权重参数的核的集合的不同子集并且具有相同的一个或多个通道;
分别使用所述运算参数阵列中的每个运算参数,对所述选定层的输入数据中的与所使用的运算参数的通道相对应的通道上的数据执行所述选定层的运算,以获得包括多个部分运算结果的部分运算结果阵列;以及
基于所述部分运算结果阵列,生成所述选定层的一个或多个输出数据。
2.根据权利要求1所述的方法,其中,拆分权重参数包括:
在所述权重参数的大小超出第一阈值的情况下拆分所述权重参数,使得所获得的运算参数阵列中的每个运算参数的大小均小于或等于所述第一阈值。
3.根据权利要求1所述的方法,其中,拆分权重参数包括:
在所述权重参数的核的数量超出第二阈值的情况下拆分所述权重参数,使得所获得的运算参数阵列中的每个运算参数的核的数量均小于或等于所述第二阈值。
4.根据权利要求1所述的方法,其中,拆分权重参数包括:
在所述权重参数的核的数量大于或等于第一预定数量的情况下拆分所述权重参数,使得所获得的运算参数阵列的行数等于第一预定数量的倍数。
5.根据权利要求1所述的方法,其中,拆分权重参数包括:
在所述权重参数的通道的数量超出第三阈值的情况下拆分所述权重参数,使得所获得的运算参数阵列中的每个运算参数的通道的数量均小于或等于所述第三阈值。
6.根据权利要求1所述的方法,其中,拆分权重参数包括:
在所述权重参数的通道的数量大于或等于第二预定数量的情况下拆分所述权重参数,使得所获得的运算参数阵列的列数等于所述第二预定数量的倍数。
7.根据权利要求1所述的方法,其中,拆分权重参数包括:
如果所述选定层接收到多个部分输入数据,任何两个部分输入数据均不具有相同的通道,并且所述多个部分输入数据的集合对应于所述选定层的完整的输入数据,则根据每个部分输入数据拆分所述权重参数,使得所获得的运算参数阵列的列数等于所述多个部分输入数据的数量,并且每列的所有运算参数与所述多个部分输入数据中的一个对应于相同的一个或多个通道。
8.根据权利要求1所述的方法,其中,拆分权重参数还包括:
在所获得的运算参数阵列包括大小超出第一阈值的运算参数的情况下,至少对所述运算参数所在的行和/或列在深度和核的数量之中的至少一个维度上进行细分,使得经细分后的运算参数阵列中的每个运算参数的大小均小于或等于第一阈值。
9.根据权利要求1所述的方法,生成输出数据包括:
所述部分运算结果阵列中的每个部分运算结果对应于所述选定层的一个输出数据。
10.根据权利要求1所述的方法,其中,生成输出数据包括:
如果所述部分运算结果阵列包含多个列,则通过对所述部分运算结果阵列的每个行中的所有部分运算结果进行逐点加运算,将所述部分运算结果阵列压缩成一列,压缩后的部分运算结果阵列中的每个部分运算结果对应于所述选定层的一个输出数据。
11.根据权利要求1所述的方法,其中,生成输出数据包括:
如果所述部分运算结果阵列包含多个行,则通过将所述部分运算结果阵列的每个列中的所有部分运算结果在深度方向上拼接在一起,将所述部分运算结果阵列压缩成一行,压缩后的部分运算结果阵列中的每个部分运算结果对应于所述选定层的一个输出数据。
12.根据权利要求1所述的方法,其中,生成输出数据包括:
如果所述部分运算结果阵列包含多个行和多个列,则通过对所述部分运算结果阵列的每行的部分运算结果进行逐点累加并且将压缩后的部分运算结果阵列的每列的所有部分运算结果在深度方向上拼接在一起,或者通过将所述部分运算结果阵列的每列的所有部分运算结果在深度方向上拼接在一起并且对压缩后的部分运算结果阵列的每行的部分运算结果进行逐点累加,生成所述选定层的一个输出数据。
13.一种执行卷积神经网络中的运算的装置,包括:
一个或多个处理器,被配置为至少执行根据权利要求1至12中的任一项所述的方法的步骤。
14.一种执行卷积神经网络中的运算的装置,包括:
拆分器,被配置为在深度和核的数量之中的至少一个维度上拆分所述卷积神经网络中的选定层的权重参数以获得包含多个运算参数的运算参数阵列,所述运算参数阵列的每行的所有运算参数来自所述权重参数的核的集合的同一子集并且没有相同的通道,并且每列的每个运算参数分别来自所述权重参数的核的集合的不同子集并且具有相同的一个或多个通道;
运算器,被配置为分别使用所述运算参数阵列中的每个运算参数,对所述选定层的输入数据中的与所使用的运算参数的通道相对应的通道上的数据执行所述选定层的运算,以获得包括多个部分运算结果的部分运算结果阵列;以及
生成器,被配置为基于所述部分运算结果阵列,生成所述选定层的一个或多个输出数据。
15.一种非临时性存储介质,在其上存储有程序指令,所述程序指令在被计算装置执行时执行根据权利要求1至12中的任一项所述的方法的步骤。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711041806.5A CN107832839B (zh) | 2017-10-31 | 2017-10-31 | 执行卷积神经网络中的运算的方法和装置 |
JP2018176240A JP6726246B2 (ja) | 2017-10-31 | 2018-09-20 | 畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体 |
US16/170,360 US20190130265A1 (en) | 2017-10-31 | 2018-10-25 | Method and apparatus for performing operations in convolutional neural network |
EP18203633.5A EP3477556A1 (en) | 2017-10-31 | 2018-10-31 | Method and apparatus for performing operations in convolutional neural network |
KR1020180132001A KR20190049593A (ko) | 2017-10-31 | 2018-10-31 | 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711041806.5A CN107832839B (zh) | 2017-10-31 | 2017-10-31 | 执行卷积神经网络中的运算的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107832839A true CN107832839A (zh) | 2018-03-23 |
CN107832839B CN107832839B (zh) | 2020-02-14 |
Family
ID=61650154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711041806.5A Active CN107832839B (zh) | 2017-10-31 | 2017-10-31 | 执行卷积神经网络中的运算的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20190130265A1 (zh) |
EP (1) | EP3477556A1 (zh) |
JP (1) | JP6726246B2 (zh) |
KR (1) | KR20190049593A (zh) |
CN (1) | CN107832839B (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647773A (zh) * | 2018-04-20 | 2018-10-12 | 复旦大学 | 一种可重构卷积神经网络的硬件互连架构 |
CN108984426A (zh) * | 2018-08-03 | 2018-12-11 | 北京字节跳动网络技术有限公司 | 用于处理数据的方法和装置 |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
CN109697500A (zh) * | 2018-12-29 | 2019-04-30 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN109919311A (zh) * | 2019-03-13 | 2019-06-21 | 北京地平线机器人技术研发有限公司 | 生成指令序列的方法、执行神经网络运算的方法和装置 |
CN110334798A (zh) * | 2019-03-13 | 2019-10-15 | 北京地平线机器人技术研发有限公司 | 特征数据提取方法及装置、指令生成方法及装置 |
CN110377342A (zh) * | 2019-06-10 | 2019-10-25 | 平安科技(深圳)有限公司 | 基于卷积神经网络的显存处理方法、装置及存储介质 |
CN110554913A (zh) * | 2018-05-30 | 2019-12-10 | 三星电子株式会社 | 神经网络系统及其操作方法以及应用处理器 |
CN110689115A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
CN110826708A (zh) * | 2019-09-24 | 2020-02-21 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
CN111832585A (zh) * | 2019-04-16 | 2020-10-27 | 杭州海康威视数字技术股份有限公司 | 图像处理的方法和装置 |
US10902318B2 (en) * | 2017-11-06 | 2021-01-26 | Neuralmagic Inc. | Methods and systems for improved transforms in convolutional neural networks |
WO2021012215A1 (zh) * | 2019-07-24 | 2021-01-28 | 华为技术有限公司 | 神经网络切分方法、预测方法及相关装置 |
CN112308217A (zh) * | 2019-07-31 | 2021-02-02 | 北京欣奕华科技有限公司 | 一种卷积神经网络加速方法及系统 |
US10915816B2 (en) | 2018-05-31 | 2021-02-09 | Neuralmagic Inc. | System and method of executing neural networks |
US11195095B2 (en) | 2019-08-08 | 2021-12-07 | Neuralmagic Inc. | System and method of accelerating execution of a neural network |
US11449363B2 (en) | 2018-05-31 | 2022-09-20 | Neuralmagic Inc. | Systems and methods for improved neural network execution |
US11544559B2 (en) | 2019-01-08 | 2023-01-03 | Neuralmagic Inc. | System and method for executing convolution in a neural network |
US11556757B1 (en) | 2020-12-10 | 2023-01-17 | Neuralmagic Ltd. | System and method of executing deep tensor columns in neural networks |
US11636343B2 (en) | 2018-10-01 | 2023-04-25 | Neuralmagic Inc. | Systems and methods for neural network pruning with accuracy preservation |
US11715287B2 (en) | 2017-11-18 | 2023-08-01 | Neuralmagic Inc. | Systems and methods for exchange of data in distributed training of machine learning algorithms |
US11960982B1 (en) | 2021-10-21 | 2024-04-16 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387740B2 (en) * | 2016-10-10 | 2019-08-20 | Gyrfalcon Technology Inc. | Object detection and recognition apparatus based on CNN based integrated circuits |
KR102548718B1 (ko) * | 2017-06-07 | 2023-06-28 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
CN107633295B (zh) * | 2017-09-25 | 2020-04-28 | 南京地平线机器人技术有限公司 | 用于适配神经网络的参数的方法和装置 |
US11210586B1 (en) | 2018-04-20 | 2021-12-28 | Perceive Corporation | Weight value decoder of neural network inference circuit |
WO2020087072A1 (en) * | 2018-10-26 | 2020-04-30 | Tensil AI Company | Method and apparatus for compiling computation graphs into an integrated circuit |
JP7391553B2 (ja) * | 2019-06-28 | 2023-12-05 | キヤノン株式会社 | 情報処理装置、情報処理方法、及びプログラム |
KR102372869B1 (ko) * | 2019-07-31 | 2022-03-08 | 한양대학교 산학협력단 | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 |
JP2021047711A (ja) | 2019-09-19 | 2021-03-25 | キオクシア株式会社 | 演算装置、演算方法、及び学習方法 |
CN110633153A (zh) * | 2019-09-24 | 2019-12-31 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
US11163453B2 (en) * | 2019-11-01 | 2021-11-02 | Samsung Electronics Co., Ltd. | Memory device, memory system including memory device and vehicle-based system including memory system |
KR20210053390A (ko) | 2019-11-01 | 2021-05-12 | 삼성전자주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
US10924460B2 (en) | 2019-12-13 | 2021-02-16 | TripleBlind, Inc. | Systems and methods for dividing filters in neural networks for private data computations |
US11431688B2 (en) | 2019-12-13 | 2022-08-30 | TripleBlind, Inc. | Systems and methods for providing a modified loss function in federated-split learning |
US11973743B2 (en) | 2019-12-13 | 2024-04-30 | TripleBlind, Inc. | Systems and methods for providing a systemic error in artificial intelligence algorithms |
US11528259B2 (en) | 2019-12-13 | 2022-12-13 | TripleBlind, Inc. | Systems and methods for providing a systemic error in artificial intelligence algorithms |
KR102384587B1 (ko) * | 2020-08-25 | 2022-04-08 | 오픈엣지테크놀로지 주식회사 | 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기 |
US11507693B2 (en) | 2020-11-20 | 2022-11-22 | TripleBlind, Inc. | Systems and methods for providing a blind de-identification of privacy data |
EP4276699A4 (en) * | 2021-03-04 | 2024-07-03 | Samsung Electronics Co Ltd | IMAGE PROCESSING DEVICE AND OPERATING METHOD THEREFOR |
JP2022178465A (ja) | 2021-05-20 | 2022-12-02 | 日立Astemo株式会社 | 演算装置、認識装置および制御装置 |
WO2024014002A1 (ja) * | 2022-07-15 | 2024-01-18 | 日本電信電話株式会社 | 推論処理装置、推論処理方法、及び推論処理プログラム |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7142626B2 (en) * | 2003-05-30 | 2006-11-28 | George Shu-Xing Cheng | Apparatus and method of controlling multi-input-single-output systems |
CN105989408A (zh) * | 2015-03-18 | 2016-10-05 | 国际商业机器公司 | 用于将神经网络映射到神经突触基板上的系统和方法 |
WO2016138041A3 (en) * | 2015-02-23 | 2016-10-20 | Cellanyx Diagnostics, Llc | Cell imaging and analysis to differentiate clinically relevant sub-populations of cells |
WO2016186811A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Computing convolutions using a neural network processor |
CN106650922A (zh) * | 2016-09-29 | 2017-05-10 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统 |
CN106909970A (zh) * | 2017-01-12 | 2017-06-30 | 南京大学 | 一种基于近似计算的二值权重卷积神经网络硬件加速器计算模块 |
CN107273969A (zh) * | 2017-05-11 | 2017-10-20 | 西安交通大学 | 一种参数化可扩展的神经网络全连接层多层互连结构 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10049322B2 (en) * | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
US10565492B2 (en) * | 2016-12-31 | 2020-02-18 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with segmentable array width rotator |
WO2019051658A1 (en) * | 2017-09-13 | 2019-03-21 | Intel Corporation | INCREMENTAL NETWORK QUANTIFICATION |
-
2017
- 2017-10-31 CN CN201711041806.5A patent/CN107832839B/zh active Active
-
2018
- 2018-09-20 JP JP2018176240A patent/JP6726246B2/ja active Active
- 2018-10-25 US US16/170,360 patent/US20190130265A1/en active Pending
- 2018-10-31 KR KR1020180132001A patent/KR20190049593A/ko not_active Application Discontinuation
- 2018-10-31 EP EP18203633.5A patent/EP3477556A1/en not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7142626B2 (en) * | 2003-05-30 | 2006-11-28 | George Shu-Xing Cheng | Apparatus and method of controlling multi-input-single-output systems |
WO2016138041A3 (en) * | 2015-02-23 | 2016-10-20 | Cellanyx Diagnostics, Llc | Cell imaging and analysis to differentiate clinically relevant sub-populations of cells |
CN105989408A (zh) * | 2015-03-18 | 2016-10-05 | 国际商业机器公司 | 用于将神经网络映射到神经突触基板上的系统和方法 |
WO2016186811A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Computing convolutions using a neural network processor |
CN106650922A (zh) * | 2016-09-29 | 2017-05-10 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统 |
CN106909970A (zh) * | 2017-01-12 | 2017-06-30 | 南京大学 | 一种基于近似计算的二值权重卷积神经网络硬件加速器计算模块 |
CN107273969A (zh) * | 2017-05-11 | 2017-10-20 | 西安交通大学 | 一种参数化可扩展的神经网络全连接层多层互连结构 |
Non-Patent Citations (1)
Title |
---|
SHARAN CHETLUR等: "cuDNN: Efficient Primitives for Deep Learning", 《HTTP://ARXIV.ORG/ABS/1410.0759V3》 * |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10902318B2 (en) * | 2017-11-06 | 2021-01-26 | Neuralmagic Inc. | Methods and systems for improved transforms in convolutional neural networks |
US11715287B2 (en) | 2017-11-18 | 2023-08-01 | Neuralmagic Inc. | Systems and methods for exchange of data in distributed training of machine learning algorithms |
CN108647773B (zh) * | 2018-04-20 | 2021-07-23 | 复旦大学 | 一种可重构卷积神经网络的硬件互连系统 |
CN108647773A (zh) * | 2018-04-20 | 2018-10-12 | 复旦大学 | 一种可重构卷积神经网络的硬件互连架构 |
CN110554913A (zh) * | 2018-05-30 | 2019-12-10 | 三星电子株式会社 | 神经网络系统及其操作方法以及应用处理器 |
US11960934B2 (en) | 2018-05-31 | 2024-04-16 | Neuralmagic, Inc. | Systems and methods for improved neural network execution |
US11449363B2 (en) | 2018-05-31 | 2022-09-20 | Neuralmagic Inc. | Systems and methods for improved neural network execution |
US10915816B2 (en) | 2018-05-31 | 2021-02-09 | Neuralmagic Inc. | System and method of executing neural networks |
CN108984426A (zh) * | 2018-08-03 | 2018-12-11 | 北京字节跳动网络技术有限公司 | 用于处理数据的方法和装置 |
CN108984426B (zh) * | 2018-08-03 | 2021-01-26 | 北京字节跳动网络技术有限公司 | 用于处理数据的方法和装置 |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
US11636343B2 (en) | 2018-10-01 | 2023-04-25 | Neuralmagic Inc. | Systems and methods for neural network pruning with accuracy preservation |
CN109697500A (zh) * | 2018-12-29 | 2019-04-30 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN109697500B (zh) * | 2018-12-29 | 2020-06-09 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
US11544559B2 (en) | 2019-01-08 | 2023-01-03 | Neuralmagic Inc. | System and method for executing convolution in a neural network |
CN109919311B (zh) * | 2019-03-13 | 2020-04-10 | 北京地平线机器人技术研发有限公司 | 生成指令序列的方法、执行神经网络运算的方法和装置 |
CN110334798B (zh) * | 2019-03-13 | 2021-06-08 | 北京地平线机器人技术研发有限公司 | 特征数据提取方法及装置、指令生成方法及装置 |
CN110334798A (zh) * | 2019-03-13 | 2019-10-15 | 北京地平线机器人技术研发有限公司 | 特征数据提取方法及装置、指令生成方法及装置 |
CN109919311A (zh) * | 2019-03-13 | 2019-06-21 | 北京地平线机器人技术研发有限公司 | 生成指令序列的方法、执行神经网络运算的方法和装置 |
CN111832585A (zh) * | 2019-04-16 | 2020-10-27 | 杭州海康威视数字技术股份有限公司 | 图像处理的方法和装置 |
CN110377342A (zh) * | 2019-06-10 | 2019-10-25 | 平安科技(深圳)有限公司 | 基于卷积神经网络的显存处理方法、装置及存储介质 |
CN110377342B (zh) * | 2019-06-10 | 2022-08-30 | 平安科技(深圳)有限公司 | 基于卷积神经网络的显存处理方法、装置及存储介质 |
WO2021012215A1 (zh) * | 2019-07-24 | 2021-01-28 | 华为技术有限公司 | 神经网络切分方法、预测方法及相关装置 |
CN112308217A (zh) * | 2019-07-31 | 2021-02-02 | 北京欣奕华科技有限公司 | 一种卷积神经网络加速方法及系统 |
CN112308217B (zh) * | 2019-07-31 | 2024-06-04 | 北京欣奕华科技有限公司 | 一种卷积神经网络加速方法及系统 |
US11195095B2 (en) | 2019-08-08 | 2021-12-07 | Neuralmagic Inc. | System and method of accelerating execution of a neural network |
US11797855B2 (en) | 2019-08-08 | 2023-10-24 | Neuralmagic, Inc. | System and method of accelerating execution of a neural network |
CN110826708B (zh) * | 2019-09-24 | 2022-05-31 | 安徽寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
CN110826708A (zh) * | 2019-09-24 | 2020-02-21 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
CN110689115A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
US11556757B1 (en) | 2020-12-10 | 2023-01-17 | Neuralmagic Ltd. | System and method of executing deep tensor columns in neural networks |
US11960982B1 (en) | 2021-10-21 | 2024-04-16 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
US12033053B1 (en) | 2021-10-21 | 2024-07-09 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
Also Published As
Publication number | Publication date |
---|---|
JP2019082996A (ja) | 2019-05-30 |
EP3477556A1 (en) | 2019-05-01 |
CN107832839B (zh) | 2020-02-14 |
US20190130265A1 (en) | 2019-05-02 |
KR20190049593A (ko) | 2019-05-09 |
JP6726246B2 (ja) | 2020-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107832839A (zh) | 执行卷积神经网络中的运算的方法和装置 | |
CN108205701B (zh) | 一种执行卷积计算的系统及方法 | |
CN111667051B (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
KR102414583B1 (ko) | 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법 | |
US11461632B2 (en) | Method and apparatus for adapting parameters of neural network | |
CN105892989B (zh) | 一种神经网络加速器及其运算方法 | |
US20180204110A1 (en) | Compressed neural network system using sparse parameters and design method thereof | |
JP6314628B2 (ja) | 演算処理装置 | |
CN107729994A (zh) | 执行卷积神经网络中的卷积层的运算的方法和装置 | |
CN107844827A (zh) | 执行卷积神经网络中的卷积层的运算的方法和装置 | |
JP2021509747A (ja) | ハードウェアベースのプーリングのシステムおよび方法 | |
CN107832842A (zh) | 针对折叠特征数据执行卷积运算的方法和装置 | |
CN109543816A (zh) | 一种基于权重捏合的卷积神经网络计算方法和系统 | |
CN110334798A (zh) | 特征数据提取方法及装置、指令生成方法及装置 | |
CN107516131A (zh) | 卷积计算的加速方法和装置、电子设备和存储介质 | |
CN111133457A (zh) | 电子设备及其控制方法 | |
CN106295670A (zh) | 数据处理方法及数据处理装置 | |
CN108875917A (zh) | 一种用于卷积神经网络处理器的控制方法及装置 | |
CN106373112A (zh) | 图像处理方法、装置和电子设备 | |
US11900577B2 (en) | Processing apparatus for performing processing using a convolutional neural network | |
CN110533161A (zh) | 一种基于分层组卷积神经网络的特征图处理方法 | |
CN109598335A (zh) | 一种二维卷积脉动阵列结构及实现方法 | |
CN109784484A (zh) | 神经网络加速方法、装置、神经网络加速芯片及存储介质 | |
Zhang et al. | Hardware-software codesign of weight reshaping and systolic array multiplexing for efficient CNNs | |
KR102167211B1 (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180817 Address after: 210046 20 A, Xingzhi science and Technology Park, Xingzhi Road, Nanjing economic and Technological Development Zone, Jiangsu Applicant after: Nanjing horizon Robot Technology Co., Ltd. Address before: 100080 Beijing Haidian District Zhongguancun Avenue 1 3 3 317 Applicant before: Beijing horizon information technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |