CN111047025B - 一种卷积计算方法及装置 - Google Patents

一种卷积计算方法及装置 Download PDF

Info

Publication number
CN111047025B
CN111047025B CN201811199925.8A CN201811199925A CN111047025B CN 111047025 B CN111047025 B CN 111047025B CN 201811199925 A CN201811199925 A CN 201811199925A CN 111047025 B CN111047025 B CN 111047025B
Authority
CN
China
Prior art keywords
convolution
sub
convolution kernel
data
kernel
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
Application number
CN201811199925.8A
Other languages
English (en)
Other versions
CN111047025A (zh
Inventor
梁晓峣
景乃锋
崔晓松
廖健行
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201811199925.8A priority Critical patent/CN111047025B/zh
Publication of CN111047025A publication Critical patent/CN111047025A/zh
Application granted granted Critical
Publication of CN111047025B publication Critical patent/CN111047025B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

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)
  • Complex Calculations (AREA)

Abstract

本申请实施例提供一种卷积计算方法及装置,涉及计算机领域,可以实现高效的卷积计算。卷积计算装置包括:P*P个数据计算单元,P*P个地址计算单元,K*K大小的卷积核;当K>P时,将卷积核切分为子卷积核;对于每一个子卷积核,按照卷积计算方式,将特征矩阵中的特征数据和卷积核中的权值数据相乘,将计算结果按照预定的加法规则相加得到输出数据;计算每个特征数据的目标地址,将具有相同目标地址的输出数据相加得到卷积矩阵。

Description

一种卷积计算方法及装置
技术领域
本申请涉及计算机领域,尤其涉及一种卷积方法及装置。
背景技术
卷积神经网络(convolutional neural network,CNN)在图像识别领域的应用越来越广泛。CNN可以对输入的图像进行分类识别操作。在实际的应用中,向CNN输入一张或者多张图片(称之为输入特征图或者输入特征数据),让它历经一系列卷积层、非线性层、池化层和完全连接层,最终输出图像内容的一个单独分类或一组分类,称之为输出特征图或者输出特征数据。例如,向CNN输入一张图片,CNN最终输出一组图像内容的分组:图像的轮廓、图像颜色等内容。卷积神经网络可以应用于各个图片识别领域如安防领域、计算机视觉、平安城市等,还可以应用于语音识别、搜索引擎、机器翻译等等。
CNN的原理是将输入特征图经过滤波器(Filter),与每个滤波器配置的权值(即卷积核)进行卷积运算,得到每个滤波器对应的输出特征图。其中,一个滤波器对应的输出称之为一个输出通道。从CNN的原理可知,其过程需要大量的计算开销和存储需求,因此多样的高效卷积方法被设计出来提高卷积神经网络的计算效率。目前业界有多种神经网络模型,不同的模型中包含的卷积核规格大小种类繁多。如AlexNet模型中有5个卷积层,卷积核的规格包含了11*11、5*5、3*3三种。另外,有的模型中常用的卷积核的规格还包含7*7。在一些卷积神经网络中,不同卷积层配置不同规格大小的卷积核。
现有技术中的卷积运算的计算原理如图1所示。图1示出了一个特征数据集合,该特征数据集合共包括5×5个特征数据。图1还示出了一个权值数据集合,该权值数据集合共包括3*3个权值数据。该权值数据集合可以作为卷积核与该数据特征集合进行卷积运算。如图1还示出了卷积运算过程中的一步运算的示意。如图1所示,特征数据集合中的3*3个权值数据需要分别与特征数据集合中的3*3个数据进行乘法运算。乘法运算的结果相加就得到了卷积结果的一个数据的值。具体地,根据图1所示,卷积结果c11可以表示为:c11=a11×b11+a12×b12+a13×b13+a21×b21+a22×b22+a23×b23+a31×b31+a32×b32+a33×b33。在完成了如图1所示的一步运算后,该权值数据集合按照从上到下、从左向右的顺序滑动,继续下一步运算,直到遍历完整个特征数据集合。
由于卷积神经网络中卷积核规格大小多变,为了适应这一点,业界目前有多种卷积计算设计。一种设计为粗粒度可重构的卷积神经网络加速器,该加速器包括多个处理单元簇,每个处理单元簇包括若干处理单元和一个加法计算单元,其中,加法计算单元与该处理单元簇中的所有处理单元相连接。通过选取不同数量的处理单元和加法计算单元,可以使得该卷积神经网络加速器处理不同大小的卷积核。但是上述做法存在着无法充分利用该卷积神经网络加速器的问题,即没有被选取的处理单元和加法计算单元将会被暂时闲置,该部分的算力将会被浪费,从而导致卷积计算的效率不高。同时,该卷积神经网络加速器还会存在无法处理较大的卷积核的问题。
发明内容
本申请实施例提供一种卷积计算方法及装置,以提高卷积计算时计算单元利用率,进而实现高效的卷积计算。
第一方面,提供一种卷积计算装置,该卷积计算装置包括数据处理单元、地址处理单元、卷积核及控制单元;其中,数据处理单元,包括P*P个数据计算单元;地址处理单元,包括P*P个地址计算单元,该P*P个地址计算单元和P*P个数据计算单元一一对应;卷积核为K*K大小,K*K为卷积核行列数。控制单元用于:当K>P时,将卷积核切分为X*X个P*P大小的第一子卷积核,X个(K-XP)*P大小的第二子卷积核,X个P*(K-XP)大小的第三子卷积核,及一个(K-XP)*(K-XP)大小的第四子卷积核,其中,X是正整数,(K-XP)小于P;然后将X*X个第一子卷积核、X个第二子卷积核、X个第三子卷积核及第四子卷积核分别输入数据处理单元;对于每一个子卷积核,按照卷积计算方式,将特征矩阵中的特征数据按照P*P的大小滑动输入数据处理单元;接下来,数据处理单元对于每次输入的特征数据,将每个数据计算单元中的特征数据和卷积核中的权值数据相乘,然后将P*P个数据计算单元的计算结果按照预定的加法规则相加得到输出数据;地址处理单元中的每个地址计算单元计算每个特征数据的目标地址,目标地址为特征数据相对于卷积核的相对地址;将具有相同目标地址的输出数据相加得到卷积矩阵。
本申请实施例提供的卷积计算装置,通过控制单元对卷积核进行裁剪,以适配数据处理单元的规格,并通过地址计算单元确定特征数据的目标地址,保证将裁剪后的卷积核进行卷积运算的结果准确合并到卷积矩阵。裁剪后的子卷积核与数据处理单元的规格适配,使得数据处理模块满载运行,提高了卷积计算时数据计算单元的利用率,进而提高了卷积计算的效率。
其中,数据处理单元中包括的P*P个数据计算单元,可以全部单向通信。当然,数据处理单元中包括的P*P的数据计算单元,也可以划分为n*n个计算单元块,每个计算单元块中包括m*m个数据计算单元,每个计算单元块内部单向通信,根据控制单元的配置,相邻的计算单元块之间配置为可通信,实现P*P个数据计算单元全部单向通信。
结合第一方面,在一种可能的实现方式中,控制单元还可以用于:当(K-XP)不超过(P/2)时,且X>=2时,将至少两个第二子卷积核拼接成P*P的第一拼接卷积核;预定的加法规则为将相同第二子卷积核对应的数据进行相加。对应的,将第二子卷积核输入数据处理单元,即将第一拼接卷积核输入数据处理单元。这样一来,裁剪后规格未达到P*P的子卷积核可以通过自身拼接重组,构建P*P的子卷积核,以适配数据处理单元。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,控制单元还可以用于:当(K-XP)不超过(P/2)时,且X=1时,将不同输出通道的卷积核中的第二子卷积核拼接为P*P的第一拼接卷积核;预定的加法规则为将相同第二子卷积核对应的数据进行相加。对应的,将第二子卷积核输入数据处理单元,即将第一拼接卷积核输入数据处理单元。这样一来,裁剪后规格未达到P*P的子卷积核可以通过跨输出通道拼接重组,构建P*P的子卷积核,以适配数据处理单元。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,控制单元还可以用于:将X个(K-XP)*P大小的第二子卷积核,切分得到X*(K-XP)个1*P的子卷积核,再重组构建P*P的子卷积核。
需要说明的是,对于第三子卷积核,可以和第二子卷积核采用类似的拼接方法,不再进行详细说明。
还需要说明的是,在构建拼接卷积核时,不足P*P的部分,可以采用补0方式填充。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,控制单元还可以用于:当(K-XP)不超过(P/2)时,将第四子卷积核复制为P*P的第二拼接卷积核;预定的加法规则为P*P个计算单元的每个计算单元的计算结果作为输出数据。这样一来,裁剪后规格未达到P*P的子卷积核可以通过拼接重组,构建P*P的子卷积核,以适配数据处理单元。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,控制单元还可以用于:当(K-XP)大于(P/2)时,将第二子卷积核、第三子卷积核、第四子卷积核,拼通过补0填充为P*P的子卷积核。对应的,将第二子卷积核、第三子卷积核、第四子卷积核输入数据处理单元,即将填充后的第二子卷积核、填充后的第三子卷积核、填充后的第四子卷积核输入数据处理单元。这样一来,裁剪后规格未达到P*P的子卷积核可以通过补0填充,构建P*P的子卷积核,以适配数据处理单元。
需要说明的是,上述P/2可以替代为预设阈值来实现,根据实际需求配置预设阈值的取值,本申请对预设阈值的取值不局限于P/2这一个取值。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,控制单元还可以用于,不考虑(K-XP)的大小,直接将第二子卷积核、第三子卷积核、第四子卷积核,拼通过补0填充为P*P的子卷积核,将填充后的子卷积核输入数据处理单元进行后续的卷积计算。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,该卷积计算装置还可以包括多个加法器,多个加法器的连接关系由预定的加法规则确定。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,控制单元还可以用于,当K小于P时,通过补0将卷积核变为P*P大小的矩阵。之后,再将矩阵中的特征数据输入数据处理模块,数据处理模块对于每次输入的特征数据,将每个数据计算单元中的特征数据和卷积核中的权值数据相乘,然后将P*P个数据计算单元的计算结果按照预定的加法规则相加得到输出数据;地址处理模块中的每个地址计算单元计算每个特征数据的目标地址,目标地址为特征数据相对于卷积核的相对地址;将具有相同目标地址的输出数据相加得到卷积矩阵。
结合第一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,卷积核中的权值坐标为(c,d),权值坐标对应的特征数据的坐标为(a,b),则特征数据的目标地址为(a-c,b-d)。
第二方面,提供一种卷积计算方法,其特征在于,应用于卷积计算装置,该卷积计算装置包括:P*P个数据计算单元,P*P个地址计算单元,K*K大小的卷积核;其中,P*P个地址计算单元和P*P个数据处理单元一一对应,K*K为卷积核行列数。该方法可以包括:当K>P时,将卷积核切分为X*X个P*P大小的第一子卷积核,X个(K-XP)*P大小的第二子卷积核,X个P*(K-XP)大小的第三子卷积核,及一个(K-XP)*(K-XP)大小的第四子卷积核,其中X是正整数,(K-XP)小于P;对于每一个子卷积核,按照卷积计算方式,将特征矩阵中的特征数据按照P*P的大小滑动,与卷积核中的权值数据相乘,将P*P个计算结果按照预定的加法规则相加得到输出数据;计算每个特征数据的目标地址,目标地址为特征数据相对于卷积核的相对地址;将具有相同目标地址的输出数据相加得到卷积矩阵。
本申请实施例提供的卷积计算方法,通过对卷积核进行裁剪,以适配数据处理模块的规格,并通过确定特征数据的目标地址,保证将裁剪后的卷积核进行卷积运算的结果准确合并到卷积矩阵。裁剪后的子卷积核与数据处理模块的规格适配,使得数据处理模块满载运行,提高了卷积计算时数据计算单元的利用率,进而提高了卷积计算的效率。
结合第二方面,在一种可能的实现方式中,该卷积计算方法还可以包括:当(K-XP)不超过(P/2)时,且X>=2时,将至少两个第二子卷积核拼接成P*P的第一拼接卷积核;预定的加法规则为将相同第二子卷积核对应的数据进行相加。
结合第二方面或上述任一种可能的实现方式,在另一种可能的实现方式中,该卷积计算方法还可以包括:当(K-XP)不超过(P/2)时,且X=1时,将不同输出通道的卷积核中的第二子卷积核拼接为P*P的第一拼接卷积核;预定的加法规则为将相同第二子卷积核对应的数据进行相加。
需要说明的是,对于第三子卷积核,可以和第二子卷积核采用相同的拼接方法,不再进行详细说明。
还需要说明的是,在构建拼接卷积核时,不足P*P的部分,可以采用补0方式填充。
结合第二方面或上述任一种可能的实现方式,在另一种可能的实现方式中,当(K-XP)不超过(P/2)时,将第四子卷积核复制为P*P的第二拼接卷积核;预定的加法规则为P*P个计算结果作为输出数据。
结合第二方面或上述任一种可能的实现方式,在另一种可能的实现方式中,该卷积计算方法还可以包括:当(K-XP)大于(P/2)时,将第二子卷积核、第三子卷积核、第四子卷积核,拼通过补0填充为P*P的子卷积核。
需要说明的是,上述P/2可以替代为预设阈值来实现,根据实际需求配置预设阈值的取值,本申请对预设阈值的取值不局限于P/2这一个取值。
结合第二方面或上述任一种可能的实现方式,在另一种可能的实现方式中,该卷积计算方法还可以包括:不考虑(K-XP)的大小,直接将第二子卷积核、第三子卷积核、第四子卷积核,通过补0填充为P*P的子卷积核,将填充后的子卷积核输入数据处理单元进行后续的卷积计算。
结合第二方面或上述任一种可能的实现方式,在另一种可能的实现方式中,该卷积计算方法还可以包括:当K小于P时,通过补0将卷积核变为P*P大小的矩阵。
结合第二方面或上述任一种可能的实现方式,在另一种可能的实现方式中,卷积核中的权值坐标为(c,d),权值坐标对应的特征数据的坐标为(a,b),则特征数据的目标地址为(a-c,b-d)。
需要说明的是,第二方面提供的用于卷积计算方法,由上述第一方面提供的卷积计算装置执行,其具体实现可以参考上述第一方面的具体实现,此处不再进行赘述。
第三方面,提供一种卷积计算装置,该装置可以包括:一个或多个处理器、存储器和通信接口;存储器、通信接口与一个或多个处理器连接;卷积计算装置通过通信接口与其他设备通信,存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行所述指令时,该装置执行上述第二方面或任一种可能的实现方式提供的卷积计算方法。
第四方面,提供一种计算机可读存储介质,包括指令,当该指令在卷积计算装置上运行时,使得该卷积计算装置执行上述第二方面或任一种可能的实现方式提供的卷积计算方法。
第五方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在卷积计算装置上运行时,使得该卷积计算装置执行上述第二方面或任一种可能的实现方式提供的卷积计算方法。
本申请中第三方面至第五方面及其各种实现方式的具体描述,可以参考上述第一方面的详细描述;并且,第三方面至第五方面及其各种实现方式的有益效果,可以参考上述第一方面的有益效果分析,此处不再赘述。
在本申请中,上述卷积计算装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
附图说明
图1为现有技术中的卷积运算原理的示意图;
图2为现有技术提供的一种粗粒度可重构的卷积神经网络加速器结构示意图;
图3为现有技术提供的一种粗粒度可重构的卷积神经网络加速器配置示意图;
图4为本申请实施例提供的一种卷积计算装置的结构示意图;
图5为本申请实施例提供的一种数据处理单元的结构示意图;
图6为本申请实施例提供的一种地址处理单元的结构示意图;
图7为本申请实施例提供的一种加法器树的结构示意图;
图8为本申请实施例提供的一种卷积计算方法的流程示意图;
图9为本申请实施例提供的一种卷积核示意图;
图10为本申请实施例提供的另一种卷积核示意图;
图11为本申请实施例提供的另一种加法器树的结构示意图;
图12为本申请实施例提供的再一种卷积核示意图;
图13为本申请实施例提供的再一种加法器树的结构示意图;
图14为本申请实施例提供的又一种卷积核示意图;
图15为本申请实施例提供的又一种卷积核示意图;
图16为本申请实施例提供的又一种卷积核示意图;
图17为本申请实施例提供的另一种卷积计算装置的结构示意图。
具体实施方式
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
以下,术语“第一”、“第二”等泛指词语,仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
神经网络通过建立模型来模拟人类大脑的神经连接结构,在处理图像、声音和文本等信号时,通过多个变换阶段分层对数据特征进行描述,在图像识别、语音处理、智能机器人等应用领域取得了令人瞩目的成果。一般的,神经网络由多个网络层(如卷积层、全连接层等)构成,每个网络层对其输入数据进行处理,并将处理后的输出数据传输至下一网络层。具体的,在每个网络层中,使用与该网络层对应的权重值对输入数据进行卷积、乘加等处理,该权重值称之为卷积核。具体的,神经网络的每个网络层对于输入数据的处理方式是由网络层的属性确定的,每个网络层中使用的卷积核是在训练神经网络的过程中确定出的。
卷积神经网络可以对输入的图像进行分类识别操作。在实际的应用中,我们向卷积神经网络中输入一张或者多张图片,让它历经一系列卷积层、非线性层、池化层和完全连接层,最终输出图像内容的一个单独分类或一组分类。例如,向卷积神经网络输入一张图片,神经网络最终输出一组图像内容的分组:图像的轮廓、图像颜色等内容。卷积神经网络可以应用于各个图片识别领域如安防领域、计算机视觉、平安城市等,还可以应用于语音识别、搜索引擎、机器翻译等等。
卷积神经网络是对输入特征图进行处理获取其特征,得到输出特征图。卷积神经网络通过将输入特征图经过配置了权值的滤波器,使得输入的图像与滤波器的权值进行卷积运算,以获取输入图像的特征作为输出图像。滤波器配置的权值即称之为卷积核,一个滤波器称之为一个输出通道,一个输出通道用于获取一个输出图像。一个输入特征图,对于每一个输出通道均有一个对应的卷积核,每个输入特征图与一个输出通道的卷积核进行卷积计算后的结果,组合后作为该输出通道的输出特征图。
在实际应用中,CNN中卷积核大小多变,不同的卷积层可以配置不同大小的卷积层。由于CNN需要大量的计算开销,计算的效率高低对于CNN的性能至关重要。
一种粗粒度可重构的卷积神经网络加速器设计如图2所示。该加速器包括多个处理单元簇,每个处理单元簇包括若干基本计算单元(图2中NE,包括3*3卷积单元)。在图2示意的加速器结构中,处理单元簇为4个,这4个处理单元簇可以各自独立运行,也可以配置为可通信,每个处理单元簇包括4个基本计算单元,比如图2中的NE11、NE12、NE21、NE22及子加法单元ADDB1组成第一单元簇,以此类推。
如图3所示,采用粗粒度可重配的方式,通过静态随机存取存储器(staticrandom-access memory,SRAM)或其他互联单元链接不同的权重与图像轨道,以实现不同的卷积核处理结构,支持不同大小的网络和卷积核。如图3所示,图2示意的加速器中包括的处理单元簇可配置为支持1*1到12*12大小的卷积核。例如,如图3中的模式1所示,可以配置成16个(1*1)到(3*3)核;或者,如图3中的模式2,可以配置成4个(4*4)到(6*6)核;或者,如图3中的模式3,可以配置成1个(7*7)至(9*9)核;或者,如图3中的模式4,可以配置成1个(10*10)至(12*12)核。如一个5*5的核,将会有4个处理单元和一个加法单元构成。通过选取不同数量的处理单元和加法计算单元,可以使得该卷积神经网络加速器处理不同大小的卷积核。但是上述做法存在着无法充分利用该卷积神经网络加速器的问题,即没有被选取的处理单元和加法计算单元将会被暂时闲置,该部分的算力将会被浪费,从而导致卷积计算的效率不高。同时,该卷积神经网络加速器还会存在无法处理较大的卷积核的问题。
基于此,本申请提供一种卷积计算方法,其基本原理为:根据卷积核大小与数据处理单元的大小关系,采取切分、重组等方式实现数据计算单元的满载运行,提高卷积运算时计算阵列中的计算单元的利用率,进而提高卷积运算的效率。
本申请实施例提供的卷积计算方法,应用于卷积计算装置,该卷积计算装置可以为使用卷积神经网络的装置,该卷积计算装置可以为电子设备或者其他,本申请实施例对此不进行具体限定。
下面对本申请提供的卷积计算方法及装置进行详细描述。本申请提供的卷积计算方法及装置,可以应用于卷积神经网络的网络层中,具体可以应用于卷积神经网络的卷积层或全连接层或其他网络层,本申请实施例对于该方法及装置的应用场景不进行具体限定。
图4是本申请的一个实施例所提供的卷积计算装置。如图4所示,卷积计算装置40可以包括:控制单元401、数据处理单元402、地址处理单元403以及卷积核404。其中,卷积核404为K*K大小,即K*K为卷积核404的行列数。
其中,数据处理单元402包括P*P个数据计算单元,该数据计算单元可以为基本计算单元。
一种可能的实现中,数据处理单元402中可以包括n*n个计算单元块4021,每个计算单元块4021包括m*m个数据计算单元40211。其中,P=n*m。每个计算单元块4021内部单向通信。控制单元401可以配置相邻的计算单元块4021互联(即可通信),或者,控制单元401可以配置相邻的计算单元块4021独立不通信。
一种可能的实现中,数据处理单元402也可以包括单向通信的P*P个数据计算单元40211。
一种可能的实现中,卷积核404可以为存储了该卷积核的存储器。或者,卷积核404为配置了权值矩阵的功能单元。当然,卷积核404也可以为其他形式,本申请实施例对此不进行具体限定。需要说明的是,图4中将卷积核404配置在卷积计算装置40上,也可以将其存储在卷积计算装置40之外,当需要使用卷积核404时再进行读取。
具体的,卷积计算装置40中包括的各个功能单元的具体功能描述如下。
控制单元401与数据处理单元402、地址处理单元403及卷积核404连接。具体的,控制单元401用于:当K>P时,将卷积核404切分为X*X个P*P大小的第一子卷积核,X个(K-XP)*P大小的第二子卷积核,X个P*(K-XP)大小的第三子卷积核,及一个(K-XP)*(K-XP)大小的第四子卷积核,其中,X是正整数,(K-XP)小于P;将X*X个第一子卷积核、X个第二子卷积核、X个第三子卷积核及第四子卷积核分别输入数据处理单元402;对于每一个子卷积核,按照卷积计算方式,将特征矩阵中的特征数据按照P*P的大小滑动输入数据处理单元402。
数据处理单元402用于对于每次输入的特征数据,将每个数据计算单元4021中的特征数据和卷积核404中的权值数据相乘,然后将P*P个数据计算单元的计算结果按照预定的加法规则相加得到输出数据。
图5示出了数据处理单元402的架构,相邻的计算单元块4021之间通过多路选择器连接,控制单元401通过控制多路选择器的连接,实现控制计算单元块4021是否互联。我们将图5中示意的多路选择器中连接寄存器堆的输入端口称之为非互联端口,将多路选择器中连接相邻的计算单元块4021的输入端口称之为互联端口。当控制单元401通过控制多路选择器接通互联端口,使得相邻的两个计算单元块4021互联时,实现该多路选择器一端的计算单元块4021与该多路选择器另一端的计算单元块4021互联,即多路选择器的输出端口连接的计算单元块4021从与其互联的相邻计算单元块4021获取输入特征数据。在这种情况下,假设数据处理单元402包括4个计算单元块4021,每个计算单元块4021中包括3*3个数据计算单元40211,数据处理单元402相当于一个规格为6*6大小的阵列。否则,当控制单元401通过控制多路选择器接通非互联端口,使得相邻的两个计算单元块4021不进行互联时,实现该多路选择器一端的计算单元块4021与该多路选择器另一端的计算单元块4021相互独立,即多路选择器的输出端口连接的计算单元块4021从寄存器堆获取输入特征数据。在这种情况下,假设数据处理单元402包括4个计算单元块4021,每个计算单元块4021中包括3*3个数据计算单元40211,数据处理单元402相当于四个规格为3*3大小的阵列。
具体的,数据计算单元40211可以包括两个寄存器及乘法器。一个寄存器用于存储卷积核中的权值,另一个寄存器用于存储滑动获取的输入特征图中的数据,再由乘法器将两个寄存器中存储的数据进行乘法计算。
地址处理单元403,用于计算每个特征数据的目标地址,目标地址为特征数据相对于卷积核404的相对地址。
具体的,地址计算单元403包括P*P个地址计算单元,P*P个地址计算单元与数据处理单元402包括的P*P个数据计算单元一一对应,每个地址计算单元用于计算每个特征数据的目标地址。
示例性的,图6示意了地址处理单元403的内容结构,地址处理单元403包括P*P个地址计算单元,每个地址计算单元中可以包括两个加法器,分别用来计算特征数据的目标地址的横坐标和纵坐标。
控制单元401还用于,将具有相同目标地址的输出数据相加得到卷积矩阵。
进一步可选的,卷积计算装置40还可以包括多个加法器,多个加法器的连接关系由预定的加法规则确定。多个加法器经过连接后称之为加法器树,如图4所示,该卷积计算装置40还包括加法器树405。
控制单元401还用于,按照预定的加法规则,配置多个加法器,构建加法器树405。
加法器树405用于,根据控制单元401的配置进行连接,将P*P个数据计算单元的计算结果按照预定的加法规则相加得到输出数据。
数据处理单元402中每个数据计算单元的计算结果可以输入加法器树405,用于进行累加计算。需要说明的是,数据处理单元402与加法器树405可以分别独立部署(如图4示意),也可以将两者合并部署(图4未示出),本申请实施例对此不进行具体限定。
示例性的,如图7所示,示出了一种加法器树405的架构,图7所示的加法器树405可以支持计算单元块4021内数据的累加,产生4个输出数据,每个输出数据是3*3大小的特征数据和权值数据进行卷积运算的结果;也可以将4个输出数据进行相加,得到6*6大小的特征数据和权值数据进行卷积运算的结果,从而可以分别对应计算单元块4021是否互联所产生的两种数据处理单元402。
进一步的,如图4所示,卷积计算装置40还可以包括分组式寄存器堆406以及全相连交换网络407。其中,分组式寄存器堆406包括P*P组寄存器堆,通过全相连交换网络407与数据处理单元402及地址处理单元403连接。分组式寄存器堆406用于向数据处理单元402输入特征数据,以及向地址处理单元403输入坐标等地址数据。
一种可能的实现中,控制单元401还可以用于,当K小于P时,通过补0将卷积核404变为P*P大小的矩阵。再将P*P大小的矩阵输入数据处理单元402进行卷积计算。
一种可能的实现中,在数据处理单元402包括n*n个计算单元块4021,每个计算单元块包括m*m个数据计算单元40211时,控制单元401还可以用于,当K小于m时,通过补0将卷积核404变为m*m大小的矩阵。再将m*m大小的矩阵输入数据处理单元402进行卷积计算。
本申请实施例提供的卷积计算装置,通过控制单元对卷积核进行裁剪或者补0,以适配数据处理单元的规格,并通过地址计算单元确定特征数据的目标地址,保证将裁剪或者补0后的卷积核进行卷积运算的结果准确合并到卷积矩阵。裁剪或者补0后的子卷积核与数据处理单元的规格适配,使得数据处理模块满载运行,提高了卷积计算时数据计算单元的利用率,进而提高了卷积计算的效率。
需要说明的是,本申请实施例提供的卷积计算装置40用于执行本申请提供的卷积计算方法,其内部各个功能单元对应执行卷积方法中的相应步骤,其具体实现详见下述卷积方法的详细描述。
另一方面,本申请实施例还提供一种卷积计算方法,该方法应用于如图4所示的卷积计算装置。该卷积计算装置包括:P*P个数据计算单元,P*P个地址计算单元,K*K大小的卷积核;其中,P*P个地址计算单元和P*P个数据处理单元一一对应,K*K为卷积核行列数。如图8所示,本申请实施例提供的卷积计算方法可以包括:
S801、当K>P时,将卷积核切分为X*X个P*P大小的第一子卷积核,X个(K-XP)*P大小的第二子卷积核,X个P*(K-XP)大小的第三子卷积核,及一个(K-XP)*(K-XP)大小的第四子卷积核。
其中,X是正整数,(K-XP)小于P。
卷积计算装置在进行卷积计算时,需先获取到卷积核中的权值以及输入的特征数据,在卷积计算装置获取到卷积核中的权值时,卷积计算装置对比卷积核的大小与卷积计算装置中数据处理单元的大小,当K大于P时,执行S801,尽可能地获取使数据处理单元满载的子卷积核,用于后续卷积计算。
假定数据处理单元的大小为P*P(即包括P*P个数据计算单元),卷积核规格大小为K*K,S801的实现原则为:当K大于P时,根据数据处理单元的大小和架构,将原来的卷积核通过切分,再通过重组构成若干个P*P的子卷积核。
可选的,重组构成P*P的子卷积核时,先进行拼接,无法拼接时可以采用补0填充。或者,重组构成P*P的子卷积核时,先进行再次切分,然后拼接,无法拼接时可以采用补0填充。
具体的,在S801中将原来的卷积核切分获取子卷积核后,如何将子卷积核重组获取P*P的卷积核是此处的重点,下面详细描述。
首先描述对于第二子卷积核的重组成P*P的子卷积核的实现方式,具体包括但不限于下述几种具体实现:
第一种具体实现:当(K-XP)不超过(P/2)时,且X>=2时,将至少两个第二子卷积核拼接成P*P的第一拼接卷积核;当(K-XP)大于(P/2)时,将每个第二子卷积核通过补0填充成P*P的子卷积核。
第二种具体实现:当(K-XP)不超过(P/2)时,且X=1时,将不同输出通道的卷积核中的第二子卷积核拼接为P*P的第一拼接卷积核;当(K-XP)大于(P/2)时,将每个第二子卷积核通过补0填充成P*P的子卷积核。
第三种具体实现:将X个(K-XP)*P大小的第二子卷积核,切分得到X*(K-XP)个1*P的子卷积核,再将1*P的子卷积核重组构建P*P的子卷积核。
第四种具体实现:不考虑(K-XP)与(P/2)的大小关系,也不考虑X的值,直接将每个第二子卷积核通过补0填充成P*P的子卷积核。
在本申请的一种实现方式中,当(K-XP)不超过(P/2)时,是将至少两个第二子卷积核进行拼接或者是将第二子卷积核进行补0可以根据(K-XP)与预设阈值的差值来决定。预设阈值用于评价子卷积核与计算单元阵列的错配程度,大于或等于预设阈值表示错配程度小,小于预设阈值表示错配程度大。在实际应用中,可以根据实际需求配置预设阈值的取值,本申请实施例对此不进行具体限定。当然,等于预设阈值的情况也可以划分到错配程度大的情况,本申请实施例对此不进行具体限定。该预设阈值设置的越大,计算单元阵列的利用率将会越高,但实现复杂度则会增加;预设阈值设置的越小,实现复杂度降低,但是数据处理单元的利用率则会低。
需要说明的是,上述四种具体实现,只是列举了将第二子卷积核重组构成P*P的子卷积核的可选的实现方式,但并不是对将第二子卷积核重组构成P*P的子卷积核的实现的限定。在实际应用中,并不局限于上述四种具体实现,可以根据实际需求选取上述四种具体实现中任一种,或者选取上述四种具体实现之外的其他方式来将第二子卷积核重组构成P*P的子卷积核,本申请实施例对此并不进行具体限定。
需要说明的是,对于第三子卷积核重组构建P*P的子卷积核,可以参考上述第二子卷积核的重组方式,此处不再进行赘述。当然,第三子卷积核与第二子卷积核可以采用不同的重组方式构建P*P的子卷积核。
下面描述对于第四子卷积核的重组成P*P的子卷积核的实现方式,具体包括但不限于下述几种具体实现:
实现方式A:当(K-XP)不超过(P/2)时,将第四子卷积核复制为P*P的第二拼接卷积核;当(K-XP)大于(P/2)时,将第四子卷积核通过补0填充成P*P的子卷积核。
一种可能的实现中,第四子卷积核复制为P*P的第二拼接卷积核,可以实现为:将一个输出通道的第四子卷积核多次复制构成P*P的第二拼接卷积核。
一种可能的实现中,第四子卷积核复制为P*P的第二拼接卷积核,可以实现为:将多个输出通道的第四子卷积核多次复制构成P*P的第二拼接卷积核。
实现方式B:不考虑(K-XP)与(P/2)的大小关系,直接将第四子卷积核通过补0填充成P*P的子卷积核。
需要说明的是,上述两种具体实现,只是列举了将第四子卷积核重组构成P*P的子卷积核的可选的实现方式,但并不是对将第四子卷积核重组构成P*P的子卷积核的实现的限定。在实际应用中,并不局限于上述两种具体实现,可以根据实际需求选取上述两种具体实现中任一种,或者选取上述两种具体实现之外的其他方式来将第四子卷积核重组构成P*P的子卷积核,本申请实施例对此并不进行具体限定。
下面通过举例的方式,对S801的具体实现进行示例性说明。
示例1,假设K=7,P=6,由于K大于P,每个7*7的卷积核切分获取一个6*6的第一子卷积核,一个1*6的第二子卷积核,一个6*1的第三子卷积核,一个1*1的第四子卷积核,(K-XP)不超过(P/2)。切分后的具体重组可以实现为:
将连续6个输出通道FiKj到Fi+5Kj的第二子卷积核的6个1*6组合得到1个6*6子卷积核。其中,组合得到的P*P的子卷积核中每一行为一个输出通道的第二子卷积核,不同行为不同输出通道同一输入通道的第二子卷积核。
将连续6个输出通道FiKj到Fi+5Kj的第三子卷积核的6个6*1组合得到1个6*6子卷积核。其中,组合得到的P*P的子卷积核中每一列为一个输出通道的第三子卷积核,不同列为不同输出通道同一输入通道的第三子卷积核。
将连续6个输出通道FiKj到Fi+5Kj的6个1*1的第四卷积核组合得到6*6的子卷积核。其中,组合得到的P*P的子卷积核中每一列为同一输出通道的1*1子卷积核复制得到,不同列为不同输出通道同一输入通道的1*1的第四子卷积核。
示例2,假设K=11,P=6,由于K大于P,将每个输出通道中的每个输入通道的11*11的卷积核切分,获取一个6*6的第一子卷积核,1个5*6的第二子卷积核,1个6*5的第三子卷积核,一个5*5的第四子卷积核。由于(K-XP)超过(P/2)。切分后的具体重组可以实现为:
将第二子卷积核通过补0变成6*6大小的卷积核,或者将第二子卷积核先切成5个1*6的子卷积核,再将不同输出通道的1*6的子卷积核拼接成6*6的拼接卷积核。其中,组合得到的P*P的拼接卷积核中每一行为一个输出通道的第二子卷积核,不同行为不同输出通道同一输入通道的第二子卷积核。
将第三子卷积核通过补0变成6*6大小的卷积核,或者将第三子卷积核先切成5个6*1的子卷积核,再将不同输出通道的6*1的子卷积核拼接成6*6的拼接卷积核。其中,组合得到的P*P的拼接卷积核中每一列为一个输出通道的第三子卷积核,不同列为不同输出通道同一输入通道的第三子卷积核。
将第四子卷积核通过补0填充为6*6。
示例3,假设K=15,P=6,由于K大于P,将每个输出通道中的每个输入通道的15*15的卷积核切分,获取一个12*12的第一子卷积核,2个3*6的第二子卷积核,2个6*3的第三子卷积核,一个3*3的第四子卷积核。由于(K-XP)不超过(P/2),切分后的具体重组可以实现为:
将一个输出通道中的同一个输入通道的2个3*6的第二子卷积核拼接得到一个6*6的拼接子卷积核。
将一个输出通道中的同一个输入通道的2个6*3的第三子卷积核拼接得到一个6*6的拼接子卷积核。
将一个输出通道3*3的第四子卷积核复制为6*6的拼接子卷积核。
在本申请的一种实现方式中,若K小于P,则无需执行S801,通过补0将卷积核变为P*P大小的矩阵,再执行后续流程进行卷积运算。
其中,填充的位置可以根据实际需求配置,本申请实施例对此不进行具体限定。
示例4,假设K=5,m=3,P=6,由于K大于m小于P,可以将5*5的卷积核通过补0填充为6*6的卷积核。
进一步的,若数据处理模块包括n*n个计算单元块,每个计算单元块包括m*m个,P=n*m,若K小于m,则无需执行S801,通过补0将卷积核变为m*m大小的矩阵,再执行后续流程进行卷积运算。
示例5,假设K=2,m=3,P=6,由于K小于m,如图9所示,将2*2的卷积核通过补0填充为3*3的卷积核。在图9所示的填充过程中,填充位置选择的是右侧和下侧,当然,实际应用中可以填充其他位置,本申请实施例对此不进行具体限定。
需要说明的是,本文附图中示意的卷积核中每个权值位置标注的数字,填充部分的“0”表示填充的内容也就是权值本身,非填充部分的数字表示了该权值在卷积核中的位置。
进一步的,卷积计算装置将每个输出通道中的每个输入通道处理后所形成的P*P的子卷积核输入至数据处理单元执行S802。
S802、对于每一个子卷积核,按照卷积计算方式,将特征矩阵中的特征数据按照P*P的大小滑动,与卷积核中的权值数据相乘,将计算结果按照预定的加法规则相加得到输出数据。
具体的,滑动进行乘法计算为卷积计算的基本运算,已在前述图1示意的卷积计算原理中进行了说明,此处不再进行赘述。
可选的,卷积计算装置可以配置加法器树执行S803中的加法操作,加法器树的输出则为输出数据。卷积计算装置中的控制单元,按照预定的加法规则,对加法器树中的加法器的连接关系进行配置,使得可配置加法器树的连接结构按照卷积计算规则对S802中的每次滑动进行乘法计算的乘积进行累加,以实现卷积运算中乘法计算后的累加运算。
其中,预定的加法规则即为卷积计算中的加法部分。下面示例几种预定的加法规则的内容,但并不是具体限定。
可选的,当(K-XP)不超过(P/2)时,且X>=2时,将至少两个第二子卷积核拼接成P*P的第一拼接卷积核时,预定的加法规则可以为将相同第二子卷积核对应的数据进行相加。
可选的,当(K-XP)不超过(P/2)时,且X=1时,将不同输出通道的卷积核中的第二子卷积核拼接为P*P的第一拼接卷积核;预定的加法规则可以为将相同第二子卷积核对应的数据进行相加。
可选的,当(K-XP)不超过(P/2)时,将第四子卷积核复制为P*P的第二拼接卷积核;预定的加法规则为P*P个计算单元的每个计算单元的计算结果作为输出数据。
需要说明的是,S802中累加由卷积计算装置中的控制单元控制加法器树执行,具体的配置目的,是使得加法器树的连接关系按照卷积计算原理进行累加计算,此处不再进行赘述,凡是配置加法器树连接关系实现卷积计算中累加,均属于本文描述的加法器树的功能。
示例性的,对应S801的示例1中的第一子卷积核、示例2中的第一子卷积核、第四子卷积核得到的6*6子卷积核,其与特征数据滑动进行乘法计算后,加法器树将乘积累加为1个输出数据。
示例性的,对应S801的示例中的第二子卷积核得到的6*6子卷积核、第三子卷积核得到的6*6子卷积核,其与输入特征数据滑动进行乘法计算后,将乘积累加得到6个6*1的输出数据、以及6个1*6的输出数据。
示例性的,对应于S801中的示例1中的1*1的第四子卷积核组合得到的6*6子卷积核,其滑动进行乘法计算的结果不需要累加,直接作为输出数据。
S803、计算每个特征数据的目标地址。
其中,目标地址为特征数据相对于卷积核的相对地址。
由于S801中调整了卷积核的大小,因此需要确定每个特征数据与不同的权值数据进行计算后,其输出数据在卷积结果矩阵中准确位置,以合并得到卷积结果矩阵。根据卷积计算原理可知,特征数据对应的输出数据在卷积结果矩阵中的位置与计算该特征数据的卷积核权值的坐标和特征数据的坐标强相关,因此,可以根据权值坐标以及特征数据的坐标,确定每个特征数据在卷积结果矩阵中的目标地址。
一种可能的实现中,根据卷积计算原理,一个K*K的卷积核与一个A*B的特征数据进行卷积,得到的输出特征数据大小为(A-K+1)*(B-K+1),S803具体可以实现为:卷积核中的权值坐标为(c,d),权值对应的特征数据的坐标为(a,b),则特征数据的目标地址为(a-c,b-d)。根据该方案执行S803,确定每个特征数据在卷积结果矩阵中的目标地址。
需要说明的是,如果计算的某个特征数据与某个权值数据在卷积结果矩阵中的目标地址为负值,则此结果不需要合并到卷积结果矩阵中,而是丢弃该特征数据与权值数据计算时对应的输出数据。
需要说明的是,S803中地址计算由卷积计算装置中的地址处理单元执行。地址处理单元包括的地址计算单元数量,与卷积计算装置中数据处理单元中包括的数据计算单元数量相同,在实际应用中,地址处理单元使用其中部分地址计算单元计算特征数据的目的地址。地址处理单元使用的地址计算单元的数量,取决于S801中对卷积核大小的调整内容,地址处理单元使用的地址计算单元的数量等于可配置加法器树输出的输出数据的数目。
S804、将具有相同目标地址的输出数据相加得到卷积矩阵。
需要说明的是,本申请实施例只举例描述了一次卷积计算的执行过程,在实际应用中,卷积神经网络执行卷积计算的次数庞大,但是每次计算的过程相同,此处不再一一赘述。
本申请实施例提供的卷积计算方法,通过对卷积核进行裁剪或者补0,以适配数据处理模块的规格,并通过确定特征数据的目标地址,保证将裁剪或者补0后的卷积核进行卷积运算的结果准确合并到卷积矩阵。裁剪或者补0后的子卷积核与数据处理模块的规格适配,使得数据处理模块满载运行,提高了卷积计算时数据计算单元的利用率,进而提高了卷积计算的效率。
下面通过示例的形式,对于本申请提供的卷积计算方法进行举例描述。
第一示例、5*5规格大小的卷积核进行卷积运算。
在该示例中,K=5。假设卷积计算装置中数据处理单元大小为6*6(P=6),内部包括4个计算单元块,每个计算单元块中包括3*3的基本计算单元(m=3),由于K大于m小于P,如图10所示,将5*5的卷积核通过补0填充为6*6的卷积核。其中,图10中深度方向是不同输入通道的卷积核示意。然后,将数据处理单元中的计算单元块之间配置为互联可通信,将填充后的每个输出通道的6*6的卷积核权值输入数据处理单元中滑动进行乘法计算。
当一个输出通道的卷积核输入数据处理单元之后,就可以开始滑动进行乘法计算,输入特征数据从右侧进入阵列,阵列中的每一行滑动输入的数据对应的是输入特征数据中的一行。每个时钟周期,阵列中的计算单元内权值和输入特征数据相乘,滑动进行乘法计算的乘积使用图11的加法器树累加为一个6*6的输出数据。图11的加法器树累加具体实现过程为:先计算每个计算单元块内的3*3子和,进而将4个子和通过两级加法器累加为一个输出数据。
接下来,地址处理单元使用其中的1个地址计算单元得到1个目的地址,按照该目的地址,将图11示意的加法器树累加得到的输出数据作为卷积矩阵。
第二示例、7*7规格大小的卷积核进行卷积运算。
在该示例中,K=7。假设卷积计算装置中数据处理单元大小为6*6(P=6),内部包括4个计算单元块,每个计算单元块中包括3*3的数据计算单元(m=3),由于K大于P,如图12中的(a)所示,将每个输出通道中的每个输入通道的7*7的卷积核按照虚线位置切分,每个7*7的卷积核获取一个6*6的第一子卷积核(位置1-6、8-13、15-20、22-27、29-34、6-41的权值),一个1*6的第二子卷积核(位置36、37、38、39、40、41),一个6*1的第三子卷积核(位置7、14、21、28、35、42),一个1*1(位置49)的第四子卷积核。为了方便示意,图12中只示意了一个输出通道的卷积核的切分,其他输出通道相同,不再示出。
下面描述第二子卷积核、第三子卷积核、第四子卷积核分别获取6*6的子卷积核的过程。
将连续6个输出通道FiKj到Fi+5Kj的第二子卷积核的6个1*6组合得到1个6*6子卷积核。其中,组合得到的P*P的子卷积核中每一行为一个输出通道的第二子卷积核,不同行为不同输出通道同一输入通道的第二子卷积核。如图12中的(b)所示,示意了连续6个输出通道FiKj到Fi+5Kj的6个1*6的第二子卷积核组合得到的1个6*6的子卷积核。
将连续6个输出通道FiKj到Fi+5Kj的第三子卷积核的6个6*1组合得到1个6*6子卷积核。其中,组合得到的P*P的子卷积核中每一列为一个输出通道的第三子卷积核,不同列为不同输出通道同一输入通道的第三子卷积核。如图12中的(c)所示,示意了连续6个输出通道FiKj到Fi+5Kj的6个6*1的第三子卷积核组合得到的1个6*6的子卷积核。
将连续6个输出通道FiKj到Fi+5Kj的6个1*1的第四子卷积核组合得到6*6的子卷积核。如图12中的(d)所示,示意了连续6个输出通道FiKj到Fi+5Kj的6个1*1的第四子卷积核组合得到6*6的子卷积核。其中,组合得到的P*P的子卷积核中每一列为同一输出同一通道的1*1子卷积核复制得到,不同列为不同输出通道同一输入通道的1*1子卷积核。
然后,将数据处理单元中的计算单元块之间配置为可通信,将每个输出通道的6*6的卷积核权值输入数据处理单元中滑动进行乘法计算。
下面描述第一子卷积核、第二子卷积核、第三子卷积核、第四子卷积核分别获取的6*6的子卷积核与输入特征输入滑动进行乘法计算,累加与合并得到卷积矩阵的过程。
对于第一子卷积核,其与输入特征输入滑动进行乘法计算后,后续处理过程与前述第一示例相同,此处不再赘述。
对于第二子卷积核,滑动进行乘法计算之后,图12中(b)部分滑动进行乘法计算可以按照图13示意的加法器树纵向累加得到6个1*6的输出数据,根据地址处理单元计算出的6个目标地址合并到卷积矩阵。
对于第三子卷积核,滑动进行乘法计算之后,控制单元将加法器树配置为图13中的连接关系。图12中(c)部分滑动进行乘法计算可以按照图13示意的加法器树纵向累加得到6个6*1的输出数据,然后根据地址处理单元计算出的6个目标地址合并到卷积矩阵。
对于第四子卷积核,将FiKj->Fi+5Kj的6个1*1的子卷积核输入数据处理单元,每一列为同一输出同一通道的1*1第四子卷积核,不同列为不同输出通道同一输入通道的1*1第四子卷积核。此时,输入仍为同一特征数据,按照滑动卷积的方式可以共享输入数据,只是不再需要累加,将滑动进行乘法计算的36个乘积作为36个输出数据。地址处理单元使用其中的36个地址计算单元得到36个目的地址。按照这36个目标地址,将36个输出数据合并到卷积矩阵。
第三示例、11*11规格大小的卷积核进行卷积运算。
在该示例中,K=11。假设卷积计算装置中数据处理单元大小为6*6(P=6),内部包括4个计算单元块,每个计算单元块中包括3*3的数据计算单元(m=3),由于K大于P,如图14中的(a)所示,将每个输出通道中的每个输入通道的11*11的卷积核按照虚线位置切分,每个11*11的卷积核获取一个6*6的第一子卷积核(位置1-6、12-17、23-28、34-39、45-50、36-41的权值),1个5*6的第二子卷积核(图14中的(a)的右上部分),1个6*5的第三子卷积核(图14中的(a)的左上部分),一个5*5(位置73-77、84-88、95-99、106-110、117-121)的第四子卷积核。为了方便示意,图14中只示意了一个输出通道中的一个输入通道的卷积核的切分,其他输出通道相同,不再示出。
将5*6的第二子卷积核切分为5个1*6的子卷积核,将连续6个输出通道FiKj到Fi+5Kj的第二子卷积核中同一位置的6个1*6组合得到5个6*6子卷积核。其中,组合得到的P*P的子卷积核中每一行为一个输出通道的第二子卷积核,不同行为不同输出通道同一输入通道的第二子卷积核。如图15所示,示意了连续6个输出通道FiKj到Fi+5Kj的第二子卷积核中同一位置的6个1*6组合得到5个6*6的子卷积核。
将6*5的第三子卷积核切分为5个6*1的子卷积核,将连续6个输出通道FiKj到Fi+5Kj的第三子卷积核中同一位置的6个6*1组合得到5个6*6子卷积核。其中,组合得到的P*P的子卷积核中每一列为一个输出通道的第三子卷积核,不同列为不同输出通道同一输入通道的第三子卷积核。如图16所示,示意了第三示例中连续6个输出通道FiKj到Fi+5Kj的第三子卷积核中同一位置的6个6*1组合得到5个6*6的子卷积核。
将第四子卷积核通过补0填充为P*P。第三示例中的5*5的第二子卷积核填充为6*6的卷积核,如图14中的(b)所示。
其中,5*5的第四子卷积核处理方法同上述第一示例;其余子6*6、1*6和6*1的子卷积核的处理方法同上述第二示例,此处不再进行赘述。
再一方面,本申请实施例提供一种卷积计算装置,图17示出的是与本申请各实施例相关的一种卷积计算装置170。卷积计算装置170可以为电子设备中执行卷积计算的功能性装置,部署在电子设备内容,可以为电子设备的部分或全部。如图17所示,卷积计算装置170可以包括:处理器1701、存储器1702、收发器1703。
下面结合图17对卷积计算装置170的各个构成部件进行具体的介绍:
存储器1702,可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);或者非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者上述种类的存储器的组合,用于存储可实现本申请方法的程序代码、以及配置文件。
处理器1701是卷积计算装置170的控制中心,可以是一个中央处理器(centralprocessing unit,CPU),也可以是特定集成电路(application specific integratedcircuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital singnal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)。处理器1701可以通过运行或执行存储在存储器1702内的软件程序和/或模块,以及调用存储在存储器1702内的数据,执行卷积计算装置170的各种功能。
收发器1703用于卷积计算装置170与其他单元进行交互。示例性的,收发器1703可以为卷积计算装置170的收发功能单元。
处理器1701通过运行或执行存储在存储器1702内的软件程序和/或模块,以及调用存储在存储器1702内的数据,执行如下功能:
当K>P时,将卷积核切分为X*X个P*P大小的第一子卷积核,X个(K-XP)*P大小的第二子卷积核,X个P*(K-XP)大小的第三子卷积核,及一个(K-XP)*(K-XP)大小的第四子卷积核,其中X是正整数,(K-XP)小于P;对于每一个子卷积核,按照卷积计算方式,将特征矩阵中的特征数据按照P*P的大小滑动,与卷积核中的权值数据相乘,将P*P个计算结果按照预定的加法规则相加得到输出数据;计算每个特征数据的目标地址,目标地址为特征数据相对于卷积核的相对地址;将具有相同目标地址的输出数据相加得到卷积矩阵。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (15)

1.一种卷积计算装置,其特征在于,包括:
数据处理单元,包括P*P个数据计算单元;
地址处理单元,包括P*P个地址计算单元,所述P*P个地址计算单元和所述P*P个数据计算单元一一对应;
卷积核,所述卷积核为K*K大小;
控制单元,用于:
当K>P时,将所述卷积核切分为X*X个P*P大小的第一子卷积核,X个(K-XP)*P大小的第二子卷积核,X个P*(K-XP)大小的第三子卷积核,及一个(K-XP)*(K-XP)大小的第四子卷积核,其中,X是正整数,(K-XP)小于P;
将所述X*X个第一子卷积核、所述X个第二子卷积核、所述X个第三子卷积核及所述第四子卷积核分别输入所述数据处理单元;
对于每一个子卷积核,按照卷积计算方式,将特征矩阵中的特征数据按照P*P的大小滑动输入所述数据处理单元;
所述数据处理单元对于每次输入的特征数据,将每个数据计算单元中的特征数据和卷积核中的权值数据相乘,然后将P*P个数据计算单元的计算结果按照预定的加法规则相加得到输出数据;
所述地址处理单元中的每个地址计算单元计算每个特征数据的目标地址,所述目标地址为所述特征数据相对于所述卷积核的相对地址;
将具有相同目标地址的输出数据相加得到卷积矩阵。
2.根据权利要求1所述的卷积计算装置,其特征在于,
所述控制单元还用于:当所述(K-XP)不超过(P/2)时,且所述X>=2时,将至少两个所述第二子卷积核拼接成P*P的第一拼接卷积核;
所述预定的加法规则为将相同第二子卷积核对应的数据进行相加。
3.根据权利要求1所述的卷积计算装置,其特征在于,
所述控制单元还用于:当所述(K-XP)不超过(P/2)时,且所述X=1时,将不同输出通道的卷积核中的第二子卷积核拼接为P*P的第一拼接卷积核;
所述预定的加法规则为将相同第二子卷积核对应的数据进行相加。
4.根据权利要求1所述的卷积计算装置,其特征在于,
所述控制单元还用于,当所述(K-XP)不超过(P/2)时,将所述第四子卷积核复制为P*P的第二拼接卷积核;
所述预定的加法规则为所述P*P个计算单元的每个计算单元的计算结果作为输出数据。
5.根据权利要求1-3任一项所述的卷积计算装置,其特征在于,所述卷积计算装置还包括多个加法器,所述加法器的连接关系由所述预定的加法规则确定。
6.根据权利要求1所述的卷积计算装置,其特征在于,
所述控制单元还用于,当所述K小于所述P时,通过补0将所述卷积核变为P*P大小的矩阵。
7.根据权利要求1-6任一项所述的卷积计算装置,其特征在于,所述卷积核中的权值坐标为(c,d),所述权值坐标对应的特征数据的坐标为(a,b),则所述特征数据的目标地址为(a-c,b-d)。
8.一种卷积计算方法,其特征在于,应用于卷积计算装置,所述卷积计算装置包括:P*P个数据计算单元,P*P个地址计算单元,K*K大小的卷积核;其中,所述P*P个地址计算单元和所述P*P个数据处理单元一一对应;所述方法包括:
当K>P时,将所述卷积核切分为X*X个P*P大小的第一子卷积核,X个(K-XP)*P大小的第二子卷积核,X个P*(K-XP)大小的第三子卷积核,及一个(K-XP)*(K-XP)大小的第四子卷积核,其中X是正整数,(K-XP)小于P;
对于每一个子卷积核,按照卷积计算方式,将特征矩阵中的特征数据按照P*P的大小滑动,与卷积核中的权值数据相乘,将P*P个计算结果按照预定的加法规则相加得到输出数据;
计算每个特征数据的目标地址,所述目标地址为所述特征数据相对于所述卷积核的相对地址;
将具有相同目标地址的输出数据相加得到卷积矩阵。
9.根据权利要求8所述的卷积计算方法,其特征在于,所述方法还包括:
当所述(K-XP)不超过(P/2)时,且X>=2时,将至少两个所述第二子卷积核拼接成P*P的第一拼接卷积核;
所述预定的加法规则为将相同第二子卷积核对应的数据进行相加。
10.根据权利要求8所述的卷积计算方法,其特征在于,所述方法还包括:
当所述(K-XP)不超过(P/2)时,且所述X=1时,将不同输出通道的卷积核中的第二子卷积核拼接为P*P的第一拼接卷积核;
所述预定的加法规则为将相同第二子卷积核对应的数据进行相加。
11.根据权利要求8所述的卷积计算方法,其特征在于,所述方法还包括:
当所述(K-XP)不超过(P/2)时,将所述第四子卷积核复制为P*P的第二拼接卷积核;
所述预定的加法规则为所述P*P个计算结果作为输出数据。
12.根据权利要求8所述的卷积计算方法,其特征在于,所述方法还包括:
当所述K小于所述P时,通过补0将所述卷积核变为P*P大小的矩阵。
13.根据权利要求8-12任一项所述的卷积计算方法,其特征在于,所述卷积核中的权值坐标为(c,d),所述权值坐标对应的特征数据的坐标为(a,b),则所述特征数据的目标地址为(a-c,b-d)。
14.一种卷积计算装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现权利要求8至13中任一项所述的卷积计算方法。
15.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行如权利要求8至13中任一项所述的卷积计算方法。
CN201811199925.8A 2018-10-15 2018-10-15 一种卷积计算方法及装置 Active CN111047025B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811199925.8A CN111047025B (zh) 2018-10-15 2018-10-15 一种卷积计算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811199925.8A CN111047025B (zh) 2018-10-15 2018-10-15 一种卷积计算方法及装置

Publications (2)

Publication Number Publication Date
CN111047025A CN111047025A (zh) 2020-04-21
CN111047025B true CN111047025B (zh) 2024-04-09

Family

ID=70230443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811199925.8A Active CN111047025B (zh) 2018-10-15 2018-10-15 一种卷积计算方法及装置

Country Status (1)

Country Link
CN (1) CN111047025B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111882029A (zh) * 2020-06-22 2020-11-03 华控清交信息科技(北京)有限公司 一种数据处理方法及装置
CN115758054B (zh) * 2023-02-10 2023-04-14 上海登临科技有限公司 一种卷积计算方法、数据处理方法、芯片及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049716A (zh) * 2012-12-19 2013-04-17 华中科技大学 基于一阶矩的卷积器
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107341547A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络训练的装置和方法
CN108009594A (zh) * 2017-12-25 2018-05-08 北京航空航天大学 一种基于变分组卷积的图像识别方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10819724B2 (en) * 2017-04-03 2020-10-27 Royal Bank Of Canada Systems and methods for cyberbot network detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049716A (zh) * 2012-12-19 2013-04-17 华中科技大学 基于一阶矩的卷积器
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107341547A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络训练的装置和方法
CN108009594A (zh) * 2017-12-25 2018-05-08 北京航空航天大学 一种基于变分组卷积的图像识别方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Minyoung Kim等.《Deep Clustered Convolutional Kernels》.《JMLR:Workshop and Conference Proccedings》.2015,全文. *

Also Published As

Publication number Publication date
CN111047025A (zh) 2020-04-21

Similar Documents

Publication Publication Date Title
CN111667051B (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
EP3746945B1 (en) Improving performance of neural network arrays
US11556613B2 (en) Methods and systems for implementing a convolution transpose layer of a neural network
CN107862378B (zh) 基于多核的卷积神经网络加速方法及系统、存储介质及终端
US10445638B1 (en) Restructuring a multi-dimensional array
US20190340510A1 (en) Sparsifying neural network models
CN112840356A (zh) 运算加速器、处理方法及相关设备
US20210295168A1 (en) Gradient compression for distributed training
CN111047025B (zh) 一种卷积计算方法及装置
WO2022041188A1 (zh) 用于神经网络的加速器、方法、装置及计算机存储介质
JP2024028901A (ja) ハードウェアにおけるスパース行列乗算
CN114764615A (zh) 卷积运算的实现方法、数据处理方法及装置
CN112149047A (zh) 数据的处理方法及装置、存储介质和电子装置
TW202020654A (zh) 具有壓縮進位之數位電路
EP4345691A1 (en) Methods and systems for performing channel equalisation on a convolution layer in a neural network
US20240143986A1 (en) Methods and systems for executing a neural network on a neural network accelerator
WO2023122896A1 (zh) 一种数据处理方法和装置
Gonçalves et al. Exploring data size to run convolutional neural networks in low density fpgas
CN114662647A (zh) 处理用于神经网络的层的数据
Jang et al. An Efficient SNARK for Field-Programmable and RAM Circuits
KR20200072666A (ko) 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서
US20230206045A1 (en) Deep learning acceleration with mixed precision
US20230206042A1 (en) Deep learning acceleration with mixed precision
US20230206041A1 (en) Deep learning acceleration with mixed precision
US20230206043A1 (en) Deep learning acceleration with mixed precision

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