一种卷积运算方法及装置制造方法及图纸

技术编号:20844160 阅读:25 留言:0更新日期:2019-04-13 08:54
本公开提供一种卷积运算方法及装置,所述方法应用于芯片装置,所述芯片装置包括主电路和从电路,所述从电路用于将并行执行卷积运算。本披露提供的技术方案具有计算处理时间短,能耗低的优点。

【技术实现步骤摘要】
一种卷积运算方法及装置
本申请涉及芯片处理
,具体涉及一种卷积运算方法及装置。
技术介绍
人工神经网络(ArtificialNeuralNetwork,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(CentralProcessingUnit,中央处理器)或GPU(英文:GraphicsProcessingUnit,图形处理器)来实现运算,此种运算的功耗高、计算时间长。
技术实现思路
本申请实施例提供了一种卷积运算方法及装置,可提升卷积运算的处理速度,提高效率、节省功耗。第一方面,提供一种卷积运算方法,所述方法应用于芯片装置所述方法包括如下步骤:所述芯片装置接收输入数据和权值,所述输入数据为四维数据,所述四个维度为:N、H、W、C;所述C方向为所述四维数据最内层且所述C方向为所述四维数据的高度方向;所述芯片装置将输入数据沿C方向排列得到输入数据NHWC或输入数据NWHC;所述芯片装置以及所述k个从电路将输入数据NHWC或输入数据NWHC与权值执行卷积运算得到卷积的计算结果。第二方面,提供一种芯片装置,所述芯片装置包括:所述芯片装置,用于接收输入数据和权值,所述输入数据为四维数据,所述四个维度为:N、H、W、C;所述C方向为所述四维数据最内层且所述C方向为所述四维数据的高度方向;所述芯片装置,还用于将输入数据沿C方向排列得到输入数据NWHC或输入数据NHWC;所述芯片装置,用于将输入数据NHWC或输入数据NWHC与权值执行卷积运算得到卷积的计算结果;所述K为大于等于2的整数。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1a是本披露提供的一种芯片装置的结构示意图。图1b是本披露提供的另一种芯片装置的结构示意图。图1c是本披露提供的芯片装置的数据分发示意图。图1d为一种芯片装置的数据回传示意图。图2是本披露实施例提供的一种神经网络的运算方法的流程示意图。图2a是本披露实施例提供的矩阵A乘以矩阵B的示意图。图3是本披露实施例提供的神经网络的运算方法的流程示意图。图3a为全连接1的单样本数据示意图。图3b为全连接2的多样本数据示意图。图3c为卷积1的M个卷积核数据示意图。图3d为卷积2输入数据示意图。图3e为输入数据的一个三维数据块的运算窗口示意图。图3f为输入数据的一个三维数据块的另一运算窗口示意图。图3g为输入数据的一个三维数据块的又一运算窗口示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。本披露的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本披露的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。下面以CPU为例来说明神经网络的运算方法,在神经网络中,矩阵与矩阵的乘法在神经网络中大量的使用,这里以矩阵A与矩阵B的乘法为例来说明CPU的“与”运算方式。假设矩阵A与矩阵B的结果为C,即C=A*B;下述所示:对于CPU来说,其在计算得到C采用的步骤可以为首先对第一行的完成计算,然后对第二行完成计算,最后对第三行完成运算,即对于CPU来说其运算时一行数据计算完毕以后再执行第二行数据的计算。以上述公式为例,具体的,首先,CPU对第一行完成计算,即需要完成,a11*b11+a12*b21+a13*b31、a11*b12+a12*b22+a13*b32和a11*b13+a12*b23+a13*b33;计算完上述以后,在计算a21*b11+a22*b21+a23*b31、a21*b12+a22*b22+a23*b32和a21*b13+a22*b23+a23*b33;最后再计算a31*b11+a32*b21+a33*b31、a31*b12+a32*b22+a33*b32和a31*b13+a32*b23+a33*b33。所以对于CPU或GPU来说,其需要一行一行的计算,即对第一行计算完毕以后再进行第二行的计算,然后再执行第三行的计算直至所有行计算完毕,对于神经网络来说,其行数可能有上千行的数据,所以其计算的时间很长,并且在计算时,CPU长期处于工作状态,能耗也高。参阅图1b,图1b为一种芯片装置的结构示意图,如图1b所示,该芯片装置包括:主单元电路、基本单元电路和分支单元电路。其中,主单元电路可以包括寄存器和/或片上缓存电路,该主单元还可以包括:向量运算器电路、ALU(arithmeticandlogicunit,算数逻辑单元)电路、累加器电路、矩阵转置电路、DMA(DirectMemoryAccess,直接内存存取)电路、数据重排电路等的一个或任意组合;每个基础单元可以包括基础寄存器和/或基础片上缓存电路;每个基础单元还可以包括:内积运算器电路、向量运算器电路、累加器电本文档来自技高网...

【技术保护点】
1.一种卷积运算方法,其特征在于,所述方法应用于芯片装置,所述方法包括如下步骤:所述芯片装置接收输入数据和权值,所述输入数据为四维数据,所述四个维度为:N、H、W、C;所述C维度为所述四维数据的高度方向维度;所述芯片装置将输入数据的摆放方式变换成C为最内层的循环得到最内层为C的输入数据;所述芯片装置将最内层为C的输入数据与权值执行卷积运算得到卷积的计算结果。

【技术特征摘要】
1.一种卷积运算方法,其特征在于,所述方法应用于芯片装置,所述方法包括如下步骤:所述芯片装置接收输入数据和权值,所述输入数据为四维数据,所述四个维度为:N、H、W、C;所述C维度为所述四维数据的高度方向维度;所述芯片装置将输入数据的摆放方式变换成C为最内层的循环得到最内层为C的输入数据;所述芯片装置将最内层为C的输入数据与权值执行卷积运算得到卷积的计算结果。2.根据权利要求1所述的方法,其特征在于,所述将输入数据的摆放方式变换成C为最内层的循环得到最内层为C的输入数据具体包括:将输入数据的摆放方式变换成C为最内层的循环得到输入数据NHWC或输入数据NWHC。3.根据权利要求1所述的方法,其特征在于,所述芯片装置包括:主电路以及k个从电路,所述芯片装置将最内层为C的输入数据与权值执行卷积运算得到卷积的计算结果具体包括:所述主电路将权值分成多个基础数据块,所述主电路将多个基础数据块分发给所述k个从电路,所述从电路存储分发到的基础数据块;所述主电路将输入数据NHWC或输入数据NWHC中的各部分数据广播至所述k个从电路,所述k个从电路将各部分数据分别与所述分发到的基础数据块执行运算得到运算结果,将运算结果发送给所述主电路;所述主电路依据k个从电路的所有运算结果得到卷积运算的计算结果;所述k为从电路的数量,取值范围为大于等于2的整数。4.根据权利要求1-3任意一项所述的方法,其特征在于,所述权值为四维数据块,所述权值的四个维度为:M,C,KH,KW。5.根据权利要求4所述的方法,其特征在于,如所述权值的M维度的取值为m,所述权值包括m个卷积核,所述主电路将权值分成多个基础数据块具体包括:所述主电路将所述m个卷积核分成m个基础数据块。6.根据权利要求4所述的方法,其特征在于,所述主电路将权值分成多个基础数据块具体包括:所述主电路将m个卷积核分成m*c个基础数据块,所述c为所述权值在所述C维度的取值,取值范围为大于等于1的整数。7.根据权利要求5所述的方法,其特征在于,所述主电路将权值分成多个基础数据块具体包括如m>k,所述主电路将m个卷积核分成m个基础数据块,将m个基础数据块中的一个或多个分发给k个从电路;如m≤k,所述主电路将m个卷积核分成m个基础数据块,将m个基础数据块中的一个分发给k个从电路。8.根据权利要求5或6所述的方法,其特征在于,所述主电路将输入数据NHWC或输入数据NWHC中的各部分数据广播至所述k个从电路具体包括:所述主电路从输入数据NHWC或输入数据NWHC切割一个与所述基础数据块尺寸相等的输入数据块作为各部分数据中的一个部分数据,以输入数据块为基本切割单元并以移动步长对输入数据切割得到各部分数据,将各部分数据中的一个或多个部分数据广播至所述k个从电路。9.根据权利要求8所述的方法,其特征在于,所述k个从电路将各部分数据分别与所述分发到的基础数据块执行运算得到运算结果,所述主电路依据k个从电路的所有运算结果得到卷积运算的计算结果具体包括:所述k个从电路中每个从电路将一个部分数据的元素值与分发到的基础数据块对应位置的元素值执行乘积运算得到多个乘积结果,将所述多个乘积结果发送至主电路,主电路将每个从电路发送的所述多个乘积结果累加得到多个卷积结果,主电路将多个卷积结果排序得到卷积运算的计算结果。10.根据权利要求8所述的方法,其特征在于,所述k个从电路将各部分数据分别与所述分发到的基础数据块执行运算得到运算结果,所述主电路依据k个从电路的所有运算结果得到卷积运算的计算结果具体包括:所述k个从电路中每个从电路将一个部分数据的元素值与分发到的基础数据块对应位置的元素值执行乘积运算得到多个乘积结果,多个乘积结果累加得到卷积结果,将卷积结果发送给主电路,主电路将所有的卷积结果排序得到卷积运算的计算结果。11.根据权利要求1-7任意一项所述的方法,其特征在于,所述芯片装置还包括:分支电路,所述分支电路连接所述主电路与多个从电路,所述方法还包括:所述分支电路转发所述主电路与多个从电路之间的数据。12.根据权利要求1-7...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:北京中科寒武纪科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1