神经网络运算方法、装置、芯片、电子设备和存储介质制造方法及图纸

技术编号:38039849 阅读:15 留言:0更新日期:2023-06-30 11:06
本申请涉及数据计算领域,涉及一种神经网络运算方法、装置、芯片、电子设备及存储介质。神经网络运算方法包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,N*Wk*Hk个1*1*C子卷积核被划分成Wk*Hk个子卷积核组;运算步骤包括:根据各子卷积核组对应的数据重排方式对输入数据进行重排,得到各子卷积核组对应的重排后输入数据;将各子卷积核组和各子卷积核组对应的重排后输入数据卷积得到各子卷积核组的卷积结果;将各子卷积核组的卷积结果累加得到累加结果,并将累加结果中位于有效位置的数据作为神经网络运算的输出结果。消除因为img2col带来的硬件设计开销、数据访存量增加和动态功耗增加。耗增加。耗增加。

【技术实现步骤摘要】
神经网络运算方法、装置、芯片、电子设备和存储介质


[0001]本申请实施例涉及数据计算领域,特别涉及一种神经网络运算方法、装置、芯片、电子设备及存储介质。

技术介绍

[0002]神经网络90%的计算量都在卷积和全连接,全连接从本质上来说也是一种特殊的卷积运算,卷积运算当前基本转换为矩阵运算,通过脉动阵列或通用矩阵乘法(General Matrix Multiplication,简称GEMM)来实现,现有技术对神经网络的研究主要还是如何高效实现卷积运算中的乘法和加法运算,而忽略了数据访问对计算效率的影响,以及访存带来功耗的增加。
[0003]现有神经网络加速器为了方便调度,通常采用img2col的方式对权重和激活数据进行排布。当权重和输入数据都经过img2col以后,将2个矩阵输入到矩阵运算单元进行运算,就方便的得到最终2个矩阵相乘的结果,也就是神经网络卷积输出的结果。权重数据img2col后不会增加数据的大小,仅仅需要对数据进行重排,而且由于权重可以通过离线的方式排布好,所以权重img2col并不增加额外的开销。但对于输入数据采用img2col以后,由于卷积滑窗的原因,会明显增加输入数据的容量,如图1所示,原始输入为W=10,H=10的图片,数据总量为10)10=100,img2col后数据为64*9=576,数据膨胀了近6倍,如果输入的尺寸(W*H)更大的情况下,理论的数据膨胀接近卷积核的K
W
*K
H
倍。img2col可以由软件或硬件实现,但不管采用何种方式都会增加对输入数据的访问,这样会导致动态功耗的增加。而且由于神经网络计算本身就是访存受限的,这种数据量的增加也会导致性能的降低。

技术实现思路

[0004]本申请实施例的主要目的在于提出一种神经网络运算方法、装置、电子设备及存储介质。旨在消除因为img2col带来的硬件设计的开销、数据访存量的增加、以及动态功耗的增加。
[0005]为实现上述目的,本申请实施例提供了一种神经网络运算方法,包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述运算步骤,包括:根据各所述子卷积核组对应的数据重排方式对所述输入数据进行重排,得到各所述子卷积核组对应的重排后输入数据;将各所述子卷积核组和各所述子卷积核组对应的重排后输入数据卷积得到各所述子卷积核组对应的卷积结果;将各所述子卷积核组对应的卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所述神经网络运算的输出结果;其中,各所述子卷积核组对应的重排后输入数据中与各所述子卷积核组对应的所述
部分输入数据具有相同的数据位置,所述相同的数据位置为所述有效位置。
[0006]为实现上述目的,本申请实施例还提供了一种神经网络运算方法,包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核;N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述运算步骤,包括:将各所述子卷积核组和所述输入数据分别卷积得到各所述子卷积核组对应的卷积结果;根据各所述子卷积核组对应的数据重排方式对各所述子卷积核组对应的卷积结果进行重排,得到各所述子卷积核组对应的重排后卷积结果;将各所述子卷积核组对应的重排后卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所述神经网络运算的输出结果;其中,各所述子卷积核组与各所述子卷积核组对应的所述部分输入数据卷积得到各所述子卷积核组对应的有效卷积结果,各所述子卷积核组对应的重排后卷积结果中的所述有效卷积结果具有相同的数据位置,且所述相同的数据位置为所述有效位置。
[0007]为实现上述目的,本申请实施例还提供了一种神经网络运算方法,包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组;并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核;N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述运算步骤包括:将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果;其中,所述第i个子卷积核组与所述第i个子卷积核组对应的所述部分输入数据卷积得到所述第i个子卷积核组对应的有效卷积结果,所述第i个卷积结果中包含所述有效卷积结果;将所述第(i

1)次累加结果进行重排,以使得重排后的第(i

1)次累加结果中所述有效卷积结果和所述第i个卷积结果中所述有效卷积结果具有相同的数据位置;将所述重排后的第(i

1)次累加结果与所述第i个卷积结果累加,得到第i次累加结果;若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中的所述有效卷积结果作为所述神经网络运算的输出结果;其中,i的初始值为1,且i=1时,第0次累加结果被设定零,且所述重排后的第0次累加结果中所述有效卷积结果和所述第1个卷积结果中所述有效卷积结果被默认为具有相同的数据位置。
[0008]为实现上述目的,本申请实施例还提供一种神经网络运算装置,包括:第一存储单元、第二存储单元、控制单元、第一数据重排单元、卷积单元以及加法单元;所述第一存储单元用于存储神经网络运算的输入数据,所述第二存储单元用于存储所述神经网络运算的Wk*Hk个子卷积核组;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述控制单元用于从所述第一存储单元获取所述输入数据,并将所述输入数据输入所述第一数据重排单元,所述控制单元还用于将各所述子卷积核组
对应的数据重排方式发本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种神经网络运算方法,其特征在于,包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核,N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述运算步骤,包括:根据各所述子卷积核组对应的数据重排方式对所述输入数据进行重排,得到各所述子卷积核组对应的重排后输入数据;将各所述子卷积核组和各所述子卷积核组对应的重排后输入数据卷积得到各所述子卷积核组对应的卷积结果;将各所述子卷积核组对应的卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所述神经网络运算的输出结果;其中,各所述子卷积核组对应的重排后输入数据中与各所述子卷积核组对应的所述部分输入数据具有相同的数据位置,所述相同的数据位置为所述有效位置。2.根据权利要求1所述的神经网络运算方法,其特征在于,所述运算步骤包括:根据第i个子卷积核组对应的数据重排方式对所述输入数据进行重排,得到第i个重排后输入数据;将所述第i个子卷积核组和所述第i个重排后输入数据卷积,得到第i个卷积结果;将所述第i个卷积结果和第(i

1)次累加结果累加,得到第i次累加结果;若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中所述有效位置上的数据作为所述神经网络运算的输出结果;其中,i的初始值为1,且i=1时,第1个子卷积核组对应的数据重排方式被设定为所述输入数据中各部分数据的位置不变,第0次累加结果被设定零。3.根据权利要求2所述的神经网络运算方法,其特征在于,所述获取神经网络运算的输入数据和Wk*Hk个子卷积核组,包括:加载所述输入数据;在所述根据所述第i个子卷积核组对应的数据重排方式对所述输入数据进行重排,得到第i个重排后输入数据之前,加载所述第i个子卷积核组。4.根据权利要求3所述的神经网络运算方法,其特征在于,所述加载所述第i个子卷积核组,具体为:以数据覆盖方式加载所述第i个子卷积核组。5.根据权利要求1至4中任一项所述的神经网络运算方法,其特征在于,在N≥2的情况下,所述将各所述子卷积核组和各所述子卷积核组对应的重排后输入数据卷积得到各所述子卷积核组对应的卷积结果,具体为:对于每个子卷积核组,所述子卷积核组中的N个子卷积核分别与所述子卷积核组对应的重排后输入数据卷积,得到N个子卷积结果,且所述N个子卷积结果作为所述子卷积核组对应的卷积结果中的N层数据。6.一种神经网络运算方法,其特征在于,包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组,并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C
子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核;N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述运算步骤,包括:将各所述子卷积核组和所述输入数据分别卷积得到各所述子卷积核组对应的卷积结果;根据各所述子卷积核组对应的数据重排方式对各所述子卷积核组对应的卷积结果进行重排,得到各所述子卷积核组对应的重排后卷积结果;将各所述子卷积核组对应的重排后卷积结果累加得到累加结果,并将所述累加结果中位于有效位置的数据作为所述神经网络运算的输出结果;其中,各所述子卷积核组与各所述子卷积核组对应的所述部分输入数据卷积得到各所述子卷积核组对应的有效卷积结果,各所述子卷积核组对应的重排后卷积结果中的所述有效卷积结果具有相同的数据位置,且所述相同的数据位置为所述有效位置。7.根据权利要求6所述的神经网络运算方法,其特征在于,所述运算步骤包括:将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果;根据所述第i个卷积结果对应的数据重排方式对所述第i个卷积结果进行重排,得到第i个重排后卷积结果;将所述第i个重排后卷积结果和第(i

1)次累加结果累加,得到第i次累加结果;若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中所述有效位置上的数据作为所述神经网络运算的输出结果;其中,i的初始值为1,且i=1时,第1个卷积结果对应的数据重排方式被设定为所述第1个卷积结果中各部分卷积结果的位置不变,第0次累加结果被设定零。8.根据权利要求7所述的神经网络运算方法,其特征在于,所述获取神经网络运算的输入数据和Wk*Hk个子卷积核组,包括:加载所述输入数据;在所述将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果之前,加载所述第i个子卷积核组。9.根据权利要求8所述的神经网络运算方法,其特征在于,所述加载所述第i个子卷积核组,具体为:以数据覆盖方式加载所述第i个子卷积核组。10.根据权利要求6至9中任一项所述的神经网络运算方法,其特征在于,在N≥2的情况下,所述将各所述子卷积核组和所述输入数据分别卷积得到各所述子卷积核组对应的卷积结果,具体为:对于每个子卷积核组,所述子卷积核组中的N个子卷积核分别与所述输入数据卷积,得到N个子卷积结果,且所述N个子卷积结果作为所述子卷积核组对应的卷积结果中的N层数据。11.一种神经网络运算方法,其特征在于,包括:获取神经网络运算的输入数据和Wk*Hk个子卷积核组;并进入运算步骤;其中,所述神经网络运算的N个Wk*Hk*C卷积核拆分得到N*Wk*Hk个1*1*C子卷积核,所述N*Wk*Hk个1*1*C子卷积核被划分成所述Wk*Hk个子卷积核组,且每个子卷积核组包括N个1*1*C子卷积核;N、Wk、Hk、C均为大于或等于1的整数;每个子卷积核对应所述输入数据中的部分输入数据,且
在N≥2的情况下,每个子卷积核组中的N个子卷积核对应的所述部分输入数据相同;所述运算步骤包括:将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果;其中,所述第i个子卷积核组与所述第i个子卷积核组对应的所述部分输入数据卷积得到所述第i个子卷积核组对应的有效卷积结果,所述第i个卷积结果中包含所述有效卷积结果;将所述第(i

1)次累加结果进行重排,以使得重排后的第(i

1)次累加结果中所述有效卷积结果和所述第i个卷积结果中所述有效卷积结果具有相同的数据位置;将所述重排后的第(i

1)次累加结果与所述第i个卷积结果累加,得到第i次累加结果;若i小于Wk*Hk,将i更新为i+1,并再次执行所述运算步骤;若i等于Wk*Hk,将所述第i次累加结果中的所述有效卷积结果作为所述神经网络运算的输出结果;其中,i的初始值为1,且i=1时,第0次累加结果被设定零,且所述重排后的第0次累加结果中所述有效卷积结果和所述第1个卷积结果中所述有效卷积结果被默认为具有相同的数据位置。12.根据权利要求11所述的神经网络运算方法,其特征在于,所述获取神经网络运算的输入数据和Wk*Hk个子卷积核组,包括:加载所述输入数据;在所述将第i个子卷积核组和所述输入数据卷积,得到第i个卷积结果之前,加载所述第i个子卷积核组。13.根据权利要求12所述的神经网络运算方法,其特征在于,所述加载所述第i个子卷积核...

【专利技术属性】
技术研发人员:徐东熊先奎
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:

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

1