本申请涉及人工智能技术领域,具体涉及一种神经网络运算方法及相关装置。
背景技术:
神经网络(neuralnetwork)已经获得了非常成功的应用。但是随着我们设计更大规模,更深层次的神经网络,将引入更多的权值,而超大规模神经元和权值成为神经网络应用的一个巨大挑战。
大规模的神经元数据和权值数据需要巨大的存储空间,并且在神经网络的计算中,大规模的神经元数据和权值数据需要大量计算时间,目前的神经网络运算装置通常是单核结构,无法满足更高的计算需求,神经网络计算速率低下。
技术实现要素:
本申请实施例提供了一种神经网络运算方法及相关装置,通过多个神经网络运算核对神经元数据与权值数据进行并行计算提高神经网络计算速率。
第一方面,本申请实施例提供一种神经网络运算装置,包括:一个或多个神经网络运算核,其中,所述一个或多个神经网络运算核中的每个包括:
神经元选数模块,用于接收多个输入神经元,获取所述多个输入神经元的输入神经元索引序列和权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引;
神经网络功能模块,用于接收目标输入神经元和目标权值索引;并依据所述目标权值索引确定目标权值,依据所述目标权值对所述目标输入神经元进行计算,得到输出神经元;
神经元过滤器,用于接收所述神经网络功能模块的所述输出神经元,对所述输出神经元进行过滤,得到过滤后的输出神经元。
进一步的,所述装置还包括:神经元解码模块、输出神经元编码模块,其中:所述神经元解码模块,用于获取编码后的输入神经元,并对所述编码后的输入神经元执行解码操作,得到输入神经元,向所述一个或多个神经网络运算核广播所述输入神经元;所述神经元编码模块,用于接收所述一个或多个神经网络运算核传输的所述过滤后的输出神经元,对所述过滤后的输出神经元进行编码得到编码后的输出神经元。
进一步的,所述装置还包括:指令控制模块、输入神经元缓存模块、输出神经元缓存模块、权值索引缓存模块,其中:所述指令控制单元,用于生成控制指令,所述控制指令用于对所述输入神经元缓存模块、所述神经元解码模块、所述输出神经元编码模块、所述输出神经元缓存模块和所述权值索引缓存模块进行控制;所述输入神经元缓存模块,用于存储所述编码后的输入神经元,向所述神经元解码模块发送所述编码后的输入神经元;所述输出神经元缓存模块,用于存储所述编码后的输出神经元;所述权值索引缓存模块,用于存储所述权值索引序列,向所述一个或多个神经网络运算核广播所述权值索引序列。。
进一步的,在依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引方面,所述神经元选数模块具体用于:获取预设的累加公式,依据所述累加公式对所述输入神经元索引序列执行累加操作,得到第一序列;依据所述累加公式对所述权值索引序列执行所述累加操作,得到第二序列;对所述输入神经元索引序列与所述权值索引序列执行与操作,得到第三序列;依据所述累加公式对所述第三序列执行所述累加操作,得到第四序列;对所述第三序列和第四序列作为执行与操作,得到第五序列;将所述第一序列和所述第五序列作为预设的第一数据选择器的输入,确定至少一个第一序列值;将所述至少一个第一序列值和所述输入神经元作为预设的第二数据选择器的输入,得到所述至少一个第一序列值对应的至少一个目标输入神经元;将所述第二序列和所述第五序列作为预设的第三数据选择器的输入,确定至少一个第二序列值;依据所述至少一个第二序列值和所述神经元索引序列确定所述目标权值索引。
进一步的,所述神经网络功能模块包括:多个处理单元,其中,所述多个处理单元中的每个处理单元,包括:权值缓存模块,用于缓存第一权值,所述第一权值为编码后的权值;权值解码模块,用于从所述权值缓存单元中获取所述第一权值,并对所述第一权值进行解码,以得到第二权值,将所述第二权值传输至所述权值选数单元;权值选数模块,用于接收目标权值索引,依据所述目标权值索引对所述第二权值进行筛选得到所述目标权值;计算模块,用于接收输入神经元,依据所述目标权值和依据所述目标权值对所述目标输入神经元进行计算,得到所述输出神经元。
进一步的,在所述依据所述目标权值索引对所述第二权值进行筛选得到所述目标权值方面,所述权值选数模块具体用于:将所述目标权值索引与所述第二权值作为预设第四数据选择器的输入,得到所述目标权值索引对应的所述目标权值。
进一步的,在所述对所述输出神经元进行过滤,得到过滤后的输出神经元方面,所述神经元过滤器,具体用于:接收所述输出神经元,将所述输出神经元作为预设比较器的输入,得到所述输出神经元对应的第一输出序列;获取预设的累加公式,依据所述累加公式对所述第一输出序列执行累加操作,得到第二输出序列;对所述第一输出序列和所述第二输出序列执行与操作,得到第三输出序列;将所述输出神经元和所述第三输出序列作为预设的第五数据选择器的输入,得到至少一个输出神经元作为所述过滤后的输出神经元。
进一步的,在得到所述输出神经元对应的第一输出序列之后方面,所述神经元过滤器,还用于:基于所述第一输出序列生成输出神经元索引;向所述输出神经元缓存模块发送所述输出神经元索引。
第二方面,本申请实施例提供一种神经网络计算方法,包括:
接收多个编码后的输入神经元,针对所述多个编码后的输入神经元执行解码操作得到多个输入神经元;
获取所述多个输入神经元的输入神经元索引序列和权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引;
依据所述目标权值索引确定目标权值,依据所述目标权值对所述目标输入神经元进行计算,得到输出神经元;
对所述输出神经元进行过滤,得到过滤后的输出神经元,存储所述过滤后的输出神经元。
进一步的,所述依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引,包括:获取预设的累加公式,依据所述累加公式对所述输入神经元索引序列执行累加操作,得到第一序列;依据所述累加公式对所述权值索引序列执行所述累加操作,得到第二序列;对所述输入神经元索引序列与所述权值索引序列执行与操作,得到第三序列;依据所述累加公式对所述第三序列执行所述累加操作,得到第四序列;对所述第三序列和第四序列执行与操作,得到第五序列;将所述第一序列和所述第五序列作为预设的第一数据选择器的输入,确定至少一个第一序列值;将所述至少一个第一序列值和所述输入神经元作为预设的第二数据选择器的输入,得到所述至少一个第一序列值对应的至少一个目标输入神经元;将所述第二序列和所述第五序列作为预设的第三数据选择器的输入,确定至少一个第二序列值;依据所述至少一个第二序列值和所述神经元索引序列确定所述目标权值索引。
进一步的,所述依据所述目标权值引索确定目标权值,包括:获取所述第一权值,并对所述第一权值进行解码,以得到第二权值;接收目标权值索引,依据所述目标权值索引引对所述第二权值进行筛选得到所述目标权值;接收输入神经元,依据所述目标权值和依据所述目标权值对所述目标输入神经元进行计算,得到所述输出神经元。
进一步的,所述依据所述目标权值索引对所述第二权值进行筛选得到所述目标权值,包括:将所述目标权值索引与所述第二权值作为预设第四数据选择器的输入,得到所述目标权值索引对应的所述目标权值。
进一步的,所述对所述输出神经元进行过滤,得到过滤后的输出神经元,包括:接收所述输出神经元,将所述输出神经元作为预设比较器的输入,得到所述输出神经元对应的第一输出序列;获取预设的累加公式,依据所述累加公式对所述第一输出序列执行累加操作,得到第二输出序列;对所述第一输出序列和所述第二输出序列执行与操作,得到第三输出序列;将所述输出神经元和所述第三输出序列作为预设的第五数据选择器的输入,得到至少一个输出神经元作为所述过滤后的输出神经元。
进一步的,所述得到所述输出神经元对应的第一输出序列之后,还包括:基于所述第一输出序列生成输出神经元索引;存储所述输出神经元索引。
根据本申请的第三方面,提供一种板卡,包括以上所述的神经网络运算装置。
根据本申请的第四方面,提供一种电子装置,包括以上所述的板卡。
进一步的,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
进一步的,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。
可以看出,本申请实施例提供的神经网络运算装置包括:一个或多个神经网络运算核,其中,所述多个神经网络运算核中的每个包括:神经元选数模块,用于接收多个输入神经元,获取所述多个输入神经元的输入神经元索引序列和权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引;神经网络功能模块,用于接收目标输入神经元和目标权值索引;并依据所述目标权值索引确定目标权值,依据所述目标权值对所述目标输入神经元进行计算,得到输出神经元;神经元过滤器,用于接收所述神经网络功能模块的所述输出神经元,对所述输出神经元进行过滤,得到过滤后的输出神经元。可见,多个神经网络运算核结构可以并行执行神经网络运算,有利于提高神经网络运算速率,同时,通过对输入神经元与输出神经元进行编码存储,减少输入神经元与输出神经元存储量,通过神经元索引序列和权值索引序列筛选输入神经元,有利于减少神经网络的运算量,从而有利于提高神经网络的计算速率。
附图说明
图1是本申请实施例提供的一种神经网络运算装置的结构框图;
图2是本申请实施例提供的如图1所示的神经网络运算装置中的神经网络运算核140的结构框图;
图3为本申请实施例提供的一种神经元选数硬件电路的计算流程图;
图4是本申请实施例提供的一种神经网络功能硬件电路142的结构框图;
图5为本申请实施例提供的一种处理单元1421的结构框图;
图6是本申请实施例提供的一种神经元过滤方法的流程示意图;
图7是本申请实施例提供的一种神经网络运算方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结果或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
图1是本申请实施例提供的一种神经网络运算装置的结构框图,所述神经网络运算装置集成于神经网络芯片,所述神经网络芯片应用于电子装置,所述网络运算装置包括多个硬件电路,所述多个硬件电路均为片上硬件单元。
如图所示,所述神经网络运算装置包括:指令控制硬件电路110、输入神经元缓存硬件电路120、神经元解码硬件电路130、一个或多个神经网络运算核140、神经元编码硬件电路150、输出神经元缓存硬件电路160以及权值索引缓存硬件电路170,其中:
所述指令控制单元110,用于生成控制指令,所述控制指令用于对所述输入神经元缓存硬件电路、所述神经元解码硬件电路、所述输出神经元编码硬件电路、所述输出神经元缓存硬件电路和所述权值索引缓存硬件电路进行控制;
所述输入神经元缓存硬件电路120,用于存储编码后的输入神经元,向所述神经元解码硬件电路130发送所述编码后的输入神经元;
所述神经元解码硬件电路130,用于从所述输入神经元缓存硬件电路中获取所述编码后的输入神经元,并对所述编码后的输入神经元执行解码操作,得到输入神经元,向所述一个或多个神经网络运算核140广播所述输入神经元;
所述一个或多个神经网络运算核140中任意一个神经网络运算核140,用于接收所述输入神经元,针对所述输出神经元进行计算得到输出神经元,对所述输出神经元执行过滤操作得到过滤后的输出神经元,向所述神经元编码硬件电路150发送所述过滤后的输出神经元;
所述神经元编码硬件电路150,用于接收所述一个或多个神经网络运算核140传输的所述过滤后的输出神经元,对所述过滤后的输出神经元进行编码得到所述编码后的输出神经元,向所述输出神经元缓存硬件电路发送所述编码后的输出神经元;
所述输出神经元缓存硬件电路160,用于存储编码后的输出神经元;
所述权值索引缓存硬件电路170,用于存储所述权值索引序列,向所述一个或多个神经网络运算核140广播所述权值索引序列。
具体实现过程中,电子装置通过直接存储器访问(directmemoryaccess,dma)的方式从指令控制硬件电路110中获取神经网络运算指令,依据所述神经网络运算指令从所述输入神经元缓存硬件电路120中提取所述编码后的输入神经元,依据所述神经网络运算指令从所述权值索引缓存硬件电路170中提取所述权值索引,将所述编码后的输入神经元和所述权值索引作为所述神经元解码硬件电路130的输入,其中,所述神经元解码硬件电路130用于对所述编码后的输入神经元执行解码操作,得到所述编码后的输入神经元对应的输入神经元,将所述输入神经元广播至所述多个神经网络运算核140中进行计算与过滤,得到过滤后的输出神经元,控制所述神经元编码硬件电路150对所述输出神经元执行编码操作,得到所述输出神经元对应的编码后的输出神经元,向所述输出神经元缓存硬件电路160发送所述编码后的输出神经元。
进一步地,在所述神经元解码硬件电路130中,所述编码后的输入神经元为神经元编码值,所述神经元编码值为依据预设编码方法对所述编码后的输入神经元对应的输入神经元执行编码操作得到的编码值,依据所述神经元编码值在所述神经元解码硬件电路130中执行查找表操作,确定所述神经元编码值对应的输入神经元,获取所述输入神经元。
其中,预设编码方法可以但不限于哈夫曼编码,哈夫曼编码(huffmancoding),又称霍夫曼编码,是一种编码方式,可变字长编码(vlc)的一种。huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做huffman编码(有时也称为霍夫曼编码)。
在一可能的示例中,针对所述多个神经网络运算核140中任意一个神经网络运算核140,如图2所示,图2是本申请实施例提供的如图1所示的神经网络运算装置中的神经网络运算核140的结构框图,如图所示,所述神经网络运算核140包括神经元选数硬件电路141、神经网络功能硬件电路142以及神经元过滤器143,其中:神经元选数硬件电路141,用于接收多个输入神经元,获取所述多个输入神经元的输入神经元索引序列和权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引;神经网络功能硬件电路142,用于接收目标输入神经元和目标权值索引;并依据所述目标权值索引确定目标权值,依据所述目标权值对所述目标输入神经元进行计算,得到输出神经元;神经元过滤器143,用于接收所述神经网络功能硬件电路的所述输出神经元,对所述输出神经元进行过滤,得到过滤后的输出神经元。
其中,所述多个输入神经元中的输入神经元均不等于0。
可选的,神经元选数硬件电路141还用于:接收所述多个输入神经元,获取预设的筛选规则,依据所述筛选规则在所述多个输入神经元中确定至少一个输入神经元,获取所述至少一个输入神经元的神经元索引序列为所述输入神经元索引,获取所述至少一个输入神经元对应的权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引。
结合上述示例,下面以一个例子来说明:接收多个输入神经元n1~n16,若该预设的筛选规则为:获取多个输入神经元的第1个至第8个输入神经元,则依据该预设的筛选规则在多个输入神经元中确定至少一个输入神经元n1~n8。
在一可能的示例中,在依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引方面,所述神经元选数硬件电路具体用于:获取预设的累加公式,依据所述累加公式对所述输入神经元序列索引执行累加操作,得到第一序列;依据所述累加公式对所述权值索引序列执行所述累加操作,得到第二序列;对所述输入神经元索引序列与所述权值索引序列执行与操作,得到第三序列;依据所述累加公式对所述第三序列执行所述累加操作,得到第四序列;对所述第三序列和第四序列执行与操作,得到第五序列;将所述第一序列和所述第五序列作为预设的第一数据选择器的输入,确定至少一个第一序列值;将所述至少一个第一序列值和所述输入神经元作为预设的第二数据选择器的输入,得到所述至少一个第一序列值对应的至少一个目标输入神经元;将所述第二序列和所述第五序列作为预设的第三数据选择器的输入,确定至少一个第二序列值;依据所述至少一个第二序列值和所述神经元索引序列确定所述目标权值索引。
具体实现过程中,如图3所示,图3为本申请实施例提供的一种神经元选数硬件电路的计算流程图,接收输入神经元n1、n2、n3、n5和n7,接收输入神经元索引序列(11101010),其中,在该输入神经元索引序列中,当输入神经元索引为1时表示该输入神经元索引对应的输入神经元不为0,当输入神经元索引为0时表示该输入神经元索引对应的输入神经元为0,则该输入神经元索引序列对应的输入神经元为n1~n8,即输入神经元n4、n6和n8为0;依据预设的累加公式对该输入神经元索引执行累加操作得到第一序列,其中,当输入神经元索引序列中第i个输入神经元索引表示为xj时,则该累加公式可以表示为:
具体实施过程中,如图4所示,图4是本申请实施例提供的一种神经网络功能硬件电路142的结构框图,如图所示,神经网络功能硬件电路142中包含多个处理单元1421,该多个处理单元1421并行运算。
如图5所示,图5为本申请实施例提供的一种处理单元1421的结构框图,如图所示,该处理单元1421包括权值缓存硬件电路14211、权值解码硬件电路14212、权值选数硬件电路14213和计算硬件电路14214,当权值选数硬件电路14213接收到目标权值索引时,从权值缓存硬件电路14211中获取第一权值,第一权值为编码后的权值,向该权值解码硬件电路14212发送第一权值,控制该权值解码硬件电路14212针对第一权值执行解码操作,得到权值,向权值选数硬件电路14213发送该权值,控制该权值选数硬件电路14213依据该目标权值索引在该权值中提取目标权值,并向计算硬件电路14214发送该目标权值,接收输入神经元,控制该计算硬件电路14214针对目标权值与该输入神经元进行计算,得到输出神经元。
在一可能的示例中,在所述依据所述目标权值索引对所述第二权值进行筛选得到所述目标权值方面,所述权值选数硬件电路具体用于:将所述目标权值索引与所述第二权值作为预设第四数据选择器的输入,得到所述目标权值索引对应的所述目标权值。
其中,该第二权值不等于0。可选的,获取第二权值s1、s2、s3和s4,其中,s1、s2、s3和s4均不等于0,获取目标权值索引(1、4),将该第二权值s1、s2、s3、s4和目标权值索引(1、4)作为第四数据选择器的输入,得到目标权值(s1和s4)。
在一可能的示例中,在所述对所述输出神经元进行过滤,得到过滤后的输出神经元方面,所述神经元过滤器,具体用于:接收所述输出神经元,将所述输出神经元作为预设比较器的输入,得到所述输出神经元对应的第一输出序列;获取预设的累加公式,依据所述累加公式对所述第一输出序列执行累加操作,得到第二输出序列;对所述第一输出序列和所述第二输出序列执行与操作,得到第三输出序列;将所述输出神经元和所述第三输出序列作为预设的第五数据选择器的输入,得到至少一个输出神经元作为所述过滤后的输出神经元。
具体实施过程中,如图6所示,图6是本申请实施例提供的一种神经元过滤器以及该神经元过滤器执行神经元过滤方法的流程示意图,该神经元过滤方法应用与神经网络运算装置中的神经元过滤器,其中,接收输出神经元n11、n22、n33、n44、n55、n66、n77和n88,其中,输出神经元n11、n44、n55、n77等于0,获取预设比较器,该预设比较器用于对输出神经元进行比较得到第一输出序列,在该预设比较器中,当输出神经元等于0时,该预设比较器输出该输出神经元对应的第一输序列值0,当输出神经元不等于0时,该预设比较器输出该输出神经元对应的第一输出序列值1,即该第一输出序列为01100101,依据预设的累加工时对第一输出序列执行累加操作得到第二输出序列,其中,当第i个第一输出序列值表示为mi时,则该累加公式可以表示为:
在一可能的示例中,在得到所述输出神经元对应的第一输出序列之后方面,所述神经元过滤器,还用于:基于所述第一输出序列生成输出神经元索引;向所述输出神经元缓存硬件电路发送所述输出神经元索引。
可选的,确定该第一输出序列为该输出神经元索引,想输出神经元缓存硬件电路发送输出神经元索引。
可以看出,本申请实施例提供的神经网络运算装置包括:多个神经网络运算核,其中,所述多个神经网络运算核中的每个包括:神经元选数硬件电路,用于接收多个输入神经元,获取所述多个输入神经元的输入神经元索引序列和权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引;神经网络功能硬件电路,用于接收目标输入神经元和目标权值索引;并依据所述目标权值索引确定目标权值,依据所述目标权值对所述目标输入神经元进行计算,得到输出神经元;神经元过滤器,用于接收所述神经网络功能硬件电路的所述输出神经元,对所述输出神经元进行过滤,得到过滤后的输出神经元。可见,多个神经网络运算核结构可以并行执行神经网络运算,有利于提高神经网络运算速率,通过对输入神经元与输出神经元进行编码存储,减少输入神经元与输出神经元存储量,通过神经元索引序列和权值索引序列筛选输入神经元,有利于减少神经网络的运算量,从而有利于提高神经网络的计算速率,同时,通过增加神经网络运算核的数量增大神经网络运算装置算力,解决单核神经网络运算装置处理视频流时每秒传输帧数过低的问题,有利于提高实时视频处理等高帧率处理要求的处理效果。
请参阅图7,图7是本申请实施例提供的一种神经网络运算方法的流程示意图,应用于如图1所述的神经网络运算装置,其中:
步骤701、接收多个编码后的输入神经元,针对所述多个编码后的输入神经元执行解码操作得到多个输入神经元;
步骤702、获取所述多个输入神经元的输入神经元索引序列和权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引;
步骤703、依据所述目标权值索引确定目标权值,依据所述目标权值对所述目标输入神经元进行计算,得到输出神经元;
步骤704、对所述输出神经元进行过滤,得到过滤后的输出神经元,存储所述过滤后的输出神经元。
在一可能的示例中,所述依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引,包括:获取预设的累加公式,依据所述累加公式对所述输入神经元索引序列执行累加操作,得到第一序列;依据所述累加公式对所述权值索引序列执行所述累加操作,得到第二序列;对所述输入神经元索引序列与所述权值索引序列执行与操作,得到第三序列;依据所述累加公式对所述第三序列执行所述累加操作,得到第四序列;对所述第三序列和第四序列执行与操作,得到第五序列;将所述第一序列和所述第五序列作为预设的第一数据选择器的输入,确定至少一个第一序列值;将所述至少一个第一序列值和所述输入神经元作为预设的第二数据选择器的输入,得到所述至少一个第一序列值对应的至少一个目标输入神经元;将所述第二序列和所述第五序列作为预设的第三数据选择器的输入,确定至少一个第二序列值;依据所述至少一个第二序列值和所述神经元索引序列确定所述目标权值索引。
在一可能的示例中,所述依据所述目标权值引索确定目标权值,包括:获取所述第一权值,并对所述第一权值进行解码,以得到第二权值;接收目标权值索引,依据所述目标权值索引引对所述第二权值进行筛选得到所述目标权值;接收输入神经元,依据所述目标权值和依据所述目标权值对所述目标输入神经元进行计算,得到所述输出神经元。
在一可能的示例中,所述依据所述目标权值索引对所述第二权值进行筛选得到所述目标权值,包括:将所述目标权值索引与所述第二权值作为预设第四数据选择器的输入,得到所述目标权值索引对应的所述目标权值。
在一可能的示例中,所述对所述输出神经元进行过滤,得到过滤后的输出神经元,包括:接收所述输出神经元,将所述输出神经元作为预设比较器的输入,得到所述输出神经元对应的第一输出序列;获取预设的累加公式,依据所述累加公式对所述第一输出序列执行累加操作,得到第二输出序列;对所述第一输出序列和所述第二输出序列执行与操作,得到第三输出序列;将所述输出神经元和所述第三输出序列作为预设的第五数据选择器的输入,得到至少一个输出神经元作为所述过滤后的输出神经元。
在一可能的示例中,所述得到所述输出神经元对应的第一输出序列之后,还包括:基于所述第一输出序列生成输出神经元索引;存储所述输出神经元索引。
可以看出,在本申请实施例中,神经网络运算装置接收多个编码后的输入神经元,针对所述多个编码后的输入神经元执行解码操作得到多个输入神经元;获取所述多个输入神经元的输入神经元索引序列和权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引;依据所述目标权值索确定目标权值,依据所述目标权值对所述目标输入神经元进行计算,得到输出神经元;对所述输出神经元进行过滤,得到过滤后的输出神经元,存储所述过滤后的输出神经元。如此,可以通过对输入神经元与输出神经元进行编码存储,减少输入神经元与输出神经元存储量,通过神经元索引序列和权值索引序列筛选输入神经元,有利于减少神经网络的运算量,从而提高神经网络的计算速率。
在一些实施例里,公开了一种板卡,其包括了上述神经网络装置。
在一些实施例里,公开了一种电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和硬件电路并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
1.一种神经网络运算装置,其特征在于,包括:一个或多个神经网络运算核,其中,所述一个或多个神经网络运算核中的每个包括:
神经元选数模块,用于接收多个输入神经元,获取所述多个输入神经元的输入神经元索引序列和权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引;
神经网络功能模块,用于接收目标输入神经元和目标权值索引;并依据所述目标权值索确定目标权值,依据所述目标权值对所述目标输入神经元进行计算,得到输出神经元;
神经元过滤器,用于接收所述神经网络功能模块的所述输出神经元,对所述输出神经元进行过滤,得到过滤后的输出神经元。
2.根据权利要求1所述的装置,其特征在于,所述装置还包括:神经元解码模块、输出神经元编码模块,其中:
所述神经元解码模块,用于获取编码后的输入神经元,并对所述编码后的输入神经元执行解码操作,得到输入神经元,向所述一个或多个神经网络运算核广播所述输入神经元;
所述神经元编码模块,用于接收所述一个或多个神经网络运算核传输的所述过滤后的输出神经元,对所述过滤后的输出神经元进行编码得到编码后的输出神经元。
3.根据权利要求2所述的装置,其特征在于,所述装置还包括:指令控制模块、输入神经元缓存模块、输出神经元缓存模块、权值索引缓存模块,其中:
所述指令控制单元,用于生成控制指令,所述控制指令用于对所述输入神经元缓存模块、所述神经元解码模块、所述输出神经元编码模块、所述输出神经元缓存模块和所述权值索引缓存模块进行控制;
所述输入神经元缓存模块,用于存储所述编码后的输入神经元,向所述神经元解码模块发送所述编码后的输入神经元;
所述输出神经元缓存模块,用于存储所述编码后的输出神经元;
所述权值索引缓存模块,用于存储所述权值索引序列,向所述一个或多个神经网络运算核广播所述权值索引序列。
4.根据权利要求1-3任一项所述的装置,其特征在于,在依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引方面,所述神经元选数模块具体用于:
获取预设的累加公式,依据所述累加公式对所述输入神经元索引序列执行累加操作,得到第一序列;
依据所述累加公式对所述权值索引序列执行所述累加操作,得到第二序列;
对所述输入神经元索引序列与所述权值索引序列执行与操作,得到第三序列;
依据所述累加公式对所述第三序列执行所述累加操作,得到第四序列;
对所述第三序列和第四序列执行与操作,得到第五序列;
将所述第一序列和所述第五序列作为预设的第一数据选择器的输入,确定至少一个第一序列值;
将所述至少一个第一序列值和所述输入神经元作为预设的第二数据选择器的输入,得到所述至少一个第一序列值对应的至少一个目标输入神经元;
将所述第二序列和所述第五序列作为预设的第三数据选择器的输入,确定至少一个第二序列值;
依据所述至少一个第二序列值和所述神经元索引序列确定所述目标权值索引。
5.根据权利要求1-4任一项所述的装置,其特征在于,所述神经网络功能模块包括:多个处理单元,其中,所述多个处理单元中的每个处理单元,包括:
权值缓存模块,用于缓存第一权值,所述第一权值为编码后的权值;
权值解码模块,用于从所述权值缓存单元中获取所述第一权值,并对所述第一权值进行解码,以得到第二权值,将所述第二权值传输至所述权值选数单元;
权值选数模块,用于接收目标权值索引,依据所述目标权值索引对所述第二权值进行筛选得到所述目标权值;
计算模块,用于接收输入神经元,依据所述目标权值和依据所述目标权值对所述目标输入神经元进行计算,得到所述输出神经元。
6.根据权利要求5所述的装置,其特征在于,在所述依据所述目标权值索引对所述第二权值进行筛选得到所述目标权值方面,所述权值选数模块具体用于:
将所述目标权值索引与所述第二权值作为预设第四数据选择器的输入,得到所述目标权值索引对应的所述目标权值。
7.根据权利要求1-6任一项所述的装置,其特征在于,在所述对所述输出神经元进行过滤,得到过滤后的输出神经元方面,所述神经元过滤器,具体用于:
接收所述输出神经元,将所述输出神经元作为预设比较器的输入,得到所述输出神经元对应的第一输出序列;
获取预设的累加公式,依据所述累加公式对所述第一输出序列执行累加操作,得到第二输出序列;
对所述第一输出序列和所述第二输出序列执行与操作,得到第三输出序列;
将所述输出神经元和所述第三输出序列作为预设的第五数据选择器的输入,得到至少一个输出神经元作为所述过滤后的输出神经元。
8.根据权利要求7所述的装置,其特征在于,在得到所述输出神经元对应的第一输出序列之后方面,所述神经元过滤器,还用于:
基于所述第一输出序列生成输出神经元索引;
向所述输出神经元缓存模块发送所述输出神经元索引。
9.一种神经网络运算方法,其特征在于,包括:
接收多个编码后的输入神经元,针对所述多个编码后的输入神经元执行解码操作得到多个输入神经元;
获取所述多个输入神经元的输入神经元索引序列和权值索引序列,依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引;
依据所述目标权值索引确定目标权值,依据所述目标权值对所述目标输入神经元进行计算,得到输出神经元;
对所述输出神经元进行过滤,得到过滤后的输出神经元,存储所述过滤后的输出神经元。
10.根据权利要求9所述的方法,其特征在于,所述依据所述输入神经元索引序列和所述权值索引序列确定目标输入神经元和目标权值索引,包括:获取预设的累加公式,依据所述累加公式对所述输入神经元索引序列执行累加操作,得到第一序列;依据所述累加公式对所述权值索引序列执行所述累加操作,得到第二序列;对所述输入神经元索引序列与所述权值索引序列执行与操作,得到第三序列;依据所述累加公式对所述第三序列执行所述累加操作,得到第四序列;对所述第三序列和第四序列执行与操作,得到第五序列;将所述第一序列和所述第五序列作为预设的第一数据选择器的输入,确定至少一个第一序列值;将所述至少一个第一序列值和所述输入神经元作为预设的第二数据选择器的输入,得到所述至少一个第一序列值对应的至少一个目标输入神经元;将所述第二序列和所述第五序列作为预设的第三数据选择器的输入,确定至少一个第二序列值;依据所述至少一个第二序列值和所述神经元索引序列确定所述目标权值索引。
11.根据权利要求9所述的方法,其特征在于,所述依据所述目标权值引索确定目标权值,包括:获取所述第一权值,并对所述第一权值进行解码,以得到第二权值;接收目标权值索引,依据所述目标权值索引引对所述第二权值进行筛选得到所述目标权值;接收输入神经元,依据所述目标权值和依据所述目标权值对所述目标输入神经元进行计算,得到所述输出神经元。
12.根据权利要求11所述的方法,其特征在于,所述依据所述目标权值索引对所述第二权值进行筛选得到所述目标权值,包括:将所述目标权值索引与所述第二权值作为预设第四数据选择器的输入,得到所述目标权值索引对应的所述目标权值。
13.根据权利要求9所述的方法,其特征在于,所述对所述输出神经元进行过滤,得到过滤后的输出神经元,包括:接收所述输出神经元,将所述输出神经元作为预设比较器的输入,得到所述输出神经元对应的第一输出序列;获取预设的累加公式,依据所述累加公式对所述第一输出序列执行累加操作,得到第二输出序列;对所述第一输出序列和所述第二输出序列执行与操作,得到第三输出序列;将所述输出神经元和所述第三输出序列作为预设的第五数据选择器的输入,得到至少一个输出神经元作为所述过滤后的输出神经元。
14.根据权利要求13所述的方法,其特征在于,所述得到所述输出神经元对应的第一输出序列之后,还包括:基于所述第一输出序列生成输出神经元索引;存储所述输出神经元索引。
15.一种板卡,其特征在于,所述板卡包括权利要求1-8所述的神经网络运算装置。
16.一种电子装置,其特征在于,所述电子装置包括权利要求15的板卡。
技术总结