CN109255434A - 一种卷积神经网络中计算资源的调度方法及装置 - Google Patents
一种卷积神经网络中计算资源的调度方法及装置 Download PDFInfo
- Publication number
- CN109255434A CN109255434A CN201811198549.0A CN201811198549A CN109255434A CN 109255434 A CN109255434 A CN 109255434A CN 201811198549 A CN201811198549 A CN 201811198549A CN 109255434 A CN109255434 A CN 109255434A
- Authority
- CN
- China
- Prior art keywords
- matrix
- current sub
- column
- line
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
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/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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
Abstract
本发明公开了一种卷积神经网络中计算资源的调度方法,方法包括:1)、获取卷积神经网络中的原始矩阵以及核矩阵;2)、根据核矩阵的尺寸从原始矩阵中获取当前子矩阵,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个乘法器进行计算;再根据子矩阵获取方法获取当前子矩阵的在行方向上或者列方向上的下一个子矩阵,并返回前述步骤;3)、根据乘法器的运算结果,与卷积后的矩阵中的元素位置的对应关系,将乘法器的运算结果组合成卷积后的矩阵。本发明公开了一种卷积神经网络中计算资源的调度装置。应用本发明实施例,降低了硬件开销。
Description
技术领域
本发明涉及一种资源调度方法及装置,更具体涉及一种卷积神经网络中计算资源的调度方法及装置。
背景技术
CNN(Convolutional Neural Network,卷积神经网络),是一种前馈神经网络。目前,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。
但是,现有的卷积神经网络在对原始矩阵的卷积运算的过程如下,原始矩阵为6*6的矩阵,核矩阵为3*3的矩阵。将原始矩阵的第一行第一列至第三行第三列的方形区域内的元素组成的子矩阵1,将子矩阵的第一行第一列元素与核矩阵调度至乘法器1,并将运算结果作为卷积后的矩阵中的第一行第一列的元素的值;将子矩阵的第一行第二列元素与核矩阵调度至乘法器2,并将运算结果作为卷积后的矩阵中的第一行第二列的元素的值;依次类推直至子矩阵1中的元素都被调度。然后将原始矩阵中第一行第二列至第三行第四列的方形区域内的元素组成的子矩阵2,按照前述方式进行元素的调度,依此类推,得到卷积后的矩阵的各个元素的值。
从上述计算过程可以看出,现有技术进行原始矩阵的卷积计算时,每进行一次子矩阵的计算,就要用到3*3=9个乘法器。使用的乘法器的数量为核矩阵中元素的个数,进而导致硬件的开销较大,因此,现有技术存在针对乘法器的硬件开销较大的技术问题。
发明内容
本发明所要解决的技术问题在于提供了一种卷积神经网络中计算资源的调度方法及装置,以降低针对乘法器的硬件开销。
本发明是通过以下技术方案解决上述技术问题的:
本发明实施例提供了一种卷积神经网络中计算资源的调度方法,所述方法包括:
1)、获取卷积神经网络中的原始矩阵以及核矩阵;
2)、根据核矩阵的尺寸从原始矩阵中获取当前子矩阵,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算,直至当前子矩阵中的元素被调度完;再根据子矩阵获取方法获取当前子矩阵的在行方向上或者列方向上的下一个子矩阵,并将该子矩阵作为当前子矩阵,并返回执行所述逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算的步骤;
3)、根据所述乘法器的运算结果,与卷积后的矩阵中的元素位置的对应关系,将所述乘法器的运算结果组合成卷积后的矩阵。
可选的,所述卷积运算的过程包括:
A:从所述原始矩阵的起始端开始,根据所述核矩阵的行数和列数,读取原始矩阵中与核矩阵的列数相同列数的元素,将所读取的元素组成的矩阵作为当前子矩阵;
B:判断针对原始矩阵的调度方式是按照行方向进行调度或者列方向进行调;
C:若按照行方向进行调度,将当前子矩阵之后一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
或者将当前子矩阵之前一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
D:若按照列方向进行调度,将当前子矩阵之后一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
或者将当前子矩阵之前一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵。
可选的,若当前子矩阵中存在新元素,在对当前子矩阵中的元素进行调度时,仅将新元素中的对应行或者列的元素进行调度。
本发明实施例提供了一种卷积神经网络中计算资源的调度装置,所述装置包括:
获取模块,用于获取卷积神经网络中的原始矩阵以及核矩阵;
运算模块,用于根据核矩阵的尺寸从原始矩阵中获取当前子矩阵,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算,直至当前子矩阵中的元素被调度完;再根据子矩阵获取方法获取当前子矩阵的在行方向上或者列方向上的下一个子矩阵,并将该子矩阵作为当前子矩阵,并返回执行所述逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算的步骤;
组合模块,用于根据所述乘法器的运算结果,与卷积后的矩阵中的元素位置的对应关系,将所述乘法器的运算结果组合成卷积后的矩阵。
可选的,所述运算模块,用于:
A:从所述原始矩阵的起始端开始,根据所述核矩阵的行数和列数,读取原始矩阵中与核矩阵的列数相同列数的元素,将所读取的元素组成的矩阵作为当前子矩阵;
B:判断针对原始矩阵的调度方式是按照行方向进行调度或者列方向进行调;
C:若按照行方向进行调度,将当前子矩阵之后一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
或者将当前子矩阵之前一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
D:若按照列方向进行调度,将当前子矩阵之后一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
或者将当前子矩阵之前一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵。
可选的,所述运算模块,用于:
若当前子矩阵中存在新元素,在对当前子矩阵中的元素进行调度时,仅将新元素中的对应行或者列的元素进行调度。
本发明相比现有技术具有以下优点:
应用本发明实施例,在对子矩阵中的元素进行调度时,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,相对于现有技术中将子矩阵中每一个元素以及核矩阵调度至一个目标乘法器进行计算,可以减少乘法器的使用数量,进而降低了硬件开销。
附图说明
图1为本发明实施例提供的一种卷积神经网络中计算资源的调度方法的流程示意图;
图2为本发明实施例提供的一种卷积神经网络中计算资源的调度方法的原理示意图;
图3为本发明实施例提供的一种卷积神经网络中计算资源的调度方法中地址控制的原理示意图;
图4为本发明实施例提供的一种卷积神经网络中计算资源的调度装置的结构示意图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
本发明实施例提供了一种卷积神经网络中计算资源的调度方法及装置,下面首先就本发明实施例提供的一种卷积神经网络中计算资源的调度方法进行介绍。
图1为本发明实施例提供的一种卷积神经网络中计算资源的调度方法的流程示意图;图2为本发明实施例提供的一种卷积神经网络中计算资源的调度方法的原理示意图,如图1和图2所示,所述方法包括:
S101:获取卷积神经网络中的原始矩阵以及核矩阵。
具体的,可以获取原始矩阵,也就是待卷积的矩阵,以及所使用的核矩阵。
S102:根据核矩阵的尺寸从原始矩阵中获取当前子矩阵,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算,直至当前子矩阵中的元素被调度完;再根据当前子矩阵获取方法获取当前子矩阵的在行方向上或者列方向上的下一个子矩阵,并将该子矩阵作为当前子矩阵,并返回执行所述逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算的步骤。
具体的,当前子矩阵获取方法可以包括:A:从所述原始矩阵的起始端开始,根据所述核矩阵的行数和列数,读取原始矩阵中与核矩阵的列数相同列数的元素,将所读取的元素组成的矩阵作为当前子矩阵;B:判断针对原始矩阵的调度方式是按照行方向进行调度或者列方向进行调;C:若按照行方向进行调度,将当前子矩阵之后一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;或者将当前子矩阵之前一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;D:若按照列方向进行调度,将当前子矩阵之后一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;或者将当前子矩阵之前一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵。
示例性的,原始矩阵为7*7的输入矩阵,核矩阵为3*3的矩阵,则对应的卷积后的矩阵的尺寸为5*5矩阵。
1、要先从原始矩阵中获取子矩阵,通常情况下,子矩阵的尺寸与核矩阵的尺寸相同,例如,可以将原始矩阵中第一行第一列,至第三行第三列中的元素构成的子矩阵作为当前子矩阵:
子矩阵的获取顺序可以按照行方向进行获取,例如,从左到右,或者从右到左;还可以按照列方向进行获取,例如,从上到下,或者从下到上。
下面以按照从左到右的行方向,从上到下的列方向进行子矩阵的获取为例对本步骤进行说明。
2、读取当前子矩阵中的第一行元素,以及核矩阵调度至乘法器1;第二行元素,以及核矩阵调度至乘法器2;第三行元素,以及核矩阵调度至乘法器3。
如图2所示,调度当前子矩阵中的第一行的元素对应图2中的mult0部分,其中,w0,0是指当前子矩阵中第一行第一列,w0,1是指当前子矩阵中第一行第二列,w0,n-1是指当前子矩阵中第一行第n列,其中,第一行的编号为0,n为核矩阵的行数,以此类推。
调度当前子矩阵中的第二行的元素对应图2中的mult1部分,其中,w1,0是指当前子矩阵中第二行第一列,w1,1是指当前子矩阵中第二行第二列,w1,n-1是指当前子矩阵中第二行第n列,其中,第二行的标号为1,以此类推。
然后再按照上述方法,读取当前子矩阵的第三行元素并调度至乘法器3.
需要说明的是,按照行方向从右向左进行运算,与上述的调度方式原理相同,只是调度顺序的区别;类似的,按照列方向从左到右的调度是将当前子矩阵的第一列调度至乘法器1,第二列调度至乘法器2,以此类推;也可以按照上述原理,更改顺序后,按照列方向从右到左进行列的调度。
在实际应用中,在当前子矩阵内的元素调度方式可以包括按照行方向进行调度,或者按照列方向进行调度。按照行方向进行调度,可以是按照从上到下的顺序将当前子矩阵中的各行分别调度至各个乘法器,也可以是按照从下到上的顺序将当前子矩阵中的各行分别调度至各个乘法器。而且,在乘法器进行点乘运算时,可以按照从左到右的方式依次进行计算,也可以是从右到左的方式进行运算。
按照列方向进行调度也可以是从左到右的顺序依次将当前子矩阵中的各列分别调度至各个乘法器,也可以按照从右到左的方式将当前子矩阵中的各列分别调度至各个乘法器。而且,在乘法器进行点乘运算时,可以按照从上到下的方式进行运算,也可以是从下到上的方式进行运算。
3、乘法器在读取到上述元素后,按照设定的运算顺序进行卷积运算。
图3为本发明实施例提供的一种卷积神经网络中计算资源的调度方法中地址控制的原理示意图,如图3所示,ADDR_RD_为地址编号。
从原始矩阵中读取的当前子矩阵中的元素的数据流可以为:
a.第一列(列编号为0)的第一行、第二行、第三行的元素:
ADDR_RD_0 0(第一列第一行元素)
ADDR_RD_1 0+M*1(第一列的第二行元素)
ADDR_RD_2 0+M*2(第一列的第三行元素)
ADDR_RD_3 0+M*3(第一列的第四行元素)
......
ADDR_RD_n-1 0+M*(n-1)(第一列的第n-1行元素,其中,n为核矩阵的行数)
b.第二列(列编号为1)的第一行、第二行、第三行的元素:
ADDR_RD_n+0 1(第二列第一行元素)
ADDR_RD_n+1 1+M*1(第二列的第二行元素)
ADDR_RD_n+2 1+M*2(第二列的第三行元素)
ADDR_RD_n+3 1+M*3(第二列的第四行元素)
......
ADDR_RD_2n-1 1+M*(n-1)(第二列的第n-1行元素,其中,n为核矩阵的行数)
c.第三列(列编号为1)的第一行、第二行、第三行的元素:
ADDR_RD_2n+02(第三列第一行元素)
ADDR_RD_2n+1 2+M*1(第三列的第二行元素)
ADDR_RD_2n+22+M*2(第三列的第三行元素)
ADDR_RD_2n+32+M*3(第三列的第四行元素)
......
ADDR_RD_3n-1 2+M*(n-1)(第三列的第n-1行元素,其中,n为核矩阵的行数)
......
......
x.第n列(列编号为n-1)的第一行、第二行、第三行的元素:
ADDR_RD_(n-1)*(n-1)+0n-1(第n列第一行元素)
ADDR_RD_(n-1)*(n-1)+1n-1+M*1(第n列的第二行元素)
ADDR_RD_(n-1)*(n-1)+2n-1+M*2(第n列的第三行元素)
ADDR_RD_(n-1)*(n-1)+3n-1+M*3(第n列的第四行元素)
......
ADDR_RD_(n-1)*(n-1)+(n-1)n-1+M*(n-1)(第n列的第n-1行元素,其中,n为核矩阵的行数)
其中,M为核矩阵的行数的标记。
应用本发明上述调度方法,可以充分利用乘法器和内存的访问带宽。
4、然后,将乘法器1所读取的当前子矩阵中的右侧两列,以及原始矩阵中与这两列挨着的三个元素作为新元素,将原始矩阵的元素中的第二列、第三列元素与原始矩阵中的新元素,即第四列第一行、第四列第二行、第四列第三行的元素组合得到新的子矩阵。即将已经读取的当前子矩阵的第一行第二列的元素、第一行第三列的元素,与第一行第四列的元素组合,和原始矩阵中第四列的,与当前子矩阵位于相同行的元素进行组合,得到新的子矩阵,然后将新的子矩阵作为当前子矩阵,并返回执行步骤2。
可以理解的是,如图3所示,乘法器在进行卷积运算时,数据流顺序可以与步骤2中的不同,也可以相同,任何一种可以实现卷积运算的数据流顺序所对应的元素的读取方式均可以。
另外,在本发明实施例中,若当前子矩阵中存在新元素,在对当前子矩阵中的元素进行调度时,仅将新元素中的对应行或者列的元素进行调度。
需要强调的是,由于现有技术中,是将当前子矩阵中的各个元素分配给不同的乘法器,因此,需要读取25个子矩阵,因此,原始矩阵中的部分元素就会在行方向上以及列方向上被重复读取,因此,导致时间开销较大。本发明实施例中,在将新的当前子矩阵的第一行调度至乘法器1时,由于乘法器1已经获取了原始矩阵中第二列第一行的元素,第三列第一行的元素,因此,只需要将原始矩阵中第四列第一行的元素,即当前子矩阵第三列第一行的元素调度至乘法器1即可;类似的,只需将原始矩阵中第四列第二行的元素,即当前子矩阵中第三列第二行的元素调度至乘法器2即可,以此类推。将对应于卷积后的矩阵中的同一行的原始矩阵中的元素分配至同一个乘法器,乘法器将这些数据存储在寄存器中,因此,乘法器具有了这些数据后,只需要读取没有的数据即可,不会在发生重复读取,减少了读取次数,因此可以减少时间开销。
S103:根据所述乘法器的运算结果,与卷积后的矩阵中的元素位置的对应关系,将所述乘法器的运算结果组合成卷积后的矩阵。
按照卷积运算的规则,将卷积后的矩阵中各行或者各列对应的元素置于对应的位置,进而得到卷积后的矩阵。
当原始矩阵的行数为6,列数为8,核矩阵为3*3矩阵时,获取的目标乘法器的数量应该为不小于3*3=9;而应用本发明实施例,当进行行运算或者列运算时,使用的目标乘法器的数量均为3个,因此,可以减少目标乘法器的使用数量;
应用本发明图1所示实施例,在对子矩阵中的元素进行调度时,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,相对于现有技术中将子矩阵中每一个元素以及核矩阵调度至一个目标乘法器进行计算,可以减少乘法器的使用数量,进而降低了硬件开销。
而且,在实际应用中对原始矩阵进行卷积运算时,通常会使用含有多个乘法器的卷积模块进行卷积运算,例如,卷积模块中具有9个乘法器,则该卷积模块只能对所使用的核矩阵尺寸不大于3*3的核矩阵进行运算,而应用本发明图1所示实施例,可以对尺寸不大于9*9的核矩阵进行运算,因此,应用本发明实施例,可以适用于更大尺寸范围的核矩阵的运算,进而提高了卷积模块的利用率和适用性。
另外,在本发明图1所示实施例中,每一个目标乘法器都要分时复用进行多个子矩阵的点乘的运算,可以提高目标乘法器的利用效率。
与本发明图1所示实施例相对应,本发明还提供了一种卷积神经网络中计算资源的调度装置。
图4为本发明实施例提供的一种卷积神经网络中计算资源的调度装置的结构示意图,如图4所示,所述装置包括:
获取模块301,用于获取卷积神经网络中的原始矩阵以及核矩阵;
运算模块302,用于根据核矩阵的尺寸从原始矩阵中获取当前子矩阵,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算,直至当前子矩阵中的元素被调度完;再根据子矩阵获取方法获取当前子矩阵的在行方向上或者列方向上的下一个子矩阵,并将该子矩阵作为当前子矩阵,并返回执行所述逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算的步骤;
组合模块303,用于根据所述乘法器的运算结果,与卷积后的矩阵中的元素位置的对应关系,将所述乘法器的运算结果组合成卷积后的矩阵。
应用本发明图4所示实施例,在对子矩阵中的元素进行调度时,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,相对于现有技术中将子矩阵中每一个元素以及核矩阵调度至一个目标乘法器进行计算,可以减少乘法器的使用数量,进而降低了硬件开销。
在本发明实施例的一种具体实施方式中,所述运算模块302,用于:
A:从所述原始矩阵的起始端开始,根据所述核矩阵的行数和列数,读取原始矩阵中与核矩阵的列数相同列数的元素,将所读取的元素组成的矩阵作为当前子矩阵;
B:判断针对原始矩阵的调度方式是按照行方向进行调度或者列方向进行调;
C:若按照行方向进行调度,将当前子矩阵之后一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
或者将当前子矩阵之前一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
D:若按照列方向进行调度,将当前子矩阵之后一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
或者将当前子矩阵之前一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵。
在本发明实施例的一种具体实施方式中,所述运算模块302,用于:
若当前子矩阵中存在新元素,在对当前子矩阵中的元素进行调度时,仅将新元素中的对应行或者列的元素进行调度。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种卷积神经网络中计算资源的调度方法,其特征在于,所述方法包括:
1)、获取卷积神经网络中的原始矩阵以及核矩阵;
2)、根据核矩阵的尺寸从原始矩阵中获取当前子矩阵,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算,直至当前子矩阵中的元素被调度完;再根据当前子矩阵获取方法获取当前子矩阵的在行方向上或者列方向上的下一个子矩阵,并将该子矩阵作为当前子矩阵,并返回执行所述逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算的步骤;
3)、根据所述乘法器的运算结果,与卷积后的矩阵中的元素位置的对应关系,将所述乘法器的运算结果组合成卷积后的矩阵。
2.根据权利要求1所述的一种卷积神经网络中计算资源的调度方法,其特征在于,所述当前子矩阵获取方法包括:
A:从所述原始矩阵的起始端开始,根据所述核矩阵的行数和列数,读取原始矩阵中与核矩阵的列数相同列数的元素,将所读取的元素组成的矩阵作为当前子矩阵;
B:判断针对原始矩阵的调度方式是按照行方向进行调度或者列方向进行调;
C:若按照行方向进行调度,将当前子矩阵之后一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
或者将当前子矩阵之前一列中与当前子矩阵位于相同行的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一列之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
D:若按照列方向进行调度,将当前子矩阵之后一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵;
或者将当前子矩阵之前一行中与当前子矩阵位于相同列的元素作为新元素,将所述当前子矩阵中除离新元素距离最远的一行之外的其他元素,和所述新元素构成的新的子矩阵作为当前子矩阵。
3.根据权利要求2所述的一种卷积神经网络中计算资源的调度方法,其特征在于,若当前子矩阵中存在新元素,在对当前子矩阵中的元素进行调度时,仅将新元素中的对应行或者列的元素进行调度。
4.一种卷积神经网络中计算资源的调度装置,其特征在于,所述装置包括:
获取模块,用于获取卷积神经网络中的原始矩阵以及核矩阵;
运算模块,用于根据核矩阵的尺寸从原始矩阵中获取当前子矩阵,逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算,直至当前子矩阵中的元素被调度完;再根据子矩阵获取方法获取当前子矩阵的在行方向上或者列方向上的下一个子矩阵,并将该子矩阵作为当前子矩阵,并返回执行所述逐行分别将当前子矩阵中的每一行以及核矩阵调度至一个目标乘法器进行计算,或者逐列分别将当前子矩阵中的每一列以及核矩阵调度至一个目标乘法器进行计算的步骤;
组合模块,用于根据所述乘法器的运算结果,与卷积后的矩阵中的元素位置的对应关系,将所述乘法器的运算结果组合成卷积后的矩阵。
5.根据权利要求4所述的一种卷积神经网络中计算资源的调度装置,其特征在于,所述运算模块,用于:
A:从所述设定范围内的元素的起始端开始,根据所述核矩阵的行数和列数,读取所述设定行的元素中与核矩阵的列数相同列数的元素,或者读取所述设定列的元素中与核矩阵的行数相同列数的元素;
B:将所读取的元素组成的矩阵作为当前子矩阵,根据所述当前矩阵与所述核矩阵进行点乘运算,得到卷积后的矩阵中同一行或者同一列的第一个元素;
C:从所述设定范围内的元素中,读取所述当前矩阵后的一列或者一行的元素,并将所述当前矩阵中除第一列或者第一行的元素之外的元素,与所述当前矩阵后的一列或者一行的元素组成新的当前矩阵,并返回执行所述A步骤,直至对所述设定范围内的元素完成了点乘运算,其中,所述第一列为从所述设定范围内的元素的起始端开始的第一列,所述第一行为从所述设定范围内的元素的起始端开始的第一行;
D:将所述设定行或者列中除第一行或者第一列之外的元素,与所述设定行或者列中的下一行或者下一列中的元素组成新的设定行或者列,并返回执行所述A步骤,直至对原始矩阵中的所有元素进行了点乘运算。
6.根据权利要求5所述的一种卷积神经网络中计算资源的调度装置,其特征在于,所述运算模块,用于:
若当前子矩阵中存在新元素,在对当前子矩阵中的元素进行调度时,仅将新元素中的对应行或者列的元素进行调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811198549.0A CN109255434A (zh) | 2018-10-15 | 2018-10-15 | 一种卷积神经网络中计算资源的调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811198549.0A CN109255434A (zh) | 2018-10-15 | 2018-10-15 | 一种卷积神经网络中计算资源的调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109255434A true CN109255434A (zh) | 2019-01-22 |
Family
ID=65046293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811198549.0A Pending CN109255434A (zh) | 2018-10-15 | 2018-10-15 | 一种卷积神经网络中计算资源的调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109255434A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866597A (zh) * | 2019-09-27 | 2020-03-06 | 珠海博雅科技有限公司 | 数据处理电路和数据处理方法 |
CN111738432B (zh) * | 2020-08-10 | 2020-12-29 | 电子科技大学 | 一种支持自适应并行计算的神经网络处理电路 |
CN112596965A (zh) * | 2020-12-14 | 2021-04-02 | 上海集成电路研发中心有限公司 | 一种数字图像坏簇统计方法及集成电路自动测试机 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090254333A1 (en) * | 2006-07-17 | 2009-10-08 | Mstar Semiconductor, Inc. | LFSR Emulation |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN107844826A (zh) * | 2017-10-30 | 2018-03-27 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
CN108229654A (zh) * | 2016-12-14 | 2018-06-29 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
-
2018
- 2018-10-15 CN CN201811198549.0A patent/CN109255434A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090254333A1 (en) * | 2006-07-17 | 2009-10-08 | Mstar Semiconductor, Inc. | LFSR Emulation |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN108229654A (zh) * | 2016-12-14 | 2018-06-29 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
CN107844826A (zh) * | 2017-10-30 | 2018-03-27 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866597A (zh) * | 2019-09-27 | 2020-03-06 | 珠海博雅科技有限公司 | 数据处理电路和数据处理方法 |
CN111738432B (zh) * | 2020-08-10 | 2020-12-29 | 电子科技大学 | 一种支持自适应并行计算的神经网络处理电路 |
CN112596965A (zh) * | 2020-12-14 | 2021-04-02 | 上海集成电路研发中心有限公司 | 一种数字图像坏簇统计方法及集成电路自动测试机 |
CN112596965B (zh) * | 2020-12-14 | 2024-04-09 | 上海集成电路研发中心有限公司 | 一种数字图像坏簇统计方法及集成电路自动测试机 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cinar et al. | Position-based content attention for time series forecasting with sequence-to-sequence RNNs | |
Yuan et al. | A hybrid harmony search algorithm for the flexible job shop scheduling problem | |
Cireşan et al. | Deep, big, simple neural nets for handwritten digit recognition | |
CN109255434A (zh) | 一种卷积神经网络中计算资源的调度方法及装置 | |
Ye et al. | Inverted pyramid multi-task transformer for dense scene understanding | |
Wang et al. | Efficient video transformers with spatial-temporal token selection | |
Aarts et al. | Boltzmann machines and their applications | |
CN111758107A (zh) | 用于基于硬件的池化的系统和方法 | |
CN104145281A (zh) | 神经网络计算装置和系统及其方法 | |
CN102622609B (zh) | 一种基于支持向量机的三维模型自动分类方法 | |
CN106021567A (zh) | 一种基于Hadoop的海量矢量数据划分方法及系统 | |
KR102038390B1 (ko) | 고효율 병렬 처리를 위한 인공 신경망 모듈 및 이의 스케쥴링 방법 | |
CN106971200A (zh) | 一种基于自适应迁移学习的图像记忆度预测方法 | |
US20210287075A1 (en) | Hardware architecture for processing data in neural network | |
CN107085562A (zh) | 一种基于高效复用数据流的神经网络处理器及设计方法 | |
CN110020639A (zh) | 视频特征提取方法及相关设备 | |
US20230068450A1 (en) | Method and apparatus for processing sparse data | |
CN107516131A (zh) | 卷积计算的加速方法和装置、电子设备和存储介质 | |
CN106875320A (zh) | 云环境下船舶航行数据的高效可视分析方法 | |
Ming-Te et al. | Using data mining technique to perform the performance assessment of lean service | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
Campanario | Using neural networks to study networks of scientific journals | |
CN113657812A (zh) | 一种基于大数据和算法的门店运营智慧决策的方法和系统 | |
Nguyen et al. | Stochasticity and skip connection improve knowledge transfer | |
CN115485656A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190122 |