CN110097172B - 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 - Google Patents
一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 Download PDFInfo
- Publication number
- CN110097172B CN110097172B CN201910203310.6A CN201910203310A CN110097172B CN 110097172 B CN110097172 B CN 110097172B CN 201910203310 A CN201910203310 A CN 201910203310A CN 110097172 B CN110097172 B CN 110097172B
- Authority
- CN
- China
- Prior art keywords
- matrix
- conversion
- convolution
- compression
- compressed
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种卷积神经网络数据处理方法以简化卷积操作,所述方法包括:1)根据卷积神经网络模型的权值g以及转换矩阵G,基于GgGT计算针对权值的中间矩阵U;2)对所述针对权值的中间矩阵U进行压缩,以获得用于指示U中有效元素的数值的压缩转换权值矩阵Uz、以及用于指示U中有效元素的坐标的压缩坐标编码S;3)根据所述压缩坐标编码S,计算针对中间矩阵V=[BTdB]的压缩结果以作为压缩转换特征图Vz,其中d为卷积神经网络的输入特征图,B是转换矩阵;4)对所述压缩转换权值矩阵Uz和所述压缩转换特征图Vz执行点乘操作,得到点乘矩阵Mz;5)根据所述点乘矩阵Mz、转换矩阵A,基于ATMzA计算针对所述输入特征图d的卷积运算结果F。
Description
技术领域
本发明涉及针对卷积运算的加速,尤其涉及神经网络中针对基于win ograd卷积运算的加速方案。
背景技术
深度学习技术在近几年得到了飞速的发展,在解决高级抽象认知问题上,例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐和智能机器人等领域得到了广泛应用并具有出色的表现,因此成为了学术界和工业界的研究热点。深度神经网络是人工智能领域具有最高发展水平的感知模型之一,该类网络通过建立模型模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来了突破性进展。该模型结构是一种运算模型,由大量节点通过网状互连结构构成,这些节点被称为神经元。每两个节点间连接强度都代表通过该连接信号在两个节点间的加权值,被称为权重,与人类神经网络中的记忆相对应。
神经网络处理器是用于实现深度神经网络的专用处理器,针对神经网络处理器的研究目的是将神经网络推向更广泛应用如智能穿戴、智能机器人、自动驾驶以及模式识别等领域。其神经网络的计算过程可分为卷积、激活、池化等步骤。然而,卷积运算时的数据重复性操作任务极大,卷积运算量与卷积窗口移动次数成正比,并且对于绝大多数应用而言,需要执行卷积运算的输入特征图、用于实现卷积运算的卷积核中为“0”的元素非常多,本领域中称作“稀疏性”非常大,这使得传统的卷积运算中存在许多冗余的操作。对此,一些研究者们提出了基于winograd的卷积运算方式,该方式通过对输入特征图与权值进行特定的矩阵转换,以完成等效的卷积运算任务,可大量减少卷积运算过程的乘法运算。
然而,这并不意味着基于winograd的卷积运算方式是完美的,传统的winograd仍存在进一步利用稀疏性降低运算量的空间。并且,目前尚不存在一种针对稀疏winograd卷积运算的专用处理器。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种基于winograd卷积运算的卷积神经网络数据处理方法,包括:
1)根据卷积神经网络模型的权值g以及转换矩阵G,基于GgGT计算针对权值的中间矩阵U;
2)对所述针对权值的中间矩阵U进行压缩,以获得用于指示U中有效元素的数值的压缩转换权值矩阵Uz、以及用于指示U中有效元素的坐标的压缩坐标编码S;
3)根据所述压缩坐标编码S,计算针对中间矩阵V=[BTdB]的压缩结果以作为压缩转换特征图Vz,其中d为卷积神经网络的输入特征图,B是转换矩阵;
4)对所述压缩转换权值矩阵Uz和所述压缩转换特征图Vz执行点乘操作,得到点乘矩阵Mz;
5)根据所述点乘矩阵Mz、转换矩阵A,基于ATMzA计算针对所述输入特征图d的卷积运算结果F。
优选地,根据所述方法,其中所述有效元素为非零元素。
优选地,根据所述方法,其中步骤1)还包括:对计算得到的所述中间矩阵U执行剪枝处理。
优选地,根据所述方法,其中步骤3)包括:
计算中间矩阵V=[BTdB],利用压缩坐标编码S对V进行压缩以获得所述压缩转换特征图Vz。
优选地,根据所述方法,其中步骤3)包括:
提取中间矩阵C1=[BTd]中的相应元素以及转换矩阵B中的相应元素并根据所提取的元素执行乘法操作,以获得压缩转换特征图Vz。
优选地,根据所述方法,其中所述压缩坐标编码S被存储为可由计算机确定所述压缩转换权值矩阵Uz中的元素与所述压缩坐标编码S中的元素的对应关系。
优选地,根据所述方法,其中步骤2)中所述压缩坐标编码S的每个元素采用2n个比特编码,其中第一n个比特表示U中有效元素的行坐标,第二n个比特表示U中有效元素的列坐标,其中,n≥1。
优选地,根据所述方法,其中步骤3)包括:
3-1)根据所述压缩坐标编码S所指示的U中有效元素的行坐标和列坐标,从所述中间矩阵C1以及转换矩阵B中提取相应的行列;
3-2)根据所提取的行列执行乘法操作,获得中间矩阵C1=[BTd]的稀疏性矩阵Vz。
优选地,根据所述方法,其中步骤5)包括:
5-1a)根据所述压缩坐标编码S所指示的U中有效元素的行坐标和列坐标,从AT以及点乘矩阵Mz中提取相应的行列;
5-2a)根据所提取的行列执行乘法操作,以获得中间矩阵C2=[ATMz];
5-3a)根据所述C2以及转换矩阵A,基于C2A计算针对所述输入特征图d的卷积运算的结果F。
优选的,所选方法,其中步骤5)还可包括:
5-1b)将相同卷积域内的稀疏性矩阵Vz执行累加操作,M=∑Vzi,获得累加结果矩阵M;
5-2b)对所述累加结果矩阵M执行矩阵转换F=ATMA,得到针对所述输入特征图d的卷积运算结果F。
优选地,根据所述方法,其中步骤4)还包括:
4-1)基于Uz⊙Vz,得到同一卷积域内与各个通道对应的点乘矩阵Mzi,其中i为通道的编号;
4-2)对同一卷积域内的各个通道的点乘矩阵Mzi求和,以作为所述点乘矩阵Mz。
一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现上述任意一项所述的方法。
一种卷积神经网络数据处理装置,包括:
第一单元,用于根据卷积神经网络模型的权值g以及转换矩阵G,基于GgGT计算针对权值的中间矩阵U;
第二单元,用于对所述针对权值的中间矩阵U进行压缩,以获得用于指示U中有效元素的数值的压缩转换权值矩阵Uz、以及用于指示U中有效元素的坐标的压缩坐标编码S;
第三单元,用于根据所述压缩坐标编码S,提取中间矩阵C1=[BTd]中的相应元素以及转换矩阵B中的相应元素并根据所提取的元素执行乘法操作,以获得压缩转换特征图Vz,其中d为卷积神经网络的输入特征图;
第四单元,用于对所述压缩转换权值矩阵Uz和所述压缩转换特征图Vz执行点乘操作,得到点乘矩阵Mz;
第五单元,用于根据所述点乘矩阵Mz、转换矩阵A,基于ATMzA计算针对所述输入特征图d的卷积运算结果F;
其中,所述第一单元、所述第二单元、所述第三单元、所述第四单元、所述第五单元均连接至直接内存存取。
与现有技术相比,本发明的实施例的优点在于:
提供一种基于稀疏性对winograd卷积进行加速的装置和方法,其尤其适合于需要执行大量卷积运算的神经网络处理器。利用了针对权值的中间矩阵U=[GgGT]的稀疏性,采用压缩后的中间矩阵以及压缩编码的方式尽可能地减少执行卷积计算过程中不必要的矩阵乘法和加法操作,从而快速完成卷积运算。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1A是根据本发明的一个实施例的基于winograd卷积运算的神经网络数据处理装置;
图1B是根据本发明的一个实施例的针对图1A的中各个单元的连接关系示意图;
图2是根据本发明的一个实施例的执行基于winograd卷积运算的卷积神经网络数据处理方法的流程图;
图3示出了针对图2中步骤2的操作一个示例;
图4示出了针对图2中步骤3的操作一个示例;
图5示出了针对图2中步骤4的操作一个示例;
图6示出了针对图2中步骤5的操作一个示例;
图7是根据本发明的一个实施例在执行基于winograd卷积运算的卷积神经网络数据处理方法时将压缩编码用于简化矩阵转换运算的示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作详细说明。
在传统的winograd的卷积运算中,其卷积运算可以被总结为下式:
F(m×n,r×s)=AT[[GgGT]⊙[BT dB]]A
其中,m与n分别表示单次winograd卷积运算输出特征图神经元规模的边长;r与s表示卷积核的边长;g表示单次winograd卷积运算输入的权值矩阵;d表示单次winograd卷积运算输入的特征图矩阵;A、G、B分别为对应的转换矩阵。
发明人发现,在上式中,针对权值g的中间矩阵U=[GgGT]其本身具备稀疏性,或者通过对其进行一定处理后可以体现其稀疏性,同时还发现通过在神经网络处理器实现winograd卷积运算时利用该中间矩阵的稀疏性进一步地降低运算量。
下面将通过实施例具体地介绍winograd卷积神经网络数据处理方法,为了方便,我们定义矩阵U=[GgGT],矩阵V=[BT dB],以及矩阵M=U⊙V。由此,可以将前文中的计算式标示为F(m×n,r×s)=AT M A。
参考图2,根据本发明的一个实施例,winograd卷积神经网络数据处理方法包括:
步骤1.根据转换矩阵G以及输入的需要执行winograd卷积运算输入的权值矩阵g,获得针对权值的中间矩阵U=[GgGT]。
在步骤1中,还可以在精度损失的容忍范围内进行稀疏处理,以减少神经网络数据处理的运算量。例如,对权值的中间矩阵U执行剪枝法(pruning),将该矩阵中绝对值小于设置的剪枝阈值的数值修改为“0”。
例如,假设转换后的U矩阵为4x4矩阵:
假定以0.25为剪枝阈值,则剪枝后的矩阵会将原矩阵中绝对值小于该0.25的值修改为0:
由此,将剪枝处理后所得到的矩阵作为针对权值的中间矩阵U。
步骤2.对所述针对权值的中间矩阵U进行压缩处理,得到压缩转换权值矩阵Uz以及压缩坐标编码S。
这里在步骤2中对权值的中间矩阵U执行压缩的原因在于,U是通过对权值矩阵g与转换矩阵G执行乘法运算所得到,g与G中任意一个为“0”的元素都会导致U中相应位置的元素取值为“0”,使得U中存在一定数量的“0”元素,即使得矩阵U存在一定稀疏性。另一方面,由于剪枝算法是将矩阵中绝对值小于剪枝阈值的数值修改为“0”,因而其也会在一定程度上增加矩阵U的稀疏性。执行压缩可以尽量消除“0”值对随后执行的矩阵运算的影响,以减少不必要的矩阵乘法和加法操作。
图3示出了根据本发明的一个实施例,对步骤1中的矩阵U执行压缩的示例,通过压缩矩阵U得到与U中非“0”元素的取值对应的压缩转换权值矩阵Uz、以及与U中非“0”元素的行列位置对应的压缩坐标编码S。参考图3,压缩坐标编码S使用四个比特位来表示Uz中对应元素在原矩阵U中的坐标,采用前两个比特位表示行坐标,采用后两个比特位表示列坐标。例如,以“0010”来编码元素“0.4”在矩阵U中的坐标,其中“00”代表该元素位于第0行,“10”表示该元素位于第2列,以此类推可以得到与U中全部非“0”元素对应的压缩坐标编码值。
本发明并不限制压缩坐标编码S所采用的具体编码方式,只要其元素可以用于确定Uz中的各个元素在U中原本的行和列的坐标位置即可。因而,在本发明的其他实施例中,还可以采用除图3所提供编码方式以外的其他编码方式来得到所述压缩坐标编码S。
经过上述压缩的矩阵Uz和S与传统的矩阵的尺寸存在区别,而这并不影响对矩阵Uz和S的存储方式,只要该存储方式可以使得计算机确定Uz中的元素与S中的元素的对应关系即可。例如,参考图3,根据本发明的一个实施例,逐列地将Uz和S中的元素存储为两个序列,分别为:
0.3,0.5,0.6,0.4,0.8,0.7;和
0000,0101,1001,0010,1110,1011。
在本发明的其他实施例中,也可以逐行地存储,只要可以使得S和UZ的数值存储为可映射出原矩阵U中的各个元素即可。
在上述实施例中,将元素取值是否为0作为压缩标准,可以理解在本发明的其他实施例中,还可以采用其他标准来确定U中的有效元素,根据该有效元素的数值得到Uz,根据该有效元素的坐标得到S。
步骤3.根据通过步骤2所获得的压缩坐标编码S,计算压缩转换特征图Vz,其中,Vz等价于对针对特征图的中间矩阵V=[BTdB]进行压缩的结果,B为转换矩阵,d为输入的需要执行winograd卷积运算的特征图矩阵。
这里采用压缩坐标编码S计算Vz的原因在于,可以减少不必要的乘法和加法运算。从前文所提到的winograd的卷积运算的表达式可以看出,需要计算GgGT(即矩阵U)与BT dB(即矩阵V)之间的点乘结果,若是矩阵U中某一位置的元素为“0”则无论矩阵V中对应位置的元素是多少,该位置的点乘结果均为“0”。因而,可以不执行与该位置对应的BT dB的计算。通过前述步骤,已利用编码S记录了矩阵U的非“0”元素的位置,在此步骤中,可以基于编码S仅执行对应于矩阵U的非“0”元素位置的BT dB的计算,由此跳过计算矩阵V以及对V进行压缩的步骤,直接得到压缩转换特征图Vz。
然而可以理解,在本发明的其他实施例中,也可以在根据V=[BTdB]而计算获得了针对特征图的中间矩阵V之后,利用压缩坐标编码S对V进行压缩,即仅保留V中与由S所标示出的坐标中的元素对应的部分。
图4示出了根据本发明的一个实施例,在计算V的过程中利用S进行压缩,获得压缩转换特征图Vz,以减少在计算V的过程中所需执行的计算量。参考图4,首先根据转换矩阵B的转置BT以及特征图矩阵d计算中间矩阵C1=BTd。在随后计算C1与转换矩阵B的乘法结果C1B的过程中,仅针对由压缩坐标编码S所标示出的行、列的元素执行相应的乘法运算,根据本发明的一个实施例,该方法包括:
步骤3-1.从存储器中读取与压缩坐标编码S对应的序列{0000,01011001,0010,1110,1011}。
步骤3-2.基于前序步骤中针对S采用的编码方式,将有效元素的[行,列]的位置分别确定为:{[0,0]、[1,1]、[2,1]、[0,2]、[3,4]、[2,3]}。
步骤3-3.根据该有效元素的行列位置,加载与该行列位置对应的C1和B中的相应元素,执行乘法计算以得到VZ。
以第4个有效元素的[行,列]=[0,2]为例,加载C1中的第0行以及B中的第2列进行向量乘法,即{0.8,-0.6,0.5,-0.7}×{0,-1,1,0},得到结果1.1,即VZ中的第4个元素。类似地,针对与S对应的每个有效元素执行上述计算,可以得到与C1B的结果对应的一个序列VZ:{0.3,1,0.2,1.1,-1.2,-0.1}。
通过上述步骤实现了简化运算,无需对V=[BTdB]中的每一个元素进行计算,直接得到了V的压缩转换特征图VZ。针对VZ的存储方式可以参考前文中关于S的存储方式。
步骤4.根据通过步骤2得到的压缩转换权值矩阵Uz以及通过步骤3得到的压缩转换特征图Vz,计算Uz⊙Vz以作为简化点乘矩阵Mz。这里的“⊙”表示点乘运算,即矩阵中的元素与另一个矩阵中对应位置的元素相乘以作为所获得的矩阵中对应位置的元素。
图5示出了根据本发明的一个示例,假设从存储器中读取的UZ为{0.3,0.5,0.6,0.4,0.8,0.7},读取的VZ为{0.3,1,0.2,1.1,-1.2,-0.1},对他们执行点乘,则可以得到MZ的序列为{0.09,0.5,0.12,0.44,-0.96,-0.07}。针对MZ的存储方式可以参考前文中关于S的存储方式。
步骤5.根据通过步骤2所获得的压缩坐标编码S,计算获得针对输入特征图的winograd卷积运算的中间结果F=[ATMzA],其中A是转换矩阵。
此步骤与步骤3相类似,都是利用压缩坐标编码S进行计算,其中读取S和MZ的序列的方式以及存储中间矩阵C2=[ATMz]的方式均可以参考前文。
图6示出了根据本发明的一个示例,参考图6,在计算中间矩阵C2=ATMz时,根据压缩坐标编码S所标示出的坐标,来执行相应的乘法运算以简化计算过程。例如,在图6中针对ATMz进行计算时,压缩坐标编码S中第二列的元素为“0101”和“1001”,这两个元素的左边两比特分别为“01”和“10”,因此从AT中选择第1列和第2列的元素,即[1 1;1-1](在图6中写作[1 1;1-1]T)参与计算;并且,在压缩坐标编码S中第二列的两个元素的右边两比特均为“01”,则从Mz中选择第1列元素,即[0.50.12]T参与计算,计算[1 1;1-1]T*[0.5 0.12]T=[0.62 0.38]T,将其作为中间矩阵C2中由压缩坐标编码S中第二列的两个元素的右边两比特所表示的坐标的元素,即C2中第1列的两个元素。以此类推,计算获得C2中的全部元素。
并且,对C2以及A进行乘法运算,从而获得针对该输入特征图的winograd卷积运算结果F。
步骤6.对针对输入特征图的中间结果Fi进行累加,以获得最终的卷积运算的结果F,其中i表示输入特征图的第i个通道,针对全部各个的中间结果Fi求和可以获得对应的输出特征图。
假设,F为输出特征图,Fi表示第i个通道的winograd运算输出结果;MZ为点乘运算结果,MZi表示第i各个通道的winograd点乘运算结果。则可以先通过步骤5执行winograd卷积计算即Fi=ATMZiA,并在步骤6中对各个通道的结果求和,F=∑Fi。也可以替代地在步骤5中优先对各个通道的winograd点乘运算结果MZi求和,即MZ=∑MZi,随后替代地在步骤6中针对MZ计算F=ATMzA,以获得最终的输出特征图。
通过上述步骤1-6即完成了经过简化的winograd卷积运算。
此外,在本发明的另一个实施例中,还可以对前述实施例中的步骤5与步骤6进行调整,先通过对压缩点乘矩阵进行累加,而后直接进行AT与A矩阵转换,该过程可节省有关矩阵转换的计算量,使原本点乘结果矩阵转换次数由输入特征图数变为1。修改后的步骤5’和步骤6’如下:
步骤5’.将所计算出的属于同一个卷积域中的压缩Mz进行累加,得到属于该卷积的总点乘矩阵M。
该累加过程中,假设输入特征图个数为N,各输入特征图对应相同卷积域内求出的点乘压缩矩阵为Mzi,其中i为该卷积域内的通道编号,则属于该卷积域的总点乘矩阵为M,则M=∑Mzi,在累加构成中,各点乘的压缩矩阵通过对应的压缩编码Si,索引其对在总点乘矩阵M中的坐标,并依次与总点乘矩阵对应坐标值进行累加操作。
假定当前压缩点乘矩阵Mzi为{0.09,0.5,0.12,0.44,-0.96,-0.07},其对应的压缩编码为Si为{0000,0101,1001,0010,1110,1011},而当前累加的总点乘矩阵Mi-1为:
则此时依据压缩编码Si中的左边映射得到M矩阵对应值序列为{25.44,-6.25,27.13,45.25,87.13,47.52},与Mzi累加得到{25.53,-5.75,27.25,45.69,86.17,47.45},将该向量值更新到总点乘矩阵M中得到Mi为:
持续该累加过程,直至将属于该卷积域内所有压缩点乘矩阵全部累加至总点乘矩阵并输出其结果M。
步骤6’:对步骤5’得到的总点乘矩阵M执行矩阵转换运算F=ATMA;得到其最终卷积运算结果。
图7示出了根据本发明的一个实施例的神经网络数据处理装置,其中示出存储器、地址生成单元、累加单元、点乘单元、缓存单元、稀疏矩阵转换单元之间的交互。下面将参考图7以对在执行本发明的方法时对压缩编码矩阵S的使用进行解释说明。在一些实施例中,可以离线地执行权值转换和压缩操作,对得到的压缩编码S进行缓存。参考图7,在压缩具有稀疏性的针对权值的中间矩阵U时,产生了压缩编码S,地址生成单元根据输入其中的压缩编码S来生成有效数据的地址,将该地址用于从缓存中载入参与稀疏性转换运算的有效数据,以提供给相应的单元,例如累加单元和点乘单元。并且,稀疏矩阵转换单元,其同时可用于计算非稀疏矩阵的转换运算,其运算的中间结果可传回至缓存。
图1A示出了根据本发明的一个实施例的改进的winograd卷积神经网络数据处理装置101,其可以作为神经网络处理器的一部分用于实现卷积运算。参考图1,所述装置101包括:存储器102、缓存单元103、稀疏矩阵转换单元104、稀疏矩阵点乘单元105、累加单元106以及地址生成单元107。此外,在上述装置101中还可以与神经网络处理器中的激活单元、池化单元、总线等相连接,以实现神经网络数据处理过程中的激活、池化、数据传输等任务。
其中,存储器102,用于存储实现winograd卷积的数据内容,例如经过压缩的权值转换中间矩阵及其压缩编码、需要执行卷积运算的输入特征图、矩阵转换参数。存储器102还可以用于存储执行winograd卷积运算时所需的神经网络控制指令,以使得装置101可以向其内部的各个单元输入相应的控制指令以及待处理数据并控制存储器存储经由各个执行运算的单元产生的中间结果或数据处理结果。
缓存单元103,用于提供缓存功能,例如其可以接收来自存储器102中需要在winograd卷积运算中反复使用的数据,以向实际执行运算的单元快速地提供输入数据,例如压缩的权值转换中间矩阵、压缩编码、输入特征图神经元数据。缓存单元103还可以用于暂时地缓存经由各个执行运算的单元产生的中间结果或数据处理结果。
可以理解,在一些其他实施例中也可以不设置上述缓存单元103,数据的读出和写入可以直接由存储器102来完成。
稀疏矩阵转换单元104,用于根据来自缓存单元103或存储器102的数据,包括输入神经元、矩阵转换参数、以及矩阵转换的中间结果,执行winograd卷积过程中针对包含具有稀疏性的矩阵的转换运算,并将矩阵转换中间结果或者输出神经元传输至缓存单元103进行暂存或传输至存储器102进行存储。
所述叙述矩阵转换单元104,包括向量传输接口,与缓存单元103相连,用于传输待运算的有效向量以及运算结果;
需要说明的是,缓存单元103与矩阵转换单元104之间存在如FIFO等缓冲模块,用于组合并调整输入的待运算数据及运算结果。稀疏矩阵点乘单元105,用于对来自缓存单元103或存储器102的数据,包括权值转换中间矩阵以及稀疏矩阵转行模块104的稀疏神经元矩阵转换结果,进行点乘操作,即执行winograd卷积过程中稀疏矩阵的点乘运算,其结果被传输至稀疏矩阵转换单元104以进行相应的处理。
累加单元106,用于接收稀疏矩阵转换单元104针对单一输入特征图卷积输出结果,并针对其结果执行累加操作,最终得到输出神经元,其结果被输出至神经网络处理器中的激活单元或缓存以进行进一步处理。
地址生成单元107,用于接收压缩编码,分析压缩编码并生成参与计算的数据地址,其结果将传递至缓存模块103,加载对应数据参与计算。所生成的地址包括针对神经元矩阵转换第二阶段矩阵乘法时,参与运算矩阵的行与列地址;后转换过程中第一阶段矩阵乘法中,参与运算的有效转换参数的地址。
在本发明中,上述处理装置101中还可以进一步包括压缩单元107(未在图1A中示出),以用于对将要输入到稀疏矩阵转换单元104中的数据进行增加稀疏性的处理,以进一步减少winograd卷积过程中需要执行的运算量。
图1B示出了根据本发明的一个实施例针对图1A中各个单元的连接关系。如图1B所示,其中存储器、缓存单元、稀疏矩阵转换单元、稀疏矩阵点乘单元、累加单元、地址生成单元、激活单元、池化单元均连接至直接内存存取(Direct Memory Access,DMA),由此使得各个单元彼此关联,从而能够有效完成以具有稀疏性的针对权值的中间矩阵U=[GgGT]为输入的Winograd卷积运算任务。通过上述实施例,本发明提供一种基于稀疏性对winograd卷积进行加速的装置和方法,其尤其适合于需要执行大量卷积运算的神经网络处理器。利用了针对权值的中间矩阵U=[GgGT]的稀疏性,对矩阵U进行压缩,提取其中的非“0”元素的数值和坐标,利用该坐标对winograd卷积计算过程进行简化操作,尽可能地减少执行卷积计算过程中不必要的矩阵乘法和加法操作,从而快速完成卷积运算。
需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种基于winograd卷积运算的卷积神经网络数据处理方法,包括:
1)根据卷积神经网络模型的权值g以及转换矩阵G,基于GgGT计算针对权值的中间矩阵U;
2)对所述针对权值的中间矩阵U进行压缩,以获得用于指示U中有效元素的数值的压缩转换权值矩阵Uz、以及用于指示U中有效元素的坐标的压缩坐标编码S;
3)根据所述压缩坐标编码S,计算针对中间矩阵V=[BTdB]的压缩结果以作为压缩转换特征图Vz,其中d为卷积神经网络的输入特征图,B是转换矩阵;步骤3)包括:
3-1)根据所述压缩坐标编码S所指示的U中有效元素的行坐标和列坐标,从中间矩阵C1=[BTd]以及转换矩阵B中提取相应的行列;
3-2)根据所提取的行列执行乘法操作,获得压缩转换特征图Vz;
4)对所述压缩转换权值矩阵Uz和所述压缩转换特征图Vz执行点乘操作,得到点乘矩阵Mz;
5)根据所述点乘矩阵Mz、转换矩阵A,基于ATMzA计算针对所述输入特征图d的卷积运算结果F;
其中,所述方法采用卷积神经网络数据处理装置进行处理,所述装置包括存储器、地址生成单元、累加单元、点乘单元、稀疏矩阵转换单元,其中,
存储器,用于存储实现winograd卷积的数据内容,包括经过压缩的权值转换中间矩阵及其压缩编码、需要执行卷积运算的输入特征图、矩阵转换参数,并用于存储执行winograd卷积运算时所需的神经网络控制指令,以使得所述装置可以向其内部的各个单元输入相应的控制指令以及待处理数据并控制存储器存储经由各个执行运算的单元产生的中间结果或数据处理结果;
地址生成单元,用于接收压缩编码,分析压缩编码并生成参与计算的数据地址,所生成的地址包括针对神经元矩阵转换矩阵乘法时,参与运算矩阵的行与列地址,以及参与运算的有效转换参数的地址;
累加单元,用于接收稀疏矩阵转换单元针对单一输入特征图卷积输出结果,并针对其结果执行累加操作,得到输出神经元;
点乘单元,用于对来自存储器的数据,包括权值转换中间矩阵以及稀疏矩阵转行模块的稀疏神经元矩阵转换结果,进行点乘操作,其结果被传输至稀疏矩阵转换单元;
稀疏矩阵转换单元,用于根据来自存储器的数据,包括输入神经元、矩阵转换参数、以及矩阵转换的中间结果,执行winograd卷积过程中针对包含具有稀疏性的矩阵的转换运算,并将矩阵转换中间结果或者输出神经元传输至存储器进行存储。
2.根据权利要求1所述的方法,其中所述有效元素为非零元素。
3.根据权利要求2所述的方法,其中步骤1)还包括:对计算得到的所述中间矩阵U执行剪枝处理。
4.根据权利要求1所述的方法,其中步骤3)包括:
计算中间矩阵V=[BTdB],利用压缩坐标编码S对V进行压缩以获得所述压缩转换特征图Vz。
5.根据权利要求1-4中任意一项所述的方法,其中所述压缩坐标编码S被存储为可由计算机确定所述压缩转换权值矩阵Uz中的元素与所述压缩坐标编码S中的元素的对应关系。
6.根据权利要求1-4中任意一项所述的方法,其中步骤2)中所述压缩坐标编码S的每个元素采用2n个比特编码,其中第一n个比特表示U中有效元素的行坐标,第二n个比特表示U中有效元素的列坐标,其中,n≥1。
7.根据权利要求6所述的方法,其中步骤5)包括:
5-1a)根据所述压缩坐标编码S所指示的U中有效元素的行坐标和列坐标,从AT以及点乘矩阵Mz中提取相应的行列;
5-2a)根据所提取的行列执行乘法操作,以获得中间矩阵C2=[ATMz];
5-3a)根据所述C2以及转换矩阵A,基于C2A计算针对所述输入特征图d的卷积运算的结果F。
8.根据权利要求6所述的方法,其中步骤5)还包括:
5-1b)将相同卷积域内的点乘压缩矩阵Mzi执行累加操作,M=∑Mzi,获得累加结果矩阵M,其中,Mzi表示第i个通道的点乘压缩矩阵;
5-2b)对所述累加结果矩阵M执行矩阵转换F=ATMA,得到针对所述输入特征图d的卷积运算结果F。
9.根据权利要求7所述的方法,其中步骤4)还包括:
4-1)基于Uz⊙Vz,得到同一卷积域内与各个通道对应的点乘矩阵Mzi,其中i为通道的编号;
4-2)对同一卷积域内的各个通道的点乘矩阵Mzi求和,以作为所述点乘矩阵Mz。
10.一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现如权利要求1-9中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910203310.6A CN110097172B (zh) | 2019-03-18 | 2019-03-18 | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910203310.6A CN110097172B (zh) | 2019-03-18 | 2019-03-18 | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110097172A CN110097172A (zh) | 2019-08-06 |
CN110097172B true CN110097172B (zh) | 2021-10-29 |
Family
ID=67443346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910203310.6A Active CN110097172B (zh) | 2019-03-18 | 2019-03-18 | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110097172B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110647976B (zh) * | 2019-08-20 | 2022-03-29 | 瑞芯微电子股份有限公司 | 一种矩阵卷积优化运算方法和电路 |
CN112784206A (zh) * | 2019-11-01 | 2021-05-11 | 中科寒武纪科技股份有限公司 | winograd卷积运算方法、装置、设备及存储介质 |
CN112784207B (zh) * | 2019-11-01 | 2024-02-02 | 中科寒武纪科技股份有限公司 | 运算方法及相关产品 |
CN112765542A (zh) * | 2019-11-01 | 2021-05-07 | 中科寒武纪科技股份有限公司 | 运算装置 |
CN112765541B (zh) * | 2019-11-01 | 2024-02-23 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN113033813B (zh) * | 2019-12-09 | 2024-04-26 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111507473B (zh) * | 2020-04-20 | 2023-05-12 | 上海交通大学 | 一种基于Crossbar架构的剪枝方法及系统 |
CN116348882A (zh) * | 2020-06-30 | 2023-06-27 | 华为技术有限公司 | 一种卷积神经网络数据处理方法及其相关设备 |
CN113610211B (zh) * | 2021-06-30 | 2024-01-23 | 山东云海国创云计算装备产业创新中心有限公司 | 一种卷积计算方法、系统、计算机设备及可读存储介质 |
CN114821082A (zh) * | 2022-06-15 | 2022-07-29 | 中科物栖(北京)科技有限责任公司 | 一种winograd卷积神经网络脆弱性评估方法及装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003509748A (ja) * | 1999-09-03 | 2003-03-11 | チェン,ティー.シー. | データ圧縮のための3次スプライン補間の高速で効率のよい計算方法 |
US8775495B2 (en) * | 2006-02-13 | 2014-07-08 | Indiana University Research And Technology | Compression system and method for accelerating sparse matrix computations |
US20170344876A1 (en) * | 2016-05-31 | 2017-11-30 | Samsung Electronics Co., Ltd. | Efficient sparse parallel winograd-based convolution scheme |
CN106447034B (zh) * | 2016-10-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN108229654B (zh) * | 2016-12-14 | 2020-08-14 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
US10990648B2 (en) * | 2017-08-07 | 2021-04-27 | Intel Corporation | System and method for an optimized winograd convolution accelerator |
CN107977704B (zh) * | 2017-11-10 | 2020-07-31 | 中国科学院计算技术研究所 | 权重数据存储方法和基于该方法的神经网络处理器 |
CN107844833A (zh) * | 2017-11-28 | 2018-03-27 | 郑州云海信息技术有限公司 | 一种卷积神经网络的数据处理方法、装置及介质 |
CN107992940A (zh) * | 2017-12-12 | 2018-05-04 | 郑州云海信息技术有限公司 | 一种卷积神经网络在fpga上的实现方法及装置 |
CN108510063B (zh) * | 2018-04-08 | 2020-03-20 | 清华大学 | 一种应用于卷积神经网络的加速方法和加速器 |
CN109190756B (zh) * | 2018-09-10 | 2022-02-18 | 中国科学院计算技术研究所 | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 |
CN109359730B (zh) * | 2018-09-26 | 2020-12-29 | 中国科学院计算技术研究所 | 面向固定输出范式Winograd卷积的神经网络处理器 |
CN109325591B (zh) * | 2018-09-26 | 2020-12-29 | 中国科学院计算技术研究所 | 面向Winograd卷积的神经网络处理器 |
CN109460821A (zh) * | 2018-10-29 | 2019-03-12 | 重庆中科云丛科技有限公司 | 一种神经网络压缩方法、装置、电子设备及存储介质 |
CN109359726A (zh) * | 2018-11-27 | 2019-02-19 | 华中科技大学 | 一种基于winograd算法的卷积神经网络优化方法 |
-
2019
- 2019-03-18 CN CN201910203310.6A patent/CN110097172B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110097172A (zh) | 2019-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110097172B (zh) | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 | |
CN107609642B (zh) | 计算装置和方法 | |
CN107423816B (zh) | 一种多计算精度神经网络处理方法和系统 | |
WO2019091020A1 (zh) | 权重数据存储方法和基于该方法的神经网络处理器 | |
KR20200004700A (ko) | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 | |
CN112508125A (zh) | 一种图像检测模型的高效全整数量化方法 | |
CN107256424B (zh) | 三值权重卷积网络处理系统及方法 | |
CN110222760B (zh) | 一种基于winograd算法的快速图像处理方法 | |
CN107944545B (zh) | 应用于神经网络的计算方法及计算装置 | |
CN107395211B (zh) | 一种基于卷积神经网络模型的数据处理方法及装置 | |
CN113516133B (zh) | 一种多模态图像分类方法及系统 | |
CN111368988B (zh) | 一种利用稀疏性的深度学习训练硬件加速器 | |
US20240185086A1 (en) | Model distillation method and related device | |
WO2020175862A1 (ko) | 인공신경망의 비트 양자화 방법 및 시스템 | |
CN113204633A (zh) | 一种语义匹配蒸馏方法及装置 | |
CN109117455A (zh) | 计算装置及方法 | |
KR20190130443A (ko) | 뉴럴 네트워크의 양자화 방법 및 장치 | |
CN110909870A (zh) | 训练装置及方法 | |
Qi et al. | Learning low resource consumption cnn through pruning and quantization | |
CN111652359B (zh) | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 | |
CN110782396B (zh) | 一种轻量化的图像超分辨率重建网络和重建方法 | |
CN108376283B (zh) | 用于神经网络的池化装置和池化方法 | |
CN116502675A (zh) | 一种Transformer神经网络系统及其运算方法 | |
CN116095183A (zh) | 一种数据压缩方法以及相关设备 | |
CN115022637A (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 |