1.本技术涉及数据处理技术领域,尤其涉及一种神经形态计算平台。
背景技术:2.现有的神经形态硬件计算平台仅支持固定的网络拓扑结构,如全连接脉冲神经网络以及脉冲卷积神经网络。而在机器视觉领域中,为了提高识别准确率,构造了多种网络拓扑结构的神经网络模型,而现有的神经形态硬件计算平台无法支持多网络拓扑结构的神经网络模型。
技术实现要素:3.本技术提供了一种神经形态计算平台,用于改善现有的神经形态计算平台无法支持多种网络拓扑结构的神经网络模型的技术问题。
4.有鉴于此,本技术第一方面提供了一种神经形态计算平台,包括:神经元计算单元、脉冲缓存单元、数据重排单元、脉冲编码器、控制器和脉冲输出计数器,所述神经元计算单元包括脉冲配置整合单元;
5.所述控制器,用于在接收到输入的待识别图像后,启动所述脉冲编码器对所述待识别图像进行脉冲编码,得到脉冲图像;
6.所述数据重排单元,用于根据卷积核的大小从脉冲图像中获取对应大小的卷积块,并将卷积块展开成一维阵列,得到神经元输入脉冲;
7.所述脉冲配置整合单元,用于根据当前网络层的结构配置神经元类型和分发所述神经元输入脉冲,在所述神经元计算单元根据所述神经元输入脉冲对当前网络层进行计算得到输出的脉冲结果后,对输出的所述脉冲结果进行整合并存储到所述脉冲缓存单元,为下一网络层的计算提供脉冲数据;
8.所述脉冲输出计数器,用于计数输出层神经元发放脉冲的数量,所述输出层神经元发放脉冲的数量用于确定最终识别结果。
9.可选的,所述神经元计算单元还包括pe阵列和全连接计算单元;
10.所述pe阵列,用于进行卷积层和池化层的计算;
11.所述全连接计算单元,用于进行全连接层的计算。
12.可选的,还包括:用于存储突触权重的突触参数存储单元和用于存储神经元膜电位的神经元存储单元;
13.所述神经元计算单元,具体用于分别从所述突触参数存储单元和所述神经元膜电位存储单元读取突触权重和神经元膜电位,根据该突触权重和该神经元膜电位进行脉冲神经网络模型中的神经元膜电位更新,并将更新后的突触权重存储到所述突触参数存储单元,将更新后的神经元膜电位存储到所述神经元存储单元。
14.可选的,还包括:泄露状态机;
15.所述控制器,还用于在所述神经元计算单元完成一个时间步的计算后,启动所述
泄露状态机;
16.所述泄露状态机,用于从所述神经元存储单元获取神经元膜电位,根据该神经元膜电位和神经元的更新过程完成膜电位衰减。
17.可选的,所述脉冲神经网络模型中的神经元包括if神经元、采用一阶欧拉方法优化后的lif神经元和采用一阶欧拉方法优化后的izhikevich神经元。
18.可选的,优化后的lif神经元的计算公式为:
[0019][0020][0021][0022][0023]
式中,v[n]为当前时刻的膜状态,v[n+1]为所求的膜电位大小,为采用一阶欧拉方法求得的膜电位电压,tn为计算时的第n个离散时间步,vn为输入膜电位大小,α为神经元膜电阻产生的电压受神经元此时膜电位的影响大小,f1(t,v)为第一目标方程,f2(t,v)为第二目标方程,β1、β2为不同阶段v的大小偏置,v
reset
为神经元静息电位,h为时间步,τm为时间常数。
[0024]
可选的,优化后的izhikevich神经元的计算公式为:
[0025]
v[n+1]=(0.04v2+5v+140-u+i)
·
h;
[0026]
u[n+1]=[a(bv-u)]
·
h;
[0027]
式中,v为所求的膜电位电压,u为膜电位恢复变量,i为神经元的输入电流,h为时间步,a、b、c、d为神经元的模型参数,v
threhold
为膜电压阈值。
[0028]
可选的,还包括:数据输入接口和数据输出接口。
[0029]
从以上技术方案可以看出,本技术具有以下优点:
[0030]
本技术提供了一种神经形态计算平台,包括:神经元计算单元、脉冲缓存单元、数据重排单元、脉冲编码器、控制器和脉冲输出计数器,神经元计算单元包括脉冲配置整合单元;控制器,用于在接收到输入的待识别图像后,启动脉冲编码器对待识别图像进行脉冲编码,得到脉冲图像;数据重排单元,用于根据卷积核的大小从脉冲图像中获取对应大小的卷积块,并将卷积块展开成一维阵列,得到神经元输入脉冲;脉冲配置整合单元,用于根据当前网络层的结构配置神经元类型和分发神经元输入脉冲,在神经元计算单元根据神经元输入脉冲对当前网络层进行计算得到输出的脉冲结果后,对输出的脉冲结果进行整合并存储到脉冲缓存单元,为下一网络层的计算提供脉冲数据;脉冲输出计数器,用于计数输出层神经元发放脉冲的数量,输出层神经元发放脉冲的数量用于确定最终识别结果。
[0031]
本技术中的神经形态计算平台,脉冲配置整合单元可以根据当前网络层的结构来配置神经元类型和神经元输入脉冲分发,从而可以实现支持多种网络拓扑结构的神经网络模型,灵活性较高,改善了现有的神经形态计算平台无法支持多种网络拓扑结构的神经网络模型的技术问题。
附图说明
[0032]
为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
[0033]
图1为本技术实施例提供的一种神经形态计算平台的一个结构示意图;
[0034]
图2为本技术实施例提供的一种数据重排过程的一个示意图;
[0035]
图3为本技术实施例提供的一种脉冲神经网络空间并行计算模型的一个结构示意图;
[0036]
图4为本技术实施例提供的一种脉冲神经网络空间并行计算模型的另一个结构示意图;
[0037]
图5为本技术实施例提供的一种脉冲神经网络混合计算模型的一个结构示意图;
[0038]
图6为本技术实施例提供的一种脉冲神经网络混合式空间并行计算模型的一个结构示意图。
具体实施方式
[0039]
为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0040]
为了便于理解,请参阅图1,本技术实施例提供了一种神经形态计算平台,包括:神经元计算单元、脉冲缓存单元、数据重排单元、脉冲编码器、控制器和脉冲输出计数器,神经元计算单元包括脉冲配置整合单元;
[0041]
控制器,用于在接收到输入的待识别图像后,启动脉冲编码器对待识别图像进行脉冲编码,得到脉冲图像;
[0042]
数据重排单元,用于根据卷积核的大小从脉冲图像中获取对应大小的卷积块,并将卷积块展开成一维阵列,得到神经元输入脉冲;
[0043]
脉冲配置整合单元,用于根据当前网络层的结构配置神经元类型和分发神经元输入脉冲,在神经元计算单元根据神经元输入脉冲对当前网络层进行计算得到输出的脉冲结果后,对输出的脉冲结果进行整合并存储到脉冲缓存单元,为下一网络层的计算提供脉冲数据;
[0044]
脉冲输出计数器,用于计数输出层神经元发放脉冲的数量,输出层神经元发放脉冲的数量用于确定最终识别结果。
[0045]
本技术实施例中的神经形态计算平台还包括数据输入接口,用于接收待识别图像等输入数据,控制器在接收到输入的待识别图像后,启动脉冲编码器对待识别图像进行脉冲编码,得到二进制的脉冲图像;然后启动数据重排单元对当前网络层下的脉冲图像进行排序,根据卷积核的大小从脉冲图像中获取对应大小的卷积块,并将卷积块展开成一维阵列,得到神经元输入脉冲;排序完成后,控制器将神经元输入脉冲传输至神经元计算单元,神经元计算单元中的脉冲配置整合单元根据当前网络层的结构配置神经元类型和分发神
经元输入脉冲,在神经元计算单元根据当前网络层的神经元的类型和神经元输入脉冲进行当前网络层的计算得到输出的脉冲结果后,脉冲配置整合单元会将输出的脉冲结果进行数据整合再输出至脉冲缓存单元完成数据缓存,为下一网络层的计算提供脉冲数据。
[0046]
脉冲缓存单元用于缓存神经元内部输出的脉冲结果。对于神经元的并行脉冲记录,在神经元核中使用了一个局部的脉冲缓冲寄存器(lbr),用于负责记录并行的脉冲发出,并且在硬件上也很容易实现。例如,一层有1024个脉冲,并行使用16个脉冲。在第一次计算中,可以得到0-15个神经元的脉冲释放(sr),只使用lbr的低16位与sr一起逻辑或来实现并行记录。
[0047]
本技术实施例中的神经元计算单元还包括pe阵列和全连接计算单元,pe阵列负责完成不同的卷积计算,如卷积层计算和池化层计算,全连接计算单元负责全连接层的计算。由于卷积计算通常需要卷积窗口对应的图像数据,因此,通过数据重排单元对输入的二进制的脉冲图像进行重新排序,即根据卷积核大小获取对应的卷积块,并将卷积块展开成一维阵列,使其适合pe阵列的计算模型,具体可以参考图2,其中,数据重排单元可以对脉冲编码单元输出的脉冲图像以及脉冲神经网络模型中的各层神经元输出的脉冲图像进行排序。具体的,本技术实施例中的神经元计算单元包括两个并行的pe阵列和两个并行的全连接计算单元,可同时完成两个脉冲神经网络的并行计算,当并行数大于2时,由控制器完成并行转串行的操作,如当并行数为4时,控制器首先完成前两个并行网络层的计算,再进行后两个网络层的计算。本技术实施例中的神经形态计算平台支持多种神经元多网络拓扑的脉冲神经网络,包括如图3和图4所示的脉冲神经网络空间并行计算,图5所示的脉冲神经网络混合计算以及如图6所示的脉冲神经网络混合式空间并行计算的多种网络拓扑的脉冲神经网络模型。对于多网络拓扑的支持主要由神经元计算单元完成,具体过程如下:
[0048]
1)脉冲编码器首先完成对当前输入的待识别图像的脉冲编码,当完成编码后,控制器启动网络的计算。
[0049]
2)网络计算以层为单位,数据重排单元首先会对当前网络层下脉冲图像进行排序,当排序完成后,控制器会将脉冲数据传输至神经元计算单元中的脉冲配置整合单元,由该单元根据当前网络层的架构进行
①
神经元类型的配置和输入脉冲分发。在当前网络层计算完成后,会将输出的脉冲结果通过脉冲配置整合单元完成数据的整合输出至脉冲缓存单元完成数据的缓存,为下一网络层的计算提供脉冲数据。本实施例中的神经形态计算平台的神经元计算单元中包括两个并行的pe阵列以及两个并行的全连接计算核心,可同时完成两个脉冲神经网络的并行计算,当并行数大于2时,由控制器完成并行转串行的操作,如当并行数为4时,控制器首先完成前两个并行网络层的计算,再进行后两个网络层的计算。
[0050]
3)当计算完成后,将根据脉冲输出计数器完成脉冲神经网络的识别。
[0051]
脉冲神经网络模型中的神经元包括if神经元、采用一阶欧拉方法优化后的lif神经元和采用一阶欧拉方法优化后的izhikevich神经元等多种神经元。if神经元是脉冲神经网络中常用的神经元,if神经元仅包含积分和发放计算,仅使用加法器和比较器即可实现。
[0052]
lif神经元以指数过程模拟生物神经元的膜电压泄漏,如下式所示:
[0053][0054]
式中,vm为神经元当前膜电位电压,v
m+1
为泄露之后的膜电位电压,δt为泄露时间
差,τm为时间常数。当突触前神经元i产生一个输出脉冲时,突触权重经过一个设定的传播延迟后,更新到突触后神经元j的膜电位。根据上述计算公式可知,lif神经元计算中存在指数运算,采用一阶euler方法消除求解的指数计算,使用算术移位替代乘法计算,得到优化后的计算公式为:
[0055][0056][0057][0058][0059]
式中,v[n]为当前时刻的膜状态,v[n+1]为所求的膜电位大小,为采用一阶欧拉方法求得的膜电位电压,tn为计算时的第n个离散时间步,vn为输入膜电位大小,α为神经元膜电阻产生的电压受神经元此时膜电位的影响大小,f1(t,v)为第一目标方程,f2(t,v)为第二目标方程,β1、β2为不同阶段v的大小偏置,v
reset
为神经元静息电位,h为时间步,τm为时间常数。
[0060]
将上述部分参数固定,其中,v
reset
设置为0,α设置为0.5,设置为0.125,简化后的计算公式为:
[0061]
v[n+1]=v[n]-(y1+y2);
[0062]
y1=(v[n]-β1)>>4;
[0063][0064][0065]
式中,>>4为逻辑左移4位,>>3为逻辑左移3位。
[0066]
相比lif神经元,izhikevich神经元(izh神经元)具有更高的生物真实性,因此计算复杂度也会相应提升,其计算公式如下式为:
[0067][0068][0069]
if v>v
threhold
,spike andv=c,u=u+d;
[0070]
式中,v为膜电压,u为膜电位恢复变量,i为神经元的输入电流,a、b、c、d为神经元的模型参数,v
threhold
为膜电压阈值;
[0071]
对于izhikevich神经元其优化过程与优化lif神经元的过程类似,采用一阶欧拉方法实现公式中的dv/dt和du/dt,虽然,izhikevich神经元在优化后仍存在乘法计算,但已经极大的减小了指数计算,优化后的izhikevich神经元的计算公式为:
[0072]
v[n+1]=(0.04v2+5v+140-u+i)
·
h;
[0073]
u[n+1]=[a(bv-u)]
·
h;
[0074]
采用一阶euler方法消除lif/izh神经元求解的微分计算,减少了求解的复杂度,使其硬件友好化。采用了一阶欧拉方法消除lif神经元和izhikevich神经元求解的微分计算得到的优化后的神经元,优化了lif神经元和izhikevich神经元的计算过程,降低了计算复杂度,使得神经元计算单元更新神经元膜电位的速度加快,占用更少的硬件资源,并且可以支持不同脉冲神经元的脉冲神经网络,改善了现有技术存在神经元模型单一,无法支持多个不同的脉冲神经元搭建的snn,并且计算单元所占用的硬件资源、计算量和功耗很大的技术问题。
[0075]
脉冲神经网络是基于时间步计算,因此需要在某一个时间步计算完成后(即完成网络一次前向传输计算),需要完成snn中所有神经元的膜电位的泄漏计算。本技术实施例中,泄露状态机负责多神经元模型的泄漏的控制,由控制器启动泄露状态机,泄露状态机依次从神经元存储单元获取神经元膜电位,根据不同神经元的更新过程完成膜电位衰减。
[0076]
本技术实施例中的神经形态计算平台还包括突触参数存储单元和神经元存储单元,神经元存储单元用于存储神经元膜电位,突触参数存储单元用于存储突触权重,负载在进行神经元膜电位更新时获取对应地址的权值,权值由16位定点小数表示。神经元计算单元,具体用于分别从突触参数存储单元和神经元膜电位存储单元读取突触权重和神经元膜电位,根据该突触权重和该神经元膜电位进行脉冲神经网络模型中的神经元膜电位更新,并将更新后的突触权重存储到突触参数存储单元,将更新后的神经元膜电位存储到神经元存储单元。最后,脉冲输出计数器负责计数输出层神经元发放脉冲的数量,为识别最终结果提供依据。本技术实施例中的神经形态计算平台还包括数据输出接口,用于输出数据。
[0077]
本技术中的神经形态计算平台,脉冲配置整合单元可以根据当前网络层的结构来配置神经元类型和神经元输入脉冲分发,从而可以实现支持多种网络拓扑结构的神经网络模型,灵活性较高,改善了现有的神经形态计算平台无法支持多种网络拓扑结构的神经网络模型的技术问题。本技术实施例中的神经形态计算平台可以支持不同的脉冲神经元,使得整个脉冲神经网络的计算非常的灵活,可以根据预配置的信息调用对应的脉冲神经元。同时本技术实施例中的神经形态计算平台可以支持不同拓扑结构的脉冲神经网络,包括多层感知机、传统的深度可分离网络和残差卷积网络等,并且可以根据基本的网络拓扑搭建多种不同计算模式的网络计算模型。因此本技术实施例中的神经形态计算平台更适合脉冲神经网络的部署和推理,以及探索跟适用于脉冲神经网络的网络模型,并且具有更高的速度和更低的消耗。
[0078]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0079]
本技术的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0080]
应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两
个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0081]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0082]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0083]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0084]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以通过一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-only memory,英文缩写:rom)、随机存取存储器(英文全称:random access memory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0085]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。