CN109190756B - 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 - Google Patents
基于Winograd卷积的运算装置及包含该装置的神经网络处理器 Download PDFInfo
- Publication number
- CN109190756B CN109190756B CN201811048884.2A CN201811048884A CN109190756B CN 109190756 B CN109190756 B CN 109190756B CN 201811048884 A CN201811048884 A CN 201811048884A CN 109190756 B CN109190756 B CN 109190756B
- Authority
- CN
- China
- Prior art keywords
- matrix
- convolution
- gate
- convolution operation
- input
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种基于Winograd卷积的卷积运算单元和相应的神经网络处理器。该卷积运算单元包括乘法器、累加器和第一选通器,乘法器用于接收待进行矩阵相乘运算的元素或待进行矩阵点乘运算的元素,第一选通器用于接收来自于乘法器的输出值和待进行累加运算的元素,通过控制第一选通器将待进行累加运算的元素或者将所述乘法器的输出值传递至累加器能够使该卷积运算单元在多个工作模式之间进行切换。将本发明的卷积运算单元应用于神经网络处理器能够提高计算效率并降低运行功耗。
Description
技术领域
本发明涉及神经网络技术领域,尤其涉及一种基于Winograd卷积的运算装置及包含该装置的神经网络处理器
背景技术
近年来,深度学习技术得到了飞速发展,在解决高级抽象认知问题,例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐和智能机器人等领域得到了广泛应用,成为学术界和工业界的研究热点。
深度神经网络是人工智能领域具有最高发展水平的感知模型之一,其通过建立模型来模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来突破性进展。深度神经网络模型是一种运算模型,由大量节点通过网状互连结构构成,这些节点被称为神经元。每两个节点间连接强度都代表通过该连接信号在两个节点间的加权值,即权重,与人类神经网络中的记忆相对应。
然而,在现有技术中,神经网络存在神经网络处理速度慢,运行功耗大等问题。这是由于深度学习技术依赖于极大的计算量,例如,在训练阶段,需要在海量数据中通过反复迭代计算得到神经网络中的权重数据;在推理阶段,同样需要神经网络在极短的响应时间(通常为毫秒级)内完成对输入数据的运算处理,特别是当神经网络应用于实时系统时,例如,自动驾驶领域。神经网络中涉及的计算主要包括卷积操作、激活操作和池化操作等,其中,卷积过程占用了神经网络处理的大部分时间,该过程主要将输入的神经元或像素与相应卷积核的权重进行乘累加处理。
由于卷积运算的数据重复性操作任务极大,卷积运算量与卷积窗口移动次数成正比。因此,目前研究者们提出了基于Winograd的卷积运算方式,该方式通过对输入特征图与权值进行特定的矩阵转换,能够完成等效的卷积运算任务并大量减少卷积运算过程的乘法运算,然而,Winograd卷积中矩阵的转换与点乘运算存在差异性,当分别采用独立的专用运算模块分别完成相应任务时,需要极大的运算资源并且运算效率低。
因此,为了将神经网络推向更广泛应用,例如,智能穿戴、智能机器人、自动驾驶以及模式识别等领域,需要对现有技术进行改进,以设计适用于Winograd卷积的矩阵运算装置,实现数据处理的实时性、低功耗以及计算资源利用率的提升。
发明内容
本发明的目的在于克服上述现有技术的缺陷,提供一种基于Winograd卷积的运算装置及包含该装置的神经网络处理器。
根据本发明的第一方面,提供了一种基于Winograd卷积的卷积运算单元,应用于神经网络中的卷积运算。该卷积运算单元包括乘法器、累加器和第一选通器,所述乘法器用于接收待进行矩阵相乘运算的元素或待进行矩阵点乘运算的元素,所述第一选通器用于接收来自于所述乘法器的输出值和待进行累加运算的元素,通过控制所述第一选通器将待进行累加运算的元素或者将所述乘法器的输出值传递至所述累加器能够使该卷积运算单元在多个工作模式之间进行切换,其中,每种工作模式对应Winograd卷积的一种计算类型。
在一个实施例中,所述工作模式包括乘累加模式和点乘模式,以及累加模式,其中:当处于所述乘累加模式时,所述卷积运算单元执行权重矩阵与相应转换矩阵的矩阵乘法运算U=GgGT、输入特征图矩阵与相应转换矩阵的矩阵乘法操作V=BTdB或者执行针对U和V的点乘结果与相应转换矩阵的矩阵乘法操作F=AT[U⊙V]A,g表示权重矩阵,d表示输入特征图矩阵,G、B、A分别表示与权重矩阵g、输入特征图矩阵d和点乘结果U⊙V对应的转换矩阵;当处于所述点乘模式时,所述卷积运算单元执行针对转换后的权值矩阵U与转换后的输入特征图矩阵V的点乘运算U⊙V;当运算单元处于累加模式时,可执行针对相同卷积域内点乘结果的累加运算或针对相同卷积域内点乘结果转换后的累加运算。
在一个实施例中,本发明的卷积运算单元还包括第二选通器、第三选通器、第四选通器、第五选通器和寄存器,其中:所述累加器的输出端连接至所述寄存器的输入端;所述第二选通器用于接收进行矩阵相乘运算的元素和待进行矩阵点乘运算的元素,所述第二选通器的输出端连接至所述乘法器的第一输入端;所述第三选通器用于接收进行矩阵相乘运算的元素和来自于所述寄存器的输出,所述第三选通器的输出端连接至所述乘法器的第二输入端;所述第一选通器的输出端连接至所述累加器的第一输入端;所述第四选通器用于接收“0”值元素和来自于所述寄存器的输出值,所述第四选通器的输出端连接至所述累加器的第二输入端;所述第五选通器用于接收“0”值元素和来自于所述寄存器的输出值;其中,所述第一选通器、第二选通器、第三选通器、第四选通器和第五选通器基于接收到控制信号来确定选通状态以控制所述卷积运算单元的工作模式。
在一个实施例中,本发明的卷积运算单元还包括累加模式和输出模式,当处于所述累加模式时,所述卷积运算单元执行卷积中间结果的加法操作,当处于所述输出模式时,所述卷积运算单元将获得的计算结果经由所述第五选通器进行输出。
根据本发明的第二方面,提供了一种基于Winograd卷积的卷积运算装置。该卷积运算装置包括多个本发明的卷积运算单元,该多个卷积运算单元以二维矩阵形式进行分布,其中行卷积运算单元以行胖树总线进行连接,列卷积运算单元以列胖树总线进行连接。
在一个实施例中,所述卷积运算装置包括16个所述卷积运算单元,组织为4*4二维矩阵形式。
根据本发明的第三方面,提供了一种基于Winograd卷积的神经网络处理器。该神经网络处理器包括:
根据本发明的卷积运算装置:用于通过所述多个卷积运算单元在多个工作模式之间进行切换来实现Winograd卷积运算;
控制单元:用于根据Winograd卷积的计算过程生成控制信号以控制所述卷积运算装置中的所述多个卷积运算单元在多个工作模式之间进行切换。
在一个实施例中,本发明的神经网络处理器还包括存储器和缓存模块,其中:所述存储器用于存储已训练好的权重矩阵值、输入特征图矩阵值以及实现Winograd卷积的转换矩阵值;所述缓存模块用于从所述存储器加载待计算的权重矩阵值、输入特征图矩阵值以及对应的实现Winograd卷积的转换矩阵值。
在一个实施例中,本发明的神经网络处理器还包括输入总线、运算单元直达总线和输出总线,其中:所述输入总线用于从所述缓存模块接收待进行矩阵相乘运算的行向量元素与列向量元素以及待进行矩阵点乘运算的元素;所述行胖树总线用于接收所述输入总线的行向量元素,以行为单位复制行向量元素并传递至所述卷积运算装置的对应行内的卷积运算单元;所述列胖树总线用于接收所述输入总线的列向量元素,以列为单位复制列向量元素并传递至所述卷积运算装置的对应列内的卷积运算单元;所述运算单元直达总线用于接收所述输入总线的待进行矩阵点乘运算的元素,将该待进行矩阵点乘运算的元素分配至所述卷积运算装置的对应的卷积运算单元;所述输出总线用于拼接所述卷积运算装置的卷积运算单元的运算结果并进行输出。
在一个实施例中,本发明的神经网络处理器还包括激活模块和池化模块,所述激活模块用于通过非线性激活函数处理卷积结果,所述池化模块用于对输入的神经元进行池化操作。
与现有技术相比,本发明的优点在于:根据Winograd卷积的运算特点,设计专用的运算一体化的装置兼容向量的乘累加运算以及数值的点乘运算,从而提高了计算效率和资源利用率;本发明的运算装置经过联合,组成矩阵运算装置,该矩阵运算装置可兼容矩阵的转换运算以及矩阵的点乘运算,提高了计算效率。进一步地,基于本发明的矩阵运算装置的Winograd卷积的神经网络处理器能够以较少的运算资源完成神经网络数据处理任务,降低了运行功耗并提高了计算效率。
附图说明
以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:
图1示出了根据本发明一个实施例的基于Winograd卷积的运算装置的示意图;
图2示出了利用图1的运算装置执行Winograd卷积的过程示意图;
图3示出了根据本发明一个实施例的构建为二维矩阵形式的Winograd卷积的矩阵运算装置的示意图;
图4示出了根据本发明一个实施例的基于Winograd卷积的神经网络处理器的示意图。
具体实施方式
为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
在神经网络的卷积计算中,Winograd卷积运算公式为:
F(m×n,r×s)=AT[[GgGT]⊙[BTdB]]A (1)
其中,m与n分别表示单次Winograd卷积运算输出特征图神经元规模的边长;r与s表示卷积核的边长;g表示单次Winograd卷积运算输入的权值矩阵;d表示单次Winograd卷积运算输入的特征图矩阵;A、G、B分别为对应的转换矩阵,A、G、B是与Winograd输出范式相关的已知矩阵,例如,当输出范式为F(2*2,3*3)时,即输出特征图规模为2*2,卷积核为3*3,各转换矩阵参数分别
上述公式(1)可分为两个阶段执行,第一阶段是将输入权值矩阵g与特征图矩阵d分别与转换矩阵G与B完成矩阵乘法运算,计算结果矩阵用U与V表示,其中U=[GgGT],V=[BTdB];第二阶段是将计算结果矩阵U与V执行点乘“⊙”运算后与转换矩阵A的矩阵乘法运算。
根据本发明的一个实施例,提供了一种用于实现Winograd卷积的运算单元,参见图1所示,该运算装置包括选通器110、选通器120、选通器130、选通器140、选通器150、乘法器160、累加器170和寄存器180,其中,对于示出的五个二选一的选通器,其控制信号分别表示为c0、c1、c2、c3、c4,每个控制信号可设置0和1两种状态用于确定选通的数据。
该运算单元中各器件的具体连接关系为:选通器110的两个输入端分别接收待计算的矩阵的行/列向量元素和点乘元素,选通器110的输出连接至乘法器160的一个输入端;选通器120的一个输入端用于接收待计算的矩阵的行/列向量元素,另一个输入端用于接收来自于寄存器180的输出,选通器120的输出连接至乘法器160的另一个输入端;选通器130的一个输入端与乘法器160的输出连接,另一输入端用于接收待计算的累加元素,选通器130的输出连接至累加器170的一个输入端;选通器140的一个输入端用于接收“0”值元素,另一输入端用于接收来自于寄存器180的输出,选通器140的输出连接至累加器170的另一个输入端;选通器150的一个输入端用于接收“0”值元素,另一输入端用于接收来自于寄存器180的输出,选通器150的输出端作为该运算单元的输出;累加器170的输出与寄存器180连接。
通过控制各个选通器的控制信号,运算单元可在不同的运算模式之间切换。在一个实施例中,根据实现的功能划分,运算模式包括乘累加模式、点乘模式、累加模式和输出模式等。
具体地,结合图1,当c0、c1、c2、c3、c4取值为00010时(或称为c取值为00010),选通器110输出行/列向量元素,选通器120输出行/列向量元素,乘法器160对接收到的行/列向量元素执行乘法计算,选通器130将乘法器160的计算结果输出至累加器170,选通器140将来自于寄存器180的输出发送至累加器170,累加器170执行累加计算并将结果存储至寄存器180。在这种模式下,乘法器160对接收到的行/列向量元素进行乘法操作,累加器170将寄存器180的结果和乘法器160的计算结果进行累加,选通器150输出0值(即此时运算单元不进行输出),因此,将这种乘法器160和累加器170共同实现乘累加的过程称为乘累加模式。
当c0、c1、c2、c3、c4取值为11000时,选通器110输出待计算的点乘元素,选通器120输出来自于寄存器180的值,乘法器160执行待计算的点乘元素与寄存器180中的值的点乘运算,选通器130输出乘法器160的计算结果,选通器140输出0值,即此时累加器170不执行累加运算,只是将乘法器160的结果输出至寄存器180,选通器150输出0(即运算单元不进行输出),将这种乘法器160实现点乘计算的过程称为点乘模式。
当c0、c1、c2、c3、c4取值为xx110,其中x表示任意数值,选通器130输出累加元素,此时,无论选通器110和选通器120的控制信号设置为何值,乘法器160的计算结果均不会经由选通器130选通,选通器140输出来自于寄存器180的值,累加器170将累加元素和寄存器180中的值进行累加,在这种模式下,乘法器160相当于不起作用,仅有累加器170执行累加,选通器150输出0(即运算单元不进行输出),因此,将这种工作模式称为累加模式。
c0、c1、c2、c3、c4取值为xxxx1时,选通器150输出寄存器180存储的计算结果,即整个运算单元处于输出模式。
为了清楚起见,图2示出了Winograd卷积运算过程各运算阶段使用的模式和对应的编码c,其中,方框中示出的是参与计算的矩阵和其维数,由图2可知,当卷积过程中执行针对权值g、输入特征图d以及点乘累加结果U⊙V的矩阵的转换时(即GgGT、BTdB和AT[U⊙V]A),由于其过程为矩阵乘法运算,因此使用乘累加模式,控制信号c设置为00010;当卷积过程中执行针对转换后权值与特征图的点乘运算时,即U⊙V,使用点乘模式,c设置为11000;当对多次的点乘结果执行累加运算时,使用累加模式,c设置为xx110;当一次Winograd卷积执行完成后,运算单元使用输出模式,c设置为xxxx1。
在执行Winograd卷积运算过程,可由控制单元根据待执行的卷积运算过程生成相应的控制信号,从而控制运算单元在各个工作模式之间的切换和运算过程中的数据加载和输出等。控制单元可以是微控制器或微控制器的一部分。
需要说明的是,尽管为了清楚起见,图1以非常具体的电路结构详述了Winograd卷积运算过程,本领域的技术人员也可对该电路进行适当的变型,只要其能够实现多个模式之间的切换以实现Winograd卷积运算即可。例如,图1的选通器并不是必须的,在这种情况下,可以通过控制乘法器、累加器之间的数据传递来完成不同工作模式下的功能,又如,寄存器也是可选,而寄存器的功能可以由卷积运算单元外部的存储器来实现,通过通知该外部存储器与卷积运算单元的数据交互同样能够实现不同工作模式之间的切换。
为了进一步提高计算速度,在一个实施例中,将本发明提供的面向Winograd卷积的运算单元组织为矩阵阵列形式(也称为矩阵运算模块),并结合总线、存储器、控制单元等构成Winograd卷积的矩阵运算装置以完成神经网络中的卷积计算,参见图3所示,在该实施例中,由16个运算单元330组织成4x4阵列形式,各运算单元330通过总线连接存储器310、缓存模块320和控制单元(未示出),数据以8比特为例。
具体地,存储器310用于存储神经网络的权值、输入特征图、转换矩阵参数等。缓存模块320用于从存储器310加载参与运算的数据向各个运算单元330提供输入数据。控制单元用于根据卷积运算执行进度控制生成各运算单元的控制信号以及控制数据在各模块之间的加载等。
总线包括:输入总线340(其中以粗实线示意了连接至运算单元直达总线360的输入总线,以细实线示意了连接至行胖树总线350和列胖树总线370的输入总线),用于接收参与矩阵向量乘累加的输入的行向量与列向量数据,以及用于参与矩阵点乘的输入矩阵数据;行胖树总线350,用于接收输入总线的行向量数据,以行为单位复制输入行向量数元素值并传递至对应行内各运算单元;列胖树总线370,用于接收输入总线的列向量数据,以列为单位复制输入列向量数元素值并传递至对应列内各运算单元;运算单元直达总线360,用于接收输入总线的点乘矩阵数据,将输入的点乘矩阵各元素分配至各对应的运算单元;输出总线380,用于拼接各运算单元的运算结果并输出。
图4示出了根据本发明一个实施例的神经网络处理器400,该处理器400包括至少一个存储器410、至少一个缓存模块420、至少一个矩阵运算模块430以及至少一个控制单元(未示出),该处理器400还包括激活模块440、池化模块450,其中,各模块间的连线、总线以及辅助寄存器未示出,该处理器能够实现神经网络中通常包括的卷积操作、激活操作、池化操作以及数据传输的控制等,其中Winograd卷积操作采用本发明的方式实现。
存储器410用于存储已训练好的权值,输入像素值或输入特征图值,以及参与Winograd卷积过程中针对权值、神经元以及点乘矩阵结果的转换矩阵值。当缓存空间不足时,缓存数据也可暂存于该存储器410。
缓存模块420用于存储待快速计算的数据,包括权值、输入特征图以及规定输出范式对应的转换矩阵值。该缓存模块420为神经网络处理器400中的矩阵运算模块430提供输入数据并为输出数据及中间结果提供暂存空间,缓存模块420与存储器410相连并交互数据,当缓存存储量达到容量边界时,其数据也可传输至存储器410中进行存储。
缓存模块420相连的矩阵运算模块430用于接收缓存模块420传输的待运算数据,以完成面向Winograd卷积过程中的向量乘累加运算、矩阵点乘运算以及卷积中间值累加运算等。该矩阵运算模块430运算过程中的中间数据回存于缓存模块420,待需参与运算时可再度载入。应理解的是,缓存模块420能够提高数据处理的流畅性,但其并不是必须的,缓存模块执行的功能均可由存储器来实现。
激活模块440用于通过非线性激活函数(如ReLU)处理Winograd卷积结果。
池化模块450用于对采用不同的池化模式(例如,求最大值法、求平均值法、求最小值法等)对输入的神经元进行池化操作。
总线模块与各模块均连接,用于实现各模块间的数据传递,包括存储器410与缓存模块420之间的双向数据传输,缓存模块420与矩阵运算模块430之间数据的双向传输,缓存模块420与激活模块440以及池化模块450之间的数据传输。
控制单元用于执行神经网络数据处理指令,控制矩阵运算模块330的运算模式之间的切换,执行数据的调度并管理数据传输等。
基于图4,神经网络处理器400的工作流程包括以下步骤:
步骤S510,将需要参与运算的数据从存储器载入缓存模块;
步骤S520,缓存模块将权值与针对权值的转换矩阵输入至矩阵运算模块,执行针对权值的矩阵转换运算U=[GgGT],其结果U暂存于缓存模块;
步骤S530,缓存模块将输入特征图与其相应的转换矩阵输入至矩阵运算模块,执行针对输入特征图的矩阵转换运算,V=[BTdB];
步骤S540,缓存模块向矩阵运算模块回传权值转换结果U,执行矩阵的点乘操作U⊙V,其结果回存于缓存模块;
步骤S550,缓存模块将矩阵点乘结果与其对应的转换矩阵输入至矩阵运算模块,执行针对矩阵点乘结果的矩阵转换运算AT[U⊙V]A;
步骤S560,将相同卷积域内的各卷积累加结果从缓存模块载入矩阵运算模块,执行针对卷积中间值的累加运算,其结果传输至缓存模块。
在上述过程中,控制单元的功能包括但不限于:控制各模块之间的数据传递、根据运算过程生成用于矩阵运算模块的控制信号、生成控制各模块的操作指令等。
在本发明的实施例中,选通器、乘法器和累加器等均可采用通用或专用器件实现。存储器和缓存模块可以是静态随机存储器(SRAM)、动态随机存储器(DRAM)、寄存器堆等常见存储介质,也可以是3D存储器件等新型的存储类型。
本发明提供的神经网络处理器可以是针对神经网络计算而设计的一个微处理器,也可以仅是微处理器的一部分,该神经网络处理器可应用于文字处理、语音识别与处理、多国语言翻译、图像识别、生物特征识到、智能控制等领域,可用作智能计算处理器、机器人、移动设备、也可用于构建大规模神经网络计算超级计算机。
综上所述,本发明提出了一种基于Winograd卷积的运算装置及包含该运算装置的神经网络处理器,该运算装置通过以多个选通器组合各功能元件,实现针对矩阵的向量乘累加、点乘、累加运算,结合总线连接,将多个运算单元分布式排列,实现多种矩阵运算。该矩阵运算装置结合其他必要神经网络运算模块,组成面向Winograd卷积的神经网络处理器,能够以较少的硬件资源,较高的硬件利用率完成神经网络的数据处理。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (8)
1.一种基于Winograd卷积的卷积运算单元,应用于神经网络中的卷积运算,其特征在于,包括乘法器、累加器和第一选通器,所述乘法器用于接收待进行矩阵相乘运算的元素或待进行矩阵点乘运算的元素,所述第一选通器用于接收来自于所述乘法器的输出值和待进行累加运算的元素,通过控制所述第一选通器将待进行累加运算的元素或者将所述乘法器的输出值传递至所述累加器能够使该卷积运算单元在多个工作模式之间进行切换,其中,每种工作模式对应Winograd卷积的一种计算类型;所述工作模式包括乘累加模式和点乘模式,其中:当处于所述乘累加模式时,所述卷积运算单元执行权重矩阵与相应转换矩阵的矩阵乘法运算U=GgGT、输入特征图矩阵与相应转换矩阵的矩阵乘法操作V=BTdB或者执行针对U和V的点乘结果与相应转换矩阵的矩阵乘法操作F=AT[U⊙V]A,g表示权重矩阵,d表示输入特征图矩阵,G、B、A分别表示与权重矩阵g、输入特征图矩阵d和点乘结果U⊙V对应的转换矩阵;当处于所述点乘模式时,所述卷积运算单元执行针对转换后的权值矩阵U与转换后的输入特征图矩阵V的点乘运算U⊙V;
所述卷积运算单元还包括第二选通器、第三选通器、第四选通器、第五选通器和寄存器,其中:
所述累加器的输出端连接至所述寄存器的输入端;
所述第二选通器用于接收进行矩阵相乘运算的元素和待进行矩阵点乘运算的元素,所述第二选通器的输出端连接至所述乘法器的第一输入端;
所述第三选通器用于接收进行矩阵相乘运算的元素和来自于所述寄存器的输出,所述第三选通器的输出端连接至所述乘法器的第二输入端;
所述第一选通器的输出端连接至所述累加器的第一输入端;
所述第四选通器用于接收“0”值元素和来自于所述寄存器的输出值,所述第四选通器的输出端连接至所述累加器的第二输入端;
所述第五选通器用于接收“0”值元素和来自于所述寄存器的输出值;
其中,所述第一选通器、第二选通器、第三选通器、第四选通器和第五选通器基于接收到控制信号来确定选通状态以控制所述卷积运算单元的工作模式。
2.根据权利要求1所述的卷积运算单元,其特征在于,还包括累加模式和输出模式,当处于所述累加模式时,所述卷积运算单元执行卷积中间结果的加法操作,当处于所述输出模式时,所述卷积运算单元将获得的计算结果经由所述第五选通器进行输出。
3.一种基于Winograd卷积的卷积运算装置,其特征在于,包括多个权利要求1或2任一项所述的卷积运算单元,该多个卷积运算单元以二维矩阵形式进行分布,其中行卷积运算单元以行胖树总线进行连接,列卷积运算单元以列胖树总线进行连接。
4.根据权利要求3所述的卷积运算装置,其特征在于,所述卷积运算装置包括16个所述卷积运算单元,组织为4*4二维矩阵形式。
5.一种基于Winograd卷积的神经网络处理器,其特征在于,包括
根据权利要求3或4任一项所述的卷积运算装置:用于通过所述多个卷积运算单元在多个工作模式之间进行切换来实现Winograd卷积运算;
控制单元:用于根据Winograd卷积的计算过程生成控制信号以控制所述卷积运算装置中的所述多个卷积运算单元在多个工作模式之间进行切换。
6.根据权利要求5所述的神经网络处理器,其特征在于,还包括存储器和缓存模块,其中:
所述存储器用于存储已训练好的权重矩阵值、输入特征图矩阵值以及实现Winograd卷积的转换矩阵值;
所述缓存模块用于从所述存储器加载待计算的权重矩阵值、输入特征图矩阵值以及对应的实现Winograd卷积的转换矩阵值。
7.根据权利要求6所述的神经网络处理器,其特征在于,还包括输入总线、运算单元直达总线和输出总线,其中:
所述输入总线用于从所述缓存模块接收待进行矩阵相乘运算的行向量元素与列向量元素以及待进行矩阵点乘运算的元素;
所述行胖树总线用于接收所述输入总线的行向量元素,以行为单位复制行向量元素并传递至所述卷积运算装置的对应行内的卷积运算单元;
所述列胖树总线用于接收所述输入总线的列向量元素,以列为单位复制列向量元素并传递至所述卷积运算装置的对应列内的卷积运算单元;
所述运算单元直达总线用于接收所述输入总线的待进行矩阵点乘运算的元素,将该待进行矩阵点乘运算的元素分配至所述卷积运算装置的对应的卷积运算单元;
所述输出总线用于拼接所述卷积运算装置的卷积运算单元的运算结果并进行输出。
8.根据权利要求5至7任一项所述的神经网络处理器,其特征在于,还包括激活模块和池化模块,所述激活模块用于通过非线性激活函数处理卷积结果,所述池化模块用于对输入的神经元进行池化操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811048884.2A CN109190756B (zh) | 2018-09-10 | 2018-09-10 | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811048884.2A CN109190756B (zh) | 2018-09-10 | 2018-09-10 | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109190756A CN109190756A (zh) | 2019-01-11 |
CN109190756B true CN109190756B (zh) | 2022-02-18 |
Family
ID=64915711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811048884.2A Active CN109190756B (zh) | 2018-09-10 | 2018-09-10 | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109190756B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097172B (zh) * | 2019-03-18 | 2021-10-29 | 中国科学院计算技术研究所 | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 |
CN110008440B (zh) * | 2019-04-15 | 2021-07-27 | 恒烁半导体(合肥)股份有限公司 | 一种基于模拟矩阵运算单元的卷积运算及其应用 |
CN110188869B (zh) * | 2019-05-05 | 2021-08-10 | 北京中科汇成科技有限公司 | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 |
CN111950718B (zh) * | 2019-05-16 | 2021-12-07 | 北京知存科技有限公司 | 利用存算一体芯片实现递进式cnn运算的方法 |
CN110288086B (zh) * | 2019-06-13 | 2023-07-21 | 天津大学 | 一种基于Winograd的可配置卷积阵列加速器结构 |
KR102393916B1 (ko) * | 2019-06-27 | 2022-05-02 | 주식회사 사피온코리아 | 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치 |
CN110399591B (zh) * | 2019-06-28 | 2021-08-31 | 苏州浪潮智能科技有限公司 | 基于卷积神经网络的数据处理方法和装置 |
CN110647976B (zh) * | 2019-08-20 | 2022-03-29 | 瑞芯微电子股份有限公司 | 一种矩阵卷积优化运算方法和电路 |
CN112765537A (zh) * | 2019-11-01 | 2021-05-07 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111325332B (zh) * | 2020-02-18 | 2023-09-08 | 百度在线网络技术(北京)有限公司 | 卷积神经网络的处理方法和装置 |
CN111275180B (zh) * | 2020-02-28 | 2023-04-07 | 西安微电子技术研究所 | 一种降低深度神经网络数据迁移及功耗的卷积运算结构 |
US11580192B2 (en) * | 2020-04-08 | 2023-02-14 | Meta Platforms, Inc. | Grouped convolution using point-to-point connected channel convolution engines |
CN113536221B (zh) * | 2020-04-21 | 2023-12-15 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN111753253B (zh) * | 2020-06-28 | 2024-05-28 | 地平线(上海)人工智能技术有限公司 | 数据处理方法和装置 |
WO2022227024A1 (zh) * | 2021-04-30 | 2022-11-03 | 华为技术有限公司 | 神经网络模型的运算方法、训练方法及装置 |
CN113283587B (zh) * | 2021-05-28 | 2023-09-19 | 西安交通大学 | 一种Winograd卷积运算加速方法及加速模块 |
CN114399036B (zh) * | 2022-01-12 | 2023-08-22 | 电子科技大学 | 一种基于一维Winograd算法的高效卷积计算单元 |
CN116126548B (zh) * | 2023-04-20 | 2023-08-01 | 广东赛昉科技有限公司 | 一种在npu中减少资源占用的方法、系统、设备及存储介质 |
CN117851743B (zh) * | 2024-03-07 | 2024-06-21 | 北京象帝先计算技术有限公司 | 运算电路、处理器、集成电路系统、电子组件及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1965292A (zh) * | 2004-06-04 | 2007-05-16 | Lm爱立信电话有限公司 | 复数对数运算alu |
CN107197291A (zh) * | 2017-05-25 | 2017-09-22 | 厦门大学 | 低复杂度直接计算的立方卷积样条插值方法 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
WO2018108126A1 (zh) * | 2016-12-14 | 2018-06-21 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844826B (zh) * | 2017-10-30 | 2020-07-31 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
CN107862374B (zh) * | 2017-10-30 | 2020-07-31 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN108196881B (zh) * | 2017-12-01 | 2020-10-16 | 北京时代民芯科技有限公司 | 一种基于可配置技术的定点运算加速单元 |
CN108345934B (zh) * | 2018-01-16 | 2020-11-03 | 中国科学院计算技术研究所 | 一种用于神经网络处理器的激活装置及方法 |
-
2018
- 2018-09-10 CN CN201811048884.2A patent/CN109190756B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1965292A (zh) * | 2004-06-04 | 2007-05-16 | Lm爱立信电话有限公司 | 复数对数运算alu |
WO2018108126A1 (zh) * | 2016-12-14 | 2018-06-21 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
CN107197291A (zh) * | 2017-05-25 | 2017-09-22 | 厦门大学 | 低复杂度直接计算的立方卷积样条插值方法 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
Non-Patent Citations (4)
Title |
---|
Caffeinated FPGAs: FPGA Framework For Convolutional Neural Networks;Roberto DiCecco 等;《arXiv》;20160930;1-8 * |
Instruction Driven Cross-Layer CNN Accelerator with Winograd Transformation on FPGA;Yu Jincheng 等;《16th IEEE International Conference on Field-Programmable Technology》;20171213;227-230 * |
基于FPGA的高效FIR滤波器设计;李凯勇;《青海大学学报》;20171220;第35卷(第6期);56-60 * |
天文图像差异算法的SoC实现;张强,魏继增;《计算机工程》;20130331;第38卷(第5期);240-242 * |
Also Published As
Publication number | Publication date |
---|---|
CN109190756A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109190756B (zh) | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 | |
CN109325591B (zh) | 面向Winograd卷积的神经网络处理器 | |
CN107844826B (zh) | 神经网络处理单元及包含该处理单元的处理系统 | |
CN107862374B (zh) | 基于流水线的神经网络处理系统和处理方法 | |
EP3407266B1 (en) | Artificial neural network calculating device and method for sparse connection | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN109359730B (zh) | 面向固定输出范式Winograd卷积的神经网络处理器 | |
CN107818367B (zh) | 用于神经网络的处理系统和处理方法 | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
US11928595B2 (en) | Method of managing data representation for deep learning, method of processing data for deep learning and deep learning system performing the same | |
CN107944545B (zh) | 应用于神经网络的计算方法及计算装置 | |
CN107766292B (zh) | 一种神经网络处理方法及处理系统 | |
KR20220047680A (ko) | 하드웨어에서의 커널 스트라이딩 수행 | |
CN107578095A (zh) | 神经网络计算装置及包含该计算装置的处理器 | |
CN108171328B (zh) | 一种神经网络处理器和采用其执行的卷积运算方法 | |
CN112163601B (zh) | 图像分类方法、系统、计算机设备及存储介质 | |
CN111199275B (zh) | 用于神经网络的片上系统 | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
CN107527090A (zh) | 应用于稀疏神经网络的处理器和处理方法 | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
CN109299487B (zh) | 神经网络系统、加速器、建模方法及装置、介质及系统 | |
CN114398949A (zh) | 一种脉冲神经网络模型的训练方法、存储介质及计算设备 | |
US20230342626A1 (en) | Model processing method and related apparatus | |
CN110490317B (zh) | 神经网络运算装置及运算方法 | |
CN108376283B (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230106 Address after: 518063 14th Floor, West Tower, Baidu International Building, No. 8, Haitian 1st Road, Binhai Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong Patentee after: Zhongke Times (Shenzhen) Computer System Co.,Ltd. Address before: 100190 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District Patentee before: Institute of Computing Technology, Chinese Academy of Sciences |