神经网络处理器和卷积神经网络处理器的制造方法
【技术领域】
[0001]本发明涉及电子芯片技术领域,具体主要涉及了神经网络处理器和卷积神经网络处理器。
【背景技术】
[0002]神经网络及深度学习算法已经获得了非常成功的应用,并处于迅速发展的过程中。业界普遍预期这种新的计算方式有助于实现更为普遍和更为复杂的智能应用。
[0003]基于此商业背景,主要厂家开始投入芯片及系统解决方案的开发。由于复杂应用对计算规模的需要,高能效是这个领域技术解决方案的核心追求。脉冲激发(Spiking)机制的神经网络实现方式,由于其能效率上的好处,得到了业内高度重视,例如IBM及Qualcomm公司都基于Spiking机制开发自己的芯片解决方案。
[0004]与此同时,谷歌、百度和facebook等公司已经在现有的计算平台上实施应用开发。直接开发应用的公司普遍认为,现有基于Spiking机制的芯片解决方案限定输入输出变量只能为0或1,使得这些解决方案的应用范围受到了极大限制。
【发明内容】
[0005]本发明的实施例提供神经网络处理器和卷积神经网络处理器,以期拓展神经网络运算的应用范围。
[0006]本发明实施例第一方面提供一种神经网络处理器,包括:
[0007]第一权重预处理器和第一运算阵列;
[0008]所述第一权重预处理器用于接收包括Μ个元素的向量Vx,所述向量Vx的元素Vx-1的归一化值域空间是大于或等于0且小于或等于1的实数,所述元素Vx-1为所述Μ个元素中的任意1个;利用Μ*Ρ权重向量矩阵Qx对所述向量Vx的Μ个元素进行加权运算以得到Μ个加权运算结果向量,所述Μ个加权运算结果向量与所述Μ个元素之间--对应,所述Μ个加权运算结果向量之中的每个加权运算结果向量包括Ρ个元素;向所述第一运算阵列输出所述Μ个加权运算结果,所述Μ和所述Ρ为大于1的整数;
[0009]所述第一运算阵列,用于将所述Μ个加权运算结果向量中的位置相同的元素进行累加以得到Ρ个累加值,根据所述Ρ个累加值得到包括Ρ个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
[0010]结合第一方面,在第一方面的第一种可能的实施方式中,所述向量Vx的元素Vx-1的值域空间为集合{0,1-1/(2'N),1/(2'N),1};或者所述向量Vx的元素Vx-1的值域空间为集合{0,1-1/(2~N),1/(2~N),1}的子集,所述N为正整数。
[0011 ] 结合第一方面或第一方面的第一种可能的实施方式中,在第一方面的第二种可能的实施方式中,
[0012]所述向量Vy的元素Vy-j的值域空间为集合{0,1-1/(2'N),1/(2'N),1}或者所述向量Vy的元素Vy-j的值域空间为集合{0,1-1/(2~N),1/(2~N),1}的子集,所述N为正整数,所述元素Vy-j为所述向量Vy的P个元素中的任意1个。
[0013]结合第一方面或第一方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第一方面的第三种可能的实施方式中,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
[0014]结合第一方面或第一方面的第一种至第三种可能实施方式中的任意一种可能的实施方式,在第一方面的第四种可能的实施方式中,在所述元素Vx-1的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-1对应的权重向量Qx-1,被作为所述Μ个加权运算结果向量中与元素Vx-1对应的加权运算结果向量。
[0015]结合第一方面或第一方面的第一种至第四种可能实施方式中的任意一种可能的实施方式,在第一方面的第五种可能的实施方式中,
[0016]所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
[0017]或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0, -1,-1/(2~N),1/(2~N),-2~N,2~N};
[0018]或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2~N),1/(2~N),-2~N,2~N}的子集。
[0019]结合第一方面或第一方面的第一种至第五种可能实施方式中的任意一种可能的实施方式,在第一方面的第六种可能的实施方式中,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述Μ个加权运算结果向量中的位置相同的元素进行累加以得到Ρ个累加值。
[0020]结合第一方面或第一方面的第一种至第六种可能实施方式中的任意一种可能的实施方式,在第一方面的第七种可能的实施方式中,所述第一运算阵列根据所述Ρ个累加值得到包括Ρ个元素的向量Vy,包括:
[0021]在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
[0022]或者,
[0023]将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
[0024]或者,
[0025]将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
[0026]结合第一方面或第一方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第一方面的第八种可能的实施方式中,所述第一权重预处理器还用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间—对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,所述T为大于1的整数;
[0027]所述第一运算阵列还用于,将所述P个加权运算结果向量中的位置相同的元素进行累加以得到τ个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
[0028]结合第一方面或第一方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第一方面的第九种可能的实施方式中,所述神经网络处理器还包括第二运算阵列,
[0029]其中,所述第一权重预处理器还用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间—对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第二运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
[0030]其中,所述第二运算阵列,用于将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
[0031]结合第一方面或第一方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第一方面的第十种可能的实施方式中,所述神经网络处理器还包括第二权重预处理器,
[0032]其中,所述第二权重预处理器用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间—对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
[0033]其中,所述第一运算阵列,用于将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
[0034]本发明实施例第二方面提供一种神经网络处理器,包括:
[0035]第一权重预处理器和第一运算阵列;
[0036]其中,所述第一权重预处理器,用于接收包括Μ个元素的向量Vx,所述向量Vx的元素Vx-1的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-1为所述Μ个元素之中的任意1个;向所述运算阵列输出Μ*Ρ权重向量矩阵Qx和所述向量Vx,所述Μ和所述Ρ为大于1的整数;
[0037]其中,所述第一运算阵列,利用Μ*Ρ权重向量矩阵Qx对所述向量Vx的Μ个元素进行加权运算以得到Μ个加权运算结果向量,所述Μ个加权运算结果向量与所述Μ个元素之间--对应,所述Μ个加权运算结果向量之中的每个加权运算结果向量包括Ρ个元素;将所述Μ个加权运算结果向量中的位置相同的元素进行累加以得到Ρ个累加值,根据所述Ρ个累加值得到包括Ρ个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
[0038]结合第二方面,在第二方面的第一种可能的实施方式中,所述向量Vx的元素Vx-1的值域空间为集合{0,1-1/(2'N),1/(2'N),1};或者所述向量Vx的元素Vx-1的值域空间为集合{0,1-1/(2~N),1/(2~N),1}的子集,所述N为正整数。
[0039]结合第二方面或第二方面的第一种种可能实施方式,在第二方面的第二种可能的实施方式中,
[0040]所述向量Vy的元素Vy-j的值域空间为集合{0,1-1/(2'N),1/(2'N),1}或者所述向量Vy的元素Vy-j的值域空间为集合{0,1-1/(2~N),1/(2~N),1}的子集,其中,所述N为正整数,所述元素Vy-j为所述向量Vy的P个元素中的任意1个。
[0041]结合第二方面或第二方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第二方面的第三种可能的实施方式中,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
[0042]结合第二方面或第二方面的第一种至第三种可能实施方式中的任意一种可能的实施方式,在第二方面的第四种可能的实施方式中,在所述元素Vx-1的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-1对应的权重向量Qx-1,被作为所述Μ个加权运算结果向量中与元素Vx-1对应的加权运算结果向量。
[0043]结合第二方面或第二方面的第一种至第四种可能实施方式中的任意一种可能的实施方式,在第二方面的第五种可能的实施方式中,
[0044]所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
[0045]或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0, -1,-1/(2~N),1/(2~N),-2~N,2~N},
[0046]或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2~N),1/(2~N),-2~N,2~N}的子集。
[0047]结合第二方面或第二方面的第一种至第五种可能实施方式中的任意一种可能的实施方式,在第二方面的第六种可能的实施方式中,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述Μ个加权运算结果向量中的位置相同的元素进行累加以得到Ρ个累加值。
[0048]结合第二方面的第六种可能实施方式,在第二方面的第七种可能的实施方式中,所述Ρ个累加器用于通过累加方式,利用Μ*Ρ权重向量矩阵Qx对所述向量Vx的Μ个元素进行加权运算以得到Μ个加权运算结果向量,所述累加方式基于所述权重向量矩阵Qx的元素取值来确定。
[0049]结合第二方面或第二方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第二方面的第八种可能的实施方式中,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
[0050]在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
[0051]或者,
[0052]将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
[0053]或者,
[0054]将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
[0055]结合第二方面或第二方面的第一种至第八种可能实施方式中的任意一种可能的实施方式,在第二方面的第九种可能的实施方式中,所述第一权重预处理器还用于,接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy所述T为大于1的整数;
[0056]其中,所述第一运算阵列,用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间--对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括τ个元素;
将所述ρ个加权运算结果向量中的位置相同的元素进行累加以得到τ个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
[0057]结合第二方面或第二方面的第一种至第八种可能实施方式中的任意一种可能的实施方式,在第二方面的第十种可能的实施方式中,所述神经网络处理器还包括第二运算阵列,
[0058]所述第一权重预处理器还用于,接收所述向量Vy,向所述第二运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
[0059]其中,所述第二运算阵列,用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间--对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括τ个元素;
将所述ρ个加权运算结果向量中的位置相同的元素进行累加以得到τ个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
[0060]结合第二方面或第二方面的第一种至第八种可能实施方式中的任意一种可能的实施方式,在第二方面的第十一种可能的实施方式中,所述神经网络处理器还包括第二权重预处理器,
[0061]所述第二权重预处理器还用于,接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
[0062]其中,所述第一运算阵列还用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间--对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括τ个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值;根据所述T个累加值得到包括Τ个元素的向量Vz,所述T个元素与所述T个累加值之间一一对应;输出所述向量Vz。
[0063]本发明实施例第三方面提供一种卷积神经网络处理器,包括:
[0064]第一卷积缓存器、第一权重预处理器和第一累加运算阵列;
[0065]其中,所述第一卷积缓存器,用于缓存卷积运算所需要的图像数据的向量Vx,所述向量Vx的元素Vx-1的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-1为所述向量Vx的Μ个元素中的任意1个;
[0066]所述第一权重预处理器,用于利用Μ*Ρ权重向量矩阵Qx对所述向量Vx的Μ个元素进行加权运算以得到Μ个加权运算结果向量,所述Μ个加权运算结果向量与所述Μ个元素之间--对应,所述Μ个加权运算结果向量之中的每个加权运算结果向量包括Ρ个元素;
向所述第一累加运算阵列输出所述Μ个加权运算结果,所述Μ和所述Ρ为大于1的整数;
[0067]所述第一累加运算阵列,用于将所述Μ个加权运算结果向量中的位置相同的元素进行累加以得到Ρ个累加值,根据所述Ρ个累加值得到包括Ρ个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
[0068]结合第三方面,在第三方面的第一种可能的实施方式中,所述向量Vx的元素Vx-1的值域空间为集合{0,1-1/(2'N),1/(2'N),1};或者所述向量Vx的元素Vx-1的值域空间为集合{0,1-1/(2~N),1/(2~N),1}的子集,所述N为正整数。
[0069]结合第三方面或第三方面的第一种可能的实施方式中,在第三方面的第二种可能的实施方式中,
[0070]所述向量Vy的元素Vy-j的值域空间为集合{0,1-1/(2'N),1/(2'N),1}或者所述向量V