【技术实现步骤摘要】
神经网络运算方法、装置、芯片、电子设备和存储介质
[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可以由软件或硬件实现,但不管采用何种方式都会增加对输 ...
【技术保护点】
【技术特征摘要】
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个子卷积核...
【专利技术属性】
技术研发人员:徐东,熊先奎,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。