CN110796229A - 一种实现卷积运算的装置及方法 - Google Patents
一种实现卷积运算的装置及方法 Download PDFInfo
- Publication number
- CN110796229A CN110796229A CN201810866520.9A CN201810866520A CN110796229A CN 110796229 A CN110796229 A CN 110796229A CN 201810866520 A CN201810866520 A CN 201810866520A CN 110796229 A CN110796229 A CN 110796229A
- Authority
- CN
- China
- Prior art keywords
- convolution
- module
- result
- matrix
- data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 27
- 239000011159 matrix material Substances 0.000 claims description 311
- 238000010586 diagram Methods 0.000 claims description 124
- 238000013139 quantization Methods 0.000 claims description 58
- 238000004364 calculation method Methods 0.000 claims description 44
- 230000006870 function Effects 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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/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
本发明实施例公开一种实现卷积运算的装置及方法,本发明涉及计算机技术领域,在本发明实施例中,数据分配模块从存储模块存储的特征图数据或上一层的卷积结果中获取特征图矩阵,根据卷积步长将预设大小的两个特征图矩阵进行组合拼接获得拼接特征图矩阵,第一卷积模块根据从存储模块存储的权值中读取的卷积核和拼接特征图矩阵确定卷积结果,因此,每次可以实现两个特征图矩阵与一个卷积核的卷积,可以减少卷积的次数,从而可以提高数据处理效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种实现卷积运算的装置及方法。
背景技术
深度网络由于其在解决高级抽象的问题上有着较为明显的效果而得到广泛应用。然而,由于深度网络具有深度高、层次复杂、数据量大、存储密集和计算密集的特点,存在大量卷积操作和池化操作,使得深度网络在实际应用中成为一个较大的瓶颈。此外,在深度网络中,卷积层的计算量占据整个网络的90%,并且是整个网络中最为关键的环节,其计算的效率直接影响着整个网络的性能。因此,为了解决上述问题,业界使用专门的硬件电路充分发挥硬件固有的快速特性来进行数据处理。然而,在进行数据处理的过程中,只能实现一个预设大小的特征图矩阵与一个卷积核的卷积,增加了卷积的次数,以致降低了数据处理效率。
发明内容
本发明实施例公开了一种实现卷积运算的装置及方法,用于提高数据处理效率。
第一方面公开一种实现卷积运算的装置,包括数据控制模块、存储模块、数据分配模块和第一卷积模块,存储模块分别连接数据控制模块、数据分配模块和第一卷积模块,第一卷积模块连接数据分配模块;数据控制模块接收包括特征图数据和权值的输入数据并发送给存储模块;存储模块存储特征图数据和权值;数据分配模块从存储模块存储的特征图数据或上一层的卷积结果中获取特征图矩阵,根据卷积步长将该特征图矩阵中的M*M大小的两个特征图矩阵进行组合拼接获得拼接特征图矩阵,并将拼接特征图矩阵发送给第一卷积模块;第一卷积模块从存储模块存储的权值中读取每层卷积对应的卷积核,根据读取的卷积核和拼接特征图矩阵确定卷积结果,并将卷积结果发送给数据分配模块。其中,M为预设的特征图矩阵的阶数,M为大于或等于2的正整数。获得卷积结果时,是根据卷积核和拼接特征图矩阵获得的,而拼接特征图矩阵是根据卷积步长由两个M阶的特征图矩阵组合拼接获得的,因此,每次可以实现两个特征图矩阵与一个卷积核的卷积,可以减少卷积的次数,从而可以提高数据处理效率。
在一个实施例中,数据分配模块包括L个超大规模RAM(Ultra scale RAM,URAM)控制器和L选2选择器,L个URAM从特征图数据或上一层的卷积结果中获取M阶的特征图矩阵,并将获取的特征图矩阵传输给L选2控制器;L选2选择器控制第一URAM控制器读取特征图矩阵,控制第二URAM控制器和第三URAM控制器传输特征图矩阵,并将第二URAM控制器和第三URAM控制器传输的特征图矩阵组合拼接为拼接特征图矩阵。其中,L为大于或等于3的整数,第一URAM控制器、第二URAM控制器和第三URAM控制器是L个URAM控制器中的不同URAM控制器。一个URAM控制器读取数据,两个URAM控制器输出数据,可以保证数据的读取和处理不冲突,可以进一步提高数据的处理效率。
在一个实施例中,第一卷积模块包括特征图计算模块、权值计算模块和第二卷积模块,特征图计算模块分别连接数据分配模块和第二卷积模块,权值计算模块分别连接存储模块和第二卷积模块,第二卷积模块连接数据分配模块;特征图计算模块将拼接特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,并将特征图结果发送给第二卷积模块;权值计算模块从存储模块存储的权值中读取每层卷积对应的卷积核,将第二固定矩阵与读取的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,并将权值结果发送给第二卷积模块;第二卷积模块根据特征图结果与权值结果确定卷积结果,并将卷积结果发送给数据分配模块。其中,第二固定矩阵为M×N矩阵,第三固定矩阵为N×M矩阵,N为卷积核的阶数。在进行卷积前将需要卷积的卷积核转换为M阶的矩阵,可以减少第二卷积模块进行卷积时乘法的次数,从而可以提高卷积速率。
在一个实施例中,该实现卷积运算的装置还包括线性整流函数(Rectified LinerUnit,ReLU)模块、量化模块和边界扩展模块,ReLU模块分别连接第二卷积模块和量化模块,边界扩展模块分别连接量化模块和数据分配模块;第二卷积模块将卷积结果发送给数据分配模块,可以将卷积结果发送给ReLU模块;ReLU模块将卷积结果中小于零的数进行归零处理获得ReLU结果,并将ReLU结果发送给量化模块;量化模块对ReLU结果进行小数点对齐获得量化结果,并将量化结果发送给边界扩展模块;边界扩展模块对量化结果进行边界扩展获得边界扩展结果,并将边界扩展结果发送给数据分配模块。
在一个实施例中,边界扩展模块将边界扩展结果发送给数据分配模块,可以先将边界扩展结果划分为多个条带,并将多个条带发送给数据分配模块,由于边界扩展结果是以条带为单位发送给数据分配模块,因此,数据分配模块可以边接收数据边对接收的数据进行处理,而不需要等到接收完所有的数据之后再处理数据,因此,可以实现流水化的设计,从而可以进一步提高数据处理效率。
在一个实施例中,该实现卷积运算的装置还包括结果分配模块,结果分配模块分别连接存储模块、数据分配模块和边界扩展模块;边界扩展模块将边界扩展结果发送给数据分配模块,可以是将边界扩展结果发送给结果分配模块;当存在旁路时,结果分配模块将边界扩展结果发送给存储模块,当不存在旁路时,结果分配模块将边界扩展结果发送给数据分配模块;当存在旁路时,存储模块还将边界扩展结果按照通道进行存储。在存在旁路时,存储模块存储上一层的边界扩展结果,可以保证旁路能够使用上一层的边界扩展结果,从而可以实现数据的复用。
在一个实施例中,卷积步长可以为1或2,不仅可以实现卷积步长为1的设计,也可以实现卷积步长为2的设计。
在一个实施例中,卷积核的阶数可以为3、5或7,可见,不仅可以实现卷积核为3×3的设计,也可以实现卷积核为5×5的设计,还可以实现卷积核为7×7的设计。
第二方面公开一种实现卷积运算的装置,包括数据控制模块、存储模块、数据分配模块和第一卷积模块,存储模块分别连接数据控制模块、数据分配模块和第一卷积模块,第一卷积模块连接数据分配模块;数据控制模块接收包括特征图数据和权值的输入数据并发送给存储模块;存储模块存储特征图数据和权值;数据分配模块从存储模块存储的特征图数据或上一层的卷积结果中获取数据,根据卷积步长将获取的数据以预设的特征图为单位进行组合得到预设大小的特征图矩阵,并将特征图矩阵发送给第一卷积模块;第一卷积模块从存储模块存储的权值中读取每层卷积对应的卷积核,根据读取的卷积核中的两个卷积核和一个特征图矩阵确定卷积结果,并将卷积结果发送给数据分配模块。获得卷积结果时,是根据两个卷积核和一个预设大小的特征图矩阵获得的,因此,每次可以实现一个特征图矩阵与两个卷积核的卷积,可以减少卷积的次数,从而可以提高数据处理效率。
在一个实施例中,第一卷积模块包括特征图计算模块、权值计算模块和第二卷积模块,特征图计算模块分别连接数据分配模块和第二卷积模块,权值计算模块分别连接存储模块和第二卷积模块,第二卷积模块连接数据分配模块;特征图计算模块将特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,并将特征图结果发送给第二卷积模块;权值计算模块从存储模块存储的权值中读取每层卷积对应的卷积核,将第二固定矩阵与读取的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,并将权值结果发送给第二卷积模块;第二卷积模块根据特征图结果中的一个矩阵与权值结果中的两个矩阵确定卷积结果,并将卷积结果发送给数据分配模块。其中,第一固定矩阵的大小与预设的特征图的大小相同,第二固定矩阵为M×N矩阵,第三固定矩阵为N×M矩阵,M为预设的特征图的阶数,N为卷积核的阶数。在进行卷积前将需要卷积的数据都转换为M阶的矩阵,可以通过采用Winograd算法减少卷积核进行卷积时乘法的次数,从而可以提高卷积速率。
在一个实施例中,该实现卷积运算的装置还包括ReLU模块、量化模块和边界扩展模块,ReLU模块分别连接第二卷积模块和量化模块,边界扩展模块分别连接量化模块和数据分配模块;第二卷积模块将卷积结果发送给数据分配模块,可以将卷积结果发送给ReLU模块;ReLU模块将卷积结果中小于零的数进行归零处理获得ReLU结果,并将ReLU结果发送给量化模块;量化模块对ReLU结果进行小数点对齐获得量化结果,并将量化结果发送给边界扩展模块;边界扩展模块对量化结果进行边界扩展获得边界扩展结果,并将边界扩展结果发送给数据分配模块。
在一个实施例中,边界扩展模块将边界扩展结果发送给数据分配模块,可以先将边界扩展结果划分为多个条带,并将多个条带发送给数据分配模块,由于边界扩展结果是以条带为单位发送给数据分配模块,因此,数据分配模块可以边接收数据边对接收的数据进行处理,而不需要等到接收完所有的数据之后再处理数据,因此,可以实现流水化的设计,从而可以进一步提高数据处理效率。
在一个实施例中,该实现卷积运算的装置还包括结果分配模块,结果分配模块分别连接存储模块、数据分配模块和边界扩展模块;边界扩展模块将边界扩展结果发送给数据分配模块,可以是将边界扩展结果发送给结果分配模块;当存在旁路时,结果分配模块将边界扩展结果发送给存储模块,当不存在旁路时,结果分配模块将边界扩展结果发送给数据分配模块;当存在旁路时,存储模块还将边界扩展结果按照通道进行存储。在存在旁路时,存储模块存储上一层的边界扩展结果,可以保证旁路能够使用上一层的边界扩展结果,从而可以实现数据的复用。
在一个实施例中,卷积步长可以为1或2,不仅可以实现卷积步长为1的设计,也可以实现卷积步长为2的设计。
在一个实施例中,卷积核的阶数可以为3、5或7,可见,不仅可以实现卷积核为3×3的设计,也可以实现卷积核为5×5的设计,还可以实现卷积核为7×7的设计。
本发明实施例第三方面公开一种实现卷积运算的方法,接收包括特征图数据和权值的输入数据,根据卷积步长将特征图数据或上一层的卷积结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵,根据拼接特征图矩阵与权值中对应的卷积核确定卷积结果。其中,M为预设的特征图矩阵的阶数,M为大于或等于2的整数。获得卷积结果时,是根据卷积核和拼接特征图矩阵获得的,而拼接特征图矩阵是根据卷积步长由两个M阶的特征图矩阵组合拼接获得的,因此,每次可以实现两个特征图矩阵与一个卷积核的卷积,可以减少卷积的次数,从而可以提高数据处理效率。
在一个实施例中,可以将拼接特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,将第二固定矩阵与权值中每层卷积对应的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,根据特征图结果与权值结果确定卷积结果。其中,第二固定矩阵为M×N矩阵,第三固定矩阵为N×M矩阵,N为卷积核的阶数。在进行卷积前将需要卷积的数据都转换为M阶的矩阵,可以减少卷积核进行卷积时乘法的次数,从而可以提高卷积速率。
在一个实施例中,可以将卷积结果中小于零的数进行归零处理获得ReLU结果,对ReLU结果进行小数点对齐获得量化结果,对量化结果进行边界扩展获得边界扩展结果,根据卷积步长将上一层的边界扩展结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵。
本发明实施例第四方面公开一种实现卷积运算的方法,接收包括特征图数据和权值的输入数据,根据卷积步长将特征图数据或上一层的卷积结果以预设的特征图为单位进行组合获得预设大小的特征图矩阵,根据一个预设大小的特征图矩阵与权值中对应的两个卷积核确定卷积结果。获得卷积结果时,是根据两个卷积核和一个特征图矩阵卷积获得的,因此,每次可以实现一个特征图矩阵与两个卷积核的卷积,可以减少卷积的次数,从而可以提高数据处理效率。
在一个实施例中,可以将特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,将第二固定矩阵与权值中每层卷积对应的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,根据特征图结果中的一个矩阵与权值结果中的两个矩阵确定卷积结果。其中,第一固定矩阵的大小与预设的特征图的大小相同,第二固定矩阵为M×N矩阵,第三固定矩阵为N×M矩阵,M为预设的特征图的阶数,N为卷积核的阶数。在进行卷积前将需要卷积的数据都转换为M阶的矩阵,可以减少卷积核进行卷积时乘法的次数,从而可以提高卷积速率。
在一个实施例中,可以将卷积结果中小于零的数进行归零处理获得ReLU结果,对ReLU结果进行小数点对齐获得量化结果,对量化结果进行边界扩展获得边界扩展结果,根据卷积步长将上一层的边界扩展结果以预设的特征图为单位进行组合获得特征图矩阵。
本发明实施例第五方面公开一种实现卷积运算的装置,该装置包括处理器和存储器,存储器用于存储程序代码,处理器用于执行存储器存储的程序代码,当处理器执行存储器存储的程序代码时,使得处理器执行第三方面或第三方面任一种可能的实现方式所述的实现卷积运算的方法的操作步骤,或者使得处理器执行第四方面或第四方面任一种可能的实现方式所述的实现卷积运算的方法的操作步骤。
附图说明
图1是本发明实施例公开的一种卷积计算的示意图;
图2是本发明实施例公开的另一种卷积计算的示意图;
图3是本发明实施例公开的一种当卷积步长为1时对特征图进行划分的示意图;
图4是本发明实施例公开的一种当卷积步长为2时对特征图进行划分的示意图;
图5是本发明实施例公开的一种Winograd算法硬件结构设计的示意图;
图6是本发明实施例公开的一种实现卷积运算的装置的结构示意图;
图7是本发明实施例公开的另一种实现卷积运算的装置的结构示意图;
图8是本发明实施例公开的一种根据由两个4×4矩阵组合拼接的一个6×4的拼接特征图矩阵与权值结果中的一个4×4的矩阵确定卷积结果的等效示意图;
图9是本发明实施例公开的一种第二卷积模块的结构示意图;
图10是本发明实施例公开的一种根据一个4×4的特征图矩阵与权值结果中的两个4×4的矩阵确定卷积结果的等效示意图;
图11是本发明实施例公开的另一种第二卷积模块的结构示意图;
图12是本发明实施例公开的一种特征图计算模块的结构示意图;
图13是本发明实施例公开的一种权值计算模块的结构示意图;
图14是本发明实施例公开的一种数据分配模块的结构示意图;
图15是本发明实施例公开的一种第二模块的结构示意图;
图16是本发明实施例公开的一种实现卷积运算的方法的流程示意图;
图17是本发明实施例公开的另一种实现卷积运算的方法的流程示意图;
图18是本发明实施例公开的又一种实现卷积运算的装置的结构示意图。
具体实施方式
本发明实施例公开了一种实现卷积运算的装置及方法,用于提高数据处理效率。以下分别进行详细说明。
为了更好地理解本发明实施例公开的一种实现卷积运算的装置及方法,下面先对本发明实施例的应用场景进行描述。先对本发明实施例中的概念进行定义。Winograd算法是一种通过矩阵转换实现快速卷积的方法。F(2×2,3×3)是卷积核为3×3矩阵、输出为2×2矩阵的图像点。卷积核是深度学习中,用于与输入图像和中间图像进行滑动卷积的权值矩阵。卷积步长是卷积核在输入图像和中间图像间滑动的跳跃数据个数。特征图是深度学习中间卷积层间传输的中间结果或中间图像。条带是数据按照列的方向划分为等宽的数据图,条带的宽度要满足足够进行一次最小Winograd算法计算所需的数据宽度。Winograd算法可以减少乘法的次数,因此,在深度神经网络中,为了减少卷积层的计算量,引入了Winograd算法。请参阅图1,图1是本发明实施例公开的一种卷积计算的示意图。如图1所示,当卷积步长为1时,特征图为4×4的矩阵与卷积核为3×3的矩阵进行卷积运算得到2×2的输出矩阵,可见,直接进行卷积需要36次乘法。请参阅图2,图2是本发明实施例公开的另一种卷积计算的示意图。如图2所示,当卷积步长为1时,特征图为6×6的矩阵与卷积核为5×5的矩阵进行卷积运算得到2×2的输出矩阵,可见,直接进行卷积需要100次乘法。请参阅图3,图3是本发明实施例公开的一种当卷积步长为1时对特征图进行划分的示意图。如图3所示,当特征图为4×4的矩阵,卷积核为3×3的矩阵,卷积步长为1时,每一次卷积核与图3中的一个圆圈中的3×3的矩阵进行卷积,可见,每次卷积的数据与上次卷积的数据之间跳跃1个数据。请参阅图4,图4是本发明实施例公开的一种当卷积步长为2的示意图。如图4所示,当特征图为5×5的矩阵,卷积核为3×3的矩阵,卷积步长为2时,每一次卷积核与图4中的一个圆圈中的3×3的矩阵进行卷积,可见,每次卷积的数据与上次卷积的数据之间跳跃2个数据。
请参阅图5,图5是本发明实施例公开的一种Winograd算法硬件结构设计的示意图。如图5所示,当卷积核为3×3的矩阵,卷积步长为1时,特征图可以预设为4×4、5×5、6×6、7×7和8×8的矩阵,当卷积核为3×3的矩阵,卷积步长为2时,特征图可以预设为5×5和7×7的矩阵,当卷积核为5×5的矩阵,卷积步长为1时,特征图可以预设为6×6、7×7和8×8的矩阵,当卷积核为5×5的矩阵,卷积步长为2时,特征图可以预设为7×7的矩阵,当卷积核为7×7的矩阵,卷积步长为1时,特征图可以预设为8×8和9×9的矩阵,当卷积核为7×7的矩阵,卷积步长为2时,特征图可以预设为9×9的矩阵。在本申请的实施例中,可以根据硬件结构预设卷积核大小,并进一步预设特征图矩阵的大小。
基于图5所示的硬件结构设计的示意图,请参阅图6,图6是本发明实施例公开的一种实现卷积运算的装置的结构示意图。在本申请一种可能的实现方式中,该实现卷积运算的装置可以设置在现场可编程门阵列(Field Programmable Gate Array,FPGA)上。如图6所示,该实现卷积运算的装置可以包括数据控制模块1、存储模块2、数据分配模块3和第一卷积模块4,其中:
存储模块2分别连接数据控制模块1、数据分配模块3和第一卷积模块4,第一卷积模块4连接数据分配模块3;
数据控制模块1,用于接收输入数据并发送给存储模块2,输入数据包括特征图数据和权值。其中,在本申请一种可能的实现方式中,数据控制模块1可以接收所有离线训练好的权值并将其存入存储模块2,这样在之后的计算中,第一卷积模块4可以直接从存储模块2中读取每层卷积对应的卷积核,而不需要数据控制模块1再次接收权值;
存储模块2,用于将特征图数据按照通道进行存储,并将权值以卷积核为单位进行存储。
作为一种可能的实施方式,数据分配模块3,用于从存储模块2存储的特征图数据或上一层的卷积结果中获取M阶的特征图矩阵,根据卷积步长将M阶的特征图矩阵中的两个特征图矩阵进行组合拼接获得拼接特征图矩阵,并将拼接特征图矩阵发送给第一卷积模块4,M为预设的特征图矩阵的阶数,M为大于或等于2的整数;
第一卷积模块4,用于从存储模块2存储的权值中读取每层卷积对应的卷积核,根据读取的卷积核和拼接特征图矩阵确定卷积结果,并将卷积结果发送给数据分配模块1。
作为一种可能的实施方式,数据分配模块3,用于从存储模块2存储的特征图数据或上一层的卷积结果中获取数据,根据卷积步长将获取的数据以预设的特征图为单位进行组合得到预设大小的特征图矩阵,并将特征图矩阵发送给第一卷积模块4;
第一卷积模块4,用于从存储模块2中的权值中读取每层卷积对应的卷积核,根据读取的卷积核中的两个卷积核和一个特征图矩阵确定卷积结果,并将卷积结果发送给数据分配模块3。
本实施例中,数据控制模块1实时从输入输出端口读取数据输入的状态,当数据可用时,向外部发出相关的读取数据的命令,数据控制模块1通过周边元件互联标准(PeripheralComponent Interconnect Express,PCIE)或其它接口协议从实现卷积运算的装置外围读取输入数据到实现卷积运算的装置的片内块随机存储器(Random AccessMemory,RAM)中。也即是数据控制模块1实时监测是否存在输入数据,当存在输入数据时,向外部发送使能信号,外部根据使能信号将输入数据发送给数据控制模块1,数据控制模块1接收输入数据,并将输入数据发送给存储模块。输入数据包括特征图数据、权值和偏置数据,特征图数据可以包括多个条带。存储模块将特征图数据按照通道进行存储,将权值以卷积核大小为单位进行存储,并存储偏置数据。数据分配模块3可以按照通道、列和行的顺序从存储模块2存储的特征图数据或上一层的卷积结果中获取特征图矩阵,根据卷积步长将两个预设大小的特征图矩阵进行组合拼接获得拼接特征图矩阵,并将拼接特征图矩阵发送给第一卷积模块4,第一卷积模块4可以从存储模块2存储的权值中读取每层卷积对应的卷积核,根据读取的一个卷积核和一个拼接特征图矩阵确定卷积结果,并将卷积结果发送给数据分配模块3。数据分配模块3也可以按照通道、列和行的顺序从存储模块2存储的特征图数据或上一层的卷积结果中获取数据,根据卷积步长将获取的数据以预设的特征图为单位进行组合获得预设大小的特征图矩阵,并将预设大小的特征图矩阵发送给第一卷积模块4,第一卷积模块4可以从存储模块2中的权值中读取每层卷积对应的卷积核,根据读取的卷积核中的两个卷积核和一个预设大小的特征图矩阵确定卷积结果,并将卷积结果发送给数据分配模块3。
基于图5所示的硬件结构设计的示意图,请参阅图7,图7是本发明实施例公开的另一种实现卷积运算的装置的结构示意图。其中,图7所示的实现卷积运算的装置是由图6所示的实现卷积运算的装置优化得到的。其中,第一卷积模块4可以包括特征图计算模块41、权值计算模块42和第二卷积模块43,其中:
特征图计算模块41分别连接数据分配模块3和第二卷积模块43,权值计算模块42分别连接存储模块2和第二卷积模块43,第二卷积模块43连接数据分配模块3。
作为一种可能的实施方式,特征图计算模块41,用于将拼接特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,并将特征图结果发送给第二卷积模块43;
权值计算模块42,用于从存储模块2存储的权值中读取每层卷积对应的卷积核,将第二固定矩阵与读取的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,并将权值结果发送给第二卷积模块43,第二固定矩阵为M×N矩阵,第三固定矩阵为N×M矩阵,N为卷积核的阶数;
第二卷积模块43,用于根据特征图结果中的一个矩阵与权值结果中的一个矩阵确定卷积结果,并将卷积结果发送给第一模块31。
本实施例中,特征图计算模块41中可以存储多个不同大小的第一固定矩阵,当预设的特征图的大小不同时,可以选择对应的第一固定矩阵。同理,权值计算模块42中可以存储多个不同大小的第二固定矩阵和第三固定矩阵,当卷积核的阶数不同时,可以选择对应的第二固定矩阵和第三固定矩阵。从而可以在一个装置上实现多种卷积核和预设的特征图大小的Winograd算法。
在本实施例的一种实现方式中,以预设的矩阵大小为4×4为例进行说明。请参阅图8,图8是本发明实施例公开的一种根据由两个4×4矩阵组合拼接的一个6×4的拼接特征图矩阵与权值结果中的一个4×4的矩阵确定卷积结果的等效示意图。请参阅图9,图9是本发明实施例公开的一种第二卷积模块的结构示意图。图9所示的第二卷积模块是针对图8所示的示意图设计的。如图9所示,特征图结果中的两个4×4的矩阵组合拼接的一个6×4的矩阵输入d0-d5,权值结果中的一个4×4的矩阵输入G0-G3。
作为一种可能的实施方式,特征图计算模块41,用于将特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,并将特征图结果发送给第二卷积模块43,第一固定矩阵的大小与预设的特征图的大小相同;
权值计算模块42,用于从存储模块2存储的权值中读取每层卷积对应的卷积核,将第二固定矩阵与读取的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,并将权值结果发送给第二卷积模块43,第二固定矩阵为M×N矩阵,第三固定矩阵为N×M矩阵;
第二卷积模块43,用于根据特征图结果中的矩阵与权值结果中的矩阵确定卷积结果,并将卷积结果发送给数据分配模块3,。
本实施例中,第二卷积模块43实现的Winograd算法的卷积核进行卷积时,是M×M的矩阵与M×M的矩阵进行卷积,总共只需要M×M次乘法。例如:特征图为4×4的矩阵,卷积核为3×3的矩阵,直接进行卷积需要36次,而通过本发明结构设计的Winograd算法结构,只需要4×4=16次乘法,可以明显减少乘法的次数。
本实施例中,请参阅图10,图10是本发明实施例公开的一种根据一个4×4的特征图矩阵与权值结果中的两个4×4的矩阵确定卷积结果的等效示意图。请参阅图11,图11是本发明实施例公开的另一种第二卷积模块的结构示意图。图11所示的第二卷积模块是针对图10所示的示意图设计的。如图11所示,特征图结果中的一个4×4的矩阵输入d0-d3,权值结果中的两个4×4的矩阵输入G0-G3和P0-P3。
本实施例中,请参阅图12,图12是本发明实施例公开的一种特征图计算模块的结构示意图。如图12所示,特征图为4×4的矩阵,此时特征图计算模块可以包括17个减法器和7个加法器,d00-d33为特征图矩阵,b00-b32为特征图结果,可见,可以通过加法和减法实现矩阵乘法,减少了乘法的次数,减法即加一个负数。
本实施例中,请参阅图13,图13是本发明实施例公开的一种权值计算模块的结构示意图。如图13所示,卷积模板为3×3的矩阵,此时权值计算模块可以包括14个加法器和7个减法器,g00-g22为从存储模块存储的权值中读取的每层卷积对应的卷积核,G00-G33为权值结果,可见,可以通过加法和减法实现了矩阵乘法,减少了乘法的次数,减法即加一个负数。
作为一种可能的实施方式,该实现卷积运算的装置还可以包括累加器、偏置器和先进先出(First Input First Output,FIFO)存储器,其中:
累加器分别连接第二卷积模块43和偏置器,FIFO存储器分别连接偏置器和数据分配模块3,偏置器连接存储模块2;
累加器,用于将不同通道的卷积结果累加起来获得累加结果,并将累加结果发送给偏置器,可见,只需要存储上一次卷积结果即可,而不需要存储其它中间结果,因此,可以减少中间结果的存储量,从而可以节约资源;
偏置器,用于从存储模块2存储的偏置数据中读取每层卷积对应的偏置数,将累加结果与偏置数相加获得偏置结果,并将偏置结果发送给FIFO存储器;
FIFO存储器,用于将第二卷积模块43对应的偏置结果顺序转发给数据分配模块3。
作为一种可能的实施方式,该实现卷积运算的装置还可以包括ReLU模块5、量化模块6和边界扩展模块7,其中:
ReLU模块5分别连接第二卷积模块43和量化模块6,边界扩展模块7分别连接量化模块6和数据分配模块3;
第二卷积模块43将卷积结果发送给数据分配模块3包括:
第二卷积模块43将卷积结果发送给ReLU模块5;
ReLU模块5,用于将卷积结果中小于零的数进行归零处理获得ReLU结果,并将ReLU结果发送给量化模块6;
量化模块6,用于对ReLU结果进行小数点对齐获得量化结果,并将量化结果发送给边界扩展模块7;
边界扩展模块7,用于对量化结果进行边界扩展获得边界扩展结果,将边界扩展结果发送给数据分配模块3。
本实施例中,ReLU模块5将卷积结果中小于零的数进行归零处理获得ReLU结果,可以是将FIFO存储器转发的偏置结果中小于零的数进行归零处理获得ReLU结果。当卷积步长为1时,边界扩展模块7将量化结果扩展为与数据分配模块的输入大小相同的数据。当卷积步长为2时,边界扩展模块7将量化结果扩展为与数据分配模块的输入一半大小相同的数据。例如,当数据分配模块的输入为512×768的数据图时,如果卷积步长为1,则量化结果为510×766的数据图,将量化结果扩展为512×768的数据图;如果卷积步长为2,则量化结果为254×381的数据图,将量化结果扩展为256×383的数据图。
作为一种可能的实施方式,边界扩展模块7将边界扩展结果发送给数据分配模块3包括:
将边界扩展结果划分为多个条带,并将多个条带发送给数据分配模块3。
本实施例中,边界扩展模块7可以将边界扩展结果划分为多个条带,并将多个条带按照通道发送给数据分配模块3。此处的条带与特征图数据处的条带的宽度相同,长度可以相同,也可以不同。其中,条带的宽度是本层卷积结果矩阵的宽度。
作为一种可能的实施方式,该实现卷积运算的装置还可以包括结果分配模块8,其中:
结果分配模块8分别连接存储模块2、数据分配模块3和边界扩展模块7;
边界扩展模块7将边界扩展结果发送给数据分配模块3包括:
将边界扩展结果发送给结果分配模块8;
结果分配模块8,用于当存在旁路时,将边界扩展结果发送给存储模块2,当不存在旁路时,将边界扩展结果发送给数据分配模块3;
存储模块2,还用于当存在旁路时,将边界扩展结果按照通道进行存储。
作为一种可能的实施方式,卷积步长可以为1或2。
作为一种可能的实施方式,卷积核的阶数可以为3、5或7。
作为一种可能的实施方式,请参阅图14,图14是本发明实施例公开的一种数据分配模块的结构示意图。如图14所示,数据分配模块可以包括L个URAM控制器和L选2选择器,L个URAM从特征图数据或上一层的卷积结果中获取M阶的特征图矩阵,并将获取的特征图矩阵传输给L选2控制器;L选2选择器控制第一URAM控制器读取特征图矩阵,控制第二URAM控制器和第三URAM控制器传输特征图矩阵,并将第二URAM控制器和第三URAM控制器传输的特征图矩阵组合拼接为拼接特征图矩阵。其中,L为大于或等于3的整数,第一URAM控制器、第二URAM控制器和第三URAM控制器是L个URAM控制器中的不同URAM控制器。
本实施例中,L个URAM控制器相同,当L为3时,L选2选择器先控制URAM控制器1先读取数据。当URAM控制器1的缓存溢出时,L选2选择器控制URAM控制器1停止读数据,并控制URAM控制器2读取数据。当URAM控制器2的缓存溢出时,L选2选择器控制URAM控制器2停止读数据,控制URAM控制器3读取数据,并控制URAM控制器1和URAM控制器2传输数据。当URAM控制器1和URAM控制器2传输完数据时,清空URAM控制器1中的缓存器,在URAM控制器3的缓存溢出时,L选2选择器控制URAM控制器3停止读数据,控制URAM控制器1读取数据,并控制URAM控制器2和URAM控制器3传输数据。当URAM控制器2和URAM控制器3传输完数据时,清空URAM控制器2中的缓存器,在URAM控制器1的缓存溢出时,L选2选择器控制URAM控制器1停止读数据,控制URAM控制器2读取数据,并控制URAM控制器1和URAM控制器3传输数据,以此类推。
作为一种可能的实施方式,数据分配模块3可以包括第一模块和第二模块,其中:
第一模块分别连接第二模块和存储模块2,第二模块连接第一卷积模块4;
第一模块,用于按照通道、列和行的顺序从存储模块存储的特征图数据或上一层的卷积结果中读取数据,将读取的数据组合为预设大小的特征图矩阵并发送给第二模块;
第二模块,用于根据卷积步长将特征图矩阵以预设的特征图为单位进行组合获得预设大小的特征图矩阵,并将特征图矩阵发送给第一卷积模块4。
作为一种可能的实施方式,第一模块可以包括J个URAM控制器和J选2选择器,J为大于或等于3的整数,其中:
J选2选择器分别连接J个URAM控制器和第二模块,J个URAM控制器分别连接存储模块和第一卷积模块4;
J个URAM控制器,用于按照通道、列和行的顺序从存储模块2存储的特征图数据或上一层的卷积结果中读取数据,并将读取的数据传输给J选2选择器;
J选2选择器,用于控制第一URAM控制器读取数据,控制第二URAM控制器和第三URAM控制器传输数据,将第二URAM控制器和第三URAM控制器传输的数据组合为中间矩阵,并将中间矩阵发送给第二模块,第一URAM控制器、第二URAM控制器和第三URAM控制器是J个URAM控制器中的不同URAM控制器。
作为一种可能的实施方式,请参阅图15,图15是本发明实施例公开的一种第二模块的结构示意图。如图15所示,第二模块可以包括H选1选择器、H个URAM控制器和H选2选择器,H为大于或等于3的整数,其中:
H选2选择器分别连接H个URAM控制器和第一卷积模块4,H选1选择器分别连接H个URAM控制器和第一模块;
H选1选择器,用于将中间矩阵发送给H个URAM控制器中的一个URAM控制器;
H个URAM控制器,用于接收中间矩阵并传输给H选2选择器;
H选2选择器,用于控制H个URAM控制器中的两个URAM控制器传输中间矩阵,根据卷积步长将传输的两个中间矩阵以预设的特征图为单位进行组合获得预设大小的特征图矩阵,并将特征图矩阵发送给第一卷积模块4。
本实施例中,H个URAM控制器相同,当H为3时,H选1选择器先控制URAM控制器1读取数据。当URAM控制器1的缓存溢出时,H选1选择器控制URAM控制器1停止读数据,并控制URAM控制器2读取数据。当URAM控制器2的缓存溢出时,H选1选择器控制URAM控制器2停止读数据,控制URAM控制器3读取数据,H选2选择器控制URAM控制器1和URAM控制器2传输数据。当URAM控制器1和URAM控制器2传输完数据时,清空URAM控制器1中的缓存器,在URAM控制器3的缓存溢出时,H选1选择器控制URAM控制器3停止读数据,控制URAM控制器1读取数据,H选2选择器控制URAM控制器2和URAM控制器3传输数据。当URAM控制器2和URAM控制器3传输完数据时,清空缓存器中的数据,在URAM控制器1的缓存溢出时,H选1选择器控制URAM控制器1停止读数据,控制URAM控制器2读取数据,H选2选择器控制URAM控制器1和URAM控制器3传输数据,以此类推。
作为一种可能的实施方式,第二模块、第一卷积模块4、ReLU模块5和量化模块6的数量均为2。
本实施例中,数据控制模块1实时监测是否存在输入数据,当存在输入数据时,向外部发送使能信号,外部根据使能信号将输入数据发送给数据控制模块1,数据控制模块1接收输入数据并发送给存储模块。输入数据包括特征图数据、权值和偏置数据,特征图数据包括多个第一条带。存储模块可以将多个第一条带按照通道进行存储,将权值以卷积核为单位进行存储,并存储偏置数据。数据分配模块3可以在进行第一层卷积时可以以1×1的数据块为单位按照通道、列和行的顺序从存储模块2读取特征图数据,在进行第二层或第二层以上的卷积时以1×1的数据块为单位按照通道、列和行的顺序读取上一层的边界扩展结果,将读取的数据组合为特征图矩阵并发送给特征图计算模块41。特征图计算模块41将特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果并将发送给第二卷积模块43。权值计算模块42从存储模块2存储的权值中读取每层卷积对应的卷积核,将第二固定矩阵与读取的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果并发送给第二卷积模块43。第二卷积模块43根据特征图结果中的一个矩阵与权值结果中的两个矩阵确定卷积结果并发送给累加器。累加器将不同通道的卷积结果累加起来获得累加结果,并将累加结果发送给偏置器。偏置器从存储模块中的偏置数据中读取每层卷积对应的偏置数,将累加结果与偏置数相加获得偏置结果并发送给FIFO存储器。FIFO存储器将第二卷积模块对应的偏置结果顺序转发给ReLU模块。ReLU模块5将偏置结果中小于零的数进行归零处理获得ReLU结果并发送给量化模块6。量化模块6对ReLU结果进行小数点对齐获得量化结果并发送给边界扩展模块7。边界扩展模块7对量化结果进行边界扩展获得边界扩展结果,将边界扩展结果划分为多个第二条带,并将多个条带按照通道发送给结果分配模块8。结果分配模块8当存在旁路时将边界扩展结果发送给存储模块2,当不存在旁路时将边界扩展结果发送给数据分配模块3。存储模块2当存在旁路时,将边界扩展结果按照通道进行存储。
请参阅图16,图16是本发明实施例公开的一种实现卷积运算的方法的流程示意图。其中,该实现卷积运算的方法适用于图6-图7所示的实现卷积运算的装置。如图16所示,该方法可以包括以下步骤。
1601、接收包括特征图数据和权值的输入数据。
本实施例中,当需要通过Winograd算法实现卷积时,将需要的输入数据发送给实现卷积运算的装置,输入数据包括特征图数据、权值和偏置数据。
1602、根据卷积步长将特征图数据或上一层的卷积结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵。
本实施例中,接收到输入数据之后,可以直接根据卷积步长将特征图数据或上一层的卷积结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵。也可以先将特征图数据或上一层的卷积结果按照通道、列和行的顺序组合拼接为中间矩阵,根据卷积步长将中间矩阵以预设的特征图为单位进行组合拼接获得拼接中间矩阵,之后根据卷积步长将拼接中间矩阵中的两个拼接中间矩阵组合拼接为拼接特征图矩阵。其中,中间矩阵中不存在重复的数据,且大小小于特征图的大小,卷积步长可以为1,也可以为2。其中,M为预设的特征图矩阵的阶数,M为大于或等于2的整数。M的大小和卷积核的大小可以参考图5,在此不再详细赘述。
1603、根据拼接特征图矩阵与权值中对应的卷积核确定卷积结果。
本实施例中,根据卷积步长将特征图数据或上一层的卷积结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵之后,可以根据一个拼接特征图矩阵与权值中该层卷积对应的一个卷积核确定卷积结果,可以通过Winograd算法实现一个拼接特征图矩阵与权值中该层卷积对应的一个卷积核的卷积。
本实施例中,可以将拼接特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,将第二固定矩阵与权值中每层卷积对应的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,根据特征图结果中的一个矩阵与权值结果中的一个矩阵确定卷积结果。其中,第二固定矩阵为M×N矩阵,第三固定矩阵为N×M矩阵,N为卷积核的阶数。
在一个实施例中,可以将不同通道的卷积结果累加起来获得累加结果,将累加结果与偏置数据中对应的偏置数相加获得偏置结果。
在一个实施例中,可以先将卷积结果中小于零的数进行归零处理获得ReLU结果,对ReLU结果进行小数点对齐获得量化结果,对量化结果进行边界扩展获得边界扩展结果,根据卷积步长将上一层的边界扩展结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵。
本实施例中,接收包括特征图数据、权值和偏置数据的输入数据,将特征图数据或上一层的边界扩展结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵,将拼接特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,将第二固定矩阵与对应层的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,根据特征图结果中的一个矩阵与权值结果中的一个矩阵确定卷积结果,将不同通道的卷积结果累加起来获得累加结果,将累加结果与对应层的偏置数相加获得偏置结果,将偏置结果中小于零的数进行归零处理获得ReLU结果,对ReLU结果进行小数点对齐获得量化结果,对量化结果进行边界扩展获得边界扩展结果。
上述各个步骤更详细的描述可以直接参考上述图6-图7所示的装置实施例中的相关描述直接得到,这里不加赘述。
请参阅图17,图17是本发明实施例公开的另一种实现卷积运算的方法的流程示意图。其中,该实现卷积运算的方法适用于图6-图7所示的实现卷积运算的装置。如图17所示,该方法可以包括以下步骤。
1701、接收包括特征图数据和权值的输入数据。
本实施例中,当需要通过Winograd算法实现卷积时,将需要的输入数据发送给实现卷积运算的装置,输入数据包括特征图数据、权值和偏置数据。
1702、将特征图数据或上一层的卷积结果以预设的特征图为单位进行组合获得预设大小的特征图矩阵。
本实施例中,接收到输入数据之后,可以直接将特征图数据或上一层的卷积结果以特征图为单位按照通道、列和行的顺序进行组合获得预设大小的特征图矩阵预设的特征图的大小和卷积核的大小可以参考图5,在此不再详细赘述。
1703、根据一个预设大小的特征图矩阵与权值中对应的两个卷积核确定卷积结果。
本实施例中,根据卷积步长将特征图数据或上一层的卷积结果以预设的特征图为单位进行组合获得预设大小的特征图矩阵之后,根据一个预设大小的特征图矩阵与权值中对应的两个卷积核确定卷积结果。
本实施例中,可以将预设大小的特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,将第二固定矩阵与权值中每层卷积对应的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,根据特征图结果中的一个矩阵与权值结果中的两个矩阵确定卷积结果。其中,第一固定矩阵的大小与预设的特征图的大小相同,第二固定矩阵为M×N矩阵,第三固定矩阵为N×M矩阵,M为预设的特征图的阶数,N为卷积核的阶数。由于用于卷积的特征图结果与权值结果的阶数均为特征图的阶数,因此,可以实现Winograd算法的卷积。
在一个实施例中,可以将不同通道的卷积结果累加起来获得累加结果,将累加结果与偏置数据中对应的偏置数相加获得偏置结果。
在一个实施例中,可以先将卷积结果中小于零的数进行归零处理获得ReLU结果,对ReLU结果进行小数点对齐获得量化结果,对量化结果进行边界扩展获得边界扩展结果,根据卷积步长将上一层的边界扩展结果以预设的特征图为单位进行组合得到预设大小的特征图矩阵。
本实施例中,接收包括特征图数据、权值和偏置数据的输入数据,将特征图数据或上一层的边界扩展结果组合为中间矩阵,根据卷积步长将中间矩阵以预设的特征图为单位进行组合得到预设大小的特征图矩阵,将预设大小的特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,将第二固定矩阵与对应层的卷积核进行矩阵乘法获得初始结果,将初始结果与第三固定矩阵进行矩阵乘法获得权值结果,根据特征图结果中的一个矩阵与权值结果中的两个矩阵确定卷积结果,将不同通道的卷积结果累加起来获得累加结果,将累加结果与对应层的偏置数相加获得偏置结果,将偏置结果中小于零的数进行归零处理获得ReLU结果,对ReLU结果进行小数点对齐获得量化结果,对量化结果进行边界扩展获得边界扩展结果。
上述各个步骤更详细的描述可以直接参考上述图6-图7所示的装置实施例中的相关描述直接得到,这里不加赘述。
请参阅图18,图18是本发明实施例公开的又一种实现卷积运算的装置的结构示意图。如图18所示,该装置可以包括处理器1801、存储器1802和总线1803,处理器1801和存储器1802之间通过总线1803连接。存储器1802用于存储程序代码,处理器1801用于执行存储器1802存储的程序代码,当处理器1801执行存储器1802存储的程序代码时,使得处理器1801执行图16的实现卷积运算的方法的操作步骤,或者使得处理器1801执行图17的实现卷积运算的方法的操作步骤,为了简洁,在此不再赘述。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (8)
1.一种实现卷积运算的装置,其特征在于,包括数据控制模块、存储模块、数据分配模块和第一卷积模块,其中:
所述存储模块分别连接所述数据控制模块、所述数据分配模块和所述第一卷积模块,所述第一卷积模块连接所述数据分配模块;
所述数据控制模块,用于接收输入数据并发送给所述存储模块,所述输入数据包括特征图数据和权值;
所述存储模块,用于存储所述特征图数据和所述权值;
所述数据分配模块,用于从所述存储模块存储的特征图数据或上一层的卷积结果中获取M阶的特征图矩阵,根据卷积步长将所述M阶的特征图矩阵中的两个特征图矩阵进行组合拼接获得拼接特征图矩阵,并将所述拼接特征图矩阵发送给所述第一卷积模块,其中,M为预设的特征图矩阵的阶数,M为大于或等于2的整数;
所述第一卷积模块,用于从所述存储模块存储的权值中读取对应的卷积核,根据读取的卷积核和所述拼接特征图矩阵确定卷积结果,并将所述卷积结果发送给所述数据分配模块。
2.根据权利要求1所述的装置,其特征在于,所述数据分配模块包括L个超大规模随机存储存储器URAM控制器和L选2选择器,所述L为大于或等于3的整数,其中:
所述L个URAM控制器,用于从所述特征图数据或上一层的卷积结果中获取所述M阶的特征图矩阵,并将获取的特征图矩阵传输给所述L选2控制器;
所述L选2选择器,用于控制第一URAM控制器读取特征图矩阵,控制第二URAM控制器和第三URAM控制器传输特征图矩阵,并将所述第二URAM控制器和所述第三URAM控制器传输的特征图矩阵组合拼接为所述拼接特征图矩阵,所述第一URAM控制器、所述第二URAM控制器和所述第三URAM控制器是所述L个URAM控制器中的不同URAM控制器。
3.根据权利要求1或2所述的装置,其特征在于,所述第一卷积模块包括特征图计算模块、权值计算模块和第二卷积模块,其中:
所述特征图计算模块分别连接所述数据分配模块和所述第二卷积模块,所述权值计算模块分别连接所述存储模块和所述第二卷积模块,所述第二卷积模块连接所述数据分配模块;
所述特征图计算模块,用于将所述拼接特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果,并将所述特征图结果发送给所述第二卷积模块;
所述权值计算模块,用于从所述存储模块存储的权值中读取每层卷积对应的卷积核,将第二固定矩阵与读取的卷积核进行矩阵乘法获得初始结果,将所述初始结果与第三固定矩阵进行矩阵乘法获得权值结果,并将所述权值结果发送给所述第二卷积模块,所述第二固定矩阵为M×N矩阵,所述第三固定矩阵为N×M矩阵,N为所述卷积核的阶数;
所述第二卷积模块,用于根据所述特征图结果与所述权值结果确定卷积结果,并将所述卷积结果发送给所述数据分配模块。
4.根据权利要求3所述的装置,其特征在于,所述装置还包括线性整流函数ReLU模块、量化模块和边界扩展模块,其中:
所述ReLU模块分别连接所述第二卷积模块和所述量化模块,所述边界扩展模块分别连接所述量化模块和所述数据分配模块;
所述第二卷积模块将所述卷积结果发送给所述数据分配模块包括:
所述第二卷积模块将所述卷积结果发送给所述ReLU模块;
所述ReLU模块,用于将所述卷积结果中小于零的数进行归零处理获得ReLU结果,并将所述ReLU结果发送给所述量化模块;
所述量化模块,用于对所述ReLU结果进行小数点对齐获得量化结果,并将所述量化结果发送给所述边界扩展模块;
所述边界扩展模块,用于对所述量化结果进行边界扩展获得边界扩展结果,并将所述边界扩展结果发送给所述数据分配模块。
5.一种实现卷积运算的方法,其特征在于,包括:
接收包括特征图数据和权值的输入数据;
根据卷积步长将所述特征图数据或上一层的卷积结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵,M为预设的特征图矩阵的阶数,M为大于或等于2的整数;
根据所述拼接特征图矩阵与所述权值中对应的卷积核确定卷积结果。
6.根据权利要求5所述的方法,其特征在于,所述根据所述拼接特征图矩阵与所述权值中对应的卷积核确定卷积结果包括:
将所述拼接特征图矩阵与第一固定矩阵进行矩阵乘法获得特征图结果;
将第二固定矩阵与所述权值中对应的卷积核进行矩阵乘法获得初始结果;
将所述初始结果与第三固定矩阵进行矩阵乘法获得权值结果,所述第二固定矩阵为M×N矩阵,所述第三固定矩阵为N×M矩阵,N为所述卷积核的阶数;
根据所述特征图结果与所述权值结果确定卷积结果。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将所述卷积结果中小于零的数进行归零处理获得ReLU结果;
对所述ReLU结果进行小数点对齐获得量化结果;
对所述量化结果进行边界扩展获得边界扩展结果;
所述根据卷积步长将上一层的卷积结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵包括:
根据卷积步长将上一层的边界扩展结果中的两个M阶的特征图矩阵进行组合拼接获得拼接特征图矩阵。
8.一种实现卷积运算的装置,其特征在于,包括处理器和存储器,所述存储器用于存储程序代码,所述处理器用于执行所述程序代码,当所述处理器执行所述存储器存储的程序代码时,使得所述处理器执行权利要求5-7任一项所述的实现卷积运算的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810866520.9A CN110796229B (zh) | 2018-08-01 | 2018-08-01 | 一种实现卷积运算的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810866520.9A CN110796229B (zh) | 2018-08-01 | 2018-08-01 | 一种实现卷积运算的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110796229A true CN110796229A (zh) | 2020-02-14 |
CN110796229B CN110796229B (zh) | 2024-04-12 |
Family
ID=69426099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810866520.9A Active CN110796229B (zh) | 2018-08-01 | 2018-08-01 | 一种实现卷积运算的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110796229B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111639701A (zh) * | 2020-05-28 | 2020-09-08 | 山东云海国创云计算装备产业创新中心有限公司 | 一种图像特征提取的方法、系统、设备及可读存储介质 |
CN113283587A (zh) * | 2021-05-28 | 2021-08-20 | 西安交通大学 | 一种Winograd卷积运算加速方法及加速模块 |
WO2024027039A1 (zh) * | 2022-08-03 | 2024-02-08 | 北京登临科技有限公司 | 数据处理方法、装置、设备和可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN106951395A (zh) * | 2017-02-13 | 2017-07-14 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
AU2017101166A4 (en) * | 2017-08-25 | 2017-11-02 | Lai, Haodong MR | A Method For Real-Time Image Style Transfer Based On Conditional Generative Adversarial Networks |
CN108205702A (zh) * | 2017-12-29 | 2018-06-26 | 中国人民解放军国防科技大学 | 一种多输入多输出矩阵卷积的并行处理方法 |
-
2018
- 2018-08-01 CN CN201810866520.9A patent/CN110796229B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN106951395A (zh) * | 2017-02-13 | 2017-07-14 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
AU2017101166A4 (en) * | 2017-08-25 | 2017-11-02 | Lai, Haodong MR | A Method For Real-Time Image Style Transfer Based On Conditional Generative Adversarial Networks |
CN108205702A (zh) * | 2017-12-29 | 2018-06-26 | 中国人民解放军国防科技大学 | 一种多输入多输出矩阵卷积的并行处理方法 |
Non-Patent Citations (2)
Title |
---|
SERGIO PEREIRA等: "《Brain Tumor Segmentation using Convolutional Neural Networks in MRI Images》" * |
张洋 等: "《一种多摄像机全景视频图像快速拼接算法》" * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111639701A (zh) * | 2020-05-28 | 2020-09-08 | 山东云海国创云计算装备产业创新中心有限公司 | 一种图像特征提取的方法、系统、设备及可读存储介质 |
CN111639701B (zh) * | 2020-05-28 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 一种图像特征提取的方法、系统、设备及可读存储介质 |
CN113283587A (zh) * | 2021-05-28 | 2021-08-20 | 西安交通大学 | 一种Winograd卷积运算加速方法及加速模块 |
CN113283587B (zh) * | 2021-05-28 | 2023-09-19 | 西安交通大学 | 一种Winograd卷积运算加速方法及加速模块 |
WO2024027039A1 (zh) * | 2022-08-03 | 2024-02-08 | 北京登临科技有限公司 | 数据处理方法、装置、设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110796229B (zh) | 2024-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003985B2 (en) | Convolutional neural network system and operation method thereof | |
CN108229645B (zh) | 卷积加速和计算处理方法、装置、电子设备及存储介质 | |
US20180189643A1 (en) | Convolution circuit, application processor including the same, and operating method thereof | |
US10824934B2 (en) | Methods and apparatus for matrix processing in a convolutional neural network | |
KR101687081B1 (ko) | 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 | |
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
KR102335955B1 (ko) | 컨볼루션 신경망 시스템 및 그것의 동작 방법 | |
CN111199273A (zh) | 卷积计算方法、装置、设备及存储介质 | |
CN110796229A (zh) | 一种实现卷积运算的装置及方法 | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
CN113190791A (zh) | 矩阵的处理方法、装置及逻辑电路 | |
CN111047008B (zh) | 一种卷积神经网络加速器及加速方法 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN108520297B (zh) | 可编程深度神经网络处理器 | |
US20210312270A1 (en) | Highly Parallel Convolutional Neural Network | |
WO2022041188A1 (zh) | 用于神经网络的加速器、方法、装置及计算机存储介质 | |
CN112596872A (zh) | 任务调度、预处理、处理方法及设备、处理单元、介质 | |
CN113485750B (zh) | 数据处理方法及数据处理装置 | |
CN116306840A (zh) | 神经网络运算方法、装置、芯片、电子设备和存储介质 | |
CN109427035B (zh) | 半导体设备和图像识别系统 | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
CN111738424B (zh) | 神经网络处理方法、装置、电子设备及存储介质 | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
EP4206996A1 (en) | Neural network accelerator with configurable pooling processing unit | |
CN109902821B (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 |