面向Winograd卷积的神经网络处理器的制作方法

文档序号:16857143发布日期:2019-02-12 23:27阅读:221来源:国知局
面向Winograd卷积的神经网络处理器的制作方法

本发明涉及神经网络技术领域,尤其涉及一种面向winograd卷积的神经网络处理器。



背景技术:

近年来,深度学习技术得到了飞速发展,在解决高级抽象认知问题,例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐和智能机器人等领域得到了广泛应用,成为学术界和工业界的研究热点。

深度神经网络是人工智能领域具有最高发展水平的感知模型之一,其通过建立模型来模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来突破性进展。深度神经网络模型是一种运算模型,由大量节点通过网状互连结构构成,这些节点被称为神经元。每两个节点间连接强度都代表通过该连接信号在两个节点间的加权值,即权重,与人类神经网络中的记忆相对应。

然而,在现有技术中,神经网络存在神经网络处理速度慢,运行功耗大等问题。这是由于深度学习技术依赖于极大的计算量,例如,在训练阶段,需要在海量数据中通过反复迭代计算得到神经网络中的权重数据;在推理阶段,同样需要神经网络在极短的响应时间(通常为毫秒级)内完成对输入数据的运算处理,特别是当神经网络应用于实时系统时,例如,自动驾驶领域。神经网络中涉及的计算主要包括卷积操作、激活操作和池化操作等,其中,卷积过程占用了神经网络处理的大部分时间,该过程主要将输入的神经元或像素与相应卷积核的权重进行乘累加处理。

由于卷积运算的数据重复性操作任务极大,卷积运算量与卷积窗口移动次数成正比。因此,目前研究者们提出了基于winograd的卷积运算方式,该方式通过对输入特征图与权值进行特定的矩阵转换,能够完成等效的卷积运算任务并大量减少卷积运算过程的乘法运算,而由于实际应用中大多数神经网络处理器芯片的预测过程是采用固定神经网络模型,因而所采用的winograd卷积输出范式通常也是固定模式,针对固定输出范式的winograd卷积,其运算过程十分明确,存在较大的优化空间,如何设计针对固定输出范式的winograd卷积神经网络加速器成为一个研究重点。

因此,为了将神经网络推向更广泛应用,例如,智能穿戴、智能机器人、自动驾驶以及模式识别等领域,需要对现有技术进行改进,以设计针对固定输出范式的winograd卷积的神经网络处理器,从而实现数据处理的实时性、低功耗以及计算资源利用率的提升。



技术实现要素:

本发明的目的在于克服上述现有技术的缺陷,提供一种面向winograd卷积的神经网络处理器。

根据本发明的第一方面,提供了一种面向winograd卷积的神经网络处理器。该处理器包括:

神经元转换模块:用于执行神经元矩阵的转换操作v=[btdb];

权值转换模块:用于执行权值矩阵的转换操作u=[gggt];

点乘模块:用于执行矩阵u和v的点乘操作,获得点乘结果矩阵m=u⊙v;

累加模块,用于累加相同卷积域内的运算中间结果,包括点乘结果的累加,或相同卷积域内生成的后矩阵转换结果的累加。

后矩阵转换模块:用于执行针对点乘结果矩阵的转换操作f=atma;

其中,d表示神经元矩阵,g表示权值矩阵,g、b、a分别表示与权值矩阵g、神经元矩阵d和点乘结果矩阵m对应的转换矩阵。

在一个实施例中,所述神经元转换模块包括用于存储转换矩阵b相关参数的寄存器组;所述权值转换模块包括用于存储转换矩阵g相关参数的寄存器组;以及所述后矩阵转换模块包括用于存储转换矩阵a相关参数的寄存器组。

当权值采用离线转换策略时,无需设立存储转换矩阵g的相关参数的寄存器。

在一个实施例中,所述神经元转换模块还包括用于存储神经元矩阵转换操作中间结果的寄存器组,所述权值转换模块还包括用于存储权值矩阵转换操作中间结果的寄存器组,所述后矩阵转换模块还包括用于存储针对点乘结果矩阵的转换操作中间结果的寄存器组。累加模块内部还可包含用于存储累加中间结果的寄存器组。

在一个实施例中,所述winograd卷积的输出范式为f(2*2,3*3),2*2表示输出特征图的规模,3*3表示卷积核的规模,转换矩阵b、g、a分别为:

在一个实施例中,所述神经元矩阵转换模块和所述后矩阵转换模块分别包括至少一个第一运算单元,该第一运算单元包括第一选通器、取反单元、累加单元、第二选通器,其中:

所述第一选通器的输入端用于接收待计算的输入数据,根据对该输入数据执行加法运算或减法运算来控制所述第一选通器将该输入数据传递到所述累加单元的输入端或传递到所述取反单元的输入端;

所述取反单元的输出端连接至所述累加单元的输入端;

所述累加单元的输出端连接至所述第二选通器;

所述第二选通器基于接收到的输出控制信号来确定将其输出端数据传递至所述累加单元的输入端或进行输出。

在一个实施例中,通过控制所述第一运算单元的第一选通器,所述神经元转换模块按照以下步骤计算矩阵v=[btdb]:

将神经元矩阵d的第一行减第三行的向量差值作为矩阵c1的第一行,其中c1=btd;

将神经元矩阵d的第二行与第三行相加的结果作为c1的第二行;

将神经元矩阵d的第三行减第二行的向量差值作为c1的第三行;

将神经元矩阵d的第二行减第四行的向量差值作为c1的第四行;

将矩阵c1的第一列减第三列的向量差值作为矩阵v的第一列;

将矩阵c1的第二列与第三列相加的结果作为矩阵v的第二列;

将矩阵c1的第三列减第二列的向量差值作为矩阵v的第三列;

将矩阵c1的第二列减第四列的向量差值作为矩阵v的第四列。

在一个实施例中,通过控制所述第一运算单元的第一选通器,所述后矩阵转换模块按照以下步骤计算矩阵f=atma,其中m=u⊙v:

将矩阵m的第一、二、三行相加的向量结果作为矩阵c3的第一行,其中c3=atm;

将矩阵m的第二、三、四行相加的向量结果作为矩阵c3的第二行;

将矩阵c3的第一、二、三列相加的向量结果作为矩阵f的第一列;

将矩阵c3的第二、三、四列相加的向量结果作为矩阵f的第二列。

在一个实施例中,所述权值矩阵转换模块包括至少一个第二运算单元,该第二运算单元包括第一选通器、第二选通器、移位单元、取反单元和累加单元,其中:

所述移位单元用于对接收到的待计算的输入数据右移一位并且所述移位单元的输出端连接至所述第一选通器的输入端;

所述第一选通器基于待计算的输入数据执行加法运算或减法运算来控制其输出端数据传递至所述累加单元的输入端或所述取反单元的输入端;

所述第二选通器基于接收到的输出控制信号来确定将其输出端数据传递至所述累加单元的输入端或进行输出。

在一个实施例中,通过控制所述第二运算单元的第一选通器,所述权值转换模块按照以下步骤计算矩阵u=[gggt]:

将权值矩阵g的第一行向量作为矩阵c2的第一行,其中c2=gtg;

将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵c2的第二行;

将权值矩阵g的第一、二、三行元素右移一位之后再相加的向量结果作为矩阵c2的第三行;

将权值矩阵g的第三行向量作为矩阵c2的第四行;

将矩阵c2的第一列向量作为矩阵u的第一列;

将矩阵c2的第一、二、三列元素右移一位之后再相加的向量结果作为矩阵u的第二列;

将矩阵c2的第一、二、三列元素右移一位之后再相加的向量结果作为矩阵u的第三列;

将矩阵c2的第三列向量作为矩阵u的第四列。

在一个实施例中,所述神经元转换模块包括4*4个所述第一运算单元。

在一个实施例中,所述权值转换模块包括4*2个所述第二运算单元。

在一个实施例中,所述后矩阵转换模块包括4*2个所述第一运算单元。

需要说明的是,当转换参数为2的非整数指数倍时,其转换运算单元则由乘法器、加法器等通用组合电路组成。

与现有技术相比,本发明的优点在于:将winograd卷积的转换矩阵参数存于局部功能模块的寄存器组,减少了针对转换矩阵的数据传输,从而提高了计算效率并降低了运行功耗;通过分析固定范式的winograd卷积的转换矩阵参数特征,提供快速的数据调度方法,并且结合神经网络数据处理过程布局对应的专用计算模块,能够快速完成针对固定范式的winograd卷积运算任务。

附图说明

以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:

图1(a)示出了根据本发明一个实施例的神经元矩阵转换过程的示意图;

图1(b)示出了根据本发明一个实施例的神经元矩阵转换和点乘结果矩阵转换的等效计算单元的示意图;

图1(c)示出了根据本发明一个实施例的神经元矩阵转换等效运算模块的示意图;

图2(a)示出了根据本发明一个实施例的权值矩阵转换的等效计算单元的示意图;

图2(b)示出了根据本发明一个实施例的权值矩阵转换的等效运算模块的示意图。

图3示出了根据本发明一个实施例的针对点乘结果矩阵的等效运算模块的示意图;

图4示出了根据本发明一个实施例的神经网络处理器的示意图;

图5示出了根据本发明另一个实施例的神经网络处理器的示意图;

图6示出了根据本发明的一个实施例,输出范式为f(4*4,3*3)的神经网络处理器的示意图。

具体实施方式

为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

在神经网络的卷积计算中,基于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]]对应的转换矩阵,其中,a、g、b是与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,在本文中,将针对点乘结果的转换操作也称为后矩阵转换。

由上述过程可知,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相同,在此不再赘述。此外,本发明提供的固定输出范式的winograd卷积神经网络处理器,其点乘结果的后矩阵转换过程与其转换结果的累加过程可进行操作顺序互换,可有效减少后矩阵转换次数,其步骤为:

将相同卷积域内的点乘结果进行累加运算∑mi,其结果传输至后矩阵转换模块,其中i对应各输入特征图序列下标,设输入特征图数为n,则i∈{1、2、……、n};

执行针对点乘矩阵累加结果的矩阵转换运算f=atma。

在本发明的上述实施例中,选通器、移位单元、累加单元、取反单元等均可采用通用或专用器件实现。存储器和数据缓存模块可以是静态随机存储器(sram)、动态随机存储器(dram)、寄存器堆等常见存储介质,也可以是3d存储器件等新型的存储类型。

在另一个实施例中,本发明提供了用于其它输出范式的winograd卷积的神经网络处理器,例如,以范式为f(4*4,3*3)为例,即输出特征图规模为4*4,卷积核为3*3,其矩阵转换参数分别为:

对于该范式的winograd卷积,由于转换矩阵参数并不是仅有0、1或1/2构成,并且不具备稀疏性,因此,无法采用图1(b)和图2(a)示出的等效计算单元实现,针对这种情况,一般性地,本发明提供了可适用于任何输出范式的神经网络处理器,参见图6所示,该神经网络处理器包括存储器610、数据缓存模块620、神经元转换模块630、权值转换模块640、点乘模块650、后矩阵转换模块660、累加模块670,由于其它的控制模块、池化模块、激活模块等的功能与图4、图5相同,在此未示出并且不再赘述。

神经元转换模块630用于接收数据缓存模块620传递的神经元数据以执行针对输入神经元的矩阵转换运算v=[btdb],神经元转换模块630内部含有多个向量运算单元和寄存器组,神经元转换参数bt与b以寄存器组固定存储(本文称为转换矩阵寄存器组),矩阵转换的中间结果暂存于内部的寄存器组(本文称为中间矩阵寄存器组),神经元转换结果输出至点乘模块650。

权值转换模块640用于接收从数据缓存模块620传递的权值数据以执行针对输入权值的矩阵转换运算u=[gggt],权值转换模块640内部含有多个向量运算单元和寄存器组,权值转换参数g与gt以寄存器组(转换矩阵寄存器组)固定存储,计算的中间结果也暂存于内部寄存器组(中间矩阵寄存器组),权值转换结果输出至点乘模块650。

点乘模块650用于执行针对权值与神经元矩阵转换结果的点乘运算m=u⊙v。

后矩阵转换模块660执行针对点乘结果的矩阵转换运算,即f=atma,后矩阵转换模块660内部含有多个向量运算单元和寄存器组,后矩阵转换参数at与a以寄存器组固定存储(转换矩阵寄存器组),计算的中间结果暂存于内部寄存器组(中间矩阵寄存器组)。

累加模块670用于执行针对相同卷积域内,通过固定范式运算各输入特征图所得出的winograd卷积中间结果,或执行针对相同卷积域内点乘结果的累加运算,累加模块670内部具有寄存器组,用于存储各矩阵元素对应的累加中间结果;winograd卷积窗口内所有卷积输出值均进行了累加之后为该卷积域的最终输出神经元,最终累加结果将传输至后续的激活等功能单元;或者,先将先将相同卷积域内各特征图点乘结果在累加运算单元中执行矩阵进行累加运算,后输出至后矩阵模块执行后矩阵转换操作。此外,图6示意了对点乘结果的两种处理方式,即先进行矩阵转换再累加的后累加模式以及先进行累加再进行矩阵转换的前累加模式。

需要说明的是,上述神经元转换模块、权值转换模块和后矩阵转换模块中包含的向量运算单元可以采用专用或通用电路结构实现,只要能实现矩阵转换运算中的向量乘累加即可,并且为了提高计算效率,可利用多个运算单元并行执行向量乘累加运算。

结合图6,f(4*4,3*3)的winograd卷积运算,针对3*3尺寸的权值矩阵进行转换,其转换矩阵g尺寸为6*3,故其权值转换模块的内部运算单元为6x6,以快速生成6x6的权值转换后的矩阵;由于输出神经元矩阵为4*4,输入神经元矩阵的规模为6*6,神经元转换矩阵为6*6,故其神经元转换模块内部运算单元为6x6,以快速生成6x6的神经元转换后的矩阵;点乘矩阵的输入数据均为6*6矩阵,故其点乘模块的运算单元也为6x6;后矩阵转换模块的输入数据为6*6,而其转换矩阵为4*6,故后矩阵转换模块的运算单元为6x6,而其输出数据为4*4,因此,累加模块的累加运算单元规模为4x4;当采用对点乘结果进行先累加后执行转换模式时,则累加模块的累加运算单元规模为6x6。通过根据获得的矩阵转换结果选择适当数量的运算单元,能够提高矩阵转换运算的并行度,以及各个模块执行运算和数据传递的流畅性,例如,权值转换模块的内部运算单元为6x6,并且神经元转换模块内部运算单元为6x6时,能够使权值转换模块和神经元转换模块同时获得结果,并同时将结果输入到点乘模块进行运算,避免了点乘模块的等待时间。

仍结合图6,本发明提出的针对固定范式的winograd卷积神经网络处理器的处理过程包括:

步骤s610,神经元转换模块执行针对输入神经元矩阵的转换运算v=[btdb],同时权值转换模块执行针对权值矩阵的转换运算u=[gggt]。

具体地,从存储器载入待处理数据至数据缓存模块,包括权值与输入神经元;根据模块内部存储的矩阵转换参数与输入数据执行针对权值矩阵与神经元矩阵的乘法运算btd与gg,得到中间矩阵c1=btd以及c2=gg,并中间结果存储于权值转换模块与神经元转换模块内部相应的寄存器组中;将中间矩阵c1、c2与模块内部存储的转换矩阵参数传输至各运算单元执行矩阵乘法操作v=c1b与u=c2gt,获得权值矩阵转换结果u和神经元矩阵转换结果v,将结果u和v传递至点乘模块。

步骤s620,点乘模块执行针对矩阵v与矩阵u的点乘运算m=u⊙v。

具体地,点乘模块接收权值转换结果u和神经元转换结果v,执行针对v与u的点乘操作m=u⊙v,其结果m输出至后矩阵转换模块。

步骤s630,后矩阵转换模块执行针对矩阵m的转换运算f=atma。

具体地,后矩阵转换模块接收到矩阵m后,与其内部的转换矩阵参数at执行矩阵乘法操作c3=atm,将该中间结果矩阵暂存于内部寄存器组;将c3与内部存储的转换矩阵参数a执行矩阵乘法f=c3a操作,其结果输出至累加模块。

步骤s640,累加模块执行针对相同卷积域内矩阵转换结果的累加运算。

具体地,累加模块执行针对相同卷积域内,通过固定范式运算各输入特征图所得出的winograd卷积中间结果,将中间结果暂存于内部的寄存器组,在winograd卷积窗口内所有卷积输出值均进行累加之后作为该卷积域的最终输出神经元,并将最终累加结果将传输至后续的激活模块等。

需要说明的是,当针对点乘结果矩阵采用先累加后转换的模式时,其步骤如下:

首先,针对相同卷积域内的不同特征图的点乘运算结果mi执行累加运算m=∑mi;

具体地,将点乘运算单元的点乘结果传递至累加运算单元,各元素对应相加,得到相同卷积域内点乘矩阵的累加结果,其结果将导入至后矩阵转换单元。

然后,针对点乘运算结果执行后矩阵转换操作f=atma,输出卷积域的输出神经元矩阵。

具体地,将累加运算模块的累加结果m传递至后矩阵模块,先执行针对c3=atm的矩阵乘法运算,其结果暂存并回传至后矩阵模块,其数据进行重排列,执行针对f=c3a的矩阵乘法运算,输出神经元矩阵f。

需要说明的是,当权值采用离线转换策略时,该处理器无需权值转换模块。

在本发明实施例中,通过将转换矩阵参数存于局部寄存器组,供多个矩阵运算单元共享,能够减少针对转换矩阵的数据传输,从而提高计算效率并降低功耗。

本发明提供的神经网络处理器可以是针对神经网络计算而设计的一个微处理器,也可以仅是微处理器的一部分,该神经网络处理器可应用于文字处理、语音识别与处理、多国语言翻译、图像识别、生物特征识到、智能控制等领域,可用作智能计算处理器、机器人、移动设备、也可用于构建大规模神经网络计算超级计算机。

综上所述,本发明提供的针对固定输出范式的winograd卷积神经网络处理器,将转换矩阵参数存于局部功能模块的寄存器组中,以供多个运算单元共享,能够减少针对转换矩阵的数据传输,从而提高了计算效率并降低了运行功耗。此外,对于矩阵转换参数具有一定规律性的固定范式,通过矩阵转换模块内部为各等效运算设立的专用硬件计算单元,能够实现多余运算的过滤,乘法过滤,结合中间结果寄存器组完成针对简化的固定范式f(2*2,3*3)的等效winograd卷积运算,能够快速进行卷积计算,同时节省了硬件资源,并且,通过并行设立多个等同运算模块,形成多个并行运行结构,结合激活、池化等模块共同完成基于winograd卷积的神经网络数据处理任务。

需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1