CN108985449B - 一种对卷积神经网络处理器的控制方法及装置 - Google Patents
一种对卷积神经网络处理器的控制方法及装置 Download PDFInfo
- Publication number
- CN108985449B CN108985449B CN201810685546.3A CN201810685546A CN108985449B CN 108985449 B CN108985449 B CN 108985449B CN 201810685546 A CN201810685546 A CN 201810685546A CN 108985449 B CN108985449 B CN 108985449B
- Authority
- CN
- China
- Prior art keywords
- convolution
- feature map
- input feature
- elements
- convolution calculation
- 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/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
Abstract
本发明提供一种控制方法,包括:1)确定需要执行的卷积运算的尺寸n*n;2)根据需要执行的卷积运算的尺寸n*n,选择在m2个5*5的卷积计算单元中载入与所述尺寸对应的卷积核的数值,并将其余的各个数值填充为0,5m≥n;3)根据需要执行的卷积运算的尺寸、需要执行卷积的输入特征图的尺寸,确定卷积计算过程所需的周期数;4)在卷积计算过程中的各个周期,将相应的输入特征图的数值载入到所述m2个5*5的卷积计算单元中,所述输入特征图的数值在所述m2个5*5的卷积计算单元中的分布与所述卷积核的数值在所述m2个5*5的卷积计算单元中的分布保持一致;控制载入了卷积核以及输入特征图的数值的所述m2个5*5的卷积计算单元分别执行与所述周期数对应的卷积计算。
Description
技术领域
本发明涉及一种卷积神经网络处理器,尤其涉及针对卷积神经网络处理器的硬件加速方面的改进。
背景技术
人工智能技术在近些年来得到了迅猛的发展,在全世界范围内得到了广泛的关注,无论是工业界还是学术界都开展了人工智能技术的研究工作,将人工智能技术渗透至视觉感知、语音识别、辅助驾驶、智能家居、交通调度等各个领域。深度学习技术是人工智能技术发展的助推器。深度学习采用深度神经网络的拓扑结构进行训练、优化及推理等,深度神经网络白块卷积神经网络、深度置信网络、循环神经网络等,通过反复迭代、训练。以图像识别应用为例,深度学习算法通过深度神经网络可以自动地得到隐藏的图像的特征数据,并且产生优于传统的基于模式识别分析方法的效果。
然而,现有的深度学习技术的实现依赖于极大的计算量。在训练阶段,需要在海量数据中通过反复迭代计算得到神经网络中的权重数据;在推理阶段,同样需要采用神经网络在极短响应时间(通常为毫秒级)内完成对输入数据的运算处理,这需要所部署的神经网络运算电路(包括CPU、GPU、FPGA和ASIC等)达到每秒千亿次甚至万亿次的计算能力。因而,对用于实现深度学习技术的硬件加速,例如对卷积神经网络处理器的硬件加速是非常有必要的。
通常认为实现硬件加速的方式可被大致分为两种,一种是采用更大规模的硬件并行地进行计算处理,另一种则是通过设计的专用硬件电路来提高处理速度或效率。
针对上述第二种方式,一些现有技术直接将神经网络映射为硬件电路,针对各个网络层分别采用不同的计算单元,使得针对各个网络层的计算以流水线的方式进行。例如,除第一个计算单元之外的各个计算单元以前一个计算单元的输出作为其输入,并且每个计算单元仅用于执行针对与其对应的网络层的计算,在流水线的不同的单位时间内,所述计算单元对所述网络层的不同的输入进行计算。这样的现有技术,通常针对的是需要连续处理不同的输入的场景,例如对包含多帧图像的视频文件进行处理。并且,这样的现有技术通常针对的是具有较少网络层的神经网络。这是由于,深度神经网络的网络层数和规模较大,直接将神经网络映射为硬件电路,其电路面积的代价非常之大,而功耗也会随着电路面积的增大而增加。此外,考虑到各个网络层彼此的运算时间也存在较大差异,为了实现流水线的功能,提供给各个流水线层级的运行时间需要被强制设置为彼此相等,即等于处理速度最慢的流水线层级的运算时间。对于具有大量网络层的深度神经网络而言,设计流水线需要考虑非常多的因素,以减少流水计算过程中处理速度相对较快的流水线层级所需等待的时间。
还有一些现有技术在参考了神经网络进行计算的规律的情况下,提出可以针对神经网络处理器中的计算单元进行“时分复用”以提高计算单元的复用率,其区别于上述流水线的方式,采用相同的计算单元依次对神经网络中的各个网络层进行计算。例如对输入层、第一隐藏层、第二隐藏层、…输出层逐一地进行计算,并在下一次迭代计算中重复上述过程。这样的现有技术可以针对具有较少网络层的神经网络,也可以针对深度神经网络,并且其尤其适合于硬件资源受限的应用场景。对于这样的应用场景,神经网络处理器在针对一个输入进行了网络层A的计算之后,可能很长时间都不需要再进行针对该网络层A的计算,若是每个网络层分别采用不同的硬件作为其计算单元则会导致对硬件的限制,使得硬件的复用率不高。绝大多数现有技术均是基于这样的考虑,采用不同的针对计算单元的“时分复用”的方式而对神经网络处理器的硬件进行了相应的改进。
然而,无论采用上述哪种现有技术来设计卷积神经网络处理器,仍然存在硬件利用率有待改进之处。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种用于卷积神经网络处理器的控制方法,所述卷积神经网络处理器具有5*5的卷积计算单元,所述控制方法包括:
1)确定需要执行的卷积运算的卷积核尺寸n*n;
2)根据需要执行的卷积运算的卷积核尺寸n*n,选择在m2个5*5的卷积计算单元中载入与所述尺寸对应的卷积核的数值,并将其余的各个数值填充为0,5m≥n;
3)根据需要执行的卷积运算的尺寸、以及需要执行卷积的输入特征图的尺寸,确定卷积计算过程所需的周期数;并且
4)根据所述周期数,在卷积计算过程中的各个周期,将相应的输入特征图的数值载入到所述m2个5*5的卷积计算单元中,所述输入特征图的数值在所述m2个5*5的卷积计算单元中的分布与所述卷积核的数值在所述m2个5*5的卷积计算单元中的分布保持一致;
控制载入了卷积核以及输入特征图的数值的所述m2个5*5的卷积计算单元执行与所述周期数对应的卷积计算;
5)对所述m2个5*5的卷积计算单元的卷积计算结果中对应的元素进行累加,以获得最终的卷积运算的输出特征图。
优选地,根据所述方法,其中步骤2)包括:
若是需要执行的卷积运算的尺寸小于5*5,则在同一个5*5的卷积计算单元中载入与所述尺寸对应的卷积核的数值并将其余的各个数值填充为0;
若是需要执行的卷积运算的尺寸大于5*5,则在相应数量的5*5的卷积计算单元中载入与所述尺寸对应的卷积核的数值并将其余的各个数值填充为0。
优选地,根据所述方法,其中步骤4)包括:
在卷积计算过程中的各个周期中,若是需要载入的输入特征图的数值中包含所述输入特征图中左侧第一列的元素,则一次性将所述输入特征图中与需要执行的卷积运算的尺寸相匹配的多个元素载入到所述卷积计算单元的相应位置处并将其余的各个位置的数值填充为0,否则则将与前一周期中相同的元素作为一个整体向左移动一个单元,并且将输入特征图中与前一周期中不同的、且需要更新的多个元素载入到通过所述移动而空出的位置处。
优选地,根据所述方法,其中步骤4)包括:
在卷积计算过程中的各个周期中,控制所述m2个5*5的卷积计算单元分别对其所载入的针对输入特征图以及针对卷积核的对应位置的元素执行乘法、并对乘法的结果进行累加,以获得输出特征图中相应位置的元素。
优选地,根据所述方法,其中步骤2)包括:
若是需要执行的卷积运算的尺寸为3*3,则在同一个5*5的卷积计算单元中载入3*3的卷积核的数值并将其余的各个数值填充为0;
并且,步骤4)包括:
在执行卷积计算的全部周期的每一个周期,将相应的输入特征图的数值载入到所述5*5的卷积计算单元中,所述输入特征图的数值在所述5*5的卷积计算单元中的分布与所述3*3的卷积核的数值在所述5*5的卷积计算单元中的分布保持一致;
其中,在卷积计算过程中的各个周期中,若是需要载入的输入特征图的数值中包含所述输入特征图中左侧第一列的元素,则一次性将所述输入特征图中尺寸为3*3的9个元素载入到所述卷积计算单元的相应位置处并将其余的各个位置的数值填充为0,否则则将与前一周期中相同的元素作为一个整体向左移动一个单元,并且将输入特征图中与前一周期中不同的、且需要更新的3个元素载入到通过所述移动而空出的位置处。
优选地,根据所述方法,其中步骤2)包括:
若是需要执行的卷积运算的尺寸为7*7,则控制由四个5*5的卷积计算单元共同载入7*7的卷积核的数值并将其余的各个数值填充为0;
并且,步骤4)包括:
在执行卷积计算的全部周期的每一个周期,将相应的输入特征图的数值载入到所述四个5*5的卷积计算单元中,所述输入特征图的数值在所述四个5*5的卷积计算单元中的分布与所述7*7的卷积核的数值在所述四个5*5的卷积计算单元中的分布保持一致;
其中,在卷积计算过程中的各个周期中,若是需要载入的输入特征图的数值中包含所述输入特征图中左侧第一列的元素,则一次性将所述输入特征图中尺寸为7*7的49个元素载入到所述卷积计算单元的相应位置处并将其余的各个位置的数值填充为0,否则则将与前一周期中相同的元素作为一个整体向左移动一个单元,并且将输入特征图中与前一周期中不同的、且需要更新的7个元素载入到通过所述移动而空出的相应位置处。
优选地,根据所述方法,其中步骤4)包括:
在卷积计算过程中的各个周期中,控制所述四个5*5的卷积计算单元分别对其所载入的针对输入特征图以及针对卷积核的对应位置的元素执行乘法、并对乘法的结果进行累加;
并且步骤5)包括:对由全部所述四个5*5的卷积计算单元的计算结果进行累加,以获得输出特征图中相应位置的元素。
优选地,根据所述方法,其中步骤2)包括:
若是需要执行的卷积运算的尺寸为9*9,则控制由四个5*5的卷积计算单元共同载入9*9的卷积核的数值并将其余的各个数值填充为0;
并且,步骤4)包括:
在执行卷积计算的全部周期的每一个周期,将相应的输入特征图的数值载入到所述四个5*5的卷积计算单元中,所述输入特征图的数值在所述四个5*5的卷积计算单元中的分布与所述9*9的卷积核的数值在所述四个5*5的卷积计算单元中的分布保持一致;
其中,在卷积计算过程中的各个周期中,若是需要载入的输入特征图的数值中包含所述输入特征图中左侧第一列的元素,则一次性将所述输入特征图中尺寸为9*9的81个元素载入到所述卷积计算单元的相应位置处并将其余的各个位置的数值填充为0,否则则将与前一周期中相同的元素作为一个整体向左移动一个单元,并且将输入特征图中与前一周期中不同的、且需要更新的9个元素载入到通过所述移动而空出的相应位置处。
优选地,根据所述方法,其中步骤4)包括:
在卷积计算过程中的各个周期中,控制所述四个5*5的卷积计算单元分别对其所载入的针对输入特征图以及针对卷积核的对应位置的元素执行乘法、并对乘法的结果进行累加;
并且步骤5)包括:对由全部所述四个5*5的卷积计算单元的计算结果进行累加,以获得输出特征图中相应位置的元素。
以及,一种控制单元,其用于实现上述任意一项所述的控制方法。
以及,一种卷积神经网络处理器,包括:5*5的卷积计算单元、以及控制单元,所述控制单元用于实现上述任意一项所述方法。与现有技术相比,本发明的优点在于:
改善了用于执行卷积的计算单元的复用率,达到减少必须设置在卷积神经网络处理器中的硬件计算单元的效果。卷积神经网络处理器不必为了针对需要采用不同尺寸的卷积核的不同的卷积层而设置大量的具有不同尺寸的硬件计算单元。在执行针对一个卷积层的计算时,可以采用与该卷基层的卷积核的尺寸不匹配的其他计算单元来进行计算,由此提高了卷积神经网络处理器中硬件计算单元的利用率。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1是现有技术中采用M种卷积核对输入图层进行卷积计算以获得输出图层的示意图,其中每个卷积核具有N个通道;
图2是现有技术利用一个5*5的计算单元实现5*5的卷积运算的示意图;
图3是根据本发明的一个实施例利用一个5*5的计算单元实现3*3的卷积运算的示意图;
图4是根据本发明的一个实施例采用5*5的计算单元进行5*5卷积运算时由计算单元载入输入特征图的示意图;
图5是根据本发明的一个实施例利用四个5*5的计算单元实现7*7的卷积运算的示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作详细说明。
发明人在研究现有技术的过程中发现,现有的各种经典神经网络,例如Alexnet、GoogleNet、VGG、Resnet等,这些神经网络均包含有不同数量的卷积层,而不同的卷积层所采用的卷积核大小也有所差别。例如Alexnet,该网络的第一层为卷积核大小为11*11的卷积层,该网络的第二层为卷积核大小为5*5的卷积层,该网络第三层为卷积核大小为3*3的卷积层等等。
然而,在现有的各种神经网络处理器中,均是针对不同大小的卷积核设置不同的计算单元。这就造成了,当执行某一个卷积层的计算时,与该卷基层的卷积核的尺寸不匹配的其他计算单元均处于闲置状态。
例如,如图1所示出地,神经网络处理器可以提供M种不同的卷积核,记作卷积核0至卷积核M-1,每个卷积核具有N个通道,分别用于针对输入图层的N个通道进行卷积计算,每一个卷积核与一个输入图层进行卷积运算后可以得到一个输出图层。针对一个输入图层,利用全部M-1种卷积核可以计算得到M-1个输出图层。若是某一个输入图层需要执行采用卷积核1的卷积运算,此时除与卷积核1对应的计算单元以外的其他计算单元均处于闲置状态。
对此,本发明提出了一种对计算单元的复用方案,其通过控制来调整计算单元实际载入的数据(对于同一个计算单元而言,其既需要载入卷积核的数值,也需要载入输入特征图中的数值),从而实现以5*5规模的计算单元实现针对多种尺寸的卷积运算,以减少进行卷积运算所必须采用的硬件计算单元的规模。
本发明所采用的神经网络处理器系统架构可以包括以下五个部分,输入数据存储单元、控制单元、输出数据存储单元、权重存储单元、计算单元。
输入数据存储单元用于存储参与计算的数据;输出数据存储单元存储计算得到的神经元响应值;权重存储单元用于存储已经训练好的神经网络权重;
控制单元分别与输出数据存储单元、权重存储单元、计算单元相连,控制单元可根据解析得到的控制信号控制计算单元进行神经网络计算。
计算单元用于根据控制单元产生的控制信号来执行相应的神经网络计算。计算单元完成神经网络算法中的大部分运算,即向量乘加操作等
根据本发明的对计算单元的复用可以由上述控制单元对计算单元进行控制而实现,下面将通过几个实施例来进行具体的介绍。
下面,首先介绍一下传统的现有技术是如何利用5*5的计算单元来实现5*5的卷积运算的。参考图2中所给出了一个实例,对于现有技术而言,5*5规模的计算单元以如下方式来实现卷积运算:
在第一周期,将输入特征图中第1-5行、1-5列中的每个元素(这里将其称作为是针对输入特征图的滑动窗口)与卷积核中对应位置的每个元素分别相乘所得的结果的累加之和作为输出特征图中的第1行第1列的元素,即2×(-4)+(3×2)+(-2×(-4))+(2×(-8))=-10。
在第二周期,将输入特征图中第1-5行、2-6列中的每个元素(即针对当前周期滑动窗口中的数值)与卷积核中对应位置的每个元素分别相乘所得的结果的累加之和作为输出特征图中的第1行第2列元素(未在图2中示出)。
以此类推,通过向右、或向下移动尺寸为5*5的滑动窗口共8次,以获得尺寸为3*3的输出特征图。
本发明不排斥采用上述方式来利用5*5的计算单元实现5*5的卷积运算。并且,进一步地,在本发明中,还可以通过控制使得5*5规模的计算单元实现针对除5*5以外的其他的尺寸的卷积核的运算,例如3*3、7*7、9*9的卷积运算。
如前文中所介绍地,在传统的现有技术中,输出特征图的尺寸取决于滑动窗口的移动次数和卷积核的大小,例如,针对7*7的输入特征图进行5*5的卷积运算,滑动窗口的横向移动范围以及纵向移动范围均为3个单元,通过多个周期的计算可以获得3*3的输出特征图,这使得采用5*5的计算单元来实现其他尺寸的卷积运算是非常困难的。可以理解,在沿用现有技术的情况下,采用5*5的计算单元针对7*7的输入特征图进行卷积计算只能得到3*3的输出特征图(例如在图2中所示出地),计算单元以及处理器并不知道如何移动滑动窗口才能够利用5*5的计算单元以获得诸如3*3的卷积运算。
对此,本发明提出了一种相应的控制方法,通过调度载入到计算单元中的输入特征图、卷积核,并控制执行乘法、加法运算,实现以5*5的计算单元执行3*3的卷积运算。
根据本发明的一个实施例,参考图3,具体的控制方法如下:
在计算单元进行卷积计算时,控制在每次滑动窗口时分别将相应的卷积核的值以及相应的输入特征图的值载入到5*5的计算单元中。
如图3所示,输入特征图的尺寸为7*7,需要执行的卷积运算的尺寸为3*3,因此可以确定卷积计算需要执行总共5×5=25个周期。
在第一周期,将输入特征图中第1-3行、第1-3列的元素载入到5*5的计算单元中以作为第1-3行、第1-3列的元素,并且将剩余的第4、5行、第4、5列的元素填充为“0”;将3*3的卷积核载入到5*5的计算单元中以作为第1-3行、第1-3列的元素,并且将剩余的第4、5行、第4、5列的元素填充为“0”,由此在5*5的计算单元中载入了输入特征图和卷积核的值。控制该5*5的计算单元对输入特征图以及卷积核中对应位置的元素执行乘法、累加,以获得输出特征图中第1行第1列的元素,即(3×2)+(2×(-8))=-10。由于计算单元中除去原本3*3的卷积核的数值以外的各个元素均为0,因此计算的结果与实际采用3*3的计算单元进行卷积计算的结果完全一致。
在第二周期,将输入特征图中第1-3行、第2-4列的全部元素(即“0,0,2;0,3,-2;0,0,0”)载入到该计算单元中以作为第1-3行、第1-3列的新的元素。控制计算单元针对其所载入的元素执行乘法、和累加运算,以获得输出特征图中第1行第2列的元素。
根据本发明的一个优选的实施例,还可以在第二周期中对上述在5*5的计算单元中载入输入特征图的数据的方式进行改进,以提高载入效率。即,参考图3,将5*5的计算单元中第1-3行、第2-3列的全部元素(即“0,0;0,3;0,0”)整体向左移动1个单位以作为第1-3行、第1-2列的新的元素,并且将输入特征图中第1-3行、第4列的元素(即“2;-2;0”)载入到该计算单元中以作为第1-3行、第3列的新的元素,由此对该5*5的计算单元中所载入的输入特征图的值进行了更新,达到了与传统方案中采用滑动窗口类似的效果。并且类似地控制计算单元针对其所载入的元素执行乘法、和累加运算,以获得输出特征图中第1行第2列的元素。
以此类推,完成第三到第五周期。
在第六周期,将输入特征图中第2-4行、第1-3列的元素载入到5*5的计算单元中以作为第1-3行、第1-3列的元素,并且控制计算单元针对其所载入的元素执行乘法、和累加运算,以获得输出特征图中第2行第1列的元素。并且在随后的第七到第十周期,采用与前述第二到第五周期类似的方式在该计算单元中载入相应的输入特征图的元素。以此类推,直到完成了全部二十五个周期,获得了5*5的输出特征图。
可以看出,通过上述控制方法,在第一周期时向计算单元中一次性载入了输入特征图中3*3的9个数值。类似地,第六、十一、十六、二十一周期也一次性载入了输入特征图中的9个数值。而相应地,在第二至五周期中,每次仅需载入输入特征图的3个数值,并且将在前一周期中也使用的6个数值向左移动,对于计算单元中已载入的针对卷积核的数值则不做修改。类似地,第七至十、第十二至十五、第十七至二十、第二十二至二十五也采用了与第二至五周期相似的方式来载入输入特征图中的元素。
由此,可以确保在处于各个周期时,计算单元中,输入特征图的每个元素的位置与与其进行乘法运算的卷积核中的相应元素的位置是一一对应的。并且,对于除去用于实现本发明的控制方法的单元之外的其他单元,例如计算单元本身、或者处理器而言,它们并不会意识到5*5的卷积单元实际上实施的是3*3的卷积运算。此外,通过上述控制方法,使得在各个周期内计算单元所载入的输入特征图的数值并不直接取决于滑动窗口。一方面体现在载入到计算单元中的输入特征图的数值的排列并不取决于尺寸为3*3的滑动窗口中各个数值实际的排列方式,另一方面还体现在计算的周期数也不取决于尺寸为5*5的滑动窗口的移动次数(即3*3),输出结果的数量和尺寸可以通过本发明的控制方法来控制,由此可以利用5*5的计算单元针对7*7的输入特征图进行3*3的卷积运算并从而得到5*5的输出结果。
当然,在本发明中也可以在采用5*5的计算单元执行5*5的卷积运算时,将输入特征图中与前一周期中相同的5行4列的部分向左移动一个单元、并且将新的输入特征图的相应的5个元素填充到经过所述移动而空出的位置处,例如在图4中所示出地。
本发明通过上述实施例介绍了如何控制5*5的计算单元实现3*3的卷积计算,下面将介绍如何控制5*5的计算单元来实现尺寸超过5*5的卷积计算。
根据本发明的一个实施例,提供了一种控制方法,实现以5*5的计算单元执行7*7的卷积运算,参考图5,具体的控制方法如下:
首先,判断出7>5,因而需要由不止一个5*5的计算单元来共同完成尺寸为7*7的卷积运算。这里可以选择恰好可以用于载入尺寸为7*7的数据的k个5*5的计算单元。这里针对k的选择为:k=m2,5m可以选择大于或等于n的最小正整数。当然,也可以选择比上述数量更多的5*5的计算单元来执行7*7的卷积运算。对于图5所示出的实例,这里选择k=4个计算单元。
控制将所使用的卷积核的数值分为四部分分别载入到四个5*5的计算单元中,将其余部分填充为“0”;并且,在各个周期,控制将输入特征图中相应的数据分为四部分分别载入到所述四个5*5的计算单元中,将其余部分填充为“0”。这里在该四个5*5的计算单元中,卷积核的数值的分布方式与输入特征图的数值的分布方式保持一致。
并且,控制每个计算单元针对其所载入的元素执行乘法、和累加运算,通过将全部四个计算单元的计算结果中对应的计算结果进行累加,从而获得相应的输出特征图的数值。
在该实施例中,还可以进一步地,采用与前述实施例类似的方式以在各个周期通过移动和载入相应的输入特征图的数值的方式来更新每个计算单元中的输入特征图的数值。例如,在第二个周期,将第一个5*5的计算单元(其处于图5中左上角)的第2-5列的数值向左移动1个单元,并在第5列中载入新的数值;将第二个5*5的计算单元(其处于图5中右上角)的第2列的数值向左移动1个单元,并在第2列中载入新的数值;将第三个5*5的计算单元(其处于图5中左下角)的第2-5列1-2行的数值向左移动1个单元,并在第5列1-2行中载入新的数值;将第四个5*5的计算单元(其处于图5中右下角)的第2列1-2行的数值向左移动1个单元,并在第2列1-2行中载入新的数值。
类似地,还可以采用四个5*5的计算单元实现诸如9*9的卷积运算。
在本发明中,可以针对上述控制方法设置相应的控制单元,这样的控制单元可以适应于一个现有的卷积神经网络处理器,通过实施上述控制方法的方式来对用于卷积的计算单元进行复用,也可以基于这样的控制单元所需要的硬件资源来设计配套的卷积神经网络处理器,例如在满足上述复用方案的情况下采用最少数量的硬件资源。
本发明所提供的方案涉及改善用于执行卷积的计算单元的复用率,以减少必须设置在卷积神经网络处理器中的硬件计算单元,卷积神经网络处理器不必为了针对需要采用不同尺寸的卷积核的不同的卷积层而设置大量的具有不同尺寸的硬件计算单元。在执行针对一个卷积层的计算时,可以采用同一尺寸的计算单元实现针对不同卷积层的卷积计算,由此提高了卷积神经网络处理器中硬件计算单元的利用率。
可以理解,本发明并不排斥如背景技术中所介绍的采用更大规模的硬件并行地进行计算处理、以及通过“时分复用”的方式来提高计算单元的复用率。
并且,需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (11)
1.一种用于卷积神经网络处理器的控制方法,所述卷积神经网络处理器具有5*5的卷积计算单元,所述控制方法包括:
1)确定需要执行的卷积运算的卷积核尺寸n*n;
2)根据需要执行的卷积运算的卷积核尺寸n*n,选择在m2个5*5的卷积计算单元中载入与所述尺寸对应的卷积核的数值,并将其余的各个数值填充为0,5m≥n;
3)根据需要执行的卷积运算的尺寸、以及需要执行卷积的输入特征图的尺寸,确定卷积计算过程所需的周期数;并且
4)根据所述周期数,在卷积计算过程中的各个周期,将相应的输入特征图的数值载入到所述m2个5*5的卷积计算单元中,所述输入特征图的数值在所述m2个5*5的卷积计算单元中的分布与所述卷积核的数值在所述m2个5*5的卷积计算单元中的分布保持一致;
控制载入了卷积核以及输入特征图的数值的所述m2个5*5的卷积计算单元执行与所述周期数对应的卷积计算;
5)对所述m2个5*5的卷积计算单元的卷积计算结果中对应的元素进行累加,以获得最终的卷积运算的输出特征图。
2.根据权利要求1所述的方法,其中步骤2)包括:
若是需要执行的卷积运算的尺寸小于5*5,则在同一个5*5的卷积计算单元中载入与所述尺寸对应的卷积核的数值并将其余的各个数值填充为0;
若是需要执行的卷积运算的尺寸大于5*5,则在相应数量的5*5的卷积计算单元中载入与所述尺寸对应的卷积核的数值并将其余的各个数值填充为0。
3.根据权利要求1所述的方法,其中步骤4)包括:
在卷积计算过程中的各个周期中,若是需要载入的输入特征图的数值中包含所述输入特征图中左侧第一列的元素,则一次性将所述输入特征图中与需要执行的卷积运算的尺寸相匹配的多个元素载入到所述卷积计算单元的相应位置处并将其余的各个位置的数值填充为0,否则则将与前一周期中相同的元素作为一个整体向左移动一个单元,并且将输入特征图中与前一周期中不同的、且需要更新的多个元素载入到通过所述移动而空出的位置处。
4.根据权利要求1所述的方法,其中步骤4)包括:
在卷积计算过程中的各个周期中,控制所述m2个5*5的卷积计算单元分别对其所载入的针对输入特征图以及针对卷积核的对应位置的元素执行乘法、并对乘法的结果进行累加,以获得输出特征图中相应位置的元素。
5.根据权利要求1-4中任意一项所述的方法,其中步骤2)包括:
若是需要执行的卷积运算的尺寸为3*3,则在同一个5*5的卷积计算单元中载入3*3的卷积核的数值并将其余的各个数值填充为0;
并且,步骤4)包括:
在执行卷积计算的全部周期的每一个周期,将相应的输入特征图的数值载入到所述5*5的卷积计算单元中,所述输入特征图的数值在所述5*5的卷积计算单元中的分布与所述3*3的卷积核的数值在所述5*5的卷积计算单元中的分布保持一致;
其中,在卷积计算过程中的各个周期中,若是需要载入的输入特征图的数值中包含所述输入特征图中左侧第一列的元素,则一次性将所述输入特征图中尺寸为3*3的9个元素载入到所述卷积计算单元的相应位置处并将其余的各个位置的数值填充为0,否则则将与前一周期中相同的元素作为一个整体向左移动一个单元,并且将输入特征图中与前一周期中不同的、且需要更新的3个元素载入到通过所述移动而空出的位置处。
6.权利要求1-4中任意一项所述的方法,其中步骤2)包括:
若是需要执行的卷积运算的尺寸为7*7,则控制由四个5*5的卷积计算单元共同载入7*7的卷积核的数值并将其余的各个数值填充为0;
并且,步骤4)包括:
在执行卷积计算的全部周期的每一个周期,将相应的输入特征图的数值载入到所述四个5*5的卷积计算单元中,所述输入特征图的数值在所述四个5*5的卷积计算单元中的分布与所述7*7的卷积核的数值在所述四个5*5的卷积计算单元中的分布保持一致;
其中,在卷积计算过程中的各个周期中,若是需要载入的输入特征图的数值中包含所述输入特征图中左侧第一列的元素,则一次性将所述输入特征图中尺寸为7*7的49个元素载入到所述卷积计算单元的相应位置处并将其余的各个位置的数值填充为0,否则则将与前一周期中相同的元素作为一个整体向左移动一个单元,并且将输入特征图中与前一周期中不同的、且需要更新的7个元素载入到通过所述移动而空出的相应位置处。
7.根据权利要求6所述的方法,其中步骤4)包括:
在卷积计算过程中的各个周期中,控制所述四个5*5的卷积计算单元分别对其所载入的针对输入特征图以及针对卷积核的对应位置的元素执行乘法、并对乘法的结果进行累加;
并且步骤5)包括:对由全部所述四个5*5的卷积计算单元的计算结果进行累加,以获得输出特征图中相应位置的元素。
8.权利要求1-4中任意一项所述的方法,其中步骤2)包括:
若是需要执行的卷积运算的尺寸为9*9,则控制由四个5*5的卷积计算单元共同载入9*9的卷积核的数值并将其余的各个数值填充为0;
并且,步骤4)包括:
在执行卷积计算的全部周期的每一个周期,将相应的输入特征图的数值载入到所述四个5*5的卷积计算单元中,所述输入特征图的数值在所述四个5*5的卷积计算单元中的分布与所述9*9的卷积核的数值在所述四个5*5的卷积计算单元中的分布保持一致;
其中,在卷积计算过程中的各个周期中,若是需要载入的输入特征图的数值中包含所述输入特征图中左侧第一列的元素,则一次性将所述输入特征图中尺寸为9*9的81个元素载入到所述卷积计算单元的相应位置处并将其余的各个位置的数值填充为0,否则则将与前一周期中相同的元素作为一个整体向左移动一个单元,并且将输入特征图中与前一周期中不同的、且需要更新的9个元素载入到通过所述移动而空出的相应位置处。
9.根据权利要求8所述的方法,其中步骤4)包括:
在卷积计算过程中的各个周期中,控制所述四个5*5的卷积计算单元分别对其所载入的针对输入特征图以及针对卷积核的对应位置的元素执行乘法、并对乘法的结果进行累加;
并且步骤5)包括:对由全部所述四个5*5的卷积计算单元的计算结果进行累加,以获得输出特征图中相应位置的元素。
10.一种控制单元,其用于实现如权利要求1-9中任意一项所述的控制方法。
11.一种卷积神经网络处理器,包括:5*5的卷积计算单元、以及控制单元,所述控制单元用于实现如权利要求1-9中任意一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810685546.3A CN108985449B (zh) | 2018-06-28 | 2018-06-28 | 一种对卷积神经网络处理器的控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810685546.3A CN108985449B (zh) | 2018-06-28 | 2018-06-28 | 一种对卷积神经网络处理器的控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108985449A CN108985449A (zh) | 2018-12-11 |
CN108985449B true CN108985449B (zh) | 2021-03-09 |
Family
ID=64539223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810685546.3A Active CN108985449B (zh) | 2018-06-28 | 2018-06-28 | 一种对卷积神经网络处理器的控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108985449B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111383156B (zh) * | 2018-12-29 | 2022-08-02 | 北京市商汤科技开发有限公司 | 图像处理方法、装置、智能驾驶系统和车载运算平台 |
CN109816108A (zh) * | 2019-02-15 | 2019-05-28 | 领目科技(上海)有限公司 | 深度学习加速装置、设备及方法 |
CN110490300B (zh) * | 2019-07-26 | 2022-03-15 | 苏州浪潮智能科技有限公司 | 一种基于深度学习的运算加速方法、装置及系统 |
CN112614040B (zh) * | 2020-12-16 | 2021-09-21 | 上海壁仞智能科技有限公司 | 用于卷积计算的方法、计算设备和计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN108133265A (zh) * | 2016-12-01 | 2018-06-08 | 阿尔特拉公司 | 用于利用相同的处理单元实施不同类型的卷积运算的方法和装置 |
CN108171317A (zh) * | 2017-11-27 | 2018-06-15 | 北京时代民芯科技有限公司 | 一种基于soc的数据复用卷积神经网络加速器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10242728B2 (en) * | 2016-10-27 | 2019-03-26 | Samsung Electronics Co., Ltd. | DPU architecture |
-
2018
- 2018-06-28 CN CN201810685546.3A patent/CN108985449B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108133265A (zh) * | 2016-12-01 | 2018-06-08 | 阿尔特拉公司 | 用于利用相同的处理单元实施不同类型的卷积运算的方法和装置 |
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN108171317A (zh) * | 2017-11-27 | 2018-06-15 | 北京时代民芯科技有限公司 | 一种基于soc的数据复用卷积神经网络加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN108985449A (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108985449B (zh) | 一种对卷积神经网络处理器的控制方法及装置 | |
CN111242289B (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
KR101959376B1 (ko) | 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법 | |
CN107818367B (zh) | 用于神经网络的处理系统和处理方法 | |
CN107609641B (zh) | 稀疏神经网络架构及其实现方法 | |
CN108205702B (zh) | 一种多输入多输出矩阵卷积的并行处理方法 | |
CN107844826B (zh) | 神经网络处理单元及包含该处理单元的处理系统 | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
WO2017116924A1 (en) | Neural network training performance optimization framework | |
KR20200004700A (ko) | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 | |
CN107766292B (zh) | 一种神经网络处理方法及处理系统 | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
KR20190073303A (ko) | 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스 | |
KR20190044878A (ko) | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 | |
CN108446761A (zh) | 一种神经网络加速器及数据处理方法 | |
CN109508784B (zh) | 一种神经网络激活函数的设计方法 | |
KR102396447B1 (ko) | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
KR20190018885A (ko) | 중첩 신경망을 프루닝하는 방법 및 장치 | |
KR20190098671A (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
CN108875917A (zh) | 一种用于卷积神经网络处理器的控制方法及装置 | |
CN108171328A (zh) | 一种卷积运算方法和基于该方法的神经网络处理器 | |
CN111368988A (zh) | 一种利用稀疏性的深度学习训练硬件加速器 | |
CN109670582B (zh) | 一种全定点化神经网络的设计方法 | |
CN113313252B (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 |