有效
脉冲神经网络权重梯度计算方法及相关设备
周晖晖、李明静、田永鸿、崔小欣、李国齐
鹏城实验室
摘要
本申请提供了一种脉冲神经网络权重梯度计算方法,包括:获取目标脉冲神经网络中每个通道维度的脉冲变化信号以及每个卷积核对应的膜电位梯度变化信息;针对每个脉冲变化信号,分别在多个时钟滑窗内按照时钟周期读取对应的脉冲信号值;在当前时钟周期读取的多个脉冲信号值不均为0的情况下,读取多个膜电位梯度变化信息中的梯度变化值,将多个梯度变化值按行输入至预设的累加器阵列,并将多个脉冲信号值输入至预设的多个选择器,以通过多个选择器按列控制累加器阵列中多个累加器将梯度变化值累加至上一时钟周期的梯度累加结果上,得到当前时钟周期的多个梯度累加结果,进而得到每个卷积核的权重梯度信息,能够有效避免无效计算,提高计算效率。
1.一种脉冲神经网络权重梯度计算方法,其特征在于,包括:获取目标脉冲神经网络中每个通道维度的脉冲变化信号以及每个卷积核对应的膜电位梯度变化信息;针对每个脉冲变化信号,分别在多个时钟滑窗内按照时钟周期读取对应的脉冲信号值,得到多个脉冲信号值;在当前时钟周期读取的多个所述脉冲信号值不均为0的情况下,从M个膜电位梯度变化信息中读取所述当前时钟周期的梯度变化值,并将读取到的M个梯度变化值分别按行输入到累加器阵列每行的N个累加器;将读取到的N个脉冲信号值输入到预设的N个选择器,所述N个选择器分别按列与所述累加器阵列每列的M个累加器的输入端连接,以通过所述N个选择器根据多个脉冲信号值控制所述累加器阵列将多个梯度变化值与上一历史时钟周期的梯度累加结果之间进行累加处理,得到当前时钟周期的多个梯度累加结果,所述累加器阵列包括N列M行个累加器;根据每个所述脉冲变化信号在每个所述时钟滑窗内的每个所述梯度累加结果,得到多个卷积核在目标时钟步长中的权重梯度累加结果;在遍历完所述目标脉冲神经网络中每个卷积核对应的膜电位梯度变化信息后,根据多组所述多个卷积核对应的所述权重梯度累加结果,得到每个所述卷积核的权重梯度信息;所述针对每个脉冲变化信号,分别在多个时钟滑窗内按照时钟周期读取对应的脉冲信号值,得到多个脉冲信号值,包括:获取所述目标脉冲神经网络的配置信息;根据所述配置信息确定所述脉冲变化信号的读取数量为N,以及确定所述卷积核对应的膜电位梯度变化信息的读取数量为M;选取N个所述脉冲变化信号,针对N个所述脉冲变化信号中每个脉冲变化信号,分别在多个时钟滑窗内按照时钟周期读取对应的脉冲信号值。
2.根据权利要求1所述的脉冲神经网络权重梯度计算方法,其特征在于,所述通过所述N个选择器根据多个脉冲信号值控制所述累加器阵列将多个梯度变化值与上一历史时钟周期的梯度累加结果之间进行累加处理,得到当前时钟周期的多个梯度累加结果,包括:分别将所述累加器阵列中每个累加器输出的上一时钟周期的梯度累加结果输入至所述累加器;通过所述N个选择器中若干个所述脉冲信号值不为0的选择器控制对应列的多个所述累加器,将所述多个梯度变化值与上一历史时钟周期的梯度累加结果之间进行累加处理,得到当前时钟周期的多个梯度累加结果;通过所述N个选择器中若干个所述脉冲信号值为0的选择器控制对应列的多个所述累加器,将所述上一时钟周期的梯度累加结果确定为相应累加器在所述当前时钟周期的梯度累加结果。
3.根据权利要求1所述的脉冲神经网络权重梯度计算方法,其特征在于,所述根据每个所述脉冲变化信号在每个所述时钟滑窗内的每个所述梯度累加结果,得到多个卷积核在目标时钟步长中的权重梯度累加结果,包括:将多个所述时钟滑窗内的N个所述脉冲变化信号的梯度累加结果存储至预置的数据存储单元;在遍历完目标时钟步长对应的每个所述时钟滑窗后,若所述N小于所述目标脉冲神经网络的通道维度总数,则根据所述N和所述通道维度总数将多组N个所述脉冲变化信号在所述目标时钟步长内的梯度累加结果存储至所述数据存储单元;根据所述数据存储单元中存储的所述梯度累加结果,得到M个所述卷积核在所述目标时钟步长中每个所述通道维度的权重梯度累加结果。
4.根据权利要求3所述的脉冲神经网络权重梯度计算方法,其特征在于,所述在遍历完所述目标脉冲神经网络中每个卷积核对应的膜电位梯度变化信息后,根据多组所述多个卷积核对应的所述权重梯度累加结果,得到每个所述卷积核的权重梯度信息,包括:在所述M小于所述目标脉冲神经网络的卷积核总数的情况下,根据所述M和所述卷积核总数将多组M个所述卷积核在所述目标时钟步长内的权重梯度累加结果存储至所述数据存储单元;根据所述数据存储单元中存储的所述权重梯度累加结果,得到所述目标脉冲神经网络中每个卷积核在所述目标时钟步长中每个所述通道维度的权重梯度信息。
5.根据权利要求1所述的脉冲神经网络权重梯度计算方法,其特征在于,在所述针对每个脉冲变化信号,分别在多个时钟滑窗内按照时钟周期读取对应的脉冲信号值,得到多个脉冲信号值之后,所述方法还包括:在当前时钟周期读取的多个所述脉冲信号值均为0的情况下,在所述当前时钟周期内跳过对多个所述膜电位梯度变化信息中梯度变化值的读取。
6.根据权利要求1所述的脉冲神经网络权重梯度计算方法,其特征在于,所述获取目标脉冲神经网络中每个通道维度的脉冲变化信号以及每个卷积核对应的膜电位梯度变化信息,包括:获取目标脉冲神经网络训练过程中的前向计算数据和反向传播数据;根据所述前向计算数据得到每个通道维度的脉冲变化信号,根据所述反向传播数据得到每个卷积核对应的膜电位梯度变化信息。
7.根据权利要求1所述的脉冲神经网络权重梯度计算方法,其特征在于,所述得到每个所述卷积核的权重梯度信息之后,所述方法还包括:在多个时钟步长内获取对应的权重梯度信息,根据多个所述时钟步长对应的权重梯度信息得到所述目标脉冲神经网络的权重梯度。
8.一种脉冲神经网络权重梯度计算装置,其特征在于,包括:第一数据存储单元,用于获取目标脉冲神经网络中每个通道维度的脉冲变化信号以及每个卷积核对应的膜电位梯度变化信息;以及用于针对每个脉冲变化信号,分别在多个时钟滑窗内按照时钟周期读取对应的脉冲信号值,得到多个脉冲信号值,以及在当前时钟周期读取的多个所述脉冲信号值不均为0的情况下,从M个膜电位梯度变化信息中读取所述当前时钟周期的梯度变化值;权重梯度计算单元,用于在当前时钟周期读取的多个所述脉冲信号值不均为0的情况下,将读取到的M个梯度变化值分别按行输入到累加器阵列每行的N个累加器;将读取到的N个脉冲信号值输入到预设的N个选择器,所述N个选择器分别按列与所述累加器阵列每列的M个累加器的输入端连接,以通过所述N个选择器根据多个脉冲信号值控制所述累加器阵列将多个梯度变化值与上一历史时钟周期的梯度累加结果之间进行累加处理,得到当前时钟周期的多个梯度累加结果,所述累加器阵列包括N列M行个累加器;第二数据存储单元,用于根据每个所述脉冲变化信号在每个所述时钟滑窗内的每个所述梯度累加结果,得到多个卷积核在目标时钟步长中的权重梯度累加结果;以及用于在遍历完所述目标脉冲神经网络中每个卷积核对应的膜电位梯度变化信息后,根据多组所述多个卷积核对应的所述权重梯度累加结果,得到每个所述卷积核的权重梯度信息;所述针对每个脉冲变化信号,分别在多个时钟滑窗内按照时钟周期读取对应的脉冲信号值,得到多个脉冲信号值,包括:获取所述目标脉冲神经网络的配置信息;根据所述配置信息确定所述脉冲变化信号的读取数量为N,以及确定所述卷积核对应的膜电位梯度变化信息的读取数量为M;选取N个所述脉冲变化信号,针对N个所述脉冲变化信号中每个脉冲变化信号,分别在多个时钟滑窗内按照时钟周期读取对应的脉冲信号值。
9.一种电子设备,其特征在于,包括:至少一个处理器;至少一个存储器,用于存储至少一个程序;当至少一个所述程序被至少一个所述处理器执行时实现如权利要求1至7任意一项所述的脉冲神经网络权重梯度计算方法。
10.一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如权利要求1至7中任意一项所述的脉冲神经网络权重梯度计算方法。



