一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种脉冲卷积神经网络加速器

2022-11-12 20:40:36 来源:中国专利 TAG:


1.本技术涉及脉冲神经网络加速技术领域,尤其涉及一种脉冲卷积神经网络加速器。


背景技术:

2.脉冲神经网络(spiking neural network,snn)是以脉冲神经元为计算单元的第三代神经网络,可以模拟人脑信息的编码和处理过程。与传统的人工神经网络(artificialneural network,ann)不同,snn利用离散的脉冲信号传递信息,其神经元具有记忆功能,因此具有较高的生物真实感和实时处理能力。目前,snn已被广泛研究并应用于各种高性能计算任务中。一般来说,snn网络规模较大,对操作的并行性要求较高。因此,在传统的pc终端上进行软件仿真效率低下,消耗大量的计算能力。如何设计和实现适合snn计算和加速的硬件系统已成为神经网络计算领域的研究热点。
3.现有技术中的神经元模型单一,无法支持多个不同的脉冲神经元搭建的snn,并且计算单元所占用的硬件资源、计算量和功耗很大。


技术实现要素:

4.本技术提供了一种脉冲卷积神经网络加速器,用于改善现有技术存在神经元模型单一,无法支持多个不同的脉冲神经元搭建的snn,并且计算单元所占用的硬件资源、计算量和功耗很大的技术问题。
5.有鉴于此,本技术第一方面提供了一种脉冲卷积神经网络加速器,包括:控制器、图像排序单元、pe计算阵列、全连接计算单元和内部图像缓冲单元;
6.所述控制器,用于在接收到输入图像后,启动所述图像排序单元对图像进行排序,并在排序完成后,启动所述pe计算阵列或所述全连接计算单元进行计算,并将计算产生的结果缓存至所述内部图像缓冲单元,若当前网络层为输出层,则统计脉冲发放频率,完成图像识别,若当前网络层为非输出层,则启动所述图像排序单元;
7.所述pe计算阵列用于完成脉冲神经网络中的卷积层和池化层的计算;
8.所述全连接计算单元用于完成脉冲神经网络中的全连接层的计算;
9.其中,所述pe计算阵列和所述全连接计算单元均包括采用一阶欧拉方法消除lif神经元和izhikevich神经元求解的微分计算得到的优化后的lif神经元和优化后的izhikevich神经元。
10.可选的,所述图像排序单元,具体用于:
11.在接收到启动信号时,判断是否为输入层来选择数据源,若是,则对输入图像进行排序,若否,则对所述内部图像缓冲单元中的中间缓存图像进行排序;
12.排序完成后,生成脉冲序列排序完成信号。
13.可选的,lif神经元的优化过程为:
14.采用一阶欧拉方法消除lif神经元求解的微分计算,得到消除求解的微分计算的
计算公式为:
[0015][0016]
对所述消除求解的微分计算的计算公式中的参数进行固化,使用算术相移替代所述消除求解的微分计算的计算公式中的乘法运算,并采用二阶的预测-校正法对所述消除求解的微分计算的计算公式进行优化,得到优化后的计算公式,所述优化后的计算公式为:
[0017][0018][0019][0020][0021]
式中,v[n]为当前时刻的膜状态,v[n 1]为所求的膜电位大小,为采用一阶欧拉方法求得的膜电位电压,tn为计算时的第n个离散时间步,vn为输入膜电位大小,α为神经元的rmi受神经元此时膜电位的影响大小,rm为神经元膜电阻常数,i为输入电流值,f1(t,v)为第一目标方程,f2(t,v)为第二目标方程,β1、β2为不同阶段v的大小偏置,v
reset
为神经元静息电位,h为时间步,τm为时间常数。
[0022]
可选的,优化后的izhikevich神经元的计算公式为:
[0023]
v[n 1]=(0.04v2 5v 140-u i)
·
h;
[0024]
u[n 1]=[a(bv-u)]
·
h;
[0025]
式中,v为膜电压,u为膜电位恢复变量,i为神经元的输入电流,a、b、c、d为神经元的模型参数,v
threhold
为膜电压阈值。
[0026]
可选的,还包括:权重存储单元,用于存储和读取卷积计算的权重。
[0027]
可选的,还包括:膜电位存储单元,用于存储和读取神经元膜电位。
[0028]
可选的,所述pe计算阵列,具体用于:
[0029]
分别从权重存储单元和膜电位存储单元完成权重和膜电位的读取与写入,实现神经元膜电位更新。
[0030]
可选的,所述pe计算阵列包括若干个pe单元;
[0031]
所述pe单元,用于当进行卷积操作时,在检测到输入脉冲时,将权重累加至寄存器中,在完成卷积操作后,将输入的神经元的膜电位与所述寄存器相加得到最后的膜电位;当进行池化操作时,通过有限状态机统计输入的图像中脉冲的个数,并将根据脉冲的个数确定的当前需要累加的数值保存到所述寄存器中,以获取最终的神经元膜电位和内部脉冲。
[0032]
从以上技术方案可以看出,本技术具有以下优点:
[0033]
本技术提供了一种脉冲卷积神经网络加速器,包括:控制器、图像排序单元、pe计算阵列、全连接计算单元和内部图像缓冲单元;控制器,用于在接收到输入图像后,启动图
像排序单元对图像进行排序,并在排序完成后,启动pe计算阵列或全连接计算单元进行计算,并将计算产生的结果缓存至内部图像缓冲单元,若当前网络层为输出层,则统计脉冲发放频率,完成图像识别,若当前网络层为非输出层,则启动图像排序单元;pe计算阵列用于完成脉冲神经网络中的卷积层和池化层的计算;全连接计算单元用于完成脉冲神经网络中的全连接层的计算;其中,pe计算阵列和全连接计算单元均包括采用一阶欧拉方法消除lif神经元和izhikevich神经元求解的微分计算得到的优化后的lif神经元和优化后的izhikevich神经元。
[0034]
本技术中,神经元计算单元中的神经元是采用了一阶欧拉方法消除lif神经元和izhikevich神经元求解的微分计算得到的优化后的神经元,优化了lif神经元和izhikevich神经元的计算过程,降低了计算复杂度,使得神经元计算单元更新神经元膜电位的速度加快,占用更少的硬件资源,并且可以支持不同脉冲神经元的脉冲神经网络,改善了现有技术存在神经元模型单一,无法支持多个不同的脉冲神经元搭建的snn,并且计算单元所占用的硬件资源、计算量和功耗很大的技术问题。
附图说明
[0035]
为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
[0036]
图1为本技术实施例提供的一种脉冲卷积神经网络加速器的一个结构示意图;
[0037]
图2为本技术实施例提供的控制器状态更新变化示意图。
具体实施方式
[0038]
为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0039]
为了便于理解,请参阅图1,本技术实施例提供了一种脉冲卷积神经网络加速器,包括:
[0040]
控制器、图像排序单元、pe计算阵列、全连接计算单元和内部图像缓冲单元;
[0041]
控制器,用于在接收到输入图像后,启动图像排序单元对图像进行排序,并在排序完成后,启动pe计算阵列或全连接计算单元进行计算,并将计算产生的结果缓存至内部图像缓冲单元,若当前网络层为输出层,则统计脉冲发放频率,完成图像识别,若当前网络层为非输出层,则启动图像排序单元;
[0042]
pe计算阵列用于完成脉冲神经网络中的卷积层和池化层的计算;
[0043]
全连接计算单元用于完成脉冲神经网络中的全连接层的计算;
[0044]
其中,pe计算阵列和全连接计算单元均包括采用一阶欧拉方法消除lif神经元和izhikevich神经元求解的微分计算得到的优化后的lif神经元和优化后的izhikevich神经元。
[0045]
本技术实施例中,为了提高计算速度,减少计算资源的占用,对神经元计算单元中的神经元进行优化,以提供一种支持优化后的lif神经元和izhikevich神经元的脉冲卷积神经网络加速器。优化lif神经元求解过程中的指数运算包括采用一阶欧拉方法消除求解的微分计算,并对参数进行固定化,使用算术移位替代乘法计算,采用一阶欧拉方法消除lif神经元求解的微分计算,得到消除求解的微分计算的计算公式为:
[0046][0047]
对消除求解的微分计算的计算公式中的参数进行固化,使用算术相移替代消除求解的微分计算的计算公式中的乘法运算,使用算术移位替代乘法计算包括在硬件上通过算术右移三位可以达到乘以0.125的效果,并采用二阶的预测-校正法对消除求解的微分计算的计算公式进行优化,得到优化后的计算公式,优化后的计算公式为:
[0048][0049][0050][0051][0052]
式中,v[n]为当前时刻的膜状态,v[n 1]为所求的膜电位大小,为采用一阶欧拉方法求得的膜电位电压,tn为计算时的第n个离散时间步,vn为输入膜电位大小,α为神经元的rmi受神经元此时膜电位的影响大小,rm为神经元膜电阻常数,i为输入电流值,f1(t,v)为第一目标方程,f2(t,v)为第二目标方程,β1、β2为不同阶段v的大小偏置,v
reset
为神经元静息电位,h为时间步,τm为时间常数。本技术实施例中将上述部分参数固定,其中,v
reset
设置为0,α设置为0.5,设置为0.125,简化后的计算公式为:
[0053]
v[n 1]=v[n]-(y1 y2);
[0054]
y1=(v[n]-β1)>>4;
[0055][0056][0057]
式中,》》4为逻辑左移4位,》》3为逻辑左移3位,y1、y2为中间参数。
[0058]
对于izhikevich神经元(izh神经元)其优化过程与优化lif神经元的过程类似,采用一阶欧拉方法实现公式中的dv/dt和du/dt,即:
[0059][0060]
[0061]
if v>v
threhold
,spikeandv=c,u=u d;
[0062]
式中,v为膜电压,u为膜电位恢复变量,i为神经元的输入电流,a、b、c、d为神经元的模型参数,v
threhold
为膜电压阈值。
[0063]
虽然,izh神经元在优化后仍存在乘法计算,但已经极大的减小了指数计算,优化后的izhikevich神经元的计算公式为:
[0064]
v[n 1]=(0.04v2 5v 140-u i)
·
h;
[0065]
u[n 1]=[a(bv-u)]
·
h。
[0066]
本技术实施例采用一阶欧拉方法消除神经元求解过程中的微分计算,减小了计算复杂度,有助于提高神经元计算单元的计算速度,可以支持不同脉冲神经元的脉冲神经网络,可以支持不同拓扑的脉冲神经网络包括多层感知器、传统的、深度可分离的和残差卷积网络等。
[0067]
本技术实施例基于优化后的神经元构建加速器,包括控制器、图像排序单元、神经元计算单元和内部图像缓冲单元,神经元计算单元包括pe计算阵列和全连接计算单元,控制器在接收到输入图像后,发送启动信号给图像排序单元,以启动图像排序单元对图像进行排序。在排序完成后,控制器根据当前网络层来启动pe计算阵列或全连接计算单元进行计算,若当前网络层为卷积层或池化层,则启动pe计算阵列进行计算,若当前网络层为全连接层,则启动全连接计算单元进行计算,并将计算产生的结果缓存至内部图像缓冲单元,若当前网络层为输出层,则统计脉冲发放频率,完成图像识别,若当前网络层为非输出层,则启动图像排序单元。
[0068]
图像排序单元在接收到启动信号时,判断是否为输入层来选择数据源,若是,则对输入图像进行排序,若否,则对内部图像缓冲单元中的中间缓存图像进行排序;排序完成后,生成脉冲序列排序完成信号,标志排序完成。图像排序单元主要是完成卷积计算和池化计算的数据预取,图像排序单元中包含有一个有限状态机(finite state machine,fsm),用于控制图像排序单元的工作状态,当收到的启动信号为高电平时,启动脉冲数据的预取,对于输入层,需要完成对图像数据的泊松编码设计;对于卷积层,需要完成脉冲数据的预取以及内部排序,而对于池化操作,直接进行预取即可。当进行卷积操作时,由于pe计算阵列的大小有限,当前设计的pe计算阵列的大小为16
×
16,因此会出现一张脉冲图像无法一次性取完,所以fsm中会存在一种缓冲的状态。当完成预取脉冲的计算时,继续数据预取操作直到卷积计算完成。同时,卷积操作的脉冲预取存放在一个多位宽寄存器中,根据控制器的阵列调度信号完成脉动数据的输出。对于池化操作,该图像排序单元只负责预取信号及地址的生成,传输至pe计算阵列,pe计算阵列将根据预取信号将池化块对应的数据缓存至阵列内部。缓冲区于pe计算阵列中,方便直接进行池化操作。当输入数据准备完成,图像排序单元会产生脉冲排序完成信号,标志完成。
[0069]
内部图像缓冲单元,用于实现对pe计算阵列输出的一维数据/二维数据进行二维/三维扩展,包含对卷积、池化和全连接层计算的数据处理。
[0070]
全连接计算单元用于实现脉冲神经网络中的全连接计算,全连接层计算单元首先从内部图像缓冲单元依次获得脉冲,当存在高电平脉冲时,将该脉冲的地址缓冲至对应的fifo中,在完成遍历后,再根据fifo的空满实现对应全连接神经元的更新,完成全连接计算,其中,全连接计算单元中基于优化后的神经元完成全连接神经元的更新。
[0071]
本技术中的加速器还包括权重存储单元和膜电位存储单元,权重存储单元用于存储权重以及读取权重,主要为卷积操作的权重读取,权重存储单元中也存在fsm,当接收到控制器发送的启动信号为高电平时,开始读取权重。因为一个通道的图像可能需要复用若干次才能完成一次卷积计算,因此第一次读取的权重可以进行权重的复用,提高计算效率。当权重准备完成,会产生输入权重准备完成信号,标志完成。膜电位存储单元用于存储神经元膜电位以及读写神经元膜电位。
[0072]
pe计算阵列用于完成脉冲神经网络中的卷积层和池化层的计算,分别从权重存储单元和膜电位存储单元完成权重和膜电位的读取与写入,实现神经元膜电位更新。pe计算阵列中包括对单个pe单元的设计以及pe阵列数据组合,对于pe单元,当进行卷积操作时,包含数据选择器以及一个寄存器保存中间计算数值。当检测到输入脉冲时,便将权重累加至上述寄存器。当完成单个卷积操作后,将根据输入的神经元的膜电位以及上述寄存器相加得到最后的膜电位。当电位超过阈值时,发放脉冲且电位设置为0。当进行池化操作时,当前本技术实施例能实现2
×
2的池化计算,pe单元中存在一个针对池化操作的fsm来统计输入的图像中脉冲的个数,然后将根据获得的脉冲的个数得到的此次需累加的数值保存到上述寄存器,获得最终的神经元膜电位以及内部脉冲。pe计算阵列,其包含了16
×
16个pe单元,主要负责脉动阵列输出结果的整合以及输出,包含卷积神经元的膜电位和内部输出脉冲。对于单通道输入的图像而言,一个神经元仅与一个通道的像素有关,即计算单次即可,然而对于多通道输入的图像而言,一个神经元与输入的所有通道像素均有关,在本技术实施例中,采用了或的方式实现。具体为,当输入的图像为16个通道,对于第一个通道采用基本计算方式获得膜电位和输出脉冲,但计算后面的15个通道时,膜电位依然正常计算,然而对于输出脉冲需要与之前的计算进行或操作,这样便可以实现多通道的卷积计算。
[0073]
卷积中间结果的数值约束,weight表示权重,internal_result表示累加的中间结果,result表示最终的累加结果:
[0074][0075]
pe计算阵列的数值约束,mp表示神经元膜电位,spike表示脉冲发放情况:
[0076]
ifmp》1:
[0077]
mp=0;
[0078]
spike=1;
[0079]
else ifmp《-10:
[0080]
mp=-10;
[0081]
spike=0;
[0082]
else:
[0083]
mp=mp;
[0084]
spike=0。
[0085]
控制器通过对上述各单元的协调控制,完成脉冲神经网络各层的计算(包括卷积、池化、全连接等),在计算前,控制器需要读取和配置计算参数,控制器中存在一个rom,其存储着网络各层的详细参数,如表1所示,控制器中的fsm状态转移如图2所示。
[0086]
表1
[0087]
信号名称对应位数信号含义input_channel79-64输入map的通道数pe_array_mult_times63-48对pe阵列的复用次数kernel_size47-32卷积核的大小window_size31-16输出map的图像大小stride15-0卷积步长
[0088]
本技术实施例中,神经元计算单元中的神经元是采用了一阶欧拉方法消除lif神经元和izhikevich神经元求解的微分计算得到的优化后的神经元,优化了lif神经元和izhikevich神经元的计算过程,降低了计算复杂度,使得神经元计算单元更新神经元膜电位的速度加快,占用更少的硬件资源,并且可以支持不同脉冲神经元的脉冲神经网络,改善了现有技术存在神经元模型单一,无法支持多个不同的脉冲神经元搭建的snn,并且计算单元所占用的硬件资源、计算量和功耗很大的技术问题。
[0089]
本技术的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0090]
应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“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可以是单个,也可以是多个。
[0091]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅
仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0092]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0093]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0094]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以通过一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-only memory,英文缩写:rom)、随机存取存储器(英文全称:randomaccess memory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0095]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献