一种优化稀疏性矩阵运算的神经网络方法和电路与流程

文档序号:15638998发布日期:2018-10-12 21:50阅读:202来源:国知局

本发明涉及神经网络芯片电路领域,特别涉及一种优化稀疏性矩阵运算的神经网络方法和电路。



背景技术:

随着人工智能产业的兴起,深度学习专用芯片也在快速的发展。当前深度学习芯片的最大问题之一就是由于深度学习神经网络的复杂性,造成运算电路庞大、芯片成本高、功耗高。如果能从深度学习的特性出发,进一步的降低深度学习人工智能芯片的成本和功耗将是非常有意义的。

由于人脑处理信息的一大特点是稀疏性,很多研究表明同一时刻只有大约1%的脑神经元处于被激活状态。从信号方面来看,即神经元同时只对输入信号的少部分选择性响应,大量信号被刻意的屏蔽了,这样处理的方式可以提高学习的精度,更好更快地提取稀疏特征。因此深度学习神经网络激活函数的一个重要发展方向就是使数据经过激活函数后更加向稀疏化靠拢。神经网络激活函数的特点就是稀疏化,对应到数学上可以表示为在激活后的矩阵中有很多0元素。然而,目前的硬件神经网络运算技术都是对整个矩阵进行运算,这将导致芯片对电路面积和功耗都消耗较大,没有考虑到神经网络稀疏性的发展趋势。



技术实现要素:

为此,需要提供一种优化稀疏性矩阵运算的神经网络的技术方案,用以解决神经网络芯片运算过程中运算电路庞大、消耗硬件资源多、功耗高等问题。

为实现上述目的,发明人提供了一种优化稀疏性矩阵运算的神经网络电路,所述电路包括主存单元、特征数据读取单元、特征数据缓存单元、非零数据规整单元、卷积核读取单元、卷积核缓存单元、乘加器阵列单元、累加单元、激活函数运算单元、反向回写单元、门控时钟确定单元、门控时钟控制单元;

所述主存单元分别与特征数据读取单元、卷积核读取单元连接,所述特征数据读取单元与特征数据缓存单元连接,所述特征数据缓存单元与非零数据规整单元连接,所述卷积核读取单元与卷积核缓存单元连接,所述乘加器阵列单元分别与非零数据规整单元、卷积核缓存单元、门控时钟控制单元、累加单元连接;所述非零数据规整单元与门控时钟确定单元连接,所述门控时钟确定单元与门控时钟控制单元连接;所述卷积核缓存单元与激活函数运算单元连接,所述激活函数运算单元与反向回写单元连接,所述反向回写单元与主存单元连接;

所述乘加器阵列单元包括多个时钟组,每一时钟组连接有一个或多个乘加器,所述门控时钟控制单元与乘加器阵列单元中的各个时钟组均连接;

所述主存单元用于存储第一特征矩阵数据以及各个神经网络子层的卷积核数据;

所述特征数据读取单元用于从主存单元读取第一特征矩阵数据,并将其存储于特征数据缓存单元中;所述卷积核读取单元用于从主存单元读取当前神经网络子层对应的卷积核数据,并将其存储于卷积核缓存单元中;

所述非零数据规整单元用于统计第一特征矩阵数据中非零数据的个数,并将统计得到的第一特征矩阵数据中非零数据的个数传输给门控时钟确定单元;以及记录各个非零数据在第一特征矩阵数据中的序号,并将记录的各个非零数据的序号传输给累加单元;

所述门控时钟确定单元用于根据第一特征矩阵数据中非零数据的个数确定进行卷积运算所需的乘加器个数;

所述门控时钟控制单元用于根据门控时钟确定单元确定的乘加器个数、以及乘加器阵列单元中各个时钟组连接的乘加器个数,控制乘加器阵列单元中时钟组开启的数量,以使得开启的所有时钟组内与之连接的乘加器数量满足门控时钟确定单元确定的乘加器个数;

所述乘加器阵列单元用于获取卷积核缓存单元中的卷积核数据以及特征数据缓存单元中的第一特征矩阵数据进行卷积运算,得到卷积特征数据,并将卷积特征数据传输至累加单元;

所述累加单元用于根据卷积特征数据以及各个非零数据在第一特征矩阵数据中的序号,对卷积特征数据中的各个非零数据进行累加运算,得到累加运算结果,并将累加运算结果传输至激活函数运算单元;

所述激活函数运算单元用于对累加运算结果进行激活函数运算,得到第二特征矩阵数据;

所述反向回写单元用于将第二特征矩阵数据回写至主存单元中;当前神经网络子层的第二特征矩阵数据为下一层神经网络子层对应的第一特征矩阵数据。

进一步地,所述电路还包括池化运算单元,所述池化运算单元分别与激活函数运算单元、反向回写单元连接;

所述池化运算单元用于对激活函数运算的运算结果进行池化运算,得到第二特征矩阵数据。

进一步地,所述时钟组包括第一时钟组和第二时钟组,与第一时钟组连接的乘加器数量与第二时钟组连接的乘加器数量相同;

当第一特征矩阵数据中非零数据的个数小于第一预设数值时,门控时钟控制单元用于控制第一时钟组开启并控制第二时钟组关闭;

当第一特征矩阵数据中非零数据的个数大于第一预设数值且小于第二预设数值时,门控时钟控制单元控制第一时钟组和第二时钟组均开启。

进一步地,所述累加单元包括数据填充控制单元、累加运算单元和累加缓存单元;

所述数据填充控制单元用于接收非零数据的序号、卷积特征数据以及各个卷积特征数据对应的块标识信息,所述累加运算单元用于根据所述块标识信息,对图像逐块进行块累加运算,所述块累加运算包括:对卷积特征数据中的非零数据进行累加运算,并将累加结果写入该非零数据在累加缓存单元对应的逻辑地址中;

所述数据填充控制单元还用于在接收到块运算完成运算后,停止对非零数据的累加运算,并将累加缓存单元中除了非零数据对应的逻辑地址之外的其他逻辑地址的存储值填充为0。

进一步地,所述非零数据规整单元包括比较器、计数器和存储器,所述比较器分别与计数器、存储器连接,所述存储器用于存储零值;

所述比较器用于将第二特征矩阵数据中的各个特征数据与零值进行比较,当比较器判定当前特征数据的数值不为零值时,则计算器值加1;

当所有第二特征矩阵数据中的特征数据全部比较完成后,非零数据规整单元将当前计数器的值传输给门控时钟确定单元。

发明人还提供了一种优化稀疏性矩阵运算的神经网络方法,所述方法应用于优化稀疏性矩阵运算的神经网络电路,所述电路包括主存单元、特征数据读取单元、特征数据缓存单元、非零数据规整单元、卷积核读取单元、卷积核缓存单元、乘加器阵列单元、累加单元、激活函数运算单元、反向回写单元、门控时钟确定单元、门控时钟控制单元;

所述主存单元分别与特征数据读取单元、卷积核读取单元连接,所述特征数据读取单元与特征数据缓存单元连接,所述特征数据缓存单元与非零数据规整单元连接,所述卷积核读取单元与卷积核缓存单元连接,所述乘加器阵列单元分别与非零数据规整单元、卷积核缓存单元、门控时钟控制单元、累加单元连接;所述非零数据规整单元与门控时钟确定单元连接,所述门控时钟确定单元与门控时钟控制单元连接;所述卷积核缓存单元与激活函数运算单元连接,所述激活函数运算单元与反向回写单元连接,所述反向回写单元与主存单元连接;

所述乘加器阵列单元包括多个时钟组,每一时钟组连接有一个或多个乘加器,所述门控时钟控制单元与乘加器阵列单元中的各个时钟组均连接;

所述方法包括以下步骤:

主存单元存储第一特征矩阵数据以及各个神经网络子层的卷积核数据;

特征数据读取单元从主存单元读取第一特征矩阵数据,并将其存储于特征数据缓存单元中;卷积核读取单元从主存单元读取当前神经网络子层对应的卷积核数据,并将其存储于卷积核缓存单元中;

非零数据规整单元统计第一特征矩阵数据中非零数据的个数,并将统计得到的第一特征矩阵数据中非零数据的个数传输给门控时钟确定单元;以及记录各个非零数据在第一特征矩阵数据中的序号,并将记录的各个非零数据的序号传输给累加单元;

门控时钟确定单元根据第一特征矩阵数据中非零数据的个数确定进行卷积运算所需的乘加器个数;

门控时钟控制单元根据门控时钟确定单元确定的乘加器个数、以及乘加器阵列单元中各个时钟组连接的乘加器个数,控制乘加器阵列单元中时钟组开启的数量,以使得开启的所有时钟组内与之连接的乘加器数量满足门控时钟确定单元确定的乘加器个数;

乘加器阵列单元获取卷积核缓存单元中的卷积核数据以及特征数据缓存单元中的第一特征矩阵数据进行卷积运算,得到卷积特征数据,并将卷积特征数据传输至累加单元;

累加单元根据卷积特征数据以及各个非零数据在第一特征矩阵数据中的序号,对卷积特征数据中的各个非零数据进行累加运算,得到累加运算结果,并将累加运算结果传输至激活函数运算单元;

激活函数运算单元对累加运算结果进行激活函数运算,得到第二特征矩阵数据;

反向回写单元将第二特征矩阵数据回写至主存单元中;当前神经网络子层的第二特征矩阵数据为下一层神经网络子层对应的第一特征矩阵数据。

进一步地,所述电路还包括池化运算单元,所述池化运算单元分别与激活函数运算单元、反向回写单元连接;所述方法包括:

池化运算单元对激活函数运算的运算结果进行池化运算,得到第二特征矩阵数据。

进一步地,所述时钟组包括第一时钟组和第二时钟组,与第一时钟组连接的乘加器数量与第二时钟组连接的乘加器数量相同;

当第一特征矩阵数据中非零数据的个数小于第一预设数值时,门控时钟控制单元控制第一时钟组开启并控制第二时钟组关闭;

当第一特征矩阵数据中非零数据的个数大于第一预设数值且小于第二预设数值时,门控时钟控制单元控制第一时钟组和第二时钟组均开启。

进一步地,所述累加单元包括数据填充控制单元、累加运算单元和累加缓存单元;所述方法包括:

数据填充控制单元接收非零数据的序号、卷积特征数据以及各个卷积特征数据对应的块标识信息,累加运算单元根据所述块标识信息,对图像逐块进行块累加运算,所述块累加运算包括:对卷积特征数据中的非零数据进行累加运算,并将累加结果写入该非零数据在累加缓存单元对应的逻辑地址中;

数据填充控制单元在接收到块运算完成运算后,停止对非零数据的累加运算,并将累加缓存单元中除了非零数据对应的逻辑地址之外的其他逻辑地址的存储值填充为0。

进一步地,其特征在于:所述非零数据规整单元包括比较器、计数器和存储器,所述比较器分别与计数器、存储器连接,所述存储器用于存储零值;所述方法包括:

比较器将第二特征矩阵数据中的各个特征数据与零值进行比较,当比较器判定当前特征数据的数值不为零值时,则计算器值加1;

当所有第二特征矩阵数据中的特征数据全部比较完成后,非零数据规整单元将当前计数器的值传输给门控时钟确定单元。

区别于现有技术,上述技术方案所述的优化稀疏性矩阵运算的神经网络方法和电路,所述方法通过非零数据规整单元来统计从主存单元中获取的第一特征矩阵数据的非零数据个数,并根据非零数据个数与卷积运算所需的乘加器个数的对应关系,采用门控时钟控制电路控制对应的时钟组开启,而后进行乘加运算得到卷积特征数据。在之后的累加运算过程中,累加单元只针对卷积特征数据中的非零数据进行累加,并在累加完成后将累加运算数据传输给激活函数运算单元进行激活运算。相较于针对整个卷积特征数据进行累加运算的方式,本发明能够有效降低神经网络电路运算过程中的运算量和功耗。

附图说明

图1为本发明一实施方式涉及的优化稀疏性矩阵运算的神经网络电路的示意图;

图2为本发明一实施方式涉及的非零数据规整单元的示意图;

图3本发明一实施方式涉及的乘加器阵列单元的示意图;

图4本发明一实施方式涉及的累加单元的示意图;

图5为本发明一实施方式涉及的优化稀疏性矩阵运算的神经网络方法的流程图;

附图标记说明:

101、主存单元;

102、特征数据读取单元;

103、特征数据缓存单元;

104、非零数据规整单元;114、非零数据判断单元;124、非零数据序号存储单元;134、规整缓存单元;

105、卷积核读取单元;

106、卷积核缓存单元;

107、乘加器阵列单元;

108、累加单元;118、数据填充控制单元;128、累加运算单元;138、累加缓存单元;

109、激活函数运算单元;

110、反向回写单元;

111、门控时钟确定单元;

112、门控时钟控制单元;

113、池化运算单元;

114、反向回写单元。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1,为本发明一实施方式涉及的优化稀疏性矩阵运算的神经网络电路的示意图。

所述电路包括主存单元101、特征数据读取单元102、特征数据缓存单元103、非零数据规整单元104、卷积核读取单元105、卷积核缓存单元106、乘加器阵列单元107、累加单元108、激活函数运算单元109、反向回写单元110、门控时钟确定单元111、门控时钟控制单元112;

所述主存单元101分别与特征数据读取单元102、卷积核读取单元105连接,所述特征数据读取单元102与特征数据缓存单元103连接,所述特征数据缓存单元103与非零数据规整单元104连接,所述卷积核读取单元105与卷积核缓存单元106连接,所述乘加器阵列单元107分别与非零数据规整单元104、卷积核缓存单元106、门控时钟控制单元112、累加单元108连接;所述非零数据规整单元104与门控时钟确定单元111连接,所述门控时钟确定单元111与门控时钟控制单元112连接;所述卷积核缓存单元106与激活函数运算单元109连接,所述激活函数运算单元109与反向回写单元110连接,所述反向回写单元110与主存单元101连接;

所述乘加器阵列单元107包括多个时钟组,每一时钟组连接有一个或多个乘加器,所述门控时钟控制单元112与乘加器阵列单元107中的各个时钟组均连接;

所述主存单元101用于存储第一特征矩阵数据以及各个神经网络子层的卷积核数据。所述第一特征矩阵数据可以是原始的图像数据,也可以是由反向回写单元回写至主存单元的经过某一次池化运算后的特征数据。

所述特征数据读取单元102用于从主存单元读取第一特征矩阵数据,并将其存储于特征数据缓存单元103中;所述卷积核读取单元105用于从主存单元读取当前神经网络子层对应的卷积核数据,并将其存储于卷积核缓存单元106中。卷积运算是神经网络运算过程中的重要一项,简单的说,其是通过对应的卷积核模板(即卷积核数据)对特征数据进行卷积运算,因而进行卷积运算所需的输入参数为卷积核数据和第一特征矩阵数据(即待进行卷积运算的数据),为了保证卷积运算数据获取的同步性,先将这两者分别存储于卷积核缓存单元和特征数据缓存单元中。

所述非零数据规整单元104用于统计第一特征矩阵数据中非零数据的个数,并将统计得到的第一特征矩阵数据中非零数据的个数传输给门控时钟确定单元111;以及记录各个非零数据在第一特征矩阵数据中的序号,并将记录的各个非零数据的序号传输给累加单元108。

如图2所示,非零数据规整单元104包括非零数据判断单元114、非零数据序号存储单元124、规整缓存单元134。非零数据规整单元104负责对第一特征数据矩阵中的数据进行重新排列整理,具体做法如下:先将第一特征矩阵数据按照从左到右、从上到下的顺序(在其他实施例中,也可以根据其他顺序规则进行排列,具体根据实际需要设定)排列进入非零数据判断单元114;而后非零数据判断单元114对矩阵数据进行一一判断,判断各个数据是否为零,如果为零则不做任何操作,如果为非零则将数据按顺序存到规整缓存单元134中,并将该非零数据在特征数据流中的序号以及统计非零数据的总个数送往非零数据序号存储单元124。

当矩阵数据中的所有数据均判断(即判断是否为0)完毕后,规整缓存单元存储了矩阵数据中所有重新排列后的非零数据,非零数据序号存储单元存储了各个非零数据对应的序号,每一序号对应一个规整缓存单元中存储的非零数据。而后非零数据规整单元104会将存储的非零数据的序号送往乘加器阵列单元107和累加单元108,将规整缓存单元134中的非零数据送往乘加器阵列单元107,将非零数据个数送往门控时钟确定单元111。

具体地,非零数据判断单元114包括比较器、计数器和存储器,所述比较器分别与计数器、存储器连接,所述存储器用于存储零值。所述比较器用于将第二特征矩阵数据中的特征数据逐个与零值进行比较,当比较器判定当前特征数据的数值不为零值时,则计算器值加1;当所有第二特征矩阵数据中的特征数据全部比较完成后,非零数据规整单元将当前计数器的值传输给门控时钟确定单元。

所述门控时钟确定单元111用于根据第一特征矩阵数据中非零数据的个数确定进行卷积运算所需的乘加器个数;所述门控时钟控制单元112用于根据门控时钟确定单元确定的乘加器个数、以及乘加器阵列单元中各个时钟组连接的乘加器个数,控制乘加器阵列单元中时钟组开启的数量,以使得开启的所有时钟组内与之连接的乘加器数量满足门控时钟确定单元确定的乘加器个数。

在本实施方式中,所述时钟组包括第一时钟组和第二时钟组,与第一时钟组连接的乘加器数量与第二时钟组连接的乘加器数量相同。当第一特征矩阵数据中非零数据的个数小于第一预设数值时,门控时钟控制单元用于控制第一时钟组开启并控制第二时钟组关闭;当第一特征矩阵数据中非零数据的个数大于第一预设数值且小于第二预设数值时,门控时钟控制单元控制第一时钟组和第二时钟组均开启。

每个时钟组对应为一个或多个乘加器提供时钟,时钟组开启,则与之相连接的乘加器对应开启工作。如果非零数据的个数越多,说明卷积运算过程中需要进行的乘加操作越多,所需的乘加器数量越多,门控时钟控制单元需要开启的时钟组数量也就越多。简言之,开启的乘加器数量与非零数据的个数呈分段函数关系,两者之间的衔接是通过控制与乘加器连接的时钟组是否开启来实现。

如图3所示,门控时时钟确定单元根据非零数据个数和乘加阵列的每个门控时钟(即时钟组)控制的乘加器组中乘加器的个数,来决定打开几个乘加器组的时钟。例如图4中有4个乘加器组,每个乘加器组对应一个时钟组,每一时钟组内连接有4个乘加器,那么该乘加器阵列单元支持同时运行4x4个数据进行乘加运算。因而非零数据个数与时钟组之间的关系可以被配置为:

当非零数据个数为13~16个时,全部乘加器组时钟打开,即时钟组1、2、3、4开启;

当非零数据个数为9~12个时,开启3个乘加器组(即开启12个乘加器),即时钟组1、2、3开启,时钟组4关闭;

当非零数据个数为5~8个时,开启2个乘加器组(即开启8个乘加器),即时钟组1、2开启,时钟组3、4关闭;

当非零数据个数为1~4个时,开启1个乘加器组(即开启4个乘加器),即时钟组1开启,时钟组2、3、4关闭。

这样,门控时钟控制单元根据非零数据个数决定开启时钟组的数量,相较于乘加器全部集中控制的方式,可以达到节省运算功耗的目的。

所述乘加器阵列单元用于获取卷积核缓存单元中的卷积核数据以及特征数据缓存单元中的第一特征矩阵数据进行卷积运算,得到卷积特征数据,并将卷积特征数据传输至累加单元。卷积运算过程为神经网络运算领域常用的算法,相关原理可以参考以下链接:

https://www.cnblogs.com/nsnow/p/4562308.html

https://blog.csdn.net/nicajonh/article/details/53142449?locationnum=2&fps=1

所述累加单元108用于根据卷积特征数据以及各个非零数据在第一特征矩阵数据中的序号,对卷积特征数据中的各个非零数据进行累加运算,得到累加运算结果,并将累加运算结果传输至激活函数运算单元109。

如图4所示,所述累加单元108包括数据填充控制单元118、累加运算单元128和累加缓存单元138。

所述数据填充控制单元118用于接收非零数据的序号、卷积特征数据以及各个卷积特征数据对应的块标识信息,所述累加运算单元128用于根据所述块标识信息,对图像逐块进行块累加运算,所述块累加运算包括:对卷积特征数据中的非零数据进行累加运算,并将累加结果写入该非零数据在累加缓存单元对应的逻辑地址中。

所述数据填充控制单元118用于在接收到块运算完成运算后,停止对非零数据的累加运算,并将累加缓存单元中除了非零数据对应的逻辑地址之外的其他逻辑地址的存储值填充为0。

在神经网络算法时,对于一幅图像的卷积运算是基于块进行处理,块大小取决于所采用的卷积核模板大小,如3x3矩阵、5x5矩阵等。在运算过程中,除了将特征矩阵数据与卷积核数据(即卷积核模板)进行乘加运算之外,还需要对乘加之后得到的卷积特征数据(也是一个矩阵)不断地与自身进行累加运算,而后再将累加运算结果传给激活函数运算单元进行激活运算。

例如块为3x3矩阵,数据的序号为1到9,非零数据序号为3和8,累加运算单元将接收的序号为3的非零数据与累加缓存单元中地址为3(即序号3对应逻辑地址)已存储好的数据进行相加,然后再将相加得到的值覆盖存储到地址为3的存储位置。累加方式可以用公式“a=a+b”表示,等式左边a表示累加得到的值,等式右边a表示已存储好的数据值,b表示非零数据的值。同理,累加单元还将接收的序号为8的非零数据与累加缓存单元中地址为8(即序号8对应逻辑地址)已存储好的数据进行相加,然后再将相加得到的值覆盖存储到地址为8的存储位置。

当收到块运算完成标识信号后,数据填充控制单元将其他剩余地址(除了3和8之外累加缓存单元的其他7个地址)填充为零,得到最终的累加运算结果数据,而后将累加运算结果数据送往激活函数运算单元进行激活运算。

所述激活函数运算单元109用于对累加运算结果进行激活函数运算,得到第二特征矩阵数据。。激活运算,也是神经网络运算领域一个常见的运算,简单的说,其是通过一个激活阈值对卷积运算后的卷积特征数据进行激活,从而得到一个大多数位置数值为0的矩阵来尝试表达特征数据,关于激活函数运算的相关原理可以参考以下链接:

https://blog.csdn.net/huahuazhu/article/details/74188288

https://blog.csdn.net/shuzfan/article/details/71125457

在本实施方式做,所述电路还包括池化运算单元113,所述池化运算单元113分别与激活函数运算单元109、反向回写单元110连接。所述池化运算单元113用于对激活函数运算的运算结果进行池化运算,得到第二特征矩阵数据。池化运算,也是神经网络运算领域一个常见的运算,关于池化运算的相关原理可以参考以下链接:

https://blog.csdn.net/qq_18343569/article/details/49823091

https://blog.csdn.net/qq_16234613/article/details/79520929

所述反向回写单元110用于将第二特征矩阵数据回写至主存单元101中;当前神经网络子层的第二特征矩阵数据为下一层神经网络子层对应的第一特征矩阵数据。

如图5所示,一种优化稀疏性矩阵运算的神经网络方法,所述方法应用于优化稀疏性矩阵运算的神经网络电路,所述电路包括主存单元、特征数据读取单元、特征数据缓存单元、非零数据规整单元、卷积核读取单元、卷积核缓存单元、乘加器阵列单元、累加单元、激活函数运算单元、反向回写单元、门控时钟确定单元、门控时钟控制单元;

所述主存单元分别与特征数据读取单元、卷积核读取单元连接,所述特征数据读取单元与特征数据缓存单元连接,所述特征数据缓存单元与非零数据规整单元连接,所述卷积核读取单元与卷积核缓存单元连接,所述乘加器阵列单元分别与非零数据规整单元、卷积核缓存单元、门控时钟控制单元、累加单元连接;所述非零数据规整单元与门控时钟确定单元连接,所述门控时钟确定单元与门控时钟控制单元连接;所述卷积核缓存单元与激活函数运算单元连接,所述激活函数运算单元与反向回写单元连接,所述反向回写单元与主存单元连接;

所述乘加器阵列单元包括多个时钟组,每一时钟组连接有一个或多个乘加器,所述门控时钟控制单元与乘加器阵列单元中的各个时钟组均连接;

所述方法包括以下步骤:

首先进入步骤s501主存单元存储第一特征矩阵数据以及各个神经网络子层的卷积核数据;

而后进入步骤s502特征数据读取单元从主存单元读取第一特征矩阵数据,并将其存储于特征数据缓存单元中;卷积核读取单元从主存单元读取当前神经网络子层对应的卷积核数据,并将其存储于卷积核缓存单元中;

而后进入步骤s503非零数据规整单元统计第一特征矩阵数据中非零数据的个数,并将统计得到的第一特征矩阵数据中非零数据的个数传输给门控时钟确定单元;以及记录各个非零数据在第一特征矩阵数据中的序号,并将记录的各个非零数据的序号传输给累加单元;

而后进入步骤s504门控时钟确定单元根据第一特征矩阵数据中非零数据的个数确定进行卷积运算所需的乘加器个数;

而后进入步骤s505门控时钟控制单元根据门控时钟确定单元确定的乘加器个数、以及乘加器阵列单元中各个时钟组连接的乘加器个数,控制乘加器阵列单元中时钟组开启的数量,以使得开启的所有时钟组内与之连接的乘加器数量满足门控时钟确定单元确定的乘加器个数;

而后进入步骤s506乘加器阵列单元获取卷积核缓存单元中的卷积核数据以及特征数据缓存单元中的第一特征矩阵数据进行卷积运算,得到卷积特征数据,并将卷积特征数据传输至累加单元;

而后进入步骤s507累加单元根据卷积特征数据以及各个非零数据在第一特征矩阵数据中的序号,对卷积特征数据中的各个非零数据进行累加运算,得到累加运算结果,并将累加运算结果传输至激活函数运算单元;

而后进入步骤s508激活函数运算单元对累加运算结果进行激活函数运算,得到第二特征矩阵数据;

而后进入步骤s509反向回写单元将第二特征矩阵数据回写至主存单元中;当前神经网络子层的第二特征矩阵数据为下一层神经网络子层对应的第一特征矩阵数据。

在某些实施例中,所述电路还包括池化运算单元,所述池化运算单元分别与激活函数运算单元、反向回写单元连接;所述方法包括:池化运算单元对激活函数运算的运算结果进行池化运算,得到第二特征矩阵数据。

在某些实施例中,所述时钟组包括第一时钟组和第二时钟组,与第一时钟组连接的乘加器数量与第二时钟组连接的乘加器数量相同;当第一特征矩阵数据中非零数据的个数小于第一预设数值时,门控时钟控制单元控制第一时钟组开启并控制第二时钟组关闭;当第一特征矩阵数据中非零数据的个数大于第一预设数值且小于第二预设数值时,门控时钟控制单元控制第一时钟组和第二时钟组均开启。

在某些实施例中,所述累加单元包括数据填充控制单元、累加运算单元和累加缓存单元;所述方法包括:

数据填充控制单元接收非零数据的序号、卷积特征数据以及各个卷积特征数据对应的块标识信息,累加运算单元根据所述块标识信息,对图像逐块进行块累加运算,所述块累加运算包括:对卷积特征数据中的非零数据进行累加运算,并将累加结果写入该非零数据在累加缓存单元对应的逻辑地址中;

数据填充控制单元在接收到块运算完成运算后,停止对非零数据的累加运算,并将累加缓存单元中除了非零数据对应的逻辑地址之外的其他逻辑地址的存储值填充为0。

在某些实施例中,所述非零数据规整单元包括比较器、计数器和存储器,所述比较器分别与计数器、存储器连接,所述存储器用于存储零值;所述方法包括:比较器将第二特征矩阵数据中的各个特征数据与零值进行比较,当比较器判定当前特征数据的数值不为零值时,则计算器值加1;当所有第二特征矩阵数据中的特征数据全部比较完成后,非零数据规整单元将当前计数器的值传输给门控时钟确定单元。

上述技术方案所述的优化稀疏性矩阵运算的神经网络方法和电路,所述方法通过非零数据规整单元来统计从主存单元中获取的第一特征矩阵数据的非零数据个数,并根据非零数据个数与卷积运算所需的乘加器个数的对应关系,采用门控时钟控制电路控制对应的时钟组开启,而后进行乘加运算得到卷积特征数据。在之后的累加运算过程中,累加单元只针对卷积特征数据中的非零数据进行累加,并在累加完成后将累加运算数据传输给激活函数运算单元进行激活运算。相较于针对整个卷积特征数据进行累加运算的方式,本发明能够有效降低神经网络电路运算过程中的运算量和功耗。

需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

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