CN105260776A - 神经网络处理器和卷积神经网络处理器 - Google Patents

神经网络处理器和卷积神经网络处理器 Download PDF

Info

Publication number
CN105260776A
CN105260776A CN201510573772.9A CN201510573772A CN105260776A CN 105260776 A CN105260776 A CN 105260776A CN 201510573772 A CN201510573772 A CN 201510573772A CN 105260776 A CN105260776 A CN 105260776A
Authority
CN
China
Prior art keywords
vectorial
operation result
accumulated value
result vector
ranking operation
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.)
Granted
Application number
CN201510573772.9A
Other languages
English (en)
Other versions
CN105260776B (zh
Inventor
费旭东
周红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510573772.9A priority Critical patent/CN105260776B/zh
Publication of CN105260776A publication Critical patent/CN105260776A/zh
Application granted granted Critical
Publication of CN105260776B publication Critical patent/CN105260776B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Medicinal Preparation (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例公开了神经网络处理器和卷积神经网络处理器。一种神经网络处理器可以包括:第一权重预处理器和第一运算阵列;所述第一权重预处理器用于接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或等于0且小于或等于1的实数;利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量;所述第一运算阵列用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,输出所述向量Vy。本发明实施例提供的技术方案有利于拓展神经网络运算的应用范围。

Description

神经网络处理器和卷积神经网络处理器
技术领域
本发明涉及电子芯片技术领域,具体主要涉及了神经网络处理器和卷积神经网络处理器。
背景技术
神经网络及深度学习算法已经获得了非常成功的应用,并处于迅速发展的过程中。业界普遍预期这种新的计算方式有助于实现更为普遍和更为复杂的智能应用。
基于此商业背景,主要厂家开始投入芯片及***解决方案的开发。由于复杂应用对计算规模的需要,高能效是这个领域技术解决方案的核心追求。脉冲激发(Spiking)机制的神经网络实现方式,由于其能效率上的好处,得到了业内高度重视,例如IBM及Qualcomm公司都基于Spiking机制开发自己的芯片解决方案。
与此同时,谷歌、百度和facebook等公司已经在现有的计算平台上实施应用开发。直接开发应用的公司普遍认为,现有基于Spiking机制的芯片解决方案限定输入输出变量只能为0或1,使得这些解决方案的应用范围受到了极大限制。
发明内容
本发明的实施例提供神经网络处理器和卷积神经网络处理器,以期拓展神经网络运算的应用范围。
本发明实施例第一方面提供一种神经网络处理器,包括:
第一权重预处理器和第一运算阵列;
所述第一权重预处理器用于接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或等于0且小于或等于1的实数,所述元素Vx-i为所述M个元素中的任意1个;利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一运算阵列输出所述M个加权运算结果,所述M和所述P为大于1的整数;
所述第一运算阵列,用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
结合第一方面,在第一方面的第一种可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
结合第一方面或第一方面的第一种可能的实施方式中,在第一方面的第二种可能的实施方式中,
所述向量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个。
结合第一方面或第一方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第一方面的第三种可能的实施方式中,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
结合第一方面或第一方面的第一种至第三种可能实施方式中的任意一种可能的实施方式,在第一方面的第四种可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
结合第一方面或第一方面的第一种至第四种可能实施方式中的任意一种可能的实施方式,在第一方面的第五种可能的实施方式中,
所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N};
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
结合第一方面或第一方面的第一种至第五种可能实施方式中的任意一种可能的实施方式,在第一方面的第六种可能的实施方式中,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
结合第一方面或第一方面的第一种至第六种可能实施方式中的任意一种可能的实施方式,在第一方面的第七种可能的实施方式中,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
或者,
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
结合第一方面或第一方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第一方面的第八种可能的实施方式中,所述第一权重预处理器还用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,所述T为大于1的整数;
所述第一运算阵列还用于,将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
结合第一方面或第一方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第一方面的第九种可能的实施方式中,所述神经网络处理器还包括第二运算阵列,
其中,所述第一权重预处理器还用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第二运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
其中,所述第二运算阵列,用于将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
结合第一方面或第一方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第一方面的第十种可能的实施方式中,所述神经网络处理器还包括第二权重预处理器,
其中,所述第二权重预处理器用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
其中,所述第一运算阵列,用于将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
本发明实施例第二方面提供一种神经网络处理器,包括:
第一权重预处理器和第一运算阵列;
其中,所述第一权重预处理器,用于接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述M个元素之中的任意1个;向所述运算阵列输出M*P权重向量矩阵Qx和所述向量Vx,所述M和所述P为大于1的整数;
其中,所述第一运算阵列,利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
结合第二方面,在第二方面的第一种可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
结合第二方面或第二方面的第一种种可能实施方式,在第二方面的第二种可能的实施方式中,
所述向量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个。
结合第二方面或第二方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第二方面的第三种可能的实施方式中,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
结合第二方面或第二方面的第一种至第三种可能实施方式中的任意一种可能的实施方式,在第二方面的第四种可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
结合第二方面或第二方面的第一种至第四种可能实施方式中的任意一种可能的实施方式,在第二方面的第五种可能的实施方式中,
所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N},
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
结合第二方面或第二方面的第一种至第五种可能实施方式中的任意一种可能的实施方式,在第二方面的第六种可能的实施方式中,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
结合第二方面的第六种可能实施方式,在第二方面的第七种可能的实施方式中,所述P个累加器用于通过累加方式,利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述累加方式基于所述权重向量矩阵Qx的元素取值来确定。
结合第二方面或第二方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第二方面的第八种可能的实施方式中,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
或者,
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
结合第二方面或第二方面的第一种至第八种可能实施方式中的任意一种可能的实施方式,在第二方面的第九种可能的实施方式中,所述第一权重预处理器还用于,接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy所述T为大于1的整数;
其中,所述第一运算阵列,用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
结合第二方面或第二方面的第一种至第八种可能实施方式中的任意一种可能的实施方式,在第二方面的第十种可能的实施方式中,所述神经网络处理器还包括第二运算阵列,
所述第一权重预处理器还用于,接收所述向量Vy,向所述第二运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第二运算阵列,用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
结合第二方面或第二方面的第一种至第八种可能实施方式中的任意一种可能的实施方式,在第二方面的第十一种可能的实施方式中,所述神经网络处理器还包括第二权重预处理器,
所述第二权重预处理器还用于,接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第一运算阵列还用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值;根据所述T个累加值得到包括T个元素的向量Vz,所述T个元素与所述T个累加值之间一一对应;输出所述向量Vz。
本发明实施例第三方面提供一种卷积神经网络处理器,包括:
第一卷积缓存器、第一权重预处理器和第一累加运算阵列;
其中,所述第一卷积缓存器,用于缓存卷积运算所需要的图像数据的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述向量Vx的M个元素中的任意1个;
所述第一权重预处理器,用于利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一累加运算阵列输出所述M个加权运算结果,所述M和所述P为大于1的整数;
所述第一累加运算阵列,用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
结合第三方面,在第三方面的第一种可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
结合第三方面或第三方面的第一种可能的实施方式中,在第三方面的第二种可能的实施方式中,
所述向量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个。
结合第三方面或第三方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第三方面的第三种可能的实施方式中,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
结合第三方面或第三方面的第一种至第三种可能实施方式中的任意一种可能的实施方式,在第三方面的第四种可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
结合第三方面或第三方面的第一种至第四种可能实施方式中的任意一种可能的实施方式,在第三方面的第五种可能的实施方式中,
所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N};
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
结合第三方面或第三方面的第一种至第五种可能实施方式中的任意一种可能的实施方式,在第三方面的第六种可能的实施方式中,所述卷积神经网络处理器还包括:第二卷积缓存器和第二累加运算阵列;
所述第二卷积缓存器,用于缓存卷积运算所需要的所述向量Vy,所述向量Vy的元素Vy-j的值域空间是大于或等于0且小于或等于1的实数,所述元素Vy-j为所述向量Vy的M个元素中的任意1个;
所述第一权重预处理器还用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素,向所述第二累加运算阵列输出所述P个加权运算结果,所述T为大于1的整数;
所述第二累加运算阵列用于,将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
本发明实施例第四方面提供一种神经网络处理器的数据处理方法,神经网络处理器包括第一权重预处理器和第一运算阵列,所述方法包括:
所述第一权重预处理器接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或等于0且小于或等于1的实数,所述元素Vx-i为所述M个元素中的任意1个;利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一运算阵列输出所述M个加权运算结果,其中,所述M和所述P为大于1的整数;
所述第一运算阵列将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
结合第四方面,在第四方面的第一种可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
结合第四方面或第四方面的第一种可能的实施方式中,在第四方面的第二种可能的实施方式中,
所述向量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个。
结合第四方面或第四方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第四方面的第三种可能的实施方式中,
所述方法还包括:所述第一权重预处理器从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
结合第四方面或第四方面的第一种至第三种可能实施方式中的任意一种可能的实施方式,在第四方面的第四种可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
结合第四方面或第四方面的第一种至第四种可能实施方式中的任意一种可能的实施方式,在第四方面的第五种可能的实施方式中,
所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N};
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
结合第四方面或第四方面的第一种至第五种可能实施方式中的任意一种可能的实施方式,在第四方面的第六种可能的实施方式中,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
结合第四方面或第四方面的第一种至第六种可能实施方式中的任意一种可能的实施方式,在第四方面的第七种可能的实施方式中,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
或者,
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
结合第四方面或第四方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第四方面的第八种可能的实施方式中,
所述方法还包括:所述第一权重预处理器接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,所述T为大于1的整数;所述第一运算阵列将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
结合第四方面或第四方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第四方面的第九种可能的实施方式中,所述神经网络处理器还包括第二运算阵列,所述方法还包括:
所述第一权重预处理器接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第二运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
其中,所述第二运算阵列将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
结合第四方面或第四方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第四方面的第十种可能的实施方式中,所述神经网络处理器还包括第二权重预处理器,所述方法还包括:
所述第二权重预处理器接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
其中,所述第一运算阵列将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
本发明实施例第五方面提供一种神经网络处理器的数据处理方法,神经网络处理器包括第一权重预处理器和第一运算阵列;
所述方法包括:所述第一权重预处理器接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述M个元素之中的任意1个;向所述运算阵列输出M*P权重向量矩阵Qx和所述向量Vx,所述M和所述P为大于1的整数;
所述第一运算阵列利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
结合第五方面,在第五方面的第一种可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
结合第五方面或第五方面的第一种种可能实施方式,在第五方面的第二种可能的实施方式中,
所述向量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个。
结合第五方面或第五方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第五方面的第三种可能的实施方式中,
所述方法还包括:所述第一权重预处理器从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
结合第五方面或第五方面的第一种至第三种可能实施方式中的任意一种可能的实施方式,在第五方面的第四种可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
结合第五方面或第五方面的第一种至第四种可能实施方式中的任意一种可能的实施方式,在第五方面的第五种可能的实施方式中,
所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N},
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
结合第五方面或第五方面的第一种至第五种可能实施方式中的任意一种可能的实施方式,在第五方面的第六种可能的实施方式中,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
结合第五方面的第六种可能实施方式,在第五方面的第七种可能的实施方式中,所述P个累加器用于通过累加方式,利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述累加方式基于所述权重向量矩阵Qx的元素取值来确定。
结合第五方面或第五方面的第一种至第七种可能实施方式中的任意一种可能的实施方式,在第五方面的第八种可能的实施方式中,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
或者,
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
结合第五方面或第五方面的第一种至第八种可能实施方式中的任意一种可能的实施方式,在第五方面的第九种可能的实施方式中,
所述方法还包括:
所述第一权重预处理器接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy所述T为大于1的整数;
所述第一运算阵列利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,其中,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
结合第五方面或第五方面的第一种至第八种可能实施方式中的任意一种可能的实施方式,在第五方面的第十种可能的实施方式中,所述神经网络处理器还包括第二运算阵列,所述方法还包括:
所述第一权重预处理器接收所述向量Vy,向所述第二运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第二运算阵列利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
结合第五方面或第五方面的第一种至第八种可能实施方式中的任意一种可能的实施方式,在第五方面的第十一种可能的实施方式中,所述神经网络处理器还包括第二权重预处理器,所述方法还包括:
所述第二权重预处理器接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第一运算阵列利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值;根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应;输出所述向量Vz。
本发明实施例第六方面提供一种卷积神经网络处理器的数据处理方法,卷积神经网络处理器包括:第一卷积缓存器、第一权重预处理器和第一累加运算阵列;所述方法包括:
所述第一卷积缓存器缓存卷积运算所需要的图像数据的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述向量Vx的M个元素中的任意1个;
所述第一权重预处理器利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一累加运算阵列输出所述M个加权运算结果,所述M和所述P为大于1的整数;
所述第一累加运算阵列将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
结合第六方面,在第六方面的第一种可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
结合第六方面或第六方面的第一种可能的实施方式中,在第六方面的第二种可能的实施方式中,
所述向量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个。
结合第六方面或第六方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第六方面的第三种可能的实施方式中,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
结合第六方面或第六方面的第一种至第三种可能实施方式中的任意一种可能的实施方式,在第六方面的第四种可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
结合第六方面或第六方面的第一种至第四种可能实施方式中的任意一种可能的实施方式,在第六方面的第五种可能的实施方式中,
所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N};
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
结合第六方面或第六方面的第一种至第五种可能实施方式中的任意一种可能的实施方式,在第六方面的第六种可能的实施方式中,所述卷积神经网络处理器还包括:第二卷积缓存器和第二累加运算阵列;
所述方法还包括:
所述第二卷积缓存器缓存卷积运算所需要的所述向量Vy,所述向量Vy的元素Vy-j的值域空间是大于或等于0且小于或等于1的实数,所述元素Vy-j为所述向量Vy的M个元素中的任意1个;
所述第一权重预处理器利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素,向所述第二累加运算阵列输出所述P个加权运算结果,所述T为大于1的整数;
所述第二累加运算阵列将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可以看出,本发明实施例的技术方案中,输入权重预处理器的向量的元素的归一化值域空间是大于或等于0且小于或等于1的实数,由于极大拓展了向量的元素的值域空间,相对现有架构有了很大的提升,进而有利于达到当前主流应用的精度需求,进而有利于拓展神经网络处理器的应用范围。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种神经网络处理器的架构示意图;
图2为本发明实施例提供的另一种神经网络处理器的架构示意图;
图3为本发明实施例提供的另一种神经网络处理器的架构示意图;
图4为本发明实施例提供的另一种神经网络处理器的架构示意图;
图5为本发明实施例提供的另一种神经网络处理器的架构示意图;
图6-a为本发明实施例提供的一种神经网络处理器的级联架构示意图;
图6-b~图6-h为本发明实施例提供的一种神经网络处理器的硬件复用架构示意图;
图7为本发明实施例提供的另一种卷积神经网络处理器的架构示意图;
图8为本发明实施例提供的另一种卷积神经网络处理器的架构示意图;
图9为本发明实施例提供的另一种卷积神经网络处理器的架构示意图。
具体实施方式
本发明的实施例提供神经网络处理器和卷积神经网络处理器,以期拓展神经网络运算的应用范围。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明说明书、权利要求书和附图中出现的术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
参见图1和图2,图1和图2为本发明实施例提供的一些神经网络处理器的结构示意图,其中,神经网络处理器100可以包括:第一权重预处理器110和第一运算阵列120。
第一权重预处理器110,用于接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或等于0且小于或等于1的实数,所述元素Vx-i为所述M个元素中的任意1个;利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一运算阵列输出所述M个加权运算结果,所述M和所述P为大于1的整数。
其中,第一运算阵列120,用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
例如,向量Vx的元素Vx-i可等于0、0.1、0.5、0.8、0.85、0.9、1或其他值。
其中,所述M可大于或等于或小于所述P。
例如M可以等于2、3、32,128,256,1024,2048,4096,10000或其它值。
例如P可以等于2、3、32,128,256,1024,2048,4096,10001或者其它值。
举例来说,向量Vx可以是图像数据的向量,音频数据的向量或其他类型应用数据的向量。
本发明的发明人研究和实践发现,常规Spiking机制的实现方案直接限制输入的向量(输入变量)的元素的归一化值域空间为0和1,使得硬件架构的应用范围不够广,精度较大受限,识别率下降。本实施例输入的向量的元素的归一化值域空间是大于或等于0且小于或等于1的实数,由于极大拓展了向量的元素的值域空间,相对现有架构有了很大的提升,有利于达到当前主流应用的精度需求,进而有利于拓展神经网络处理器的应用范围。
其中,M*P权重向量矩阵Qx可看成是M个权重向量,M个权重向量中的每个权重向量包括P个元素。M个权重向量与向量Vx中的M个元素之间一一对应。
举例来说,假设向量Vx表示为{a1,a2,…,am},向量Vx的每一个向量元素都有其对应的权重向量,如元素a1对应到权重向量{w11,w12,…,w1P},元素a2对应到权重向量{w21,w22,…,w2P},元素a3对应到{w31,w32,…,w3P},以此类推。
具体例如,假设向量Vx表示为{0,1,0.5,0},权重向量{23,23,22,11}可对应于向量Vx的第1个元素“0”,权重向量{24,12,6,4}可对应于向量Vx的第3个元素“0.5”,而向量Vx的其他元素可对应有其他的权重向量,以此类推。其中,与向量Vx的第3个元素“0.5”对应的加权运算结果向量例如可表示为{24,12,6,4}*0.5={12,6,3,2},以此类推。
在图3举例所示的架构中,第一权重预处理器110接收的包括M个元素的向量Vx例如可来自图像预处理器、语音预处理器或者数据预处理器。也就是说,图像预处理器、语音预处理器或数据预处理器输出的数据需进行神经网络运算。
在图2举例所示的架构中,M*P权重向量矩阵Qx等权重向量可来自权重存储器130。权重存储器130可为神经网络处理器100的片内存储器。或者在图4举例所示的架构中,权重存储器130也可为神经网络处理器100的外部存储器(如DDR等)。
权重存储器130中存储的权重向量可能是经过压缩的权重向量或未经过压缩的权重向量。其中,若权重存储器130中存储的权重向量是经过压缩的权重向量,第一权重预处理器110可先对经过压缩的权重向量进行解压处理以得到解压处理后的权重向量。
例如,所述第一第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
对于某些应用场景,例如,使用外部存储器(例如DDR)作为权重存储器时,存储带宽(而不是计算能力)可能是***性能的瓶颈,这使得压缩存取可能获得非常可观的性能提升,在很多应用场景下,稀疏的权重分布也为压缩存取的效益提供了可能性。例如,可以采用霍夫曼编码方法来完成权重向量的压缩与解压缩编码,也可以使用其他压缩比率固定的无损或有损压缩编码方式来压缩权重向量。
例如图5举例所示,权重存储器130中存储的权重向量可来自权重训练单元140,权重训练单元140可利用权重训练模型等训练得到权重向量,将训练得到的权重向量写入权重训练单元140。
权重训练单元140可根据应用场景的数据和训练算法获得权重向量,并存储于权重存储器。良好的权重向量参数使得大规模的网络在工作的时候,可使得每一级运算阵列的输出只有稀疏分布的1,稀疏分布的小数等。上一级的输出的数据分布决定了下一级计算复杂度。
本发明实施例中举例一些构造稀疏性的具体方法:
举例来说,平均地减少权重向量的值(或提高阈值)就会减小输出为1的概率。
又举例来说,确保权重参数有效性的典型的做法是把稀疏性的判据加入学习算法的目标函数中,在学习算法的迭代过程中,获得最佳的权重系数,最佳的权重系数既保证稀疏性目标,又追求网络识别准确性目标。在此方案中能效结果和网络稀疏性及网络规模可成比例,不仅仅是和网络规模成比例,而识别准确性又能接近同等网络规模的浮点计算方案。
图1~图5所示的模块架构可能有物理实体形式。例如,在云端服务器应用场合,可以是独立的处理芯片,在终端(如手机)应用上,可以是终端处理器芯片里的一个模块。信息的输入来自语音、图像、自然语言等需要智能处理的各种信息输入,经过必要的预处理(如采样,模数转换,特征提取等)形成待进行神经网络运算的向量。信息的输出送到其他后续处理模块或软件,例如图形或其他可以理解可用的表现方式。其中,在云端应用形态下,神经网络处理器的前后级的处理单元例如可以由其他服务器运算单元承担,在终端应用环境下,神经网络处理器的前后级处理单元可由终端软硬件的其他部分(如包括传感器、接口电路和/或CPU等)完成。
可选的,在本发明的一些可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集(例如所述向量Vx的元素Vx-i的值域空间为集合{0,1/(2^N),1}等),所述N为正整数。例如N可为2的整数次幂或其他正整数。
其中,集合{0,1-1/(2^N),1/(2^N)},集合{1,1-1/(2^N),1/(2^N)}以及集合{0,1-1/(2^N),1}均可看作集合{0,1-1/(2^N),1/(2^N),1}的子集,其它子集以此类推。
其中,N例如可以等于1、2、3、4、5、7、8、10、16、29、32、50、100或其它值。
可选的,在本发明的一些可能的实施方式中,所述向量Vy的元素Vy-j的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vy的元素Vy-j的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集(例如所述向量Vy的元素Vy-j的值域空间为集合{0,1/(2^N),1}等),所述N为正整数,所述元素Vy-j为所述向量Vy的P个元素中的任意1个。
本发明的发明人研究和实践发现,输出的向量Vy的元素Vy-j采用特殊值域范围,有利于使得在计算复杂度变化很小的前提下,提高计算精度。还有利于使得深度学习算法在应用中的统计分布提供了优化量化的机会。
可选的,在本发明的一些可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
可选的,在本发明一些可能的实施方式中,所述M*P权重向量矩阵Qx之中的部分或全部权重向量的元素的值域空间可为集合{1,0,-1},当然权重向量的元素的值域空间亦可不限于此,
例如所述M*P权重向量矩阵Qx之中的部分或全部权重向量的元素的值域空间为集合{1,0,-1};或M*P权重向量矩阵Qx之中的部分或全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N},或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
例如,集合{0,-1/(2^N),1/(2^N)}、集合{-2^N,-1/(2^N),1/(2^N)}和集合{1,0,-1}等等均可看作集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集,其它子集以此类推。
又例如集合{1,-1/(2^N),1/(2^N)}、集合{2^N,-1/(2^N),1/(2^N)}和集合{1,-1/(2^N),-1}等也可看作集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集,其它子集以此类推。集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}还存在其它多个可能的子集,此处不再一一举例。
本发明的发明人研究和实践发现,假设权重向量的元素的只取自非常有限的简化参数集,有利于简化运算复杂度。
可选的,在本发明的一些可能的实施方式中,所述第一运算阵列可以包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
例如,假设第一运算阵列中有P个累加器(记为A1,A2,…,AP),当收到加权运算结果向量{e1w11,e1w12,…,e1w1P}时,此时,P个累加器要分别累加所对应的乘积项:e1w11,e1w12,…,e1w1P
具体的,A1=A1+e1w11,A2=A2+e1w12,…,AP=AP+e1w1P
可选的,在本发明的一些可能的实施方式中,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系。
具体举例来说,可通过查表完成的任意分段线性(总体上可实现一定精度的非线性)映射。
或者例如可实现3段分段线性映射:
具体例如,Lj<T0时Vy-j取值为0,Lj>T1时Vy-j取值为1,T1>Lj>T0时Vy-j取值为(Lj-T0)*K,K为固定系数,固定系数的乘法可以不需要使用通用乘法器,可以通过简化的电路完成。
或者,可采用特殊的非线性映射得到元素Vy-j,例如通过译码电路使得累加值Lj在特定范围内(T0,T1)的线性区域,元素Vy-j可映射为非线性的值域空间{0,1,1-1/(2^N),1/(2^N)}或集合{0,1,1-1/(2^N),1/(2^N)}的子集,特定值域空间的输出变量有利于使得后一级的处理变的简单。
其中,上述举例给出了单级神经网络运算的方式,在实际应用中也可采用多种可能方式来实现多级运算。例如可把实现单级神经网络的处理单元(权重预处理器+运算阵列)通过交换网络联系起来,因此一个处理单元的输出可以输出到另一个处理单元作为输入,例如图6-a举例所示。又例如可把处理单元作为一个处理资源池,同样的物理处理单元可以用于完成网络不同区域,不同级的运算处理,在这种情况下可以引入对输入输出信息的缓存,输入输出信息缓存也可以利用***中已经存在的物理存储实体,例如用于存放权重向量的DDR。
可选的,在本发明一些可能实施方式中,第一权重预处理器110和第一运算阵列120还可能被复用。
例如,第一权重预处理器110还用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果。
其中,第一运算阵列120,将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
其中,权重预处理器和运算阵列作为一个整体(级联单元)来被复用的情况可以参见图6-b举例所示。其中,运算阵列(例如第一运算阵列120)的输出的向量可以通过缓存来中转之后输入到权重预处理器(例如第一权重预处理器110)。
此外,可选的,在本发明的另一些可能的实施方式中,权重预处理器还可以独立被复用,即一个权重预处理器可对应多个运算阵列,权重预处理器被独立复用的情况可参见图6-c~6-d举例所示。
具体例如,第一权重预处理器110还可能被复用,即,第一权重预处理器110可对应多个运算阵列。例如图6-e举例所示,所述神经网络处理器100还可以包括第二运算阵列150。
第一权重预处理器110还用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第二运算阵列输出所述P个加权运算结果。
其中,所述第二运算阵列150,用于将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可以理解,图6-c举例所示架构中权重预处理器可只做单个硬件或者多个硬件,多个硬件的数量可小于所有的级数,例如共有7级,权重预处理器可以做1至6个硬件,至少有一个硬件用来完成2级权重预处理器功能,即权重预处理器复用。通过复用权重预处理器等有利于实现高效率的最小***,因此总的硬件代价会变小。例如在手机终端中的应用,手机终端芯片只能实现有限的计算能力,作为可重复使用的计算资源,有利于实现在手机终端上完成大规模网络的计算。
此外,可选的,在本发明的另一些可能的实施方式中,运算阵列也可以独立的被复用,即一个运算阵列可对应多个权重预处理器,权重预处理器被独立复用的情况可参见图6-f~图6-g举例所示。
具体例如,第一运算阵列150也还可能被复用,即第一运算阵列150可对应多个权重预处理器。第一运算阵列复用例如图6-h举例所示,所述神经网络处理器100还可以包括第二权重预处理器160。
其中,第二权重预处理器160用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数。
其中,第一运算阵列150,用于将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
其中,其它模块的复用方式可以此类推。
其中,所述T为大于1的整数。
其中,所述T可大于或等于或小于所述P。
例如T可等于2、8、32,128,256,1024,2048,4096,10003或其它值或其它值。
本发明实施例提供一种神经网络处理器的数据处理方法,神经网络处理器包括第一权重预处理器和第一运算阵列,其中,神经网络处理器例如具有上述实施中举例的架构。
所述方法可以包括:
所述第一权重预处理器接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或等于0且小于或等于1的实数,所述元素Vx-i为所述M个元素中的任意1个;利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一运算阵列输出所述M个加权运算结果,其中,所述M和所述P为大于1的整数;
第一运算阵列将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
可选的,在本发明的一些可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
可选的,在本发明的一些可能的实施方式中,
所述向量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个。
可选的,在本发明的一些可能的实施方式中,所述方法还包括:所述第一权重预处理器从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
可选的,在本发明的一些可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
结合第四方面或第四方面的第一种至第四种可能实施方式中的任意一种可能的实施方式,在第四方面的第五种可能的实施方式中,
所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N};
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
可选的,在本发明的一些可能的实施方式中,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
可选的,在本发明的一些可能的实施方式中,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
或者,
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
可选的,在本发明的一些可能的实施方式中,
所述方法还包括:所述第一权重预处理器接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,所述T为大于1的整数;所述第一运算阵列将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可选的,在本发明的一些可能的实施方式中,所述神经网络处理器还包括第二运算阵列,所述方法还包括:
所述第一权重预处理器接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第二运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
其中,所述第二运算阵列将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可选的,在本发明的一些可能的实施方式中,所述神经网络处理器还包括第二权重预处理器,所述方法还包括:
所述第二权重预处理器接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
其中,所述第一运算阵列将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可以看出,本实施例的技术方案中,输入权重预处理器的向量的元素的归一化值域空间是大于或等于0且小于或等于1的实数,由于极大拓展了向量的元素的值域空间,相对现有架构有了很大的提升,进而有利于达到当前主流应用的精度需求,进而有利于拓展神经网络处理器的应用范围。
本发明实施例还提供一种神经网络处理器,包括:
第一权重预处理器和第一运算阵列;
其中,所述第一权重预处理器,用于接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述M个元素之中的任意1个;向所述运算阵列输出M*P权重向量矩阵Qx和所述向量Vx,所述M和所述P为大于1的整数;
其中,所述第一运算阵列,利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
可选的,在本发明的一些可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
可选的,在本发明的一些可能的实施方式中,
所述向量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个。
可选的,在本发明的一些可能的实施方式中,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
可选的,在本发明的一些可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
可选的,在本发明的一些可能的实施方式中,所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N},
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
可选的,在本发明的一些可能的实施方式中,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
可选的,在本发明的一些可能的实施方式中,所述P个累加器用于通过累加方式,利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述累加方式基于所述权重向量矩阵Qx的元素取值来确定。
可选的,在本发明的一些可能的实施方式中,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
或者,
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
可选的,在本发明的一些可能的实施方式中,所述第一权重预处理器还用于,接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy所述T为大于1的整数;
其中,所述第一运算阵列,用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可选的,在本发明的一些可能的实施方式中,所述神经网络处理器还包括第二运算阵列,
所述第一权重预处理器还用于,接收所述向量Vy,向所述第二运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第二运算阵列,用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可选的,在本发明的一些可能的实施方式中,所述神经网络处理器还包括第二权重预处理器,
所述第二权重预处理器还用于,接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第一运算阵列还用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值;根据所述T个累加值得到包括T个元素的向量Vz,所述T个元素与所述T个累加值之间一一对应;输出所述向量Vz。
可以理解,本实施例中主要是利用运算阵列来进行加权运算,即将可由权重预处理器执行的加权运算,转移到了运算阵列来执行。其它方面的内容可参考其它实施例,本实施例不再赘述。
本发明实施例提供一种神经网络处理器的数据处理方法,神经网络处理器包括第一权重预处理器和第一运算阵列;
所述方法包括:所述第一权重预处理器接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述M个元素之中的任意1个;向所述运算阵列输出M*P权重向量矩阵Qx和所述向量Vx,所述M和所述P为大于1的整数;
所述第一运算阵列利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
可选的,在本发明的一些可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
可选的,在本发明的一些可能的实施方式中,
所述向量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个。
可选的,在本发明的一些可能的实施方式中,
所述方法还包括:所述第一权重预处理器从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
可选的,在本发明的一些可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
可选的,在本发明的一些可能的实施方式中,所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N},
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
可选的,在本发明的一些可能的实施方式中,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
可选的,在本发明的一些可能的实施方式中,所述P个累加器用于通过累加方式,利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述累加方式基于所述权重向量矩阵Qx的元素取值来确定。
可选的,在本发明的一些可能的实施方式中,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
或者,
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
可选的,在本发明的一些可能的实施方式中,所述方法还包括:
所述第一权重预处理器接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy所述T为大于1的整数;
所述第一运算阵列利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,其中,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可选的,在本发明的一些可能的实施方式中,所述神经网络处理器还包括第二运算阵列,所述方法还包括:
所述第一权重预处理器接收所述向量Vy,向所述第二运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第二运算阵列利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可选的,在本发明的一些可能的实施方式中,所述神经网络处理器还包括第二权重预处理器,所述方法还包括:
所述第二权重预处理器接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第一运算阵列利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值;根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应;输出所述向量Vz。
可以看出,本实施例的技术方案中,输入权重预处理器的向量的元素的归一化值域空间是大于或等于0且小于或等于1的实数,由于极大拓展了向量的元素的值域空间,相对现有架构有了很大的提升,进而有利于达到当前主流应用的精度需求,进而有利于拓展神经网络处理器的应用范围。
参见图7,本发明实施例还提供一种卷积神经网络处理700可包括:第一卷积缓存器710、第一权重预处理器730和第一累加运算阵列720。
其中,所述第一卷积缓存器710,用于缓存卷积运算所需要的图像数据的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述向量Vx的M个元素中的任意1个;
所述第一权重预处理器730,用于利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一累加运算阵列输出所述M个加权运算结果,所述M和所述P为大于1的整数。
所述第一累加运算阵列720,用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
图8举例示出图像数据可来自图像数据存储器。
参见图9,可选的,在本发明的另一些可能的实施方式中,所述卷积神经网络处理器还包括:第二卷积缓存器740和第二累加运算阵列750;所述第二卷积缓存器740,用于缓存卷积运算所需要的所述向量Vy,所述向量Vy的元素Vy-j的值域空间是大于或等于0且小于或等于1的实数,所述元素Vy-j为所述向量Vy的M个元素中的任意1个。
所述第一权重预处理器730还用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素,向所述第二累加运算阵列输出所述P个加权运算结果,所述T为大于1的整数。
所述第二累加运算阵列750用于,将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
可选的,在本发明的一些可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
可选的,在本发明的一些可能的实施方式中,所述向量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个。
结合第六方面或第六方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第六方面的第三种可能的实施方式中,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
可选的,在本发明的一些可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
可选的,在本发明的一些可能的实施方式中,所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N};
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
其中,卷积神经网络处理700可看作一种特殊神经网络处理,卷积神经网络处理700的某些方面的实现方式,可参考上述实施例中关于神经网络处理的描述。
本发明实施例提供一种卷积神经网络处理器的数据处理方法,卷积神经网络处理器包括第一卷积缓存器、第一权重预处理器和第一累加运算阵列;所述方法包括:
所述第一卷积缓存器缓存卷积运算所需要的图像数据的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述向量Vx的M个元素中的任意1个;
所述第一权重预处理器利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一累加运算阵列输出所述M个加权运算结果,所述M和所述P为大于1的整数;
所述第一累加运算阵列将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
可选的,在本发明的一些可能的实施方式中,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
可选的,在本发明的一些可能的实施方式中,所述向量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个。
结合第六方面或第六方面的第一种至第二种可能实施方式中的任意一种可能的实施方式,在第六方面的第三种可能的实施方式中,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
可选的,在本发明的一些可能的实施方式中,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
可选的,在本发明的一些可能的实施方式中,所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};
或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N};
或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
可选的,在本发明的一些可能的实施方式中,所述卷积神经网络处理器还包括:第二卷积缓存器和第二累加运算阵列;
所述方法还包括:
所述第二卷积缓存器缓存卷积运算所需要的所述向量Vy,所述向量Vy的元素Vy-j的值域空间是大于或等于0且小于或等于1的实数,所述元素Vy-j为所述向量Vy的M个元素中的任意1个;
所述第一权重预处理器利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素,向所述第二累加运算阵列输出所述P个加权运算结果,所述T为大于1的整数;
所述第二累加运算阵列将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (25)

1.一种神经网络处理器,其特征在于,包括:
第一权重预处理器和第一运算阵列;
所述第一权重预处理器用于接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或等于0且小于或等于1的实数,所述元素Vx-i为所述M个元素中的任意1个;利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一运算阵列输出所述M个加权运算结果,所述M和所述P为大于1的整数;
所述第一运算阵列,用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
2.根据权利要求1所述的神经网络处理器,其特征在于,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
3.根据权利要求1或2所述神经网络处理器,其特征在于,所述向量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个。
4.根据权利要求1至3任一项所述神经网络处理器,其特征在于,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
5.根据权利要求1至4任一项所述神经网络处理器,其特征在于,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
6.根据权利要求1至5任一项所述神经网络处理器,其特征在于,所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N},或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
7.根据权利要求1至6任一项所述神经网络处理器,其特征在于,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
8.根据权利要求1至7任一项所述神经网络处理器,其特征在于,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
或者,
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
9.根据权利要求1至8任一项所述神经网络处理器,其特征在于,所述第一权重预处理器还用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,所述T为大于1的整数;
所述第一运算阵列还用于,将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
10.根据权利要求1至8任一项所述神经网络处理器,其特征在于,所述神经网络处理器还包括第二运算阵列,
其中,所述第一权重预处理器还用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第二运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
其中,所述第二运算阵列,用于将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
11.根据权利要求1至8任一项所述神经网络处理器,其特征在于,所述神经网络处理器还包括第二权重预处理器,
其中,所述第二权重预处理器用于,接收所述向量Vy,利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;向所述第一运算阵列输出所述P个加权运算结果,其中,所述T为大于1的整数;
其中,所述第一运算阵列,用于将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
12.一种神经网络处理器,其特征在于,包括:
第一权重预处理器和第一运算阵列;
其中,所述第一权重预处理器,用于接收包括M个元素的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述M个元素之中的任意1个;向所述运算阵列输出M*P权重向量矩阵Qx和所述向量Vx,所述M和所述P为大于1的整数;
其中,所述第一运算阵列,用于利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
13.根据权利要求12所述的神经网络处理器,其特征在于,所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1};或者所述向量Vx的元素Vx-i的值域空间为集合{0,1-1/(2^N),1/(2^N),1}的子集,所述N为正整数。
14.根据权利要求12或13所述神经网络处理器,其特征在于,所述向量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个。
15.根据权利要求12至14任一项所述神经网络处理器,其特征在于,所述第一权重预处理器还用于从权重存储器中读取出压缩权重向量矩阵Qx,对所述压缩权重向量矩阵Qx进行解压处理以得到所述权重向量矩阵Qx。
16.根据权利要求12至15任一项所述神经网络处理器,其特征在于,在所述元素Vx-i的取值等于1的情况下,所述M*P权重向量矩阵Qx中的与所述元素Vx-i对应的权重向量Qx-i,被作为所述M个加权运算结果向量中与元素Vx-i对应的加权运算结果向量。
17.根据权利要求11至16任一项所述神经网络处理器,其特征在于,所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1};或所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N},或者所述M*P权重向量矩阵Qx之中的部分或者全部权重向量的元素的值域空间为集合{1,0,-1,-1/(2^N),1/(2^N),-2^N,2^N}的子集。
18.根据权利要求11至17任一项所述神经网络处理器,其特征在于,所述第一运算阵列包括P个累加器,所述P个累加器分别用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值。
19.根据权利要求18所述神经网络处理器,其特征在于,所述P个累加器用于通过累加方式,利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述累加方式基于所述权重向量矩阵Qx的元素取值来确定。
20.根据权利要求12至19任一项所述神经网络处理器,其特征在于,所述第一运算阵列根据所述P个累加值得到包括P个元素的向量Vy,包括:
在累加值Lj大于或者等于第一阈值的情况下得到所述向量Vy的元素Vy-j取值为1,在所述累加值Lj小于第二阈值的情况下得到向量Vy的元素Vy-j取值为0,其中,所述第一阈值大于或等于所述第二阈值,所述累加值Lj为所述P个累加值中的其中一个累加值,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系;
或者,
将得到的与累加值Lj具有非线性映射关系或分段线性映射关系的元素作为所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值;
或者,
将与累加值Lj具有分段映射关系的元素作为得到的所述向量Vy的元素Vy-j,所述向量Vy的元素Vy-j与所述累加值Lj具有对应关系,所述累加值Lj为所述P个累加值之中的其中一个累加值。
21.根据权利要求12至20任一项所述神经网络处理器,其特征在于,所述第一权重预处理器还用于,接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy所述T为大于1的整数;
其中,所述第一运算阵列,用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
22.根据权利要求12至20任一项所述神经网络处理器,其特征在于,所述神经网络处理器还包括第二运算阵列,
所述第一权重预处理器还用于,接收所述向量Vy,向所述第二运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第二运算阵列,用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
23.根据权利要求12至20任一项所述神经网络处理器,其特征在于,所述神经网络处理器还包括第二权重预处理器,
所述第二权重预处理器还用于,接收所述向量Vy,向所述第一运算阵列输出所述向量Vy和P*T权重向量矩阵Qy,所述T为大于1的整数;
其中,所述第一运算阵列还用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素;将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值;根据所述T个累加值得到包括T个元素的向量Vz,所述T个元素与所述T个累加值之间一一对应;输出所述向量Vz。
24.一种卷积神经网络处理器,其特征在于,包括:
第一卷积缓存器、第一权重预处理器和第一累加运算阵列;
其中,所述第一卷积缓存器,用于缓存卷积运算所需要的图像数据的向量Vx,所述向量Vx的元素Vx-i的归一化值域空间是大于或者等于0且小于或者等于1的实数,其中,所述元素Vx-i为所述向量Vx的M个元素中的任意1个;
所述第一权重预处理器,用于利用M*P权重向量矩阵Qx对所述向量Vx的M个元素进行加权运算以得到M个加权运算结果向量,所述M个加权运算结果向量与所述M个元素之间一一对应,所述M个加权运算结果向量之中的每个加权运算结果向量包括P个元素;向所述第一累加运算阵列输出所述M个加权运算结果,所述M和所述P为大于1的整数;
所述第一累加运算阵列,用于将所述M个加权运算结果向量中的位置相同的元素进行累加以得到P个累加值,根据所述P个累加值得到包括P个元素的向量Vy,其中,所述P个元素与所述P个累加值之间一一对应,输出所述向量Vy。
25.根据权利要求24所述卷积神经网络处理器,其特征在于,所述卷积神经网络处理器还包括:第二卷积缓存器和第二累加运算阵列;所述第二卷积缓存器,用于缓存卷积运算所需要的所述向量Vy,所述向量Vy的元素Vy-j的值域空间是大于或等于0且小于或等于1的实数,所述元素Vy-j为所述向量Vy的M个元素中的任意1个;
所述第一权重预处理器还用于利用P*T权重向量矩阵Qy对所述向量Vy的P个元素进行加权运算以得到P个加权运算结果向量,所述P个加权运算结果向量与所述P个元素之间一一对应,所述P个加权运算结果向量之中的每个加权运算结果向量包括T个元素,向所述第二累加运算阵列输出所述P个加权运算结果,所述T为大于1的整数;
所述第二累加运算阵列用于,将所述P个加权运算结果向量中的位置相同的元素进行累加以得到T个累加值,根据所述T个累加值得到包括T个元素的向量Vz,其中,所述T个元素与所述T个累加值之间一一对应,输出所述向量Vz。
CN201510573772.9A 2015-09-10 2015-09-10 神经网络处理器和卷积神经网络处理器 Active CN105260776B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510573772.9A CN105260776B (zh) 2015-09-10 2015-09-10 神经网络处理器和卷积神经网络处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510573772.9A CN105260776B (zh) 2015-09-10 2015-09-10 神经网络处理器和卷积神经网络处理器

Publications (2)

Publication Number Publication Date
CN105260776A true CN105260776A (zh) 2016-01-20
CN105260776B CN105260776B (zh) 2018-03-27

Family

ID=55100456

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510573772.9A Active CN105260776B (zh) 2015-09-10 2015-09-10 神经网络处理器和卷积神经网络处理器

Country Status (1)

Country Link
CN (1) CN105260776B (zh)

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
CN106529670A (zh) * 2016-10-27 2017-03-22 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN106650924A (zh) * 2016-10-27 2017-05-10 中国科学院计算技术研究所 一种基于时间维和空间维数据流压缩的处理器、设计方法
CN107169563A (zh) * 2017-05-08 2017-09-15 中国科学院计算技术研究所 应用于二值权重卷积网络的处理***及方法
CN107229598A (zh) * 2017-04-21 2017-10-03 东南大学 一种面向卷积神经网络的低功耗电压可调卷积运算模块
CN107316079A (zh) * 2017-08-08 2017-11-03 珠海习悦信息技术有限公司 终端卷积神经网络的处理方法、装置、存储介质及处理器
CN107729995A (zh) * 2017-10-31 2018-02-23 中国科学院计算技术研究所 用于加速神经网络处理器的方法和***及神经网络处理器
CN107766935A (zh) * 2016-08-22 2018-03-06 耐能有限公司 多层人造神经网络
CN107886167A (zh) * 2016-09-29 2018-04-06 北京中科寒武纪科技有限公司 神经网络运算装置及方法
CN108133268A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 具有可作为牺牲高速缓存或神经网络单元存储器操作的存储器阵列的处理器
CN108268945A (zh) * 2016-12-31 2018-07-10 上海兆芯集成电路有限公司 具有阵列宽度可分段之旋转器之神经网络单元
CN108268946A (zh) * 2016-12-31 2018-07-10 上海兆芯集成电路有限公司 具有阵列宽度可分段之旋转器之神经网络单元
CN108510058A (zh) * 2018-02-28 2018-09-07 中国科学院计算技术研究所 神经网络中的权重存储方法以及基于该方法的处理器
WO2019001323A1 (zh) * 2017-06-30 2019-01-03 华为技术有限公司 信号处理的***和方法
CN109255429A (zh) * 2018-07-27 2019-01-22 中国人民解放军国防科技大学 一种用于稀疏神经网络模型的参数解压方法
CN109284823A (zh) * 2017-04-20 2019-01-29 上海寒武纪信息科技有限公司 一种运算装置及相关产品
CN109359730A (zh) * 2018-09-26 2019-02-19 中国科学院计算技术研究所 面向固定输出范式Winograd卷积的神经网络处理器
CN109557996A (zh) * 2017-09-22 2019-04-02 株式会社东芝 运算装置
CN109615061A (zh) * 2017-08-31 2019-04-12 北京中科寒武纪科技有限公司 一种卷积运算方法及装置
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
CN110231958A (zh) * 2017-08-31 2019-09-13 北京中科寒武纪科技有限公司 一种矩阵乘向量运算方法及装置
CN110263910A (zh) * 2018-03-12 2019-09-20 罗伯特·博世有限公司 用于存储高效地运行神经网络的方法和设备
CN110414630A (zh) * 2019-08-12 2019-11-05 上海商汤临港智能科技有限公司 神经网络的训练方法、卷积计算的加速方法、装置及设备
WO2020010639A1 (zh) * 2018-07-13 2020-01-16 华为技术有限公司 一种用于神经网络的卷积方法及装置
WO2020062054A1 (zh) * 2018-09-28 2020-04-02 深圳市大疆创新科技有限公司 数据处理方法、设备以及无人机
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006103241A3 (fr) * 2005-03-31 2007-01-11 France Telecom Système et procédé de localisation de points d'intérêt dans une image d'objet mettant en œuvre un réseau de neurones
US20080181508A1 (en) * 2007-01-30 2008-07-31 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and program
CN201927073U (zh) * 2010-11-25 2011-08-10 福建师范大学 一种可编程硬件bp神经元处理器
CN104376306A (zh) * 2014-11-19 2015-02-25 天津大学 基于滤波器组的光纤传感***侵犯识别分类方法及分类器
CN104809426A (zh) * 2014-01-27 2015-07-29 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006103241A3 (fr) * 2005-03-31 2007-01-11 France Telecom Système et procédé de localisation de points d'intérêt dans une image d'objet mettant en œuvre un réseau de neurones
US20080181508A1 (en) * 2007-01-30 2008-07-31 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and program
CN201927073U (zh) * 2010-11-25 2011-08-10 福建师范大学 一种可编程硬件bp神经元处理器
CN104809426A (zh) * 2014-01-27 2015-07-29 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置
CN104376306A (zh) * 2014-11-19 2015-02-25 天津大学 基于滤波器组的光纤传感***侵犯识别分类方法及分类器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
韩冬梅: "卷积稀疏编码算法研究及其应用", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
CN107766935B (zh) * 2016-08-22 2021-07-02 耐能有限公司 多层人造神经网络
CN107766935A (zh) * 2016-08-22 2018-03-06 耐能有限公司 多层人造神经网络
CN107886167B (zh) * 2016-09-29 2019-11-08 北京中科寒武纪科技有限公司 神经网络运算装置及方法
CN107886167A (zh) * 2016-09-29 2018-04-06 北京中科寒武纪科技有限公司 神经网络运算装置及方法
CN106529670B (zh) * 2016-10-27 2019-01-25 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN106650924A (zh) * 2016-10-27 2017-05-10 中国科学院计算技术研究所 一种基于时间维和空间维数据流压缩的处理器、设计方法
CN106529670A (zh) * 2016-10-27 2017-03-22 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN106650924B (zh) * 2016-10-27 2019-05-14 中国科学院计算技术研究所 一种基于时间维和空间维数据流压缩的处理器、设计方法
CN108133268B (zh) * 2016-12-01 2020-07-03 上海兆芯集成电路有限公司 具有存储器阵列的处理器
CN108133268A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 具有可作为牺牲高速缓存或神经网络单元存储器操作的存储器阵列的处理器
CN108268945B (zh) * 2016-12-31 2020-09-11 上海兆芯集成电路有限公司 神经网络单元及其运作方法
CN108268945A (zh) * 2016-12-31 2018-07-10 上海兆芯集成电路有限公司 具有阵列宽度可分段之旋转器之神经网络单元
CN108268946A (zh) * 2016-12-31 2018-07-10 上海兆芯集成电路有限公司 具有阵列宽度可分段之旋转器之神经网络单元
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US11263512B2 (en) 2017-04-04 2022-03-01 Hailo Technologies Ltd. Neural network processor incorporating separate control and data fabric
US11238331B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method for augmenting an existing artificial neural network
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US11354563B2 (en) 2017-04-04 2022-06-07 Hallo Technologies Ltd. Configurable and programmable sliding window based memory access in a neural network processor
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US11461615B2 (en) 2017-04-04 2022-10-04 Hailo Technologies Ltd. System and method of memory access of multi-dimensional data
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11216717B2 (en) 2017-04-04 2022-01-04 Hailo Technologies Ltd. Neural network processor incorporating multi-level hierarchical aggregated computing and memory elements
US11461614B2 (en) 2017-04-04 2022-10-04 Hailo Technologies Ltd. Data driven quantization optimization of weights and input data in an artificial neural network
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US11514291B2 (en) 2017-04-04 2022-11-29 Hailo Technologies Ltd. Neural network processing element incorporating compute and local memory elements
US11675693B2 (en) 2017-04-04 2023-06-13 Hailo Technologies Ltd. Neural network processor incorporating inter-device connectivity
CN109284823B (zh) * 2017-04-20 2020-08-04 上海寒武纪信息科技有限公司 一种运算装置及相关产品
CN109284823A (zh) * 2017-04-20 2019-01-29 上海寒武纪信息科技有限公司 一种运算装置及相关产品
CN107229598A (zh) * 2017-04-21 2017-10-03 东南大学 一种面向卷积神经网络的低功耗电压可调卷积运算模块
US11551068B2 (en) 2017-05-08 2023-01-10 Institute Of Computing Technology, Chinese Academy Of Sciences Processing system and method for binary weight convolutional neural network
CN107169563A (zh) * 2017-05-08 2017-09-15 中国科学院计算技术研究所 应用于二值权重卷积网络的处理***及方法
US11568225B2 (en) 2017-06-30 2023-01-31 Huawei Technologies Co., Ltd. Signal processing system and method
WO2019001323A1 (zh) * 2017-06-30 2019-01-03 华为技术有限公司 信号处理的***和方法
CN107316079A (zh) * 2017-08-08 2017-11-03 珠海习悦信息技术有限公司 终端卷积神经网络的处理方法、装置、存储介质及处理器
CN110231958A (zh) * 2017-08-31 2019-09-13 北京中科寒武纪科技有限公司 一种矩阵乘向量运算方法及装置
CN109615061A (zh) * 2017-08-31 2019-04-12 北京中科寒武纪科技有限公司 一种卷积运算方法及装置
CN109557996A (zh) * 2017-09-22 2019-04-02 株式会社东芝 运算装置
CN107729995A (zh) * 2017-10-31 2018-02-23 中国科学院计算技术研究所 用于加速神经网络处理器的方法和***及神经网络处理器
CN108510058A (zh) * 2018-02-28 2018-09-07 中国科学院计算技术研究所 神经网络中的权重存储方法以及基于该方法的处理器
CN108510058B (zh) * 2018-02-28 2021-07-20 中国科学院计算技术研究所 神经网络中的权重存储方法以及基于该方法的处理器
CN110263910A (zh) * 2018-03-12 2019-09-20 罗伯特·博世有限公司 用于存储高效地运行神经网络的方法和设备
WO2020010639A1 (zh) * 2018-07-13 2020-01-16 华为技术有限公司 一种用于神经网络的卷积方法及装置
CN109255429B (zh) * 2018-07-27 2020-11-20 中国人民解放军国防科技大学 一种用于稀疏神经网络模型的参数解压方法
CN109255429A (zh) * 2018-07-27 2019-01-22 中国人民解放军国防科技大学 一种用于稀疏神经网络模型的参数解压方法
CN109359730A (zh) * 2018-09-26 2019-02-19 中国科学院计算技术研究所 面向固定输出范式Winograd卷积的神经网络处理器
WO2020062054A1 (zh) * 2018-09-28 2020-04-02 深圳市大疆创新科技有限公司 数据处理方法、设备以及无人机
CN110414630A (zh) * 2019-08-12 2019-11-05 上海商汤临港智能科技有限公司 神经网络的训练方法、卷积计算的加速方法、装置及设备
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor

Also Published As

Publication number Publication date
CN105260776B (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
CN105260776A (zh) 神经网络处理器和卷积神经网络处理器
CN105844330B (zh) 神经网络处理器的数据处理方法及神经网络处理器
EP3660739A1 (en) Data processing apparatus and method
CN110718211B (zh) 一种基于混合压缩卷积神经网络的关键词识别***
US20200117981A1 (en) Data representation for dynamic precision in neural network cores
Wang et al. TRC‐YOLO: A real‐time detection method for lightweight targets based on mobile devices
CN112580328A (zh) 事件信息的抽取方法及装置、存储介质、电子设备
WO2021042857A1 (zh) 图像分割模型的处理方法和处理装置
CN109214502B (zh) 神经网络权重离散化方法和***
CN111079753A (zh) 一种基于深度学习与大数据结合的车牌识别方法及装置
CN111339308B (zh) 基础分类模型的训练方法、装置和电子设备
CN110188877A (zh) 一种神经网络压缩方法与装置
CN115409855A (zh) 图像处理方法、装置、电子设备和存储介质
CN111898751A (zh) 一种数据处理的方法、***、设备及可读存储介质
CN111126557B (zh) 神经网络量化、应用方法、装置和计算设备
CN108053034B (zh) 模型参数处理方法、装置、电子设备及存储介质
CN110705279A (zh) 一种词汇表的选择方法、装置及计算机可读存储介质
CN109799483A (zh) 一种数据处理方法和装置
CN109740730B (zh) 运算方法、装置及相关产品
CN111445016A (zh) 加速非线性数学计算的***及方法
CN116502700A (zh) 皮肤检测模型训练方法、皮肤检测方法、装置及电子设备
CN113361621B (zh) 用于训练模型的方法和装置
CN115880502A (zh) 检测模型的训练方法、目标检测方法、装置、设备和介质
CN112558918B (zh) 用于神经网络的乘加运算方法和装置
CN114881221A (zh) 映射方案优化方法及装置、电子设备、可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant