轴突输入扩展方法、装置、设备和存储介质转让专利

申请号 : CN202110838553.4

文献号 : CN113554162B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈克林杨力邝吕正祥张华秋袁抗陈旭朱文俊梁龙飞

申请人 : 上海新氦类脑智能科技有限公司

摘要 :

本申请提供的一种轴突输入扩展方法、装置、设备和存储介质,当需要参与运算的轴突输入数K大于可支持的最大轴突数输入N时,将K个轴突输入分组并分别连接到多个神经元核的轴突输入;各神经元核对各个单比特轴突输入进行加权相加得到以M比特位宽的加权和,删除X个低位以转换为S比特位宽的加权和;分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和;加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据。本申请不需要乘法电路,也不需要支持ANN模式,没有引入额外的运算单元,成本较低;和现有方法相比算法精度更高;使用的神经元核数目比清华的轴突扩展方法数目少。

权利要求 :

1.一种轴突输入扩展方法,其特征在于,用于脉冲神经网络芯片,所述方法包括:当需要参与运算的轴突输入数K大于单个神经元核中每个神经元可支持的最大轴突数输入N时,将K个轴突输入分组并分别连接到多个神经元核的轴突输入;

各神经元核对各个单比特轴突输入进行加权相加得到以M比特位宽表示的加权和,将M比特位宽删除X个低位以转换为S比特位宽的加权和,以降低神经元核通信位宽、数据的空间、降低运算单元的位宽;

将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和;

所述加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据,同时将一固定膜电压值存入膜电压寄存器,或者将上一次膜电压值与阈值的差值加上所述加权总和存入膜电压寄存器;若小于阈值,则汇总神经元核不输出脉冲数据。

2.根据权利要求1所述的方法,其特征在于,所述将K个轴突输入分组并分别连接到多个神经元核的轴突输入,包括:将第0 第N‑1个轴突输入连接到神经元核0的轴突输入,第N 第2N‑1个轴突输入连接到~ ~神经元核1的轴突输入,以此类推直到K个轴突输入映射完毕;

其中,各神经元中未被映射使用的轴突输入被置0或将其相应权重置0。

3.根据权利要求1所述的方法,其特征在于,所述X大于等于0,小于M。

4.根据权利要求1所述的方法,其特征在于,所述将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和,包括:将神经元核0的S比特位宽的加权和输出连接到汇总神经元核T的第0个轴突输入,将神经元核1的S比特位宽的加权和输出连接到汇总神经元核T的第1个轴突输入,以此类推直到映射完毕;

其中,汇总神经元核T中所有被映射使用到的轴突输入对应的权重置1;未被映射使用到的轴突输入被置0或将相应权重置0。

5.根据权利要求1所述的方法,其特征在于,所述加权总和加上上一次膜电压值并与阈值比较;若小于阈值,则汇总神经元核不输出脉冲数据,包括:若小于阈值,则汇总神经元核不输出脉冲数据,同时将所述加权总和加上上一次膜电压值存入膜电压寄存器。

6.根据权利要求5所述的方法,其特征在于,所述膜电压值为神经元核中各有连接关系的轴突经加权后相加并持续累加处理后得到的值。

7.一种轴突输入扩展装置,其特征在于,用于脉冲神经网络芯片,所述装置包括:映射模块,用于当需要参与运算的轴突输入数K大于单个神经元核中每个神经元可支持的最大轴突数输入N时,将K个轴突输入分组并分别连接到多个神经元核的轴突输入;

处理模块,用于各神经元核对各个单比特轴突输入进行加权相加得到以M比特位宽表示的加权和,将M比特位宽删除X个低位以转换为S比特位宽的加权和;以降低神经元核通信位宽、数据的空间、降低运算单元的位宽;将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和;所述加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据,同时将一固定膜电压值存入膜电压寄存器,或者将上一次膜电压值与阈值的差值加上所述加权总和存入膜电压寄存器;若小于阈值,则汇总神经元核不输出脉冲数据。

8.一种计算机设备,其特征在于,所述设备包括:存储器、及处理器;所述存储器用于存储计算机指令;所述处理器运行计算机指令实现如权利要求1至6中任意一项所述的方法。

9.一种计算机可读存储介质,其特征在于,存储有计算机指令,所述计算机指令被运行时执行如权利要求1至6中任一项所述的方法。

说明书 :

轴突输入扩展方法、装置、设备和存储介质

技术领域

[0001] 本发明涉及的轴突输入扩展技术领域,特别是涉及一种轴突输入扩展方法、装置、设备和存储介质。

背景技术

[0002] 深度神经网络(DNN)研究近年来取得了飞速发展并得到初步应用。然而实现这样的算法,通常需要消耗大量的算力。如经典的深度卷积网络(CNN)模型AlexNet,需要进行至少7.2亿次的乘法运算。大的运算量产生大的功耗,一般功耗在10瓦到100瓦左右。
[0003] 另一方面,脉冲神经网络(SNN)近年来以其低功耗和更接近人脑的特点吸引了学术界和产业界的关注。基于神经生物学的研究成果,发现人脑的神经元脉冲激活频率在10Hz左右,两次脉冲之间间隔在数毫秒。因此实现中每个神经元每1毫秒左右处理一次输入脉冲。另外加减法运算需要的时间在纳秒级。我们可以使用时分复用的方法,多个神经元复用同一个运算单元对不同轴突进行处理。目前的SNN芯片单个神经元核中的每个神经元支持的轴突输入数是固定的。例如IBM的TrueNorth,清华的天机芯单个神经元核中的每个神经元支持256个轴突输入;Intel的Loihi单个神经元核中的每个神经元支持1024个轴突输入。
[0004] 大脑研究发现一个神经元与1000个以上的轴突连接。另外,深度神经网络中每个神经元的输入数不确定:假定其中一层的输入通道数为1024,卷积核为3x3,当这一深度神经网络映射到SNN硬件的时候,这一层每个神经元的输入轴突数就是1024*3*3=9216。可以看出,实际的轴突输入数大于硬件中单个神经元核支持的最大轴突输入数。
[0005] 为解决这一问题,可以映射到多个神经元核,将多个神经元核的神经元脉冲输出进行相加。但是这种方法精度很低。清华大学天机芯团队使用芯片中的ANN电路可以解决精度降低的问题,但是ANN模式的引入额外增加了成本。

发明内容

[0006] 鉴于以上所述现有技术的缺点,本申请的目的在于提供一种轴突输入扩展方法、装置、设备和存储介质,以解决现有技术中的问题。
[0007] 为实现上述目的及其他相关目的,本申请提供一种轴突输入扩展方法,用于脉冲神经网络,所述方法包括:当需要参与运算的轴突输入数K大于单个神经元核中每个神经元可支持的最大轴突数输入N时,将K个轴突输入分组并分别连接到多个神经元核的轴突输入;各神经元核对各个单比特轴突输入进行加权相加得到以M比特位宽表示的加权和,将M比特位宽删除X个低位以转换为S比特位宽的加权和;将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和;所述加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据;若小于阈值,则汇总神经元核不输出脉冲数据。
[0008] 于本申请的一实施例中,所述将K个轴突输入分组并分别连接到多个神经元核的轴突输入,包括:将第0~第N‑1个轴突输入连接到神经元核0的轴突输入,第N~第2N‑1个轴突输入连接到神经元核1的轴突输入,以此类推直到K个轴突输入映射完毕;其中,各神经元中未被映射使用的轴突输入被置0或将其相应权重置0。
[0009] 于本申请的一实施例中,所述X大于等于0,小于M。
[0010] 于本申请的一实施例中,所述将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和,包括:将神经元核0的S比特位宽的加权和输出连接到汇总神经元核T的第0个轴突输入,将神经元核1的S比特位宽的加权和输出连接到汇总神经元核T的第1个轴突输入,以此类推直到映射完毕;其中,汇总神经元核T中所有被映射使用到的轴突输入对应的权重置1;未被映射使用到的轴突输入被置0或将相应权重置0。
[0011] 于本申请的一实施例中,所述加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据;若小于阈值,则汇总神经元核不输出脉冲数据,包括:若大于等于阈值,则汇总神经元核输出1比特脉冲数据,同时将一固定膜电压值存入膜电压寄存器,或者将上一次膜电压值与阈值的差值加上所述加权总和存入膜电压寄存器;若小于阈值,则汇总神经元核不输出脉冲数据,同时将所述加权总和加上上一次膜电压值存入膜电压寄存器。
[0012] 于本申请的一实施例中,所述方法还包括:当需要参与运算的轴突数K不大于单个神经元核中每个神经元可支持的最大轴突数N时,将K个参与运算的轴突输入分别连接到神经元核的前K个轴突输入;所述神经元核中未被使用的轴突输入被置0或将其相应权重置0;每个神经元核将所有单比特轴突输入乘上相应的权重并进行相加,得到轴突加权和;将所述轴突加权和与膜电压寄存器中存储的前一次膜电压结果相加并与阈值比较;若大于等于阈值,则该神经元核输出1比特脉冲数据,同时将一固定膜电压值存入膜电压寄存器,或者将上一次膜电压值与阈值的差值加上所述加权总和存入膜电压寄存器;若小于阈值,则该神经元核不输出脉冲数据,同时将相加存入膜电压寄存器中。
[0013] 于本申请的一实施例中,所述膜电压值为神经元核中各有连接关系的轴突经加权后相加并持续累加处理后得到的值。
[0014] 为实现上述目的及其他相关目的,本申请提供一种轴突输入扩展装置,所述装置包括:映射模块,用于当需要参与运算的轴突输入数K大于单个神经元核中每个神经元可支持的最大轴突数输入N时,将K个轴突输入分组并分别连接到多个神经元核的轴突输入;处理模块,用于各神经元核对各个单比特轴突输入进行加权相加得到以M比特位宽表示的加权和,将M比特位宽删除X个低位以转换为S比特位宽的加权和;将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和;所述加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据;若小于阈值,则汇总神经元核不输出脉冲数据。
[0015] 为实现上述目的及其他相关目的,本申请提供一种计算机设备,所述设备包括:存储器、及处理器;所述存储器用于存储计算机指令;所述处理器运行计算机指令实现如上所述的方法。
[0016] 为实现上述目的及其他相关目的,本申请提供一种计算机可读存储介质,存储有计算机指令,所述计算机指令被运行时执行如上所述的方法。
[0017] 综上所述,本申请的一种轴突输入扩展方法、装置、设备和存储介质,用于脉冲神经网络,当需要参与运算的轴突输入数K大于单个神经元核中每个神经元可支持的最大轴突数输入N时,将K个轴突输入分组并分别连接到多个神经元核的轴突输入;各神经元核对各个单比特轴突输入进行加权相加得到以M比特位宽表示的加权和,将M比特位宽删除X个低位以转换为S比特位宽的加权和;将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和;所述加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据;若小于阈值,则汇总神经元核不输出脉冲数据。
[0018] 具有以下有益效果:
[0019] 本申请不需要乘法电路,也不需要支持ANN模式,没有引入额外的运算单元,成本较低,和现有方法相比,本申请算法精度更高;使用的神经元核数目比清华的轴突扩展方法数目少。

附图说明

[0020] 图1显示为本申请于一实施例中的轴突输入扩展方法的流程示意图。
[0021] 图2显示为本申请于一实施例中的当K>N时本申请的轴突输入扩展方法的场景示意图。
[0022] 图3显示为本申请于一实施例中的当K>N时现有的轴突输入扩展方法的场景示意图。
[0023] 图4显示为本申请于一实施例中的当K<=N时神经元核的场景示意图。
[0024] 图5显示为本申请于一实施例中的轴突输入扩展装置的模块示意图。
[0025] 图6显示为本申请于一实施例中的计算机设备的结构示意图。

具体实施方式

[0026] 以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0027] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,虽然图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,但其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0028] 在通篇说明书中,当说某部分与另一部分“连接”时,这不仅包括“直接连接”的情形,也包括在其中间把其它元件置于其间而“间接连接”的情形。另外,当说某种部分“包括”某种构成要素时,只要没有特别相反的记载,则并非将其它构成要素,排除在外,而是意味着可以还包括其它构成要素。
[0029] 其中提到的第一、第二及第三等术语是为了说明多样的部分、成分、区域、层及/或段而使用的,但并非限定于此。这些术语只用于把某部分、成分、区域、层或段区别于其它部分、成分、区域、层或段。因此,以下叙述的第一部分、成分、区域、层或段在不超出本申请范围的范围内,可以言及到第二部分、成分、区域、层或段。
[0030] 再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
[0031] 目前的SNN芯片单个神经元核中的每个神经元支持的轴突输入数是固定的。例如IBM的TrueNorth,清华的天机芯单个神经元核中的每个神经元支持256个轴突输入;Intel的Loihi单个神经元核中的每个神经元支持1024个轴突输入。但通常实际需要的轴突输入数会大于硬件中单个神经元核可支持的最大轴突输入数,因此需要能够映射到更多各神经元核。为解决这一问题,本申请提出一种轴突输入扩展方法、装置、设备和存储介质。
[0032] 如图1所示,展示为本申请一实施例中的轴突输入扩展方法的流程示意图。如图所示,所述方法包括:
[0033] 步骤S101:当需要参与运算的轴突输入数K大于单个神经元核中每个神经元可支持的最大轴突数输入N时,将K个轴突输入分组并分别连接到多个神经元核的轴突输入。
[0034] 首先需要说明的是,本申请所述轴突输入扩展方法用于脉冲神经网络(SNN)。
[0035] 在脉冲神经网络(SNN)中,轴突是接收脉冲的单元,神经元是发送脉冲的单元,一个神经元通过树突连接到多个轴突,树突和轴突的连接点称为突触。轴突接收到脉冲后,所有和这一轴突有突触连接的树突会收到脉冲,进而影响到树突下游神经元。下游神经元将来自多个轴突的脉冲相加并与之前的膜电压累加,如果数值超过阈值,就向下游发送一个脉冲。脉冲神经网络内传播的是1比特的脉冲,脉冲的激活频率比较低,并且只需要加减法运算,没有乘法运算。相比于基于深度学习的神经网路,脉冲神经网络功耗更低。
[0036] 通常的实现中一个神经元核集成了多个神经元,同一个核中所有的神经元复用计算电路。
[0037] 如图2所示,具体地,所述将K个轴突输入分组并分别连接到多个神经元核的轴突输入,包括:将第0~第N‑1个轴突输入连接到神经元核0的轴突输入,第N~第2N‑1个轴突输入连接到神经元核1的轴突输入,以此类推直到K个轴突输入映射完毕;其中,各神经元中未被映射使用的轴突输入被置0或将其相应权重W置0。
[0038] 步骤S102:各神经元核对各个单比特轴突输入进行加权相加得到以M比特位宽表示的加权和,将M比特位宽删除X个低位以转换为S比特位宽的加权和。
[0039] 需要说明的是,与现有做法不同的是,本申请神经元核中的神经元只对单比特轴突输入进行加权相加,不进行膜电压累加,不进行阈值比较,直接将加权和全部以M比特位宽表示输出,或者将加权和做截断处理,即将M比特位宽删除X个低位以转换为S比特位宽的加权和输出,其中,所述X大于等于0,小于M,即1<=S<=M。
[0040] 举例来说,当N=10时,如果权重W为0或者1,那么乘加结果最大为10,最小为0,用4比特表示即可,不需要10比特。
[0041] 优选地,本申请实际上M位宽的数据可以表示的最大值大于输入加权相加的最大值。如上举例,最大的加权和为10,而假设M=4,其可表示的最大值其实是15(0占了一个数)。当然,M还可是大于4位位宽,如M=27等。
[0042] 需要说明的是,后续多个M位宽的数据在步骤S104中相加并与以前的膜电压寄存器值累加后,最终和阈值相比较,输出1比特的脉冲数据。但实际上M比特数据只有高位对最终脉冲数据有很大的影响,低位部分影响很小。为了降低模式B神经元核和后续步骤中神经元核通信位宽、数据的空间、降低运算单元的位宽,可以将低位部分去掉,精度有较小的损失。例如取S=16。一般精度损失~0.1%。
[0043] 为了便于理解和记忆,本申请将上述步骤S101与S102记为工作模式B。将步骤S103与S104记为工作模式C。
[0044] 步骤S103:将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和。
[0045] 于本申请一实施例中,所述步骤S103具体包括:将神经元核0的S比特位宽的加权和输出连接到汇总神经元核T的第0个轴突(宽度S比特)输入,将神经元核1的S比特位宽的加权和输出连接到汇总神经元核T的第1个轴突(宽度S比特)输入,以此类推直到映射完毕;其中,汇总神经元核T中所有被映射使用到的轴突输入对应的权重W置1;未被映射使用到的轴突输入被置0或将相应权重W置0。
[0046] 步骤S104:所述加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据;若小于阈值,则汇总神经元核不输出脉冲数据。
[0047] 其中,若大于等于阈值,则汇总神经元核输出1比特脉冲数据,同时将一固定膜电压值存入膜电压寄存器,或者将上一次膜电压值与阈值的差值加上所述加权总和存入膜电压寄存器;若小于阈值,则汇总神经元核不输出脉冲数据,同时将所述加权总和加上上一次膜电压值存入膜电压寄存器。
[0048] 具体的,所述膜电压值为神经元核中各有连接关系的轴突经加权后相加并持续累加处理后得到的值,这里处理包括可能减去的阈值。
[0049] 如图3所示,展示为于本申请一实施例中现有轴突扩展方法的场景示意图。
[0050] 目前多数脉冲神经网络(SNN)芯片采用这种模式。即将第0~第N‑1个轴突输入连接到神经元核0,第N~第2N‑1个轴突输入连接到神经元核1,以此类推,直到K个轴突输入映射完毕。未被使用的神经元核的轴突输入可以被置0或者将其相应权重W置0。将神经元核0的脉冲输出连接到神经元核T的第0个轴突输入,将神经元核1的脉冲输出连接到神经元核T的第1个轴突输入,以此类推,直到映射完毕。神经元核T中的所有使用到的轴突相应权重W置1,未被使用的轴突输入被置0或者相应权重W置0。神经元核T中的神经元实现了K个轴突输入的相加。
[0051] 理想的K个轴突输入运算是K个单比特轴突输入和相应的权重相乘,并相加,得到的部分和再和前一次膜电压结果相加并与阈值比较。加权和由多比特精度变成了1比特精度,最终的结果精度损失严重。
[0052] 清华大学使用了SNN转ANN的接口输出多位宽数据,并使用ANN核中的乘加电路进行多比特数据相加,再使用ANN转SNN的接口最终实现脉冲输出。这一方法的缺点是开销较大:需要额外的支持ANN的乘加电路,而SNN芯片一般只有加法电路;需要支持ANN输入,ANN运算和ANN输出的神经元核参与运算。
[0053] 本申请除了能够针对K大于N的情况进入工作模式B外,也可以对不K大于N的情况时有对应的工作模式A。
[0054] 于本申请一实施例中,如图4所示,展示为本申请于一实施例中当K<=N时的神经元核的场景示意图,如图所示,具体方法包括:
[0055] A、当需要参与运算的轴突数K不大于单个神经元核中每个神经元可支持的最大轴突数N时,将K个参与运算的轴突输入分别连接到神经元核的前K个轴突输入;
[0056] B、所述神经元核中未被使用的轴突输入被置0或将其相应权重置0;
[0057] C、每个神经元核将所有单比特轴突输入乘上相应的权重并进行相加,得到轴突加权和;
[0058] D、将所述轴突加权和与膜电压寄存器中存储的前一次膜电压结果相加并与阈值比较;若大于等于阈值,则该神经元核输出1比特脉冲数据,同时将一固定膜电压值存入膜电压寄存器,或者将上一次膜电压值与阈值的差值加上所述加权总和存入膜电压寄存器;若小于阈值,则该神经元核不输出脉冲数据(或者输出为0),同时将相加存入膜电压寄存器中。
[0059] 简单来说,当K<=N时的神经元核中的每个神经元时,则属于常见的正常情况,即本申请采用工作模式A进行处理即可。首先,将K个参与运算的轴突连接到神经元核的前K个轴突输入。当K
[0060] 需要说明的是,本申请与清华大学的轴突扩展方法的区别需要强调一下几点:
[0061] 1)脉冲神经网络从原理上就是脉冲连接,即输出1比特或单比特。所以IBM的truenorth、Intel的Loihi都是脉冲连接。这些都只是实现了脉冲神经网络。如果轴突数不多,如K不大于N,就没有问题。也不需要考虑或者暂时不解决轴突数多导致一个核支持不了的情形。
[0062] 而直接输出全部比特(大于1比特)其实就退化成了人工神经网络,通信位宽增加,运算开销增加,功耗增加。同时不符合脉冲神经网络原理,没有利用脉冲神经网络低功耗优势。所以以较小的代价、较少使用的模式来支持这种例外场景是比较好的选择。
[0063] 2)输出更多比特与输出1比特相比,显然也是会带来其他问题的。具体为:神经元核之间通信连接,原来一次可以发多个脉冲数据,但在模式B下只能发一个多比特位宽的数据;在模式C的神经元核里,原来可以存储K个轴突,现在只能存储K/S(每笔数据是S比特)个多比特位宽数据,模式C支持的神经元数比模式A支持的神经元数较少了,而为了解决轴突拓展的问题,必须克服这些缺点。
[0064] 3)本申请与清华方案,改进在于:
[0065] 清华使用ANN转SNN的接口最终实现脉冲输出,实际上也是多比特,例如16比特。他们在这块芯片里额外做了人工神经网络,就是处理多比特输入,多比特输出的,刚好可以用来解决这个问题。但这一方法的缺点是开销较大:需要额外的支持ANN的乘加电路,而SNN芯片一般只有加法电路;需要支持ANN输入,ANN运算和ANN输出的神经元核参与运算[0066] 而本申请的方法就比较直接,不需要额外的ANN电路,在需要的时候使用模式B和模式C,代价较低。并且本申请由M转换为S,可以使位宽越窄,开销越低,功耗越低,只要精度下降在可以接受的范围内<0.5%都是可以接受的。例如S=1则可能造成30%以上的精度下降,只要在合适的位宽上,下降的精度是在可接受范围内的。
[0067] 综上所述,本申请不需要乘法电路,也不需要支持ANN模式,没有引入额外的运算单元,成本较低,和现有方法相比,本申请算法精度更高;使用的神经元核数目比清华的轴突扩展方法数目少。
[0068] 如图5所示,展示为本申请于一实施例中的轴突输入扩展装置的模块示意图。如图所示,所述装置500包括:
[0069] 映射模块501,用于当需要参与运算的轴突输入数K大于单个神经元核中每个神经元可支持的最大轴突数输入N时,将K个轴突输入分组并分别连接到多个神经元核的轴突输入;
[0070] 处理模块502,用于各神经元核对各个单比特轴突输入进行加权相加得到以M比特位宽表示的加权和,将M比特位宽删除X个低位以转换为S比特位宽的加权和;将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和;所述加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据;若小于阈值,则汇总神经元核不输出脉冲数据。
[0071] 需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本申请所述方法实施例基于同一构思,其带来的技术效果与本申请方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
[0072] 还需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,处理模块502可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上处理模块502的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0073] 例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital signal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system‑on‑a‑chip,简称SOC)的形式实现。
[0074] 如图6所示,展示为本申请于一实施例中的计算机设备的结构示意图。如图所示,所述计算机设备600包括:存储器601、及处理器602;所述存储器601用于存储计算机指令;所述处理器602运行计算机指令实现如图1所述的方法。
[0075] 在一些实施例中,所述计算机设备600中的所述存储器601的数量均可以是一或多个,所述处理器602的数量均可以是一或多个,而图6中均以一个为例。
[0076] 于本申请一实施例中,所述计算机设备600中的处理器602会按照如图1所述的步骤,将一个或多个以应用程序的进程对应的指令加载到存储器601中,并由处理器602来运行存储在存储器602中的应用程序,从而实现如图1所述的方法。
[0077] 所述存储器601可以包括随机存取存储器(RandomAccessMemory,简称RAM),也可以包括非易失性存储器(non‑volatilememory),例如至少一个磁盘存储器。所述存储器601存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
[0078] 所述处理器602可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0079] 在一些具体的应用中,所述计算机设备600的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清除说明起见,在图6中将各种总线都成为总线系统。
[0080] 于本申请的一实施例中,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如图1所述的方法。
[0081] 在任何可能的技术细节结合层面,本申请可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本申请的各个方面的计算机可读程序指令。
[0082] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD‑ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0083] 这里所描述的计算机可读程序可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。。
[0084] 综上所述,本申请提供的一种轴突输入扩展方法、装置、设备和存储介质,通过当需要参与运算的轴突输入数K大于单个神经元核中每个神经元可支持的最大轴突数输入N时,将K个轴突输入分组并分别连接到多个神经元核的轴突输入;各神经元核对各个单比特轴突输入进行加权相加得到以M比特位宽表示的加权和,将M比特位宽删除X个低位以转换为S比特位宽的加权和;将各神经元核的S比特位宽的加权和分别连接到一汇总神经元核的不同轴突输入,并将所有S比特位宽的加权和相加得到加权总和;所述加权总和加上上一次膜电压值并与阈值比较;若大于等于阈值,则汇总神经元核输出1比特脉冲数据;若小于阈值,则汇总神经元核不输出脉冲数据。
[0085] 本申请有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0086] 上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中包含通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。