CN109359730A - 面向固定输出范式Winograd卷积的神经网络处理器 - Google Patents
面向固定输出范式Winograd卷积的神经网络处理器 Download PDFInfo
- Publication number
- CN109359730A CN109359730A CN201811122004.1A CN201811122004A CN109359730A CN 109359730 A CN109359730 A CN 109359730A CN 201811122004 A CN201811122004 A CN 201811122004A CN 109359730 A CN109359730 A CN 109359730A
- Authority
- CN
- China
- Prior art keywords
- matrix
- row
- vector
- column
- 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
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
- 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Processing (AREA)
Abstract
本发明提供一种面向固定输出范式Winograd卷积的运算单元和基于该运算单元的神经网络处理器。该运算单元包括取反单元、累加单元和第一选通器,取反单元的输出端连接至累加单元的输入端,第一选通器用于控制将待计算的输入数据传递至取反单元的输入端或传递至累加单元的输入端,累加单元分时接收待计算的输入数据、取反单元的输出值或累加单元的输出值以利用加减运算实现Winograd卷积中的矩阵转换操作。利用本发明运算单元用于神经网络的卷积运算,能够提高计算效率并降低运行功耗。
Description
技术领域
本发明涉及神经网络技术领域,尤其涉及一种面向固定输出范式Winograd卷积的神经网络处理器。
背景技术
近年来,深度学习技术得到了飞速发展,在解决高级抽象认知问题,例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐和智能机器人等领域得到了广泛应用,成为学术界和工业界的研究热点。
深度神经网络是人工智能领域具有最高发展水平的感知模型之一,其通过建立模型来模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来突破性进展。深度神经网络模型是一种运算模型,由大量节点通过网状互连结构构成,这些节点被称为神经元。每两个节点间连接强度都代表通过该连接信号在两个节点间的加权值,即权重,与人类神经网络中的记忆相对应。
然而,在现有技术中,神经网络存在神经网络处理速度慢,运行功耗大等问题。这是由于深度学习技术依赖于极大的计算量,例如,在训练阶段,需要在海量数据中通过反复迭代计算得到神经网络中的权重数据;在推理阶段,同样需要神经网络在极短的响应时间(通常为毫秒级)内完成对输入数据的运算处理,特别是当神经网络应用于实时系统时,例如,自动驾驶领域。神经网络中涉及的计算主要包括卷积操作、激活操作和池化操作等,其中,卷积过程占用了神经网络处理的大部分时间,该过程主要将输入的神经元或像素与相应卷积核的权重进行乘累加处理。
由于卷积运算的数据重复性操作任务极大,卷积运算量与卷积窗口移动次数成正比。因此,目前研究者们提出了基于Winograd的卷积运算方式,该方式通过对输入特征图与权值进行特定的矩阵转换,能够完成等效的卷积运算任务并大量减少卷积运算过程的乘法运算,而由于实际应用中大多数神经网络处理器芯片的预测过程是采用固定神经网络模型,因而所采用的Winograd卷积输出范式通常也是固定模式,针对固定输出范式的Winograd卷积,其运算过程十分明确,存在较大的优化空间,如何设计针对固定输出范式的Winograd卷积神经网络加速器成为一个研究重点。
因此,为了将神经网络推向更广泛应用,例如,智能穿戴、智能机器人、自动驾驶以及模式识别等领域,需要对现有技术进行改进,以设计针对固定输出范式的Winograd卷积的神经网络处理器,从而实现数据处理的实时性、低功耗以及计算资源利用率的提升。
发明内容
本发明的目的在于克服上述现有技术的缺陷,提供一种面向固定输出范式的Winograd卷积的神经网络处理器。
根据本发明的第一方面,提供了一种面向固定输出范式Winograd卷积的运算单元,应用于神经网络的卷积运算,其中,所述运算单元包括取反单元、累加单元和第一选通器,所述取反单元的输出端连接至所述累加单元的输入端,所述第一选通器用于控制将待计算的输入数据传递至所述取反单元的输入端或传递至所述累加单元的输入端,所述累加单元分时接收待计算的输入数据、所述取反单元的输出值或所述累加单元的输出值以利用加法运算实现Winograd卷积中的矩阵转换操作,其中,所述Winograd卷积的输出范式为F(2*2,3*3),2*2表示输出特征图的规模,3*3表示卷积核的规模。
在本发明的一个实施例中,所述运算单元还包括第二选通器,所述第二选通器用于控制将所述累加单元的值进行输出或传递至所述累加单元的输入端。
在本发明的一个实施例中,所述运算单元还包括第二选通器和移位单元,所述移位单元的输入端接收待计算的输入数据,所述移位单元的输出端连接至所述第一选通器的输入端,所述第二选通器用于控制将所述累加单元的值进行输出或传递至所述累加单元的输入端。
根据本发明的第二方面,提供了一种神经元矩阵转换装置,包括4*4个本发明的运算单元以执行Winograd卷积中针对神经元矩阵的转换操作V=[BTdB],其中,d表示神经元矩阵,B表示神经元矩阵d对应的转换矩阵,
根据本发明的第三方面,提供了一种权值矩阵转换装置,包括4*2个本发明的运算单元以执行Winograd卷积中针对权值矩阵的转换操作U=[GgGT],其中g表示权值矩阵,G表示权值矩阵g对应的转换矩阵,
根据本发明的第四方面,提供了一种针对点乘结果矩阵的矩阵转换装置,包括4*2个权利要求2所述的运算单元以执行Winograd卷积中针对点乘结果的矩阵转换操作F=ATMA,其中,M=[[GgGT]⊙[BTdB]],d表示神经元矩阵,g表示权值矩阵,G、B、A分别表示与权值矩阵g、神经元矩阵d和点乘结果矩阵M对应的转换矩阵,转换矩阵B、G、A分别为:
根据本发明的第五方面,提供了一种基于本发明的矩阵转换装置的运算方法,其中,通过控制该装置的第一选通器采用以下步骤执行Winograd卷积中针对神经元矩阵的转换操作V=[BTdB]:
将神经元矩阵d的第一行减第三行的向量差值作为矩阵C1的第一行,其中C1=BTd;
将神经元矩阵d的第二行与第三行相加的结果作为C1的第二行;
将神经元矩阵d的第三行减第二行的向量差值作为C1的第三行;
将神经元矩阵d的第二行减第四行的向量差值作为C1的第四行;
将矩阵C1的第一列减第三列的向量差值作为矩阵V的第一列;
将矩阵C1的第二列与第三列相加的结果作为矩阵V的第二列;
将矩阵C1的第三列减第二列的向量差值作为矩阵V的第三列;
将矩阵C1的第二列减第四列的向量差值作为矩阵V的第四列。
根据本发明的第六方面,提供了一种基于本发明的矩阵转换装置的运算方法,其中通过控制该装置的第一选通器采用以下步骤执行Winograd卷积中针对权值矩阵的转换操作U=[GgGT]:
将权值矩阵g的第一行向量作为矩阵C2的第一行,其中C2=GTg;
将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵C2的第二行;
将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵C2的第三行;
将权值矩阵g的第三行向量作为矩阵C2的第四行;
将矩阵C2的第一列向量作为矩阵U的第一列;
将矩阵C2的第一、二、三列右移一位之后再相加的向量结果作为矩阵U的第二列;
将矩阵C2的第一、二、三列右移一位之后再相加的向量结果作为矩阵U的第三列;
将矩阵C2的第三列向量作为矩阵U的第四列;
根据本发明的第七方面,提供了一种基于本发明的矩阵转换装置的运算方法,其中,通过控制该装置的第一选通器采用以下步骤执行Winograd卷积中针对点乘结果的矩阵转换操作F=ATMA:
将矩阵M的第一、二、三行相加的向量结果作为矩阵C3的第一行,其中C3=ATM;
将矩阵M的第二、三、四行相加的向量结果作为矩阵C3的第二行;
将矩阵C3的第一、二、三列相加的向量结果作为矩阵F的第一列;
将矩阵C3的第二、三、四列相加的向量结果作为矩阵F的第二列。
根据本发明的第八方面,提供了一种面向固定输出范式Winograd卷积的运算方法,包括以下步骤:
步骤101:执行Winograd卷积中针对神经元矩阵的转换操作V=[BTdB];
步骤102:执行Winograd卷积中针对权值矩阵的转换操作U=[GgGT];
步骤103:执行WInograd卷积中针对矩阵U与V的点乘操作M=U⊙V;
步骤104:执行Winograd卷积中针对点乘结果的矩阵转换操作F=ATMA。
此外,该运算方法还可以通过以下步骤实现,包括:
离线执行针对权值的矩阵转换U=[GgGT];
在线执行针对输入神经元矩阵的转换操作V=[BTdB];
执行针对矩阵V与矩阵U的点乘运算Mi=U⊙V;
针对相同卷积域内的点乘运算结果Mi执行累加运算M=∑Mi;
执行针对点乘总结果M矩阵的转换操作F=ATMA。
其中,i表示输入的N各特征图中的第i个特征图。
根据本发明的第九方面,提供了一种面向固定输出范式Winograd卷积的神经网络处理器,包括:
神经元转换模块:用于通过加减运算执行神经元矩阵的转换操作V=[BTdB];
权值转换模块:用于通过加减和移位计算执行权值矩阵的转换操作U=[GgGT];
点乘模块:用于执行矩阵U和V的点乘操作,获得点乘结果矩阵M=U⊙V;
累加模块:用于执行针对相同卷积域内各点乘结果的累加运算∑Mi;
后矩阵转换模块:用于通过加减运算执行针对点乘结果矩阵的转换操作F=ATMA,其中Mi表示N个输入特征图中的第i个特征图的点乘运算结果;
其中,d表示神经元矩阵,g表示权值矩阵,G、B、A分别表示与权值矩阵g、神经元矩阵d和点乘结果矩阵M对应的转换矩阵,转换矩阵B、G、A分别为:
在一个实施例中,本发明的神经网络处理器还包括存储器、数据缓存模块和控制模块,所述存储器用于存储已训练好的权值数据、神经元数据和控制指令,所述数据缓存模块用于暂存待处理的权值数据、神经元数据和控制指令,所述控制模块用于根据计算过程控制待处理的权值数据、神经元数据和中间计算结果在各模块之间的传递。
需要说明的是,当权值为离线转换时,无需设立权值转换模块;
在一个实施例中,本发明的神经网络处理器还包括:
累加模块:用于接收所述后矩阵转换模块输出的矩阵转换结果以获得相同卷积域内的输出神经元;或执行针对相同卷积域内的点乘运算结果矩阵,获得针对卷积域的总点乘矩阵;
激活模块:用于通过非线性激活函数处理不同卷积域的输出神经元;
池化模块:用于对来自于激活模块的输入神经元进行池化操作。
与现有技术相比,本发明的优点在于:通过分析固定范式的Winograd卷积的转换矩阵参数特征,提供快速的数据调度方法,并且结合神经网络数据处理过程布局对应的专用计算模块,能够快速完成针对固定范式的Winograd卷积运算任务。
附图说明
以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:
图1(a)示出了根据本发明一个实施例的神经元矩阵转换过程的示意图;
图1(b)示出了根据本发明一个实施例的神经元矩阵转换和点乘结果矩阵转换的等效计算单元的示意图;
图1(c)示出了根据本发明一个实施例的神经元矩阵转换等效运算模块的示意图;
图2(a)示出了根据本发明一个实施例的权值矩阵转换的等效计算单元的示意图;
图2(b)示出了根据本发明一个实施例的权值矩阵转换的等效运算模块的示意图。
图3示出了根据本发明一个实施例的针对点乘结果矩阵的等效运算模块的示意图;
图4示出了根据本发明一个实施例的神经网络处理器的示意图;
图5示出了根据本发明另一个实施例的神经网络处理器的示意图。
具体实施方式
为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
在神经网络的卷积计算中,基于Winograd卷积的运算公式为:
F(m×n,r×s)=AT[[GgGT]⊙[BTdB]]A (1)
其中,m与n分别表示单次Winograd卷积运算输出特征图神经元规模的边长;r与s表示卷积核的边长;g表示单次Winograd卷积运算输入的权值矩阵;d表示单次Winograd卷积运算输入的神经元矩阵(或称输入特征图矩阵;G、B、A分别表示与权值矩阵g、神经元矩阵d和点乘结果[[GgGT]⊙[BTdB]]对应的转换矩阵,其中,G、B、A是与Winograd卷积范式相关的已知矩阵。
下文将以输出范式F(2*2,3*3)为例进行介绍,对于该输出范式,输出特征图规模为2*2,卷积核为3*3,转换矩阵参数分别为:
由公式(1)可知,Winograd卷积运算可通过以下过程实现:
步骤S1:执行针对输入神经元矩阵的转换操作V=[BTdB],在本文中也称为输入特征图矩阵的转换操作;
步骤S2:执行针对权值的转换操作U=[GgGT];
步骤S3:执行针对矩阵V与矩阵U的点乘运算M=U⊙V;
步骤S4:执行针对点乘结果矩阵的转换操作,即矩阵M的转换操作F=ATMA,在本文中,将针对点乘结果的转换操作也称为后矩阵转换。
需要说明的是,当权值为离线转换时,无需执行步骤S2;
此外,该工作流程还可以通过以下步骤实现,包括:
离线执行针对权值的矩阵转换U=[GgGT];
在线执行针对输入神经元矩阵的转换操作V=[BTdB];
执行针对矩阵V与矩阵U的点乘运算Mi=U⊙V;
针对相同卷积域内的点乘运算结果Mi执行累加运算M=∑Mi;
执行针对点乘总结果M矩阵的转换操作F=ATMA。
其中,i表示输入的N个特征图中的第i个特征图。
由上述过程可知,Winograd卷积运算涉及三种类型的矩阵转换操作,即输入神经元矩阵的转换操作、权值矩阵的转换操作和针对点乘结果矩阵的转换操作,而对于固定范式Winograd卷积,转换矩阵A、G、B是已知的并且具有一定规律性,鉴于此,本发明提供专用的计算单元,以获得与Winograd卷积运算等效的结果,但能够提高计算效率。
1)、关于神经元矩阵转换操作和对应的等效计算单元
对于输入神经元矩阵的转换操作V=[BTdB],通过分析转换矩阵B与BT的数值特性,其数值由-1与1组成,且具备稀疏性,可得出结论:
BT与矩阵d的乘法运算结果C1等效于:
矩阵C1的第一行等效于矩阵d的第一行减第三行的向量差值;
矩阵C1的第二行等效于矩阵d的第二行与第三行相加的结果;
矩阵C1的第三行等效于矩阵d的第三行减第二行的向量差值;
矩阵C1的第四行等效于矩阵d的第二行减第四行的向量差值。
例如,假设则:
由C1的具体表达式可以看出,C1具有上述的等效运算特征。
同理可知,C1与矩阵B的乘法运算结果V等效于:
矩阵V的第一列等效于矩阵C1的第一列减第三列的向量差值;
矩阵V的第二列等效于矩阵C1的第二列与第三列相加的结果;
矩阵V的第三列等效于矩阵C1的第三列减第二列的向量差值;
矩阵V的第四列等效于矩阵C1的第二列减第四列的向量差值;
为了清楚起见,图1(a)以更具体的实例示出了神经元矩阵转换操作的过程示意图,当输入神经元矩阵时,由于BT与矩阵d的乘法运算结果C1等效于:矩阵C1的第一行等效于矩阵d的第一行减第三行的向量差值,即第一行的结果分别为0.8-0,0-0.6,0.5-0,0-0.7;矩阵C1的第二行等效于矩阵d的第二行与第三行相加的结果,即0.7+0,0.4+0.6,0+0,0.4+0.7;矩阵C1的第三行等效于矩阵d的第三行减第二行的向量差值,即0-0.7,0.6-0.4,0-0,0.7-0.4;矩阵C1的第四行等效于矩阵d的第二行减第四行的向量差值,即0.7-0.5,0.4-0,0-0.8,0.4-0。
图1(a)示出的等效运算仅包括相加和相减,在一个实施例中,可通过具有取反和累加功能的电路实现等效运算过程。参见图1(b)示出的一个等效计算单元的电路结构,该计算单元包括选通器110、取反单元120、累加单元130、选通器140,其中,选通器110为二选一数据选通器,其输入端用于接收待计算的输入数据,输入数据的符号位作为选通器110的控制信号,控制其将输入数据传递到取反单元120或累加单元130,取反单元120的输出端连接到累加单元130的输入端,累加单元130的输出连接到选通器140,输出控制信号控制选通器140将来自累加单元130的数据进行输出或传递至累加单元130。
具体地,利用图1(b)的计算单元计算矩阵C1的第一行的等效运算0.8-0的过程是:首先,在第一周期,将0.8加载到输入端,由于对0.8需要执行加法操作,则符号位为正,数据选通器110将0.8传递到累加单元130;然后,在第二个周期0加载到输入端,由于需要对0执行减法操作,则符号位为负,选通器110将0传递到取反单元120之后得到-0值,然后取反单元120将-0传递到累加单元130,与其中的0.8进行累加,通过控制选通器140的控制信号可控制累加单元130将结果进行输出或传递至累加单元130。也就是说,对于图1(b)的电路结构,根据对输入的数据进行加法还是减法运算,控制输入的数据是直接送到累加单元的输入端,或者经过取反单元之后再送到累加单元的输入端,以实现通过加减运算完成矩阵的装换操作。
由于神经元矩阵转换操作的等效的有效运算部分为4项,最大向量维度为4,故可将16个计算单元组织为4x4的矩阵形式,参见图1(c)所示,其中行计算单元完成BT与矩阵d的乘法运算结果C1的等效运算部分,列计算单元完成C1与矩阵B的乘法运算结果V的等效运算部分。
对于图1(c)的实施例,各计算单元分别在2个周期内完成针对矩阵转换过程的矩阵乘法运算,而在使用相同规模的计算单元时采用传统方法的矩阵运算需要消耗4个周期。
2)、关于权值矩阵转换操作和对应的等效计算单元
对于权值矩阵的转换操作U=[GgGT],通过分析转换矩阵G与GT的数值特性,数值由-1/2与1/2组成,且具备稀疏性,可得出结论:
GT与矩阵g的乘法运算结果C2等效于:
矩阵C2的第一行等效于矩阵g的第一行向量;
矩阵C2的第二行等效于矩阵g的第一、二、三行相加的结果除2(相当于二进制右移一位,也等效于先将第一、二、三行元素右移一位之后再相加)的向量结果;
矩阵C2的第三行等效于矩阵g的第一、二(负)(负是指将第二行的元素取反)、三行相加的结果除2的向量结果;
矩阵C2的第四行等效于矩阵g的第三行向量。
C2与矩阵GT的乘法运算过程与结果U等效于:
矩阵U的第一列等效于矩阵C2的第一列向量;
矩阵U的第二列等效于矩阵C2的第一、二、三列相加的结果除2的向量结果;
矩阵U的第三列等效于矩阵C2的第一、二(负)、三列相加的结果除2的向量结果;
矩阵U的第四列等效于矩阵C2的第三列向量;
图2(a)示出了根据本发明的一个实施例实现取值矩阵转换操作的的等效计算单元的电路图,可根据以上行列运算方法得出神经网络权值矩阵转换结果U。
该计算单元包括移位单元210、选通器220、取反单元230、累加单元240、选通器250。运算过程中,需要对输入数据的正负号进行判定以确定是否需要执行取反运算,以符号位输入至多路选择器对数据流向进行选择,以实现数据的取反或直接累加操作。
例如,对于权值矩阵转换过程中的等效运算:矩阵C2的第二行等效于矩阵g的第一、二、三行相加的结果除2的向量结果;以及矩阵C2的第三行等效于矩阵g的第一、二(负)、三行相加的结果除2的向量结果,可以通过移位单元210对各输入数据实现除2的功能,然后在根据符号位控制选通器220将移位之后的输入传递至取反单元230或累加器240,输出控制信号控制选通器将累加单元240的结果进行输出或传递至累加单元240的输入端,与图1(b)的神经元转换的等效计算单元相比,图2(a)增加了移位单元210用于实现除2的功能,其他数据计算过程与1(b)类似,在此不再赘述。
进一步地,由于权值矩阵的转换存在两行运算均为复制操作(例如矩阵C2的第一行等效于矩阵g的第一行向量、矩阵C2的第四行等效于矩阵g的第三行向量),无需计算单元实现,即权值转换等效的有效运算部分为2项,最大向量维度为4,因此可将8个等效计算单元组织为规模为2x4的权值转换等效运算模块,参见图2(b)所示。
3)、关于点乘结果的转换操作
对于点乘结果矩阵的转换操作F=ATMA,其中M=U⊙V,通过分析转换矩阵A与AT的数值特性,其数值由-1与1组成,且具备稀疏性,可以得出结论:
针对AT与矩阵M的乘法运算结果C3等效于:
矩阵C3的第一行等效于矩阵M的第一、二、三行相加的向量结果;
矩阵C3的第二行等效于矩阵M的第二、三(负)、四(负)行相加的向量结果。
针对C3与矩阵A的乘法运算结果F等效于:
矩阵F的第一列等效于矩阵C3的第一、二、三列相加的向量结果;
矩阵F的第二列等效于矩阵C3的第二、三(负)、四(负)列相加的向量结果。
由于上述等效运算也仅包括相加或相减的过程,因此,可采用与神经元转换等效计算单元同样的电路结构来实现,参见图1(b)所示。此外,由于点乘结果的转换等效的有效运算部分为2项,最大向量维度为4,故其后矩阵转换模块的计算单元规模可为2x4,参见图3所示。
需要说明的是,尽管为了清楚起见,图1(b)和图2(a)以非常具体的电路结构详述了等效计算单元的工作过程,但根据固定范式的Winograd卷积的转换矩阵特点,本领域的技术人员也可对这些电路进行适当的变型来简化卷积计算过程。例如,图2(a)和图1(b)中的选通器都不是必须包含的,在这种情况下,可以通过控制取反单元、累加单元和移位单元之间的数据传递来实现相关数据加载到对应的取反单元或累加单元等,又如,移位单元也可以放置在累加单元之后,以实现相加之后再除2的效果。此外,神经元转换等效计算单元也可以不完全等同于与点乘结果转换等效计算单元,例如采用变型的电路结构。
本发明旨在提供一种针对固定范式F(2*2,3*3)的Winograd卷积运算与调度方法,及其对应的神经网络处理器。该方法通过分析固定范式F(2*2,3*3)的转换矩阵参数特征,生成其对应的行列等效运算方法与数据调度方法,结合其具体数据处理过程布局对应计算模块,形成流水线数据处理机制的神经网络处理器。该处理器通过精简的调度方式,结合专用运算模块,可快速完成针对固定范式F(2*2,3*3)的Winograd卷积运算任务。
图4示出了根据本发明一个实施例针对固定范式F(2*2,3*3)的Winograd卷积的神经网络处理器,该该处理器400包括至少一个存储器410、至少一个数据缓存模块420、至少一个神经元转换模块430、至少一个权值转换模块440、至少一个点乘模块450、至少一个后矩阵转换模块460、至少一个累加模块470、至少一个激活模块480、至少一个池化模块590、至少一个控制模块(未示出)、总线以及必要寄存器(未示出)等。
存储器410用于存储已训练好的权值、输入神经元或像素数据,以及控制指令。存储器410可与外部数据传输接口相连,用于接收外部输入的已训练好的权值、输入神经元或输入特征图以及控制指令等。
数据缓存模块420与存储器410相连,用于从存储器410读取待处理数据,暂存待处理的权值、神经元数据以及执行指令等,快速向处理器中的各运算单元(例如权值转换模块440与神经元转换模块430等)提供输入数据,同时接收神经网络数据处理结果。此外,当数据缓存模块420的数据存储量达到边界值时,可由存储器410提供存储空间。
权值转换模块440与数据缓存模块420相连,接收其传递而来的权值数据,执行针对输入权值的矩阵转换运算U=[GgGT],权值转换结果输出至点乘模块450;权值转换模块440内部具有寄存器组,可用于存储矩阵乘法运算过程中的中间结果,通过寄存器组的暂存功能,实现权值转换模块440的转换运算任务。
神经元转换模块430与数据缓存模块420相连,用于接收数据缓存模块420传递的神经元数据,执行针对输入神经元的矩阵转换运算V=[BTdB],权值转换结果传输至点乘模块450;神经元转换模块430内部具有寄存器组,用于存储矩阵乘法运算过程的中间结果,通过寄存器组的暂存功能,实现神经元转换模块430的转换运算任务。
点乘模块450分别与权值转换模块440以及神经元转换模块430相连,接收两个模块各自的矩阵转换结果M=U⊙V,其结果输出至后矩阵转换模块460。
后矩阵转换模块460与点乘模块450相连,接收其传递而来的矩阵点乘结果,执行针对点乘结果的矩阵转换运算,即F=ATMA运算;后矩阵转换模块460内部具有寄存器组,用于存储矩阵乘法运算过程的中间结果,通过寄存器组的暂存功能,实现后矩阵转换模块460的矩阵转换任务。
累加模块470与后矩阵转换模块460相连,接收其传递而来的矩阵转换结果,用于执行针对相同卷积域内,通过固定范式运算各输入特征图所得出的Winograd卷积中间结果;累加模块470内部具有寄存器组,用于存储各矩阵元素对应累加结果,其Winograd卷积窗口内所有卷积输出值均进行了累加结果为该卷积域的最终输出神经元,其结果输出至激活等后续单元进一步处理。
激活模块480用于通过非线性激活函数(如ReLU)处理Winograd卷积结果。
池化模块450用于采用不同的池化模式(例如,求最大值法、求平均值法、求最小值法等)对输入的神经元进行池化操作。
神经网络处理器400中的控制模块(未示出)分别与各模块相连,控制模块的功能包括但不限于控制各模块的工作状态、加载并执行数据处理指令、控制各模块之间的数据传递等。
在图4的实施例中,神经元转换模块430、权值转换模块440和后矩阵转换模块460可分别包括包含图1(b)、图2(b)和图3示出的由多个等效计算单元构成的等效运算模块,其中,等效计算单元的数量也可根据实际的运算规模进行适当的增减,不限于本发明提供的实施例。
结合图4的神经网络处理器,本发明提供的针对固定范式F(2*2,3*3)的Winograd卷积的工作过程包括以下步骤:
步骤S410,从存储器载入待运算的权值与神经元载入缓存单元,并分别传输至权值转化模块与神经元转换模块;
步骤S420,神经元转换模块执行针对输入神经元转换V=[BTdB]的等效运算,权值转换模块执行针对权值转换U=[GgGT]的等效运算,结果输出至点乘模块;
步骤S430,点乘模块执行针对矩阵V与矩阵U的点乘运算M=U⊙V,其结果输出至后矩阵转换模块;
步骤S440,后矩阵转换模块执行针对矩阵M的矩阵转换运算F=ATMA的等效运算,结果传输至累加模块;
步骤S450,累加模块执行针对相同卷积域内矩阵转换结果的累加运算,其结果输出至激活模块;
步骤S460,激活模块、池化模块等依据神经网络数据要求完成剩余数据处理,其结果输出至数据缓存模块。
需要说明的是,本发明提供的固定输出范式的Winograd卷积神经网络处理器,当权值为离线已转换结果的情况下(即已离线计算出权值转换的结果),无需设立针对权值专用的矩阵转换模块,参见图5所示的另一个实施例的神经网络处理器500,其为权值离线模式,不包括权值转换模块440,其他的模块与图5示出的神经网络处理器400相同,在此不再赘述。
在本发明的实施例中,选通器、移位单元、累加单元、取反单元等均可采用通用或专用器件实现。存储器和数据缓存模块可以是静态随机存储器(SRAM)、动态随机存储器(DRAM)、寄存器堆等常见存储介质,也可以是3D存储器件等新型的存储类型。
此外,通过结合图5,该工作流程还可以通过以下过程实现,包括:
离线执行针对权值的矩阵转换U=[GgGT];
神经元转换模块在线执行针对输入神经元矩阵的转换操作V=[BTdB];
将已转换的U与V传递至点乘模块450,执行针对矩阵V与矩阵U的点乘运算Mi=U⊙V;
将点乘结果Mi传递至累加模块470,执行针对相同卷积域内的点乘运算结果Mi的累加运算M=∑Mi;
累加结果M传递至后矩阵转换模块460,执行针对点乘总结果M矩阵的转换操作F=ATMA。
其中,i表示输入的N个特征图中的第i个特征图。
本发明提供的神经网络处理器可以是针对神经网络计算而设计的一个微处理器,也可以仅是微处理器的一部分,该神经网络处理器可应用于文字处理、语音识别与处理、多国语言翻译、图像识别、生物特征识到、智能控制等领域,可用作智能计算处理器、机器人、移动设备、也可用于构建大规模神经网络计算超级计算机。
综上所述,在本发明提供的针对固定范式的Winograd卷积神经网络处理器在运算过程中,通过矩阵转换模块内部为各等效运算设立的专用硬件计算单元,能够实现多余运算的过滤,乘法过滤,结合中间结果寄存器组完成针对简化的固定范式F(2*2,3*3)的等效Winograd卷积运算,能够快速进行卷积计算,同时节省了硬件资源。此外,通过并行设立多个等同运算模块,形成多个并行运行结构,结合激活、池化等模块共同完成基于Winograd卷积的神经网络数据处理任务。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (19)
1.一种面向固定输出范式Winograd卷积的运算单元,应用于神经网络的卷积运算,其特征在于,所述运算单元包括取反单元、累加单元和第一选通器,所述取反单元的输出端连接至所述累加单元的输入端,所述第一选通器用于控制将待计算的输入数据传递至所述取反单元的输入端或传递至所述累加单元的输入端,所述累加单元分时接收待计算的输入数据、所述取反单元的输出值或所述累加单元的输出值以利用加减运算实现Winograd卷积中的矩阵转换操作,其中,所述Winograd卷积的输出范式为F(2*2,3*3),2*2表示输出特征图的规模,3*3表示卷积核的规模。
2.根据权利要求1所述的运算单元,其特征在于,还包括第二选通器,所述第二选通器用于控制将所述累加单元的值进行输出或传递至所述累加单元的输入端。
3.根据权利要求1所述的运算单元,其特征在于,还包括第二选通器和移位单元,所述移位单元的输入端接收待计算的输入数据,所述移位单元的输出端连接至所述第一选通器的输入端,所述第二选通器用于控制将所述累加单元的值进行输出或传递至所述累加单元的输入端。
4.一种神经元矩阵转换装置,其特征在于,包括4*4个权利要求2所述的运算单元以执行Winograd卷积中针对神经元矩阵的转换操作V=[BTdB],其中,d表示神经元矩阵,B表示神经元矩阵d对应的转换矩阵,
5.一种权值矩阵转换装置,其特征在于,包括4*2个权利要求3所述的运算单元以执行Winograd卷积中针对权值矩阵的转换操作U=[GgGT],其中g表示权值矩阵,G表示权值矩阵g对应的转换矩阵,
6.一种针对点乘结果矩阵的矩阵转换装置,其特征在于,包括4*2个权利要求2所述的运算单元以执行Winograd卷积中针对点乘结果的矩阵转换操作F=ATMA,其中,M=[[GgGT]⊙[BTdB]],d表示神经元矩阵,g表示权值矩阵,G、B、A分别表示与权值矩阵g、神经元矩阵d和点乘结果矩阵M对应的转换矩阵,转换矩阵B、G、A分别为:
7.一种基于权利要求4所述装置的运算方法,其中,通过控制该装置的第一选通器采用以下步骤执行Winograd卷积中针对神经元矩阵的转换操作V=[BTdB]:
将神经元矩阵d的第一行减第三行的向量差值作为矩阵C1的第一行,其中C1=BTd;
将神经元矩阵d的第二行与第三行相加的结果作为C1的第二行;
将神经元矩阵d的第三行减第二行的向量差值作为C1的第三行;
将神经元矩阵d的第二行减第四行的向量差值作为C1的第四行;
将矩阵C1的第一列减第三列的向量差值作为矩阵V的第一列;
将矩阵C1的第二列与第三列相加的结果作为矩阵V的第二列;
将矩阵C1的第三列减第二列的向量差值作为矩阵V的第三列;
将矩阵C1的第二列减第四列的向量差值作为矩阵V的第四列。
8.一种基于权利要求5所述装置的运算方法,其中通过控制该装置的第一选通器采用以下步骤执行Winograd卷积中针对权值矩阵的转换操作U=[GgGT]:
将权值矩阵g的第一行向量作为矩阵C2的第一行,其中C2=GTg;
将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵C2的第二行;
将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵C2的第三行;
将权值矩阵g的第三行向量作为矩阵C2的第四行;
将矩阵C2的第一列向量作为矩阵U的第一列;
将矩阵C2的第一、二、三列右移一位之后再相加的向量结果作为矩阵U的第二列;
将矩阵C2的第一、二、三列右移一位之后再相加的向量结果作为矩阵U的第三列;
将矩阵C2的第三列向量作为矩阵U的第四列。
9.一种基于权利要求6所述装置的运算方法,其中,通过控制该装置的第一选通器采用以下步骤执行Winograd卷积中针对点乘结果的矩阵转换操作F=ATMA:
将矩阵M的第一、二、三行相加的向量结果作为矩阵C3的第一行,其中C3=ATM;
将矩阵M的第二、三、四行相加的向量结果作为矩阵C3的第二行;
将矩阵C3的第一、二、三列相加的向量结果作为矩阵F的第一列;
将矩阵C3的第二、三、四列相加的向量结果作为矩阵F的第二列。
10.一种面向固定输出范式Winograd卷积的运算方法,包括以下步骤:
步骤101:根据权利要求7所述的运算方法执行Winograd卷积中针对神经元矩阵的转换操作V=[BTdB];
步骤102:根据权利要求8所述的运算方法执行Winograd卷积中针对权值矩阵的转换操作U=[GgGT];
步骤103:根据权利要求9所述的运算方法执行Winograd卷积中针对点乘结果的矩阵转换操作F=ATMA。
11.一种面向固定输出范式Winograd卷积的神经网络处理器,其特征在于,包括:
神经元转换模块:包含权利要求4所述的装置,用于通过加减运算执行神经元矩阵的转换操作V=[BTdB];
权值转换模块:包含权利要求5所述的装置,用于通过加减和移位计算执行权值矩阵的转换操作U=[GgGT];
点乘模块:用于执行矩阵U和V的点乘操作,获得点乘结果矩阵M=U⊙V;
后矩阵转换模块:包含权利要求6所述的装置,用于通过加减运算执行针对点乘结果矩阵的转换操作F=ATMA;
其中,d表示神经元矩阵,g表示权值矩阵,G、B、A分别表示与权值矩阵g、神经元矩阵d和点乘结果矩阵M对应的转换矩阵,转换矩阵B、G、A分别为:
12.根据权利要求11所述的神经网络处理器,其特征在于,还包括存储器、数据缓存模块和控制模块,所述存储器用于存储已训练好的权值数据、神经元数据和控制指令,所述数据缓存模块用于暂存待处理的权值数据、神经元数据和控制指令,所述控制模块用于根据计算过程控制待处理的权值数据、神经元数据和中间计算结果在各模块之间的传递。
13.根据权利要求12所述的神经网络处理器,其特征在于,还包括:
累加模块:用于接收所述后矩阵转换模块输出的矩阵转换结果以获得相同卷积域内的输出神经元;
激活模块:用于通过非线性激活函数处理不同卷积域的输出神经元;
池化模块:用于对来自于激活模块的输入神经元进行池化操作。
14.根据权利要求11所述的神经网络处理器,其特征在于,所述神经元转换模块通过以下子步骤计算V=[BTdB]:
将神经元矩阵d的第一行减第三行的向量差值作为矩阵C1的第一行,其中C1=BTd;
将神经元矩阵d的第二行与第三行相加的结果作为C1的第二行;
将神经元矩阵d的第三行减第二行的向量差值作为C1的第三行;
将神经元矩阵d的第二行减第四行的向量差值作为C1的第四行;
将矩阵C1的第一列减第三列的向量差值作为矩阵V的第一列;
将矩阵C1的第二列与第三列相加的结果作为矩阵V的第二列;
将矩阵C1的第三列减第二列的向量差值作为矩阵V的第三列;
将矩阵C1的第二列减第四列的向量差值作为矩阵V的第四列。
15.根据权利要求11所述的神经网络处理器,其特征在于,所述权值转换模块通过执行以下子步骤计算U=[GgGT]:
将权值矩阵g的第一行向量元素作为矩阵C2的第一行对应元素,其中C2=GTg;
将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵C2的第二行;
将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵C2的第三行;
将权值矩阵g的第三行向量作为矩阵C2的第四行;
将矩阵C2的第一列向量作为矩阵U的第一列;
将矩阵C2的第一、二、三列元素右移一位之后再相加的向量结果作为矩阵U的第二列;
将矩阵C2的第一、二、三列元素右移一位之后再相加的向量结果作为矩阵U的第三列;
将矩阵C2的第三列向量作为矩阵U的第四列。
16.根据权利要求11所述的神经网络处理器,其特征在于,所述后矩阵转换模块通过执行以下子步骤计算矩阵F=ATMA:
将矩阵M的第一、二、三行相加的向量结果作为矩阵C3的第一行,其中C3=ATM;
将矩阵M的第二、三、四行相加的向量结果作为矩阵C3的第二行;
将矩阵C3的第一、二、三列相加的向量结果作为矩阵F的第一列;
将矩阵C3的第二、三、四列相加的向量结果作为矩阵F的第二列。
17.根据权利要求11至16任一项所述的神经网络处理器的处理方法,包括以下步骤:
步骤171:通过控制所述神经元转换模块中包含的神经元矩阵转换装置采用以下子步骤计算V=[BTdB]:
将神经元矩阵d的第一行减第三行的向量差值作为矩阵C1的第一行,其中C1=BTd;
将神经元矩阵d的第二行与第三行相加的结果作为C1的第二行;
将神经元矩阵d的第三行减第二行的向量差值作为C1的第三行;
将神经元矩阵d的第二行减第四行的向量差值作为C1的第四行;
将矩阵C1的第一列减第三列的向量差值作为矩阵V的第一列;
将矩阵C1的第二列与第三列相加的结果作为矩阵V的第二列;
将矩阵C1的第三列减第二列的向量差值作为矩阵V的第三列;
将矩阵C1的第二列减第四列的向量差值作为矩阵V的第四列;
步骤172:通过控制所述权值转换模块中包含的权值矩阵转换装置采用以下子步骤计算U=[GgGT]:
将权值矩阵g的第一行向量作为矩阵C2的第一行,其中C2=GTg;
将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵C2的第二行;
将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵C2的第三行;
将权值矩阵g的第三行向量作为矩阵C2的第四行;
将矩阵C2的第一列向量作为矩阵U的第一列;
将矩阵C2的第一、二、三列元素右移一位之后再相加的向量结果作为矩阵U的第二列;
将矩阵C2的第一、二、三列元素右移一位之后再相加的向量结果作为矩阵U的第三列;
将矩阵C2的第三列向量作为矩阵U的第四列;
步骤173:通过控制所述后矩阵转换模块中包含的针对点乘结果矩阵的矩阵转换装置采用以下子步骤计算矩阵F=ATMA,其中M=U⊙V:
将矩阵M的第一、二、三行相加的向量结果作为矩阵C3的第一行,其中C3=ATM;
将矩阵M的第二、三、四行相加的向量结果作为矩阵C3的第二行;
将矩阵C3的第一、二、三列相加的向量结果作为矩阵F的第一列;
将矩阵C3的第二、三、四列相加的向量结果作为矩阵F的第二列。
18.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现根据权利要求7至10或17任一项所述的方法的步骤。
19.一种计算机设备,包括存储器和处理器,在所述存储器上存储有能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求7至10或17任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811122004.1A CN109359730B (zh) | 2018-09-26 | 2018-09-26 | 面向固定输出范式Winograd卷积的神经网络处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811122004.1A CN109359730B (zh) | 2018-09-26 | 2018-09-26 | 面向固定输出范式Winograd卷积的神经网络处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109359730A true CN109359730A (zh) | 2019-02-19 |
CN109359730B CN109359730B (zh) | 2020-12-29 |
Family
ID=65347805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811122004.1A Active CN109359730B (zh) | 2018-09-26 | 2018-09-26 | 面向固定输出范式Winograd卷积的神经网络处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109359730B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097172A (zh) * | 2019-03-18 | 2019-08-06 | 中国科学院计算技术研究所 | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 |
CN110288086A (zh) * | 2019-06-13 | 2019-09-27 | 天津大学 | 一种基于Winograd的可配置卷积阵列加速器结构 |
CN110334803A (zh) * | 2019-07-18 | 2019-10-15 | 南京风兴科技有限公司 | 基于稀疏化Winograd算法的卷积计算方法和卷积神经网络加速器 |
CN112686365A (zh) * | 2019-10-18 | 2021-04-20 | 华为技术有限公司 | 运行神经网络模型的方法、装置和计算机设备 |
WO2021082722A1 (zh) * | 2019-11-01 | 2021-05-06 | 中科寒武纪科技股份有限公司 | 运算装置、方法及相关产品 |
CN113283587A (zh) * | 2021-05-28 | 2021-08-20 | 西安交通大学 | 一种Winograd卷积运算加速方法及加速模块 |
CN113835758A (zh) * | 2021-11-25 | 2021-12-24 | 之江实验室 | 基于向量指令加速计算的Winograd卷积实现方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260776A (zh) * | 2015-09-10 | 2016-01-20 | 华为技术有限公司 | 神经网络处理器和卷积神经网络处理器 |
US20170011288A1 (en) * | 2015-07-10 | 2017-01-12 | Samsung Electronics Co., Ltd. | Neural network processor |
CN106779068A (zh) * | 2016-12-05 | 2017-05-31 | 北京深鉴智能科技有限公司 | 调整人工神经网络的方法和装置 |
CN107169563A (zh) * | 2017-05-08 | 2017-09-15 | 中国科学院计算技术研究所 | 应用于二值权重卷积网络的处理系统及方法 |
CN107516131A (zh) * | 2017-07-04 | 2017-12-26 | 算丰科技(北京)有限公司 | 卷积计算的加速方法和装置、电子设备和存储介质 |
WO2018038546A1 (ko) * | 2016-08-24 | 2018-03-01 | 한양대학교 산학협력단 | 조건 반사 동작을 수행하는 신경 소자 및 이의 구동 방법 |
CN107844833A (zh) * | 2017-11-28 | 2018-03-27 | 郑州云海信息技术有限公司 | 一种卷积神经网络的数据处理方法、装置及介质 |
CN107844826A (zh) * | 2017-10-30 | 2018-03-27 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
CN108229654A (zh) * | 2016-12-14 | 2018-06-29 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
CN108564169A (zh) * | 2017-04-11 | 2018-09-21 | 上海兆芯集成电路有限公司 | 硬件处理单元、神经网络单元和计算机可用介质 |
-
2018
- 2018-09-26 CN CN201811122004.1A patent/CN109359730B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170011288A1 (en) * | 2015-07-10 | 2017-01-12 | Samsung Electronics Co., Ltd. | Neural network processor |
CN105260776A (zh) * | 2015-09-10 | 2016-01-20 | 华为技术有限公司 | 神经网络处理器和卷积神经网络处理器 |
WO2018038546A1 (ko) * | 2016-08-24 | 2018-03-01 | 한양대학교 산학협력단 | 조건 반사 동작을 수행하는 신경 소자 및 이의 구동 방법 |
CN106779068A (zh) * | 2016-12-05 | 2017-05-31 | 北京深鉴智能科技有限公司 | 调整人工神经网络的方法和装置 |
CN108229654A (zh) * | 2016-12-14 | 2018-06-29 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
CN108564169A (zh) * | 2017-04-11 | 2018-09-21 | 上海兆芯集成电路有限公司 | 硬件处理单元、神经网络单元和计算机可用介质 |
CN107169563A (zh) * | 2017-05-08 | 2017-09-15 | 中国科学院计算技术研究所 | 应用于二值权重卷积网络的处理系统及方法 |
CN107516131A (zh) * | 2017-07-04 | 2017-12-26 | 算丰科技(北京)有限公司 | 卷积计算的加速方法和装置、电子设备和存储介质 |
CN107844826A (zh) * | 2017-10-30 | 2018-03-27 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
CN107844833A (zh) * | 2017-11-28 | 2018-03-27 | 郑州云海信息技术有限公司 | 一种卷积神经网络的数据处理方法、装置及介质 |
Non-Patent Citations (2)
Title |
---|
WENYAN LU等: "FlexFlow: A Flexible Dataflow Accelerator Architecture for Convolutional Neural Networks", 《2017 IEEE INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE》 * |
李天悦等: "小点数Winograd傅里叶变换算法处理器设计", 《太赫兹科学与电子信息学报》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097172A (zh) * | 2019-03-18 | 2019-08-06 | 中国科学院计算技术研究所 | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 |
CN110288086B (zh) * | 2019-06-13 | 2023-07-21 | 天津大学 | 一种基于Winograd的可配置卷积阵列加速器结构 |
CN110288086A (zh) * | 2019-06-13 | 2019-09-27 | 天津大学 | 一种基于Winograd的可配置卷积阵列加速器结构 |
CN110334803A (zh) * | 2019-07-18 | 2019-10-15 | 南京风兴科技有限公司 | 基于稀疏化Winograd算法的卷积计算方法和卷积神经网络加速器 |
CN112686365A (zh) * | 2019-10-18 | 2021-04-20 | 华为技术有限公司 | 运行神经网络模型的方法、装置和计算机设备 |
WO2021073638A1 (zh) * | 2019-10-18 | 2021-04-22 | 华为技术有限公司 | 运行神经网络模型的方法、装置和计算机设备 |
CN112686365B (zh) * | 2019-10-18 | 2024-03-29 | 华为技术有限公司 | 运行神经网络模型的方法、装置和计算机设备 |
WO2021082722A1 (zh) * | 2019-11-01 | 2021-05-06 | 中科寒武纪科技股份有限公司 | 运算装置、方法及相关产品 |
CN112765539A (zh) * | 2019-11-01 | 2021-05-07 | 中科寒武纪科技股份有限公司 | 运算装置、方法及相关产品 |
CN112765539B (zh) * | 2019-11-01 | 2024-02-02 | 中科寒武纪科技股份有限公司 | 运算装置、方法及相关产品 |
CN113283587A (zh) * | 2021-05-28 | 2021-08-20 | 西安交通大学 | 一种Winograd卷积运算加速方法及加速模块 |
CN113283587B (zh) * | 2021-05-28 | 2023-09-19 | 西安交通大学 | 一种Winograd卷积运算加速方法及加速模块 |
CN113835758A (zh) * | 2021-11-25 | 2021-12-24 | 之江实验室 | 基于向量指令加速计算的Winograd卷积实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109359730B (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109325591A (zh) | 面向Winograd卷积的神经网络处理器 | |
CN109359730A (zh) | 面向固定输出范式Winograd卷积的神经网络处理器 | |
CN106529670B (zh) | 一种基于权重压缩的神经网络处理器、设计方法、芯片 | |
CN107862374B (zh) | 基于流水线的神经网络处理系统和处理方法 | |
Mullapudi et al. | Hydranets: Specialized dynamic architectures for efficient inference | |
CN107844826B (zh) | 神经网络处理单元及包含该处理单元的处理系统 | |
CN109190756A (zh) | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 | |
CN107169560B (zh) | 一种自适应可重构的深度卷积神经网络计算方法和装置 | |
CN107578098A (zh) | 基于脉动阵列的神经网络处理器 | |
CN109901878B (zh) | 一种类脑计算芯片及计算设备 | |
CN106447034A (zh) | 一种基于数据压缩的神经网络处理器、设计方法、芯片 | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
CN109978176B (zh) | 一种基于状态动态感知的多智能体合作学习方法 | |
CN107609641A (zh) | 稀疏神经网络架构及其实现方法 | |
CN106650924B (zh) | 一种基于时间维和空间维数据流压缩的处理器、设计方法 | |
CN106529668A (zh) | 加速深度神经网络算法的加速芯片的运算装置及方法 | |
CN108446761A (zh) | 一种神经网络加速器及数据处理方法 | |
CN108921288A (zh) | 神经网络激活处理装置和基于该装置的神经网络处理器 | |
CN108510065A (zh) | 应用于长短时记忆神经网络的计算装置和计算方法 | |
CN108898216A (zh) | 应用于神经网络的激活处理装置 | |
CN109472356A (zh) | 一种可重构神经网络算法的加速装置及方法 | |
CN107491811A (zh) | 用于加速神经网络处理器的方法和系统及神经网络处理器 | |
CN108665063A (zh) | 用于bnn硬件加速器的双向并行处理卷积加速系统 | |
CN107766292A (zh) | 一种神经网络处理方法及处理系统 | |
CN107203808A (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 |