CN110580522A - 卷积计算方法及相关设备 - Google Patents
卷积计算方法及相关设备 Download PDFInfo
- Publication number
- CN110580522A CN110580522A CN201911080608.9A CN201911080608A CN110580522A CN 110580522 A CN110580522 A CN 110580522A CN 201911080608 A CN201911080608 A CN 201911080608A CN 110580522 A CN110580522 A CN 110580522A
- Authority
- CN
- China
- Prior art keywords
- sub
- input
- matrix
- processing element
- network layer
- 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.)
- Pending
Links
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种卷积计算方法及相关设备,方法包括:获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,N为大于1的整数;根据网络层与卷积核、卷积步长的映射关系确定网络层A对应的目标卷积核和目标卷积步长;根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组,M个处理元件组中的每个处理元件组包括P1个处理元件,P1个处理元件中的每个处理元件包括至少一个乘法累加单元,M和P1均为大于等于1的整数;并行使用M个处理元件组对网络层A的输入数据进行卷积计算,得到网络层A的输出数据。采用本申请实施例有助于提高神经网络处理器中卷积计算的计算效率。
Description
技术领域
本申请涉及人工智能技术领域,具体涉及一种卷积计算方法及相关设备。
背景技术
神经网络处理器中最常用的一种模型为卷积神经网络模型,然而,卷积神经网络模型在进行卷积运算时,存在着计算效率较低的问题。因此,如何提高神经网络处理器中卷积计算的计算效率,成为当前亟待解决的技术问题。
发明内容
本申请实施例提供一种卷积计算方法及相关设备,用于提高神经网络处理器中卷积计算的计算效率。
第一方面,本申请实施例提供一种卷积计算方法,应用于神经网络处理器,包括:
获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,所述N为大于1的整数;
根据网络层与卷积核、卷积步长的映射关系确定所述网络层A对应的目标卷积核和目标卷积步长;
根据所述目标卷积核和所述目标卷积步长确定对所述网络层A的输入数据进行卷积计算所需的M个处理元件组,所述M个处理元件组中的每个处理元件组包括P1个处理元件,所述P1个处理元件中的每个处理元件包括至少一个乘法累加单元,所述M和所述P1均为大于等于1的整数;
并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据。
在一个可能的示例中,所述根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件组,包括:
获取第一子输入矩阵B的大小S3×S4,所述第一子输入矩阵B为所述R个第一子输入矩阵中的任意一个;
计算S4/Q,得到商和第三余数;
若所述第三余数为0,则将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的每个处理元件包括Q个乘法累加单元;
若所述第三余数不为0,则将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商加1确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的第1个处理元件至第(P1-1)个处理元件中的每个处理元件包括Q个乘法累加单元和第P1个处理元件包括的乘法累加单元的数量为所述第三余数。
在一个可能的示例中,所述目标卷积核还包括偏置值,所述并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据,包括:
获取所述第一子输入矩阵B;
根据第一子输入矩阵与子卷积核矩阵的映射关系确定所述第一子输入矩阵B对应的子卷积核矩阵;
使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵;
当使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算时,并行使用所述M个处理元件组中除所述处理元件组D之外的(M-1)个处理元件组对所述R个第一子输入矩阵中除所述第一子输入矩阵B之外的(R-1)个第一子输入矩阵和(R-1)个子卷积核矩阵执行相同操作,得到(R-1)个第一子输出矩阵,所述(R-1)个子卷积核矩阵与所述(R-1)个第一子输入矩阵一一对应,所述(R-1)个第一子输出矩阵与所述(R-1)个第一子输入矩阵一一对应;
根据所述第一子输入矩阵B对应的第一子输出矩阵、所述(R-1)个第一子输出矩阵和所述偏置值确定所述网络层A的输出数据。
在一个可能的示例中,所述T1和所述T2均为1,所述使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵,包括:
获取所述第一子输入矩阵B包括的S3行输入数据中的第i行输入数据至第(i+F-1)行输入数据,所述i为1至(S3-F+1)中的任意一个;
使用所述M个处理元件组中的任意一个处理元件组D对所述第i行输入数据至第(i+F-1)行输入数据和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵的第i行输出数据;
根据(S3-F+1)行输出数据确定所述第一子输入矩阵B对应的第一子输出矩阵,所述(S3-F+1)行输出数据包括所述第i行输出数据。
第二方面,本申请实施例提供一种卷积计算装置,应用于神经网络处理器,包括:
获取单元,用于获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,所述N为大于1的整数;
第一确定单元,用于根据网络层与卷积核、卷积步长的映射关系确定所述网络层A对应的目标卷积核和目标卷积步长;
第二确定单元,用于根据所述目标卷积核和所述目标卷积步长确定对所述网络层A的输入数据进行卷积计算所需的M个处理元件组,所述M个处理元件组中的每个处理元件组包括P1个处理元件,所述P1个处理元件中的每个处理元件包括至少一个乘法累加单元,所述M和所述P1均为大于等于1的整数;
计算单元,用于并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据。
第三方面,本申请实施例提供一种神经网络处理器,上述神经网络处理器用于实现本申请实施例第一方面所述的方法的部分或全部步骤。
第四方面,本申请实施例提供一种神经网络处理器,上述神经网络处理器包括本申请实施例第二方面所述的卷积计算装置。
第五方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行如本申请实施例第一方面所述的方法中的部分或全部步骤的指令。
第六方面,本申请实施例提供一种计算机可读存储介质,上述计算机可读存储介质用于存储计算机程序,上述计算机程序被处理器执行,以实现本申请实施例第一方面所述的方法中所描述的部分或全部步骤。
第七方面,本申请实施例提供了一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行本申请实施例第一方面所述的方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,在本申请实施例中,神经网络处理器根据网络层与卷积核、卷积步长的映射关系确定网络层A对应的目标卷积核和目标卷积步长;再根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组;然后并行使用M个处理元件组对网络层A的输入数据进行卷积计算,这样有助于提高神经网络处理器中卷积计算的计算效率。
另外,在本申请实施例中,神经网络处理器根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组,这样可以让神经网络处理器其他的处理元件去执行其他的任务,从而让每个处理元件都能发挥最大的作用,进而提高了神经网络处理器的每个处理元件的利用率。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请实施例提供的一种卷积计算系统的架构示意图;
图2A是本申请实施例提供的一种卷积计算方法的流程示意图;
图2B是本申请实施例提供的一种填充的示意图;
图2C是本申请实施例提供的一种确定对网络层A的第一输入数据进行卷积计算所需的M个处理元件组的示意图;
图2D是本申请实施例提供的一种确定网络层A的输出数据的示意图;
图2E是本申请实施例提供的一种处理元件组的示意图;
图2F是本申请实施例提供的一种确定第一子输入矩阵B对应的第一子输出矩阵的第i行输出数据的示意图;
图3是本申请实施例提供的另一种卷积计算方法的流程示意图;
图4是本申请实施例提供的一种卷积计算装置的功能单元组成框图;
图5是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(userequipment,UE),移动台(mobile station,MS),终端设备(terminal device,TD)等等。
下面对本申请实施例进行详细介绍。
请参见图1,图1是本申请实施例提供的一种卷积计算系统的架构示意图,该卷积计算系统包括神经网络处理器,其中:
神经网络处理器,用于获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,N为大于1的整数;
神经网络处理器,还用于根据网络层与卷积核、卷积步长的映射关系确定网络层A对应的目标卷积核和目标卷积步长;
神经网络处理器,还用于根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组,M个处理元件组中的每个处理元件组包括P1个处理元件,P1个处理元件中的每个处理元件包括至少一个乘法累加单元,M和P1均为大于等于1的整数;
神经网络处理器,还用于并行使用M个处理元件组对网络层A的输入数据进行卷积计算,得到网络层A的输出数据。
请参见图2A,图2A是本申请实施例提供的一种卷积计算方法的流程示意图,应用于神经网络处理器,该卷积计算方法包括步骤201-204,具体如下:
201:神经网络处理器获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,所述N为大于1的整数。
N个网络层包括输入层、卷积层、池化层、全连接层和输出层。
网络层A的输入数据可以是人脸数据,也可以是车牌数据,在此不作限定。
202:神经网络处理器根据网络层与卷积核、卷积步长的映射关系确定所述网络层A对应的目标卷积核和目标卷积步长。
网络层与卷积核、卷积步长的映射关系预先存储于神经网络处理器中,网络层与卷积核、卷积步长的映射关系如下表1所示:
表1
网络层 | 卷积核 | 卷积步长 |
输入层 | 第一卷积核 | 第一卷积步长 |
卷积层 | 第二卷积核 | 第二卷积步长 |
池化层 | 第三卷积核 | 第三卷积步长 |
全连接层 | 第四卷积核 | 第四卷积步长 |
输出层 | 第五卷积核 | 第五卷积步长 |
203:神经网络处理器根据所述目标卷积核和所述目标卷积步长确定对所述网络层A的输入数据进行卷积计算所需的M个处理元件组,所述M个处理元件组中的每个处理元件组包括P1个处理元件,所述P1个处理元件中的每个处理元件包括至少一个乘法累加单元,所述M和所述P1均为大于等于1的整数。
在一个可能的示例中,神经网络处理器包括P2个处理元件,P2个处理元件中的每个处理元件包括Q个乘法累加单元,P2大于等于所述M×所述P1,Q为大于1的整数,神经网络处理器根据所述目标卷积核和所述目标卷积步长确定对所述网络层A的输入数据进行卷积计算所需的M个处理元件组,包括:
神经网络处理器根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据,所述网络层A的第一输入数据包括大小相同的R个第一子输入矩阵,所述R为大于等于1的整数;
神经网络处理器根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件组。
可见,在本示例中,神经网络处理器根据目标卷积核和目标卷积步长对网络层A的输入数据进行填充,得到网络层A的第一输入数据,进而确定对网络层A进行卷积计算所需的M个处理元件组,这样可以避免丢失网络层A的输入数据对应的图像的边缘信息,进而提高神经网络处理器中卷积计算的准确性。
在一个可能的示例中,网络层A的输入数据包括大小均为S1×S2的R个子输入矩阵,目标卷积核包括大小均为F×F的R个子卷积核矩阵,目标卷积步长为T1×T2,神经网络处理器根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据,包括:
神经网络处理器计算(S1-F)/T2,得到第一余数,以及根据所述第一余数和所述T2确定子输入矩阵C对应的行填充数据,所述子输入矩阵C为所述R个子输入矩阵中的任意一个;
神经网络处理器计算(S2-F)/T1,得到第二余数,以及根据所述第二余数和所述T1确定所述子输入矩阵C对应的列填充数据;
神经网络处理器根据所述行填充数据和所述列填充数据对所述子输入矩阵C进行填充,得到所述子输入矩阵C对应的第一子输入矩阵;
神经网络处理器对所述R个子输入矩阵中除所述子输入矩阵C之外的(R-1)个子输入矩阵执行相同操作,得到(R-1)个第一子输入矩阵,所述(R-1)个第一子输入矩阵与所述(R-1)个子输入矩阵一一对应;
神经网络处理器将所述子输入矩阵C对应的第一子输入矩阵和所述(R-1)个第一子输入矩阵确定为所述网络层A的第一输入数据。
R个子输入矩阵中的每个子输入矩阵包括S1行输入数据和S2列输入数据。
R个子卷积核矩阵中的每个子卷积核矩阵包括F行输入数据和F列输入数据。
目标卷积步长包括水平卷积步长和垂直卷积步长,水平卷积步长为T1,垂直卷积步长为T2。
具体地,神经网络处理器根据第一余数和T2确定子输入矩阵C对应的行填充数据的具体实施方式可以为:
若第一余数为0且T2=1或2,则神经网络处理器确定子输入矩阵C对应的行填充数据为第0行输入数据和第(S1+1)行输入数据;
若第一余数为0且T2为大于1的奇数,则神经网络处理器确定子输入矩阵C对应的行填充数据为第[-(T2+1)/2+2]行输入数据至第0行输入数据和第(S1+1)行输入数据至第[S1+(T2+1)/2]行输入数据;
若第一余数为0且T2为大于2的偶数,则神经网络处理器确定子输入矩阵C对应的行填充数据为第(-T2/2+1)行输入数据至第0行输入数据和第(S1+1)行输入数据至第(S1+T2/2)行输入数据;
若第一余数不为0且T2=2,则神经网络处理器确定子输入矩阵C对应的行填充数据为第0行输入数据、第(S1+1)行输入数据和第(S1+2)行输入数据;
若第一余数不为0、T2与第一余数的差值U1为1且T2为大于2的奇数,则神经网络处理器确定子输入矩阵C对应的行填充数据为第[-(T2+1)/2+1]行输入数据至第0行输入数据和第(S1+1)行输入数据至第[S1+(T2+1)/2]行输入数据;
若第一余数不为0、T2与第一余数的差值U1为1且T2为大于2的偶数,则神经网络处理器确定子输入矩阵C对应的行填充数据为第[-(T2+2)/2+2]行输入数据至第0行输入数据和第(S1+1)行输入数据至第[S1+(T2+2)/2]行输入数据;
若第一余数不为0且T2与第一余数的差值U1为大于1的奇数,则神经网络处理器确定子输入矩阵C对应的行填充数据为第[-(U1+1)/2+2]行输入数据至第0行输入数据和第(S1+1)行输入数据至第[S1+(U1+1)/2]行输入数据;
若第一余数不为0且T2与第一余数的差值U1为大于1的偶数,则神经网络处理器确定子输入矩阵C对应的行填充数据为第(-U1/2+1)行输入数据至第0行输入数据和第(S1+1)行输入数据至第(S1+U1/2)行输入数据。
具体地,神经网络处理器根据第二余数和T1确定子输入矩阵C对应的列填充数据的实施方式可以为:
若第二余数为0且T1=1或2,则神经网络处理器确定子输入矩阵C对应的列填充数据为第0列输入数据和第(S2+1)列输入数据;
若第二余数为0且T1为大于1的奇数,则神经网络处理器确定子输入矩阵C对应的列填充数据为第[-(T1+1)/2+2]列输入数据至第0列输入数据和第(S2+1)列输入数据至第[S2+(T1+1)/2]列输入数据;
若第二余数为0且T1为大于2的偶数,则神经网络处理器确定子输入矩阵C对应的列填充数据为第(-T1/2+1)列输入数据至第0列输入数据和第(S2+1)列输入数据至第(S2+T1/2)列输入数据;
若第二余数不为0且T1=2,则神经网络处理器确定子输入矩阵C对应的列填充数据为第0列输入数据、第(S2+1)列输入数据和第(S2+2)列输入数据;
若第二余数不为0、T1与第二余数的差值U2为1且T1为大于2的奇数,则神经网络处理器确定子输入矩阵C对应的列填充数据为第[-(T1+1)/2+1]列输入数据至第0列输入数据和第(S2+1)列输入数据至第[S2+(T1+1)/2]列输入数据;
若第二余数不为0、T1与第二余数的差值U2为1且T1为大于2的偶数,则神经网络处理器确定子输入矩阵C对应的列填充数据为第[-(T1+2)/2+2]列输入数据至第0列输入数据和第(S2+1)列输入数据至第[S2+(T1+2)/2]列输入数据;
若第二余数不为0且T1与第二余数的差值U2为大于1的奇数,则神经网络处理器确定子输入矩阵C对应的列填充数据为第[-(U2+1)/2+2]列输入数据至第0列输入数据和第(S2+1)列输入数据至第[S2+(U2+1)/2]列输入数据;
若第二余数不为0且T1与第二余数的差值U2为大于1的偶数,则神经网络处理器确定子输入矩阵C对应的列填充数据为第(-U2/2+1)列输入数据至第0列输入数据和第(S2+1)列输入数据至第(S2+U2/2)列输入数据。
举例来说,如图2B所示,图2B是本申请实施例提供的一种填充的示意图,子输入矩阵C的大小为5×5,子卷积核矩阵的大小为3×3,目标卷积步长为1×1,神经网络处理器确定子输入矩阵C对应的行填充数据为第0行输入数据和第6行输入数据,神经网络处理器确定子输入矩阵C对应的列填充数据为第0列输入数据和第6列输入数据,神经网络处理器根据子输入矩阵C对应的行填充数据和列填充数据对子输入矩阵C进行填充,得到子输入矩阵C对应的第一子输入矩阵。
可见,在本示例中,神经网络处理器根据网络层A的输入数据包括的子输入矩阵的大小、目标卷积核包括的子卷积核矩阵的大小和目标卷积步长确定对子输入矩阵进行填充的行填充数据和列填充数据,根据行填充数据和列填充数据对子输入矩阵进行填充,这样避免丢失网络层A对应的图像的边缘信息,进而提高神经网络处理器中卷积计算的准确性。
在一个可能的示例中,神经网络处理器根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件组,包括:
神经网络处理器获取第一子输入矩阵B的大小S3×S4,所述第一子输入矩阵B为所述R个第一子输入矩阵中的任意一个;
神经网络处理器计算S4/Q,得到商和第三余数;
若所述第三余数为0,则神经网络处理器将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的每个处理元件包括Q个乘法累加单元;
若所述第三余数不为0,则神经网络处理器将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商加1确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的第1个处理元件至第(P1-1)个处理元件中的每个处理元件包括Q个乘法累加单元和第P1个处理元件包括的乘法累加单元的数量为所述第三余数。
举例来说,如图2C所示,图2C是本申请实施例提供的一种确定对网络层A的第一输入数据进行卷积计算所需的M个处理元件组的示意图,第一子输入矩阵B包括135列输入数据,P2=32,Q=14,R=3,神经网络处理器计算135/14,得到商和第三余数均为9,神经网络处理器确定对网络层A的第一输入数据进行卷积计算所需3个处理元件组,3个处理元件组中的每个处理元件组包括10个处理元件,10个处理元件中的第1个处理元件至第9个处理元件中的每个处理元件包括14个乘法累加单元和第10个处理元件包括9个乘法累加单元。
可见,在本示例中,神经网络处理器根据第一子输入矩阵的大小、神经网络处理器包括的处理元件的数量和每个处理元件包括的乘法累加单元的数量确定对网络层A的第一输入数据进行卷积计算所需的M个处理元件组,这样可以准确计算出对网络层A的第一输入数据进行卷积计算所需处理元件组的数量。还可以让神经网络处理器其他的处理元件去执行其他的任务,从而让每个处理元件都能发挥最大的作用,进而提高了神经网络处理器的每个处理元件的利用率。
204:神经网络处理器并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据。
可以看出,在本申请实施例中,神经网络处理器根据网络层与卷积核、卷积步长的映射关系确定网络层A对应的目标卷积核和目标卷积步长;再根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组;然后并行使用M个处理元件组对网络层A的输入数据进行卷积计算,这样有助于提高神经网络处理器中卷积计算的计算效率。
另外,在本申请实施例中,神经网络处理器根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组,这样可以让神经网络处理器其他的处理元件去执行其他的任务,从而让每个处理元件都能发挥最大的作用,进而提高了神经网络处理器的每个处理元件的利用率。
在一个可能的示例中,目标卷积核还包括偏置值,神经网络处理器并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据,包括:
神经网络处理器获取所述第一子输入矩阵B;
神经网络处理器根据第一子输入矩阵与子卷积核矩阵的映射关系确定所述第一子输入矩阵B对应的子卷积核矩阵;
神经网络处理器使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵;
当使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算时,神经网络处理器并行使用所述M个处理元件组中除所述处理元件组D之外的(M-1)个处理元件组对所述R个第一子输入矩阵中除所述第一子输入矩阵B之外的(R-1)个第一子输入矩阵和(R-1)个子卷积核矩阵执行相同操作,得到(R-1)个第一子输出矩阵,所述(R-1)个子卷积核矩阵与所述(R-1)个第一子输入矩阵一一对应,所述(R-1)个第一子输出矩阵与所述(R-1)个第一子输入矩阵一一对应;
神经网络处理器根据所述第一子输入矩阵B对应的第一子输出矩阵、所述(R-1)个第一子输出矩阵和所述偏置值确定所述网络层A的输出数据。
第一子输入矩阵与子卷积核矩阵的映射关系预先存储于神经网络处理器中,第一子输入矩阵与子卷积核矩阵的映射关系如下表2所示:
表2
第一子输入矩阵 | 子卷积核矩阵 |
第一子输入矩阵1 | 子卷积核矩阵1 |
…… | …… |
第一子输入矩阵R | 子卷积核矩阵R |
第一子输入矩阵B对应的第一子输出矩阵和(R-1)个第一子输出矩阵中的每个第一子输出矩阵的大小为S5×S6,S5=(S3-F)/T2+1,S6=(S4-F)/T1+1。
具体地,神经网络处理器根据第一子输入矩阵B对应的第一子输出矩阵、(R-1)个第一子输出矩阵和偏置值确定网络层A的输出数据的实施方式可以为:神经网络处理器将第一子输入矩阵B对应的第一子输出矩阵的第j行第k列的元素值、(R-1)个第一子输出矩阵中的每个第一子输出矩阵的第j行第k列的元素值、偏置值之和确定为网络层A的输出数据的第j行第k列的元素值;神经网络处理器根据S5×S6个元素值确定网络层A的输出数据,S5×S6个元素值包括网络层A的输出数据的第j行第k列的元素值。
举例来说,如图2D所示,图2D是本申请实施例提供的一种确定网络层A的输出数据的示意图,R=3,第一子输出矩阵1包括的9个元素值为(2、4、1、3、1、3、5、7、9),第一子输出矩阵2包括的9个元素值为(4、1、3、2、2、4、6、8、10),第一子输出矩阵3包括的9个元素值为(3、2、1、4、1、2、3、4、5),偏置值为1,神经网络处理器确定网络层A的输出数据包括的9个元素值为(10、8、6、10、5、10、15、20、25)。
可见,在本示例中,神经网络处理器并行使用M个处理元件组对网络层A的第一输入矩阵和目标卷积核进行卷积计算,这样有助于提高神经网络处理器中卷积计算的计算效率。
在一个可能的示例中,T1和所述T2均为1,神经网络处理器使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵,包括:
神经网络处理器获取所述第一子输入矩阵B包括的S3行输入数据中的第i行输入数据至第(i+F-1)行输入数据,所述i为1至(S3-F+1)中的任意一个;
神经网络处理器使用所述M个处理元件组中的任意一个处理元件组D对所述第i行输入数据至第(i+F-1)行输入数据和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵的第i行输出数据;
神经网络处理器根据(S3-F+1)行输出数据确定所述第一子输入矩阵B对应的第一子输出矩阵,所述(S3-F+1)行输出数据包括所述第i行输出数据。
具体地,第一子输入矩阵B对应的子卷积核矩阵包括的9个元素值为(c、b、a、f、e、d、i、h、g),神经网络处理器使用M个处理元件组中的任意一个处理元件组D对第i行输入数据至第(i+F-1)行输入数据和第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到第一子输入矩阵B对应的第一子输出矩阵的第i行输出数据的实施方式可以为:
D1:神经网络处理器使用处理元件组D将第i行输入数据与b相乘,得到S4个第一中间值;
D2:神经网络处理器使用处理元件组D对第i行输入数据进行左移,将左移后的第i行输出数据与a相乘,得到S4个第二中间值,以及将S4个第二中间值分别与S4个第一中间值累加,得到S4个第三中间值;
D3:神经网络处理器使用处理元件组D对第i行输入数据进行右移,将右移后的第i行输出数据与c相乘,得到S4个第四中间值,以及将S4个第四中间值分别与S4个第三中间值累加,得到S4个第五中间值;
D4:神经网络处理器使用处理元件组D将第(i+1)行输入数据与e相乘,得到S4个第六中间值,以及将S4个第六中间值分别与S4个第五中间值累加,得到S4个第七中间值;
D5:神经网络处理器使用处理元件组D对第(i+1)行输入数据进行左移,将左移后的第(i+1)行输出数据与d相乘,得到S4个第八中间值,以及将S4个第八中间值分别与S4个第七中间值累加,得到S4个第九中间值;
D6:神经网络处理器使用处理元件组D对第(i+1)行输入数据进行右移,将右移后的第(i+1)行输出数据与f相乘,得到S4个第十中间值,以及将S4个第十中间值分别与S4个第九中间值累加,得到S4个第十一中间值;
D7:神经网络处理器使用处理元件组D将第i行输入数据与h相乘,得到S4个第十二中间值,以及将S4个第十二中间值分别与S4个第十一中间值累加,得到S4个第十三中间值;
D8:神经网络处理器使用处理元件组D对第(i+F-1)行输入数据进行左移,将左移后的第(i+F-1)行输出数据与g相乘,得到S4个第十四中间值,以及将S4个第十四中间值分别与S4个第十三中间值累加,得到S4个第十五中间值;
D9:神经网络处理器使用处理元件组D对第(i+F-1)行输入数据进行右移,将右移后的第(i+F-1)行输出数据与i相乘,得到S4个第十六中间值,以及将S4个第十六中间值分别与S4个第十五中间值累加,得到S4个第十七中间值。
处理元件组包括的P1个处理元件并行运算,P1个处理元件中的每个处理元件包括的至少一个乘法累加单元并行运算。
第i行输入数据至第(i+F-1)行输入数据中的每行输入数据进行左移是通过左移程序实现的,第i行输入数据至第(i+F-1)行输入数据中的每行输入数据进行右移是通过右移程序实现的,左移程序和右移程序预先存储于神经网络处理器中。
参见图2E,图2E是本申请实施例提供的一种处理元件组的示意图,处理元件组包括1个High(高位) PE、多个Middle (中间)PE和1个Low(低位) PE,对于每个PE中任意两个相邻的MAC来说,左侧MAC为高位MAC,右侧MAC为低位MAC;
处理元件为Processing Elements,简称PE;乘法累加单元为Multiply Accumulateunit,简称MAC。
对于High PE来说,左移的时候,高位MAC从PE内右侧MAC获取数据,最低位MAC从右侧PE的高位MAC获取数据;右移的时候,最高位MAC从填充总线获取数据,低位MAC从PE内左侧MAC获取数据,填充总线用于填充数据与处理元件之间的数据传输;
对于Low PE来说 ,左移的时候,高位MAC从PE内右侧MAC获取数据,最低位MAC从填充总线获取数据;右移的时候,最高位MAC从左侧PE的低位MAC获取数据,低位MAC从PE内的左侧MAC获取数据;
对于Middle PE来说 ,左移的时候,高位MAC从PE内右侧MAC获取数据,最低位MAC从右侧PE高位MAC获取数据;右移的时候,最高位MAC从左侧PE的低位MAC获取数据,低位MAC从PE内左侧MAC获取数据。
在申请实施例中,一个处理元件组包括的P1个处理元件并行处理一行输入数据,相邻处理元件之间数据可以相互的左移或右移,然而,现有的卷积计算方式每次使用处理元件组对输入矩阵和卷积核矩阵进行卷积计算时,相邻处理元件之间数据不可移动。
当T1和T2不为1且F不为3时,神经网络处理器使用M个处理元件组中的任意一个处理元件组对第一子输入矩阵B和第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到第一子输入矩阵B对应的第一子输出矩阵的实施方式参照当T1和T2均为1且F为3时,神经网络处理器使用M个处理元件组中的任意一个处理元件组对第一子输入矩阵B和第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到第一子输入矩阵B对应的第一子输出矩阵的实施方式,在此不再叙述。
举例来说,如图2F所示,图2F是本申请实施例提供的一种确定第一子输入矩阵B对应的第一子输出矩阵的第i行输出数据的示意图,Q=14,S4=14,F=3,T1=1,i=1,第一子输入矩阵B的第1行输入数据至第3行输入数据中的每行输入数据均包括14个元素值,第一子输入矩阵B对应的子卷积核矩阵包括的9个元素值为(c、b、a、f、e、d、i、h、g),神经网络处理器使用14个乘法累加单元对第一子输入矩阵B的第1行输入数据至第3行输入数据和第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到第一子输入矩阵B对应的第一子输出矩阵的第1行输出数据。
可见,在本示例中,神经网络处理器使用处理元件组D对第一子输入矩阵B包括的S3行输入数据中的第i行输入数据至第(i+F-1)行输入数据和第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到第一子输入矩阵B对应的第一子输出矩阵的第i行输出数据。由于处理元件组D包括的P1个处理元件并行运算,这样有助于提高神经网络处理器中卷积计算的计算效率。
与上述图2A所示的实施例一致的,请参见图3,图3为本申请实施例提供的另一种卷积计算方法的流程示意图,应用于神经网络处理器,神经网络处理器包括P2个处理元件,P2个处理元件中的每个处理元件包括Q个乘法累加单元,P2和Q均为大于1的整数,该卷积计算方法包括步骤301-311,具体如下:
301:神经网络处理器获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,所述N为大于1的整数。
302:神经网络处理器根据网络层与卷积核、卷积步长的映射关系确定所述网络层A对应的目标卷积核和目标卷积步长,所述目标卷积核包括大小相同的R个子卷积核矩阵和偏置值,所述R为大于等于1的整数。
303:神经网络处理器根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据,所述网络层A的第一输入数据包括大小相同的R个第一子输入矩阵。
304:神经网络处理器获取第一子输入矩阵B的大小S3×S4,所述第一子输入矩阵B为所述R个第一子输入矩阵中的任意一个。
305:神经网络处理器计算S4/Q,得到商和第三余数。
306:若所述第三余数为0,则神经网络处理器将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,M个处理元件组中的每个处理元件包括P1个处理元件,以及确定所述P1个处理元件中的每个处理元件包括Q个乘法累加单元。
307:神经网络处理器获取所述第一子输入矩阵B。
308:神经网络处理器根据第一子输入矩阵与子卷积核矩阵的映射关系确定所述第一子输入矩阵B对应的子卷积核矩阵。
309:神经网络处理器使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵。
310:当使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算时,神经网络处理器并行使用所述M个处理元件组中除所述处理元件组D之外的(M-1)个处理元件组对所述R个第一子输入矩阵中除所述第一子输入矩阵B之外的(R-1)个第一子输入矩阵和(R-1)个子卷积核矩阵执行相同操作,得到(R-1)个第一子输出矩阵,所述(R-1)个子卷积核矩阵与所述(R-1)个第一子输入矩阵一一对应,所述(R-1)个第一子输出矩阵与所述(R-1)个第一子输入矩阵一一对应。
311:神经网络处理器根据所述第一子输入矩阵B对应的第一子输出矩阵、所述(R-1)个第一子输出矩阵和所述偏置值确定所述网络层A的输出数据。
需要说明的是,图3所示的方法的各个步骤的具体实现过程可参见上述方法所述的具体实现过程,在此不再叙述。
请参见图4,图4是本申请实施例提供的一种卷积计算装置的功能单元组成框图,应用于神经网络处理器,该卷积计算装置400包括:
获取单元401,用于获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,所述N为大于1的整数;
第一确定单元402,用于根据网络层与卷积核、卷积步长的映射关系确定所述网络层A对应的目标卷积核和目标卷积步长;
第二确定单元403,用于根据所述目标卷积核和所述目标卷积步长确定对所述网络层A的输入数据进行卷积计算所需的M个处理元件组,所述M个处理元件组中的每个处理元件组包括P1个处理元件,所述P1个处理元件中的每个处理元件包括至少一个乘法累加单元,所述M和所述P1均为大于等于1的整数;
计算单元404,用于并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据。
可以看出,在本申请实施例中,神经网络处理器根据网络层与卷积核、卷积步长的映射关系确定网络层A对应的目标卷积核和目标卷积步长;再根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组;然后并行使用M个处理元件组对网络层A的输入数据进行卷积计算,这样有助于提高神经网络处理器中卷积计算的计算效率。
另外,在本申请实施例中,神经网络处理器根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组,这样可以让神经网络处理器其他的处理元件去执行其他的任务,从而让每个处理元件都能发挥最大的作用,进而提高了神经网络处理器的每个处理元件的利用率。
在一个可能的示例中,神经网络处理器包括P2个处理元件,P2个处理元件中的每个处理元件包括Q个乘法累加单元,P2大于等于所述M×所述P1,Q为大于1的整数,在根据所述目标卷积核和所述目标卷积步长确定对所述网络层A的输入数据进行卷积计算所需的M个处理元件组方面,上述第二确定单元403具体用于:
根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据,所述网络层A的第一输入数据包括大小相同的R个第一子输入矩阵,所述R为大于等于1的整数;
根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件。
在一个可能的示例中,网络层A的输入数据包括大小均为S1×S2的R个子输入矩阵,目标卷积核包括大小均为F×F的R个子卷积核矩阵,目标卷积步长为T1×T2,在根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据方面,上述第二确定单元403具体用于:
计算(S1-F)/T2,得到第一余数,以及根据所述第一余数和所述T2确定子输入矩阵C对应的行填充数据,所述子输入矩阵C为所述R个子输入矩阵中的任意一个;
计算(S2-F)/T1,得到第二余数,以及根据所述第二余数和所述T1确定所述子输入矩阵C对应的列填充数据;
根据所述行填充数据和所述列填充数据对所述子输入矩阵C进行填充,得到所述子输入矩阵C对应的第一子输入矩阵;
对所述R个子输入矩阵中除所述子输入矩阵C之外的(R-1)个子输入矩阵执行相同操作,得到(R-1)个第一子输入矩阵,所述(R-1)个第一子输入矩阵与所述(R-1)个子输入矩阵一一对应;
将所述子输入矩阵C对应的第一子输入矩阵和所述(R-1)个第一子输入矩阵确定为所述网络层A的第一输入数据。
在一个可能的示例中,在根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件组方面,上述第二确定单元403具体用于:
获取第一子输入矩阵B的大小S3×S4,所述第一子输入矩阵B为所述R个第一子输入矩阵中的任意一个;
计算S4/Q,得到商和第三余数;
若所述第三余数为0,则将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的每个处理元件均包括Q个乘法累加单元;
若所述第三余数不为0,则将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商加1确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的第1个处理元件至第(P1-1)个处理元件中的每个处理元件包括Q个乘法累加单元和第P1个处理元件包括的乘法累加单元的数量为所述第三余数。
在一个可能的示例中,目标卷积核还包括偏置值,在并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据方面,上述计算单元404具体用于:
获取所述第一子输入矩阵B;
根据第一子输入矩阵与子卷积核矩阵的映射关系确定所述第一子输入矩阵B对应的子卷积核矩阵;
使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵;
当使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算时,并行使用所述M个处理元件组中除所述处理元件组D之外的(M-1)个处理元件组对所述R个第一子输入矩阵中除所述第一子输入矩阵B之外的(R-1)个第一子输入矩阵和(R-1)个子卷积核矩阵执行相同操作,得到(R-1)个第一子输出矩阵,所述(R-1)个子卷积核矩阵与所述(R-1)个第一子输入矩阵一一对应,所述(R-1)个第一子输出矩阵与所述(R-1)个第一子输入矩阵一一对应;
根据所述第一子输入矩阵B对应的第一子输出矩阵、所述(R-1)个第一子输出矩阵和所述偏置值确定所述网络层A的输出数据。
在一个可能的示例中,T1和所述T2均为1,在使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵方面,上述计算单元404具体用于:
获取所述第一子输入矩阵B包括的S3行输入数据中的第i行输入数据至第(i+F-1)行输入数据,所述i为1至(S3-F+1)中的任意一个;
使用所述M个处理元件组中的任意一个处理元件组D对所述第i行输入数据至第(i+F-1)行输入数据和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵的第i行输出数据;
根据(S3-F+1)行输出数据确定所述第一子输入矩阵B对应的第一子输出矩阵,所述(S3-F+1)行输出数据包括所述第i行输出数据。
与上述图2A和图3所示的实施例一致的,请参见图5,图5是本申请实施例提供的一种电子设备的结构示意图,该电子设备500包括处理器、存储器、通信接口以及一个或多个程序,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行以下步骤的指令:
获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,所述N为大于1的整数;
根据网络层与卷积核、卷积步长的映射关系确定所述网络层A对应的目标卷积核和目标卷积步长;
根据所述目标卷积核和所述目标卷积步长确定对所述网络层A的输入数据进行卷积计算所需的M个处理元件组,所述M个处理元件组中的每个处理元件组包括P1个处理元件,所述P1个处理元件中的每个处理元件包括至少一个乘法累加单元,所述M和所述P1均为大于等于1的整数;
并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据。
可以看出,在本申请实施例中,神经网络处理器根据网络层与卷积核、卷积步长的映射关系确定网络层A对应的目标卷积核和目标卷积步长;再根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组;然后并行使用M个处理元件组对网络层A的输入数据进行卷积计算,这样有助于提高神经网络处理器中卷积计算的计算效率。
另外,在本申请实施例中,神经网络处理器根据目标卷积核和目标卷积步长确定对网络层A的输入数据进行卷积计算所需的M个处理元件组,这样可以让神经网络处理器其他的处理元件去执行其他的任务,从而让每个处理元件都能发挥最大的作用,进而提高了神经网络处理器的每个处理元件的利用率。
在一个可能的示例中,神经网络处理器包括P2个处理元件,P2个处理元件中的每个处理元件包括Q个乘法累加单元,P2大于等于所述M×所述P1,Q为大于1的整数,在根据所述目标卷积核和所述目标卷积步长确定对所述网络层A的输入数据进行卷积计算所需的M个处理元件组方面,上述程序包括具体用于执行以下步骤的指令:
根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据,所述网络层A的第一输入数据包括大小相同的R个第一子输入矩阵,所述R为大于等于1的整数;
根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件组。
在一个可能的示例中,网络层A的输入数据包括大小均为S1×S2的R个子输入矩阵,目标卷积核包括大小均为F×F的R个子卷积核矩阵,目标卷积步长为T1×T2,在根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据方面,上述程序包括具体用于执行以下步骤的指令:
计算(S1-F)/T2,得到第一余数,以及根据所述第一余数和所述T2确定子输入矩阵C对应的行填充数据,所述子输入矩阵C为所述R个子输入矩阵中的任意一个;
计算(S2-F)/T1,得到第二余数,以及根据所述第二余数和所述T1确定所述子输入矩阵C对应的列填充数据;
根据所述行填充数据和所述列填充数据对所述子输入矩阵C进行填充,得到所述子输入矩阵C对应的第一子输入矩阵;
对所述R个子输入矩阵中除所述子输入矩阵C之外的(R-1)个子输入矩阵执行相同操作,得到(R-1)个第一子输入矩阵,所述(R-1)个第一子输入矩阵与所述(R-1)个子输入矩阵一一对应;
将所述子输入矩阵C对应的第一子输入矩阵和所述(R-1)个第一子输入矩阵确定为所述网络层A的第一输入数据。
在一个可能的示例中,在根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件组方面,上述程序包括具体用于执行以下步骤的指令:
获取第一子输入矩阵B的大小S3×S4,所述第一子输入矩阵B为所述R个第一子输入矩阵中的任意一个;
计算S4/Q,得到商和第三余数;
若所述第三余数为0,则将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的每个处理元件包括Q个乘法累加单元;
若所述第三余数不为0,则将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商加1确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的第1个处理元件至第(P1-1)个处理元件中的每个处理元件包括Q个乘法累加单元和第P1个处理元件包括的乘法累加单元的数量为所述第三余数。
在一个可能的示例中,目标卷积核还包括偏置值,在并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据方面,上述程序包括具体用于执行以下步骤的指令:
获取所述第一子输入矩阵B;
根据第一子输入矩阵与子卷积核矩阵的映射关系确定所述第一子输入矩阵B对应的子卷积核矩阵;
使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵;
当使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算时,并行使用所述M个处理元件组中除所述处理元件组D之外的(M-1)个处理元件组对所述R个第一子输入矩阵中除所述第一子输入矩阵B之外的(R-1)个第一子输入矩阵和(R-1)个子卷积核矩阵执行相同操作,得到(R-1)个第一子输出矩阵,所述(R-1)个子卷积核矩阵与所述(R-1)个第一子输入矩阵一一对应,所述(R-1)个第一子输出矩阵与所述(R-1)个第一子输入矩阵一一对应;
根据所述第一子输入矩阵B对应的第一子输出矩阵、所述(R-1)个第一子输出矩阵和所述偏置值确定所述网络层A的输出数据。
在一个可能的示例中,T1和所述T2均为1,在使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵方面,上述程序包括具体用于执行以下步骤的指令:
获取所述第一子输入矩阵B包括的S3行输入数据中的第i行输入数据至第(i+F-1)行输入数据,所述i为1至(S3-F+1)中的任意一个;
使用所述M个处理元件组中的任意一个处理元件组D对所述第i行输入数据至第(i+F-1)行输入数据和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵的第i行输出数据;
根据(S3-F+1)行输出数据确定所述第一子输入矩阵B对应的第一子输出矩阵,所述(S3-F+1)行输出数据包括所述第i行输出数据。
本申请实施例还提供一种神经网络处理器,该神经网络处理器用于实现如上述方法实施例中记载的任一方法的部分或全部步骤。
本申请实施例还提供一种神经网络处理器,该神经网络处理器包括如上述装置实施例中记载的任一卷积计算装置。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory ,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实现方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种卷积计算方法,其特征在于,应用于神经网络处理器,所述神经网络处理器包括P2个处理元件,所述P2个处理元件中的每个处理元件包括Q个乘法累加单元,所述Q为大于1的整数,包括:
获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,所述N为大于1的整数;
根据网络层与卷积核、卷积步长的映射关系确定所述网络层A对应的目标卷积核和目标卷积步长;
根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据,所述网络层A的第一输入数据包括大小相同的R个第一子输入矩阵,所述R为大于等于1的整数;
根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件组,所述M个处理元件组中的每个处理元件组包括P1个处理元件,所述P1个处理元件中的每个处理元件包括至少一个乘法累加单元,所述P2大于等于所述M×所述P1,所述M和所述P1均为大于等于1的整数;
并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据。
2.根据权利要求1所述的方法,其特征在于,所述网络层A的输入数据包括大小均为S1×S2的R个子输入矩阵,所述目标卷积核包括大小均为F×F的R个子卷积核矩阵,所述目标卷积步长为T1×T2,所述根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据,包括:
计算(S1-F)/T2,得到第一余数,以及根据所述第一余数和所述T2确定子输入矩阵C对应的行填充数据,所述子输入矩阵C为所述R个子输入矩阵中的任意一个;
计算(S2-F)/T1,得到第二余数,以及根据所述第二余数和所述T1确定所述子输入矩阵C对应的列填充数据;
根据所述行填充数据和所述列填充数据对所述子输入矩阵C进行填充,得到所述子输入矩阵C对应的第一子输入矩阵;
对所述R个子输入矩阵中除所述子输入矩阵C之外的(R-1)个子输入矩阵执行相同操作,得到(R-1)个第一子输入矩阵,所述(R-1)个第一子输入矩阵与所述(R-1)个子输入矩阵一一对应;
将所述子输入矩阵C对应的第一子输入矩阵和所述(R-1)个第一子输入矩阵确定为所述网络层A的第一输入数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件组,包括:
获取第一子输入矩阵B的大小S3×S4,所述第一子输入矩阵B为所述R个第一子输入矩阵中的任意一个;
计算S4/Q,得到商和第三余数;
若所述第三余数为0,则将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的每个处理元件包括Q个乘法累加单元;
若所述第三余数不为0,则将所述网络层A的第一输入数据包括的第一子输入矩阵的数量确定为M和将所述商加1确定为P1,所述M是对所述网络层A的第一输入数据进行卷积计算所需的处理元件组的数量,以及确定所述P1个处理元件中的第1个处理元件至第(P1-1)个处理元件中的每个处理元件包括Q个乘法累加单元和第P1个处理元件包括的乘法累加单元的数量为所述第三余数。
4.根据权利要求3所述的方法,其特征在于,所述目标卷积核还包括偏置值,所述并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据,包括:
获取所述第一子输入矩阵B;
根据第一子输入矩阵与子卷积核矩阵的映射关系确定所述第一子输入矩阵B对应的子卷积核矩阵;
使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵;
当使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算时,并行使用所述M个处理元件组中除所述处理元件组D之外的(M-1)个处理元件组对所述R个第一子输入矩阵中除所述第一子输入矩阵B之外的(R-1)个第一子输入矩阵和(R-1)个子卷积核矩阵执行相同操作,得到(R-1)个第一子输出矩阵,所述(R-1)个子卷积核矩阵与所述(R-1)个第一子输入矩阵一一对应,所述(R-1)个第一子输出矩阵与所述(R-1)个第一子输入矩阵一一对应;
根据所述第一子输入矩阵B对应的第一子输出矩阵、所述(R-1)个第一子输出矩阵和所述偏置值确定所述网络层A的输出数据。
5.根据权利要求4所述的方法,其特征在于,所述T1和所述T2均为1,所述使用所述M个处理元件组中的任意一个处理元件组D对所述第一子输入矩阵B和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵,包括:
获取所述第一子输入矩阵B包括的S3行输入数据中的第i行输入数据至第(i+F-1)行输入数据,所述i为1至(S3-F+1)中的任意一个;
使用所述M个处理元件组中的任意一个处理元件组D对所述第i行输入数据至第(i+F-1)行输入数据和所述第一子输入矩阵B对应的子卷积核矩阵进行卷积计算,得到所述第一子输入矩阵B对应的第一子输出矩阵的第i行输出数据;
根据(S3-F+1)行输出数据确定所述第一子输入矩阵B对应的第一子输出矩阵,所述(S3-F+1)行输出数据包括所述第i行输出数据。
6.一种卷积计算装置,其特征在于,应用于神经网络处理器,所述神经网络处理器包括P2个处理元件,所述P2个处理元件中的每个处理元件包括Q个乘法累加单元,所述Q为大于1的整数,包括:
获取单元,用于获取卷积神经网络模型包括的N个网络层中的任意一个网络层A的输入数据,所述N为大于1的整数;
第一确定单元,用于根据网络层与卷积核、卷积步长的映射关系确定所述网络层A对应的目标卷积核和目标卷积步长;
第二确定单元,用于根据所述目标卷积核和所述目标卷积步长对所述网络层A的输入数据进行填充,得到所述网络层A的第一输入数据,所述网络层A的第一输入数据包括大小相同的R个第一子输入矩阵,所述R为大于等于1的整数;根据所述R个第一子输入矩阵中的任意一个第一子输入矩阵B、所述P2和所述Q确定对所述网络层A的第一输入数据进行卷积计算所需的M个处理元件组,所述M个处理元件组中的每个处理元件组包括P1个处理元件,所述P1个处理元件中的每个处理元件包括至少一个乘法累加单元,所述P2大于等于所述M×所述P1,所述M和所述P1均为大于等于1的整数;
计算单元,用于并行使用所述M个处理元件组对所述网络层A的输入数据进行卷积计算,得到所述网络层A的输出数据。
7.一种神经网络处理器,其特征在于,所述神经网络处理器用于实现如权利要求1-5任一项所述的方法的部分或全部步骤。
8.一种神经网络处理器,其特征在于,所述神经网络处理器包括如权利要求6所述的卷积计算装置。
9.一种电子设备,其特征在于,包括处理器、存储器、通信接口以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-5任一项所述的方法中的部分或全部步骤的指令。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行,以实现如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911080608.9A CN110580522A (zh) | 2019-11-07 | 2019-11-07 | 卷积计算方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911080608.9A CN110580522A (zh) | 2019-11-07 | 2019-11-07 | 卷积计算方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110580522A true CN110580522A (zh) | 2019-12-17 |
Family
ID=68815457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911080608.9A Pending CN110580522A (zh) | 2019-11-07 | 2019-11-07 | 卷积计算方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110580522A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797972A (zh) * | 2020-05-27 | 2020-10-20 | 北京迈格威科技有限公司 | 应用卷积神经网络处理数据的方法、装置和电子系统 |
WO2021139156A1 (zh) * | 2019-11-07 | 2021-07-15 | 深圳云天励飞技术股份有限公司 | 卷积计算方法及相关设备 |
CN113222125A (zh) * | 2020-01-21 | 2021-08-06 | 北京希姆计算科技有限公司 | 卷积运算方法及芯片 |
WO2023173298A1 (en) * | 2022-03-15 | 2023-09-21 | Huawei Technologies Co.,Ltd. | Methods and systems for distributed training a deep neural network |
-
2019
- 2019-11-07 CN CN201911080608.9A patent/CN110580522A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021139156A1 (zh) * | 2019-11-07 | 2021-07-15 | 深圳云天励飞技术股份有限公司 | 卷积计算方法及相关设备 |
US11551438B2 (en) | 2019-11-07 | 2023-01-10 | Shenzhen Intellifusion Technologies Co., Ltd. | Image analysis method and related device |
CN113222125A (zh) * | 2020-01-21 | 2021-08-06 | 北京希姆计算科技有限公司 | 卷积运算方法及芯片 |
CN111797972A (zh) * | 2020-05-27 | 2020-10-20 | 北京迈格威科技有限公司 | 应用卷积神经网络处理数据的方法、装置和电子系统 |
WO2023173298A1 (en) * | 2022-03-15 | 2023-09-21 | Huawei Technologies Co.,Ltd. | Methods and systems for distributed training a deep neural network |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110580522A (zh) | 卷积计算方法及相关设备 | |
EP3373210B1 (en) | Transposing neural network matrices in hardware | |
CN112214726B (zh) | 运算加速器 | |
CN107145939B (zh) | 一种低计算能力处理设备的计算机视觉处理方法及装置 | |
CN108205700B (zh) | 神经网络运算装置和方法 | |
CN110390075B (zh) | 矩阵预处理方法、装置、终端及可读存储介质 | |
US11328395B2 (en) | Image processing method, image processing device, electronic equipment and computer readable storage medium | |
CN111428879B (zh) | 数据处理方法、装置、芯片以及计算机可读存储介质 | |
CN111476718B (zh) | 一种图像放大方法、装置、存储介质及终端设备 | |
CN111222465B (zh) | 基于卷积神经网络的图像分析方法及相关设备 | |
CN111814957B (zh) | 神经网络运算方法及相关设备 | |
CN110109646B (zh) | 数据处理方法、装置和乘加器及存储介质 | |
CN111860276A (zh) | 人体关键点检测方法、装置、网络设备及存储介质 | |
CN111639701B (zh) | 一种图像特征提取的方法、系统、设备及可读存储介质 | |
CN111639699A (zh) | 一种图像特征提取的方法、系统、设备及可读存储介质 | |
CN116188942A (zh) | 一种图像卷积方法、装置、设备及存储介质 | |
CN110909872A (zh) | 集成电路芯片装置及相关产品 | |
CN113918120A (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
CN101561797A (zh) | 在处理系统上对矩阵进行奇异值、特征值分解的方法和装置 | |
CN112967211A (zh) | 一种图像处理方法、装置、计算机设备及存储介质 | |
CN115129297B (zh) | 多点乘运算系统、方法、图形处理器、电子装置及设备 | |
CN110414663B (zh) | 神经网络的卷积实现方法及相关产品 | |
CN107301017B (zh) | 一种数据存储方法及装置 | |
CN115408061A (zh) | 复数矩阵运算的硬件加速方法、装置、芯片及存储介质 | |
CN114662689A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191217 |