CN107609641B - 稀疏神经网络架构及其实现方法 - Google Patents
稀疏神经网络架构及其实现方法 Download PDFInfo
- Publication number
- CN107609641B CN107609641B CN201710761177.7A CN201710761177A CN107609641B CN 107609641 B CN107609641 B CN 107609641B CN 201710761177 A CN201710761177 A CN 201710761177A CN 107609641 B CN107609641 B CN 107609641B
- Authority
- CN
- China
- Prior art keywords
- input
- register
- buffer
- sparse
- reconfigurable
- 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
Abstract
一种稀疏神经网络架构及其实现方法,该稀疏神经网络架构包括:外存控制器,权重缓存器,输入缓存器,输出缓存器,输入缓存控制器及计算阵列;计算阵列包括多个计算单元,计算阵列中的每行可重构计算单元共享输入缓存器中的部分输入,计算每列可重构计算单元共享权重缓存器中的部分权重;输入缓存控制器对输入缓存器的输入进行稀疏运算,去除输入中的零值;外存控制器存储计算阵列处理前及处理后的数据。本发明可以减少甚至消除输入为零时的无效计算,使各计算单元之间的计算量达到均衡,提高了硬件资源利用率同时保证了最低计算时延。
Description
技术领域
本发明涉及神经网络深度学习技术,特别是关于一种稀疏神经网络架构及其实现方法。
背景技术
近些年应用于深度学习的优秀的硬件架构也不断出现,例如,英伟达以其大规模的并行GPU和专用GPU编程框架CUDA主导着当前的深度学习市场。越来越多的公司开发出了用于深度学习的硬件加速器,比如谷歌的张量处理单元(TPU/Tensor Processing Unit)、英特尔的Xeon Phi Knight's Landing,以及高通的神经网络处理器(NNU/Neural NetworkProcessor)。Teradeep公司现在开始使用FPGA(现场可编程门阵列),因为它们的能效比GPU的高出10倍。FPGA更灵活、可扩展、并且效能功耗比更高。这些硬件结构针对密集型的深度神经网络具有很好的表现,但对于稀疏型的网络训练效果不理想,原因是造成大量的硬件资源以及能耗的浪费。随后,韩松等人针对压缩后的网络提出了EIE(Efficient InferenceEngine on Compressed Deep Neural Network)和ESE(Efficient Speech RecognitionEngine with Sparse LSTM on FPGA)硬件架构。其中,EIE需要对网络参数进行提前处理并用新的格式(CSC)进行存储;ESE架构是对原本密集型的网络进行自定义的压缩后再进行训练。这两个架构对网络的训练速度有很大提升,但主要考虑的都是网络参数的稀疏性,这样的优化对于全连接层组成的网络具有很大的提升,但对于CNN这类网络,卷积层中主要集中了90%的计算量,但参数量只占到10%,我们更多需要从网络的输入的稀疏度出现来降低计算量。卷积层的输入的稀疏度来源于很多方面,例如:
第一,卷积第一层的输入是原始图像,原始图像中很多的像素点可能为0。图像的位数通常是8位,即可以表示256种颜色(0-255)。简单的可以认为一张单通道8位彩色图共有三个通道,即R、G、B。比如彩色图像中的一个像素点的RGB值为(234,103,67)。其中255代表纯白,0代表纯黑。想象极端情况,如果整张图都是黑色的,那么这个图的所有像素点都是0,而在一般情况下,图像中也会存在很多0值。
第二,由于激活函数的应用会带来很大的稀疏度。激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题。激活函数最早起源于生物学,神经生物学认为一个神经元细胞要么处于激活状态,要么是抑制状态,人工神经网络目的之一就是要模拟这一机制,所以就按照这个机理设计了二值化激活过程,也就是说超过某一个阈值就取值1,代表激活,低于某个阈值就取值0,代表抑制。如果画出函数的图像,这种0-1二值化激活其实就是自动控制领域最著名的阶跃函数。加入这样的激活函数,一开始是为了增强模型的非线性,如果不经过非线性激活,那么无论神经网络加多少层永远都是线性组合,而加入了非线性激活函数后,已经可以证明,可以以任意精度逼近非线性函数,最妙的是,还可以不需要知道这个非线性函数的具体形式。这个0-1激活函数很符合仿生学的要求,但是数学性质不好,因为不连续所以不可导,在断点处导数无穷大,不利于后续的数学分析,比如一般的误差反向传播神经网络都需要反向求导过程,因此人们又加入了很多函数,这些函数在函数图像上很接近阶跃函数,而且具备极好的数学性质,便于理论推导,于是就成了0-1激活函数的替代品。
常用的激活函数有以下几种:
Sigmoid函数
Sigmoid函数的表达式是s(x)=1/(1+e-x),函数图像见图1A。它输入实数值并将其“挤压”到0到1范围内。更具体地说,很大的负数变成0,很大的正数变成1。在历史上,sigmoid函数非常常用,这是因为它对于神经元的激活频率有良好的解释:从完全不激活(0)到在求和后的最大频率处的完全饱和的激活(1)。
Tanh函数
Tanh的函数表达式是tanh(x)=2s(2x)-1,函数图像见图1B。它将实数值压缩到[-1,1]之间。和sigmoid神经元一样,它也存在饱和问题,但是和sigmoid神经元不同的是,它的输出是零中心的。因此,在实际操作中,tanh非线性函数比sigmoid非线性函数更受欢迎。实际上tanh神经元就是一个简单放大的sigmoid神经元。
ReLU函数
ReLU的函数表达式为f(x)=max(0,x),函数图像见图1C相较于sigmoid和tanh函数,ReLU对于随机梯度下降的收敛有巨大的加速作用。sigmoid和tanh神经元含有指数运算等耗费计算资源的操作,而ReLU可以简单地通过对一个矩阵进行阈值计算得到。
从上面的几种常见的激活函数的函数图像可以看出,某一层的卷积层经过卷积运算后的输出数据,即使不稀疏,经过激活层后也会有很大的稀疏性。而激活层的输出是作为下一个卷积层或者全连接层的输入,因此中间层的输入数据存在很大的稀疏性。
第三,目前很热门的神经网络的一些压缩算法通过剪枝量化等降低计算量也会带来网络的稀疏性。
发明内容
本发明实施例提供了一种稀疏神经网络架构及其实现方法,以减少甚至消除输入为零时的无效计算,使各计算单元之间的计算量达到均衡,提高硬件资源利用率。
为了实现上述目的,本发明实施例提供了一种稀疏神经网络架构,包括:外存控制器,权重缓存器,输入缓存器,输出缓存器,输入缓存控制器及一计算阵列;所述外存控制器与所述权重缓存器,输入缓存器及输出缓存器分别连接;所述计算阵列与输入缓存器,权重缓存器及输出缓存器分别连接;
所述计算阵列包括多个可重构计算单元,所述计算阵列中的每行可重构计算单元共享所述输入缓存器中的部分输入,所述计算阵列中的每列可重构计算单元共享所述权重缓存器中的部分权重;
所述输入缓存控制器用于对所述输入缓存器的输入进行稀疏运算,去除输入中的零值;
所述外存控制器用于所述计算阵列处理前及处理后的数据。
一实施例中,所述输入缓存控制器包括:多个子控制模块,所述输入缓存器的部分输入经过其中的一子控制模块进行去零值操作后进入一行可重构计算单元。
一实施例中,所述子控制模块包括:第一寄存器、选择器、稀疏处理模块及第二寄存器;所述第一寄存器连接所述输入缓存器及所述选择器,所述稀疏处理模块连接所述选择器及第二寄存器;
所述第一寄存器用于存储所述输入缓存器的部分输入;
所述选择器用于判断输入为零值或非零值;
所述稀疏处理模块用于判断所述零值及非零值的个数,并在可重构计算单元计算当前输入队列的最后一个输入的时钟周期内将下一队列的输入读入所述第一寄存器;
所述第二寄存器存储经过所述稀疏处理模块进行稀疏判断后的输入,作为可重构计算单元计算的输入队列。
一实施例中,所述可重构计算单元包括:第三寄存器、乘法器及加法器;
所述乘法器及加法器用于对所述输入进行卷积运算;
第三寄存器,用于存储所述输入对应的权重。
为了实现上述目的,本发明实施例提供了一种稀疏神经网络架构实现方法,包括:
所述输入缓存控制器接收输入缓存器输入;
所述输入缓存控制器对所述输入进行稀疏运算,去除输入中的零值;
所述计算阵列中的每行可重构计算单元接收稀疏运算后的部分输入,每列可重构计算单元接收权重缓存器的部分权重,并分别对部分输入及部分权重进行处理,生成处理结果;
所述计算阵列将所述处理结果输出至输出缓存器。
所述输入缓存控制器包括:多个子控制模块,所述子控制模块包括:第一寄存器、选择器、稀疏处理模块及第二寄存器;所述输入缓存控制器对所述输入进行稀疏运算,去除输入中的零值,包括:
所述第一寄存器接收所述输入缓存器的部分输入并存储;
所述选择器判断输入为零值或非零值;
所述稀疏处理模块判断所述零值及非零值的个数,并在可重构计算单元计算当前输入队列的最后一个输入的时钟周期内将下一队列的输入读入所述第一寄存器;
所述第二寄存器存储经过所述稀疏处理模块进行稀疏判断后的输入,作为可重构计算单元计算的输入队列。
一实施例中,还包括:根据列可重构计算单元的每一可重构计算单元计算的不同的权重调整不同的输入。
本发明可以减少甚至消除输入为零时的无效计算,使各计算单元之间的计算量达到均衡,提高了硬件资源利用率同时保证了最低计算时延。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A为现有的Sigmoid函数图像示意图;
图1B为现有的Tanh函数图像示意图;
图1C为现有的ReLU函数图像示意图;
图2为本发明实施例的稀疏神经网络架构示意图;
图3为本发明实施例的输入缓存控制器结构示意图;
图4A为本发明实施例稀疏前的处理时间示意图;
图4B为本发明实施例稀疏后的处理时间示意图;
图5为本发明实施例的稀疏神经网络架构实现方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明实施例的稀疏神经网络架构示意图,如图2所示,稀疏神经网络架构包括:外存控制器,权重缓存器,输入缓存器,输出缓存器,输入缓存控制器及计算阵列。
外存控制器与权重缓存器,输入缓存器及输出缓存器分别连接。计算阵列与输入缓存器,权重缓存器及输出缓存器分别连接。
输入缓存器用于存储输入,作为计算阵列进行处理的数据。权重缓存器用于存储权重数据,输入计算阵列进行处理。输出缓存器用于存储计算阵列处理输入及权重之后得到的数据。
计算阵列包括多个可重构计算单元(Processing Element PE),计算阵列中的每行可重构计算单元共享输入缓存器中的部分输入,例如,计算阵列中的可重构计算单元分为n行,输入缓存器的输入分为n部分的输入,每行可重构计算单元处理一次或多次处理n部分中每一部分的输入。
一实施例中,各部分的输入的数量可以相等,也可以不相等。
计算阵列中的每列可重构计算单元共享权重缓存器中的部分权重,例如计算阵列中的可重构计算单元分为i列,权重缓存器的权重阵列分为i部分(如图2所示的kernel1-kernal i),每列可重构计算单元处理一次或多次处理i部分中每一部分的权重。
一实施例中,每一部分的权重的大小可以相同,也可以不同。
输入缓存器的输入首先进入输入缓存控制器,输入缓存控制器用于对输入缓存器的输入进行稀疏运算,去除输入中的零值,然后输入至计算阵列的每行可重构计算单元分别进行处理。
外存控制器连接计算阵列,可以存储处理前的数据,还可以接收计算阵列对输入及权重处理后的数据。
一实施例中,如图3所示,输入缓存控制器包括:多个子控制模块301,控制模块的个数可以等于计算阵列的可重构计算单元的行数。输入缓存器的部分输入(In1、In2、In3或In4)经过其中的一子控制模块301进行稀疏运算(去零值操作)后进入一行可重构计算单元。
具体实施时,子控制模块301包括:第一寄存器302、选择器303、稀疏处理模块S及第二寄存器305。第一寄存器302连接输入缓存器及选择器303,稀疏处理模块S连接选择器303及第二寄存器305。子控制模块301的上述各部分组成部分的主要功能如下:
第一寄存器302用于存储输入缓存器的部分输入(In1、In2、In3及In4的其中之一)。
选择器用于判断部分输入为零值或非零值。
稀疏处理模块S用于判断零值及非零值的个数,并在可重构计算单元计算当前输入队列的最后一个输入的时钟周期内将下一队列的输入读入第一寄存器302。
第二寄存器存储经过稀疏处理模块S进行稀疏判断后的输入,作为可重构计算单元计算的输入队列。
下面结合具体的例子说明子控制模块301的上述各部分组成部分的具体实施过程。
子控制模块301进行稀疏运算的主要目标是去除输入中的零值,从而不使这样的无效计算(零值计算)浪费时钟周期。图2所示的稀疏神经网络架构中对稀疏性计算起决定性作用就是输入缓存控制器,如图3所示。本实施例子,假设计算阵列中每一列含4个PE,因此每一层卷积层的输入被等分为4部分输入(In1、In2、In3及In4),输入缓存控制器中含四个相同的子控制模块301同时处理四部分输入。每个子控制模块301中含两个4*16位的寄存器(第一寄存器302用来存储从输入缓存区中读进来的四个16位输入,第二寄存器305用来存储经过稀疏判断后的四个数的自定义格式作为一行PE的输入队列)、四个选择器和一个基于状态机的稀疏处理模块S。为了不使PE产生空闲,需要在PE计算输入队列(存储在第二寄存器305)中的最后一个输入值的时钟周期内将后四位的输入读进第一寄存器302,然后经稀疏处理模块S进行稀疏度判断后,将有效输入填入第二寄存器305队列。例如,某个时钟上升沿到来时,输入缓存控制器中的第一个子控制模块301从输入缓存器的In1部分读入4个输入0000_0000_0000_0011、0000_0000_0000_0000、0000_0000_0000_0000、0000_0000_0000_0101。选择器303的输入为真时(即输入非零值)输出为“1”,否则输出“0”,因此四个选择器的输出为“1001”作为稀疏处理模块S的输入,稀疏处理模块S通过输入判断非零值以及非零值之前的零值个数,然后将零值的个数用两位表示,与16位非零值结合成18位存入右边的寄存器,即 同时稀疏处理模块S输出控制信号给输入缓存器,使In1在下个时钟上升沿不再读入数据,而在下下个时钟沿读入数据。当四个数都为零时,即稀疏处理模块S的输入为“0000”,这时对应的PE不可避免地需要浪费一个时钟周期来等待下一轮四个数中的非零值重新填充输入队列。其余三个稀疏处理模块S的工作原理与该稀疏处理模块S都是一致的。本实施例的子控制模块301都是可重构的,对于稀疏度更大的输入,将寄存器(第一寄存器302及第二寄存器305)的存储的输入的个数设为4可能无法消除所有的无效计算,因此本发明需要更大的寄存器使得一个时钟周期判断更多的输入数据。
本发明实施例的可重构计算单元包括:第三寄存器、乘法器及加法器。乘法器及加法器用于对所述输入进行卷积运算;第三寄存器用于存储输入对应的权重。本实施例中,第三寄存器大小为4个权值所需的存储大小。当输入缓存控制器将加载新的输入进来,稀疏处理模块S得到输入的信息后,不仅要完成输入队列的更新,同时给权重控制器发送控制信号,将未判断前的4个输入对应的4个权重加载到PE中(可以记做w0、w1、w2和w3)。本实施例定义的非零值的格式中,前两位是表示该非零值前面的零值个数,这两位的作用有两个:一是准确的从4个权重中选择对应的值与非零输入进行计算,上面例子中的前两位是00,那么将会选择w0+0与其计算,而的前两位是10,那么将取w0+2与其计算;二是为了将这个位置信号计算在下个时钟传递给下一列的PE。
一实施例中,输入缓存控制器还可以根据列可重构计算单元的每一可重构计算单元计算的不同的权重调整不同的输入。通过该方法,可以使各计算单元之间的计算量达到均衡,提高了硬件资源利用率同时保证了最低计算时延。
在本实施例的稀疏神经网络架构中,同一列的4个PE并行计算四个相同大小的输入,在不使用优化的稀疏运算方案时,4个PE的计算时间是一致的。但运用上述的稀疏计算方法后,每个PE的计算时间是由输入部分的稀疏度决定的,输入中的零值数量越多(即稀疏度越小,稀疏度是非零值所占的比例),PE的计算时间越短,因此,同一列PE的总计算时间是由计算时间最长的PE决定。如图4A所示,阵列中的某一列由4个PE组成,记作PE1、PE2、PE3和PE4。在计算某一卷积层时,该列PE共负责四个kernal的计算,记做kernal1、kernal2、kernal3和kernal4。该卷积层输入的四个部分的稀疏度关系In1<In2<In3<In4,即所需的计算时间逐渐加长。其余列的输入都是一致的,因此这一卷积层的计算时间就等于该列PE的计算时间,可以从图4A中看到,总计算时间由计算量最大的PE4决定。在PE4计算完成前,PE1-PE3都分别闲置了一段时间。为了解决这个问题,本发明提出了一种稀疏调度方法,如图4B所示,不再给一个PE分配固定的输入,而是按顺序输入。比如在计算kernal1时PE1输入In1,计算kernal2时PE1输入In2,计算kernal3时PE1输入In3,计算kernal4时PE1输入In4,其余PE也是同样的依次计算不同输入。经过这样的改进,4个PE的计算量是均衡的,并且这层网络总的计算时间由4倍的In4的计算时延变成了In1+In2+In3+In4的计算时延。
综上,利用本发明实施例的稀疏神经网络架构,可以减少甚至消除输入为零时的无效计算,使各计算单元之间的计算量达到均衡,提高了硬件资源利用率同时保证了最低计算时延。
本发明实施例提供了一种稀疏神经网络架构实现方法,该稀疏神经网络架构实现方法可以应用于上述稀疏神经网络架构,本实施例与上述的稀疏神经网络架构重复之处不再赘述。如图5所示,该稀疏神经网络架构实现方法包括:
S501:所述输入缓存控制器接收输入缓存器输入;
S502:所述输入缓存控制器对所述输入进行稀疏运算,去除输入中的零值;
S503:所述计算阵列中的每行可重构计算单元接收稀疏运算后的部分输入,每列可重构计算单元接收权重缓存器的部分权重,并分别对部分输入及部分权重进行处理,生成处理结果;
S504:所述计算阵列将所述处理结果输出至输出缓存器。
一实施例中,如图2所示,所述输入缓存控制器包括:多个子控制模块301,所述子控制模块包括:第一寄存器302、选择器303、稀疏处理模块S及第二寄存器305。输入缓存控制器对输入进行稀疏运算,去除输入中的零值,包括如下步骤:
所述第一寄存器接收所述输入缓存器的部分输入并存储;
所述选择器判断输入为零值或非零值;
所述稀疏处理模块判断所述零值及非零值的个数,并在可重构计算单元计算当前输入队列的最后一个输入的时钟周期内将下一队列的输入读入所述第一寄存器;
所述第二寄存器存储经过所述稀疏处理模块进行稀疏判断后的输入,作为可重构计算单元计算的输入队列。
一实施例中,该稀疏神经网络架构实现方法还包括:根据列可重构计算单元的每一可重构计算单元计算的不同的权重调整不同的输入,以均衡列可重构计算单元中各可重构计算单元的计算量,下面具体距离说明。
在本实施例的稀疏神经网络架构中,同一列的4个PE并行计算四个相同大小的输入,在不使用优化的稀疏运算方案时,4个PE的计算时间是一致的。但运用上述的稀疏计算方法后,每个PE的计算时间是由输入部分的稀疏度决定的,输入中的零值数量越多(即稀疏度越小,稀疏度是非零值所占的比例),PE的计算时间越短,因此,同一列PE的总计算时间是由计算时间最长的PE决定。如图4A所示,阵列中的某一列由4个PE组成,记作PE1、PE2、PE3和PE4。在计算某一卷积层时,该列PE共负责四个kernal的计算,记做kernal1、kernal2、kernal3和kernal4。该层输入的四个部分的稀疏度关系In1<In2<In3<In4,即所需的计算时间逐渐加长。其余列的输入都是一致的,因此这一卷积层的计算时间就等于该列PE的计算时间,可以从图4A中看到,总计算时间由计算量最大的PE4决定。在PE4计算完成前,PE1-PE3都分别闲置了一段时间。为了解决这个问题,本发明提出了一种稀疏调度方法,如图4B所示,不再给一个PE分配固定的输入,而是按顺序输入。比如,在计算kernal1时PE1输入In1,计算kernal2时PE1输入In2,计算kernal3时PE1输入In3,计算kernal4时PE1输入In4,其余PE也是同样的依次计算不同输入,顺序可以根据计算量调整。经过这样的改进,4个PE的计算量是均衡的,并且这层网络总的计算时间由4倍的In4的计算时延变成了In1+In2+In3+In4的计算时延。
综上,利用本发明实施例的稀疏神经网络架构,可以减少甚至消除输入为零时的无效计算,使各计算单元之间的计算量达到均衡,提高了硬件资源利用率同时保证了最低计算时延。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (4)
1.一种稀疏神经网络架构,其特征在于,包括:外存控制器,权重缓存器,输入缓存器,输出缓存器,输入缓存控制器及一计算阵列;所述外存控制器与所述权重缓存器,输入缓存器及输出缓存器分别连接;所述计算阵列与输入缓存器,权重缓存器及输出缓存器分别连接;
所述计算阵列包括多个可重构计算单元,所述计算阵列中的每行可重构计算单元共享所述输入缓存器中的部分输入,所述计算阵列中的每列可重构计算单元共享所述权重缓存器中的部分权重;
所述输入缓存控制器用于对所述输入缓存器的输入进行稀疏运算,去除输入中的零值;
所述外存控制器用于存储所述计算阵列处理前及处理后的数据;
其中,所述输入缓存控制器包括:多个子控制模块,所述输入缓存器的部分输入经过其中的一子控制模块进行去零值操作后进入一行可重构计算单元;所述子控制模块包括:第一寄存器、选择器、稀疏处理模块及第二寄存器;所述第一寄存器连接所述输入缓存器及所述选择器,所述稀疏处理模块连接所述选择器及第二寄存器;
所述第一寄存器用于存储所述输入缓存器的部分输入;
所述选择器用于判断输入为零值或非零值;
所述稀疏处理模块用于判断所述零值及非零值的个数,并在可重构计算单元计算当前输入队列的最后一个输入的时钟周期内将下一队列的输入读入所述第一寄存器;
所述第二寄存器存储经过所述稀疏处理模块进行稀疏判断后的输入,作为可重构计算单元计算的输入队列;
在可重构计算单元计算存储在第二寄存器的输入队列中的最后一个输入值的时钟周期内将后四位的输入读进第一寄存器,然后经稀疏处理模块进行稀疏度判断后,将有效输入填入第二寄存器队列。
2.根据权利要求1所述的稀疏神经网络架构,其特征在于,所述可重构计算单元包括:第三寄存器、乘法器及加法器;
所述乘法器及加法器用于对所述输入进行卷积运算;
第三寄存器,用于存储所述输入对应的权重。
3.一种稀疏神经网络架构实现方法,其特征在于,包括:
输入缓存控制器接收输入缓存器的输入;
所述输入缓存控制器对所述输入进行稀疏运算,去除输入中的零值;
计算阵列中的每行可重构计算单元接收稀疏运算后的部分输入,每列可重构计算单元接收权重缓存器的部分权重,并分别对部分输入及部分权重进行处理,生成处理结果;
所述计算阵列将所述处理结果输出至输出缓存器;
所述输入缓存控制器包括:多个子控制模块,所述子控制模块包括:第一寄存器、选择器、稀疏处理模块及第二寄存器;所述输入缓存控制器对所述输入进行稀疏运算,去除输入中的零值,包括:
所述第一寄存器接收所述输入缓存器的部分输入并存储;
所述选择器判断输入为零值或非零值;
所述稀疏处理模块判断所述零值及非零值的个数,并在可重构计算单元计算当前输入队列的最后一个输入的时钟周期内将下一队列的输入读入所述第一寄存器;
所述第二寄存器存储经过所述稀疏处理模块进行稀疏判断后的输入,作为可重构计算单元计算的输入队列;
在可重构计算单元计算存储在第二寄存器的输入队列中的最后一个输入值的时钟周期内将后四位的输入读进第一寄存器,然后经稀疏处理模块进行稀疏度判断后,将有效输入填入第二寄存器队列。
4.根据权利要求3所述的稀疏神经网络架构实现方法,其特征在于,还包括:根据列可重构计算单元的每一可重构计算单元计算的不同的权重调整不同的输入,以均衡列可重构计算单元中各可重构计算单元的计算量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710761177.7A CN107609641B (zh) | 2017-08-30 | 2017-08-30 | 稀疏神经网络架构及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710761177.7A CN107609641B (zh) | 2017-08-30 | 2017-08-30 | 稀疏神经网络架构及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107609641A CN107609641A (zh) | 2018-01-19 |
CN107609641B true CN107609641B (zh) | 2020-07-03 |
Family
ID=61056405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710761177.7A Active CN107609641B (zh) | 2017-08-30 | 2017-08-30 | 稀疏神经网络架构及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107609641B (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110197274B (zh) * | 2018-02-27 | 2020-08-25 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN110197264B (zh) * | 2018-02-27 | 2020-08-04 | 上海寒武纪信息科技有限公司 | 神经网络处理器板卡及相关产品 |
CN111767998A (zh) * | 2018-02-27 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN110197267B (zh) * | 2018-02-27 | 2020-08-04 | 上海寒武纪信息科技有限公司 | 神经网络处理器板卡及相关产品 |
CN110197275B (zh) * | 2018-02-27 | 2020-08-04 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN110197273B (zh) * | 2018-02-27 | 2020-08-25 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN111767996B (zh) * | 2018-02-27 | 2024-03-05 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN111767997B (zh) * | 2018-02-27 | 2023-08-29 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN110197270B (zh) * | 2018-02-27 | 2020-10-30 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN110197263B (zh) * | 2018-02-27 | 2020-10-09 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN110197271B (zh) * | 2018-02-27 | 2020-10-27 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN108446761B (zh) * | 2018-03-23 | 2021-07-20 | 中国科学院计算技术研究所 | 一种神经网络加速器及数据处理方法 |
CN108376285A (zh) * | 2018-03-23 | 2018-08-07 | 中国科学院计算技术研究所 | 一种面向多变异体lstm神经网络加速器及数据处理方法 |
CN108510063B (zh) * | 2018-04-08 | 2020-03-20 | 清华大学 | 一种应用于卷积神经网络的加速方法和加速器 |
CN110147872B (zh) * | 2018-05-18 | 2020-07-17 | 中科寒武纪科技股份有限公司 | 编码存储装置及方法、处理器及训练方法 |
CN110610227B (zh) * | 2018-06-15 | 2022-07-26 | 赛灵思电子科技(北京)有限公司 | 人工神经网络调整方法及神经网络计算平台 |
CN109711540B (zh) * | 2018-12-20 | 2021-09-21 | 中科寒武纪科技股份有限公司 | 一种计算装置及板卡 |
CN109740739B (zh) * | 2018-12-29 | 2020-04-24 | 中科寒武纪科技股份有限公司 | 神经网络计算装置、神经网络计算方法及相关产品 |
CN109523019A (zh) * | 2018-12-29 | 2019-03-26 | 百度在线网络技术(北京)有限公司 | 加速器、基于fpga的加速系统及控制方法、cnn网络系统 |
CN109740748B (zh) * | 2019-01-08 | 2021-01-08 | 西安邮电大学 | 一种基于fpga的卷积神经网络加速器 |
CN109857744B (zh) * | 2019-02-13 | 2020-03-20 | 上海燧原智能科技有限公司 | 稀疏张量计算方法、装置、设备及存储介质 |
CN110659119B (zh) * | 2019-09-12 | 2022-08-02 | 浪潮电子信息产业股份有限公司 | 一种图片处理方法、装置及系统 |
CN111026700B (zh) * | 2019-11-21 | 2022-02-01 | 清华大学 | 实现加速的存内计算架构及其加速方法 |
CN111062472B (zh) * | 2019-12-11 | 2023-05-12 | 浙江大学 | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 |
CN112100118B (zh) * | 2020-08-05 | 2021-09-10 | 中科驭数(北京)科技有限公司 | 神经网络计算方法、装置和存储介质 |
CN113326927B (zh) * | 2021-08-03 | 2022-04-22 | 北京壁仞科技开发有限公司 | 优化神经网络的运算的方法、装置和计算机设备 |
CN115269205B (zh) * | 2022-09-27 | 2022-12-27 | 之江实验室 | 一种面向神经网络计算的内存优化方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681628A (zh) * | 2016-01-05 | 2016-06-15 | 西安交通大学 | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 |
CN105874477A (zh) * | 2014-01-23 | 2016-08-17 | 高通股份有限公司 | 配置稀疏神经网络 |
CN106447034A (zh) * | 2016-10-27 | 2017-02-22 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN106650924A (zh) * | 2016-10-27 | 2017-05-10 | 中国科学院计算技术研究所 | 一种基于时间维和空间维数据流压缩的处理器、设计方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160358075A1 (en) * | 2015-06-08 | 2016-12-08 | The Regents Of The University Of Michigan | System for implementing a sparse coding algorithm |
-
2017
- 2017-08-30 CN CN201710761177.7A patent/CN107609641B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105874477A (zh) * | 2014-01-23 | 2016-08-17 | 高通股份有限公司 | 配置稀疏神经网络 |
CN105681628A (zh) * | 2016-01-05 | 2016-06-15 | 西安交通大学 | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 |
CN106447034A (zh) * | 2016-10-27 | 2017-02-22 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN106650924A (zh) * | 2016-10-27 | 2017-05-10 | 中国科学院计算技术研究所 | 一种基于时间维和空间维数据流压缩的处理器、设计方法 |
Non-Patent Citations (1)
Title |
---|
"Deep Convolutional Neural Network Architecture With Reconfigurable Computation Patterns";Tu F , Yin S , Ouyang P , et al.;《IEEE Transactions on Very Large Scale Integration (VLSI) Systems》;20170412;第2220-2233页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107609641A (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107609641B (zh) | 稀疏神经网络架构及其实现方法 | |
CN111684473B (zh) | 提高神经网络阵列的性能 | |
CN107862374B (zh) | 基于流水线的神经网络处理系统和处理方法 | |
US10394929B2 (en) | Adaptive execution engine for convolution computing systems | |
US10096134B2 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
US20180157969A1 (en) | Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network | |
US20190087713A1 (en) | Compression of sparse deep convolutional network weights | |
US10482380B2 (en) | Conditional parallel processing in fully-connected neural networks | |
US10839286B2 (en) | System and method for implementing neural networks in integrated circuits | |
US20210357735A1 (en) | Split accumulator for convolutional neural network accelerator | |
CN107340993B (zh) | 运算装置和方法 | |
CN110991631A (zh) | 一种基于fpga的神经网络加速系统 | |
Solovyev et al. | Fixed-point convolutional neural network for real-time video processing in FPGA | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
US20210150363A1 (en) | Apparatus and method for multi-phase pruning for neural network with multi-sparsity levels | |
US20210248456A1 (en) | Optimization methods for quantization of neural network models | |
CN113034391B (zh) | 一种多模式融合水下图像增强方法、系统及应用 | |
KR102396447B1 (ko) | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 | |
KR20190089685A (ko) | 데이터를 처리하는 방법 및 장치 | |
Sommer et al. | Efficient hardware acceleration of sparsely active convolutional spiking neural networks | |
CN109740619B (zh) | 用于目标识别的神经网络终端运行方法和装置 | |
CN106920264B (zh) | 一种基于可形变部件模型算法的目标检测硬件结构 | |
Zhang et al. | A-u3d: A unified 2d/3d cnn accelerator on the versal platform for disparity estimation | |
Ahn | Computation of deep belief networks using special-purpose hardware architecture | |
CN110716751B (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 |