编码方法、装置、设备和存储介质
文献发布时间:2023-06-19 10:19:37
技术领域
本发明涉及编码技术领域,特别是涉及编码方法、装置、设备和存储介质。
背景技术
脉冲神经网络(Spiking Neuron Networks,SNN)的神经元之间以脉冲的方式传输数据。在脉冲神经网络的待处理的数据为模拟值时,可以将模拟值转换为一定时间长度的脉冲序列,以进行数据传输。
然而,相关技术中,将模拟值转为一定时间长度的脉冲序列使得脉冲神经网络模型的计算效率较低。
发明内容
本发明实施例的目的在于提供一种编码方法、装置、设备和存储介质,解决模型的计算效率较低的技术问题。具体技术方案如下:
在本发明实施例的第一方面,首先提供了一种编码方法,包括以下步骤:
获取待编码的模拟值;
根据预先设置的编码信息,对所述模拟值进行编码,得到目标脉冲信号;
其中,所述目标脉冲信号至少包括一个空间维度。
在本发明实施例的第二方面,还提供了一种编码装置,所述编码装置包括:
获取模块,用于获取待编码的模拟值;
编码模块,用于根据预先设置的编码信息,对所述模拟值进行编码,得到目标脉冲信号;
其中,所述目标脉冲信号至少包括一个空间维度。
在本发明实施例的第三方面,还提供了一种设备,所述设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的指令,当其在计算机上运行时,使得计算机执行上述任一实施例所述的编码方法。
在本发明实施例的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一实施例所述的编码方法。
本发明实施例通过获取待编码的模拟值;根据预先设置的编码信息,对所述模拟值进行编码,得到至少包括一个空间维度的目标脉冲信号。本实施例中,可以根据预先设置的编码信息,将模拟信号转换为只有空间维度的脉冲信号,即纯空间维度的脉冲信号;也可以将模拟信号转换为非纯空间维度的脉冲信号,即包括时间维度和空间维度的多维度脉冲信号。以此可以将一个模拟信号以较少的时间步表达,进而降低模型产生的高延迟,提高模型的计算效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中三维张量的示意图;
图2为本发明实施例中一脉冲信号的示意图;
图3为本发明实施例中编码方法的流程图;
图4为本发明实施例中一脉冲信号的示意图;
图5为本发明实施例中另一脉冲信号的示意图;
图6为本发明实施例中又一脉冲信号的示意图;
图7为本发明实施例中编码方法的一应用场景示意图;
图8为本发明实施例中编码装置的结构示意图;
图9为本发明实施例中设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
本发明实施例提供的编码方法适用于需要将模拟值编码为脉冲信号的任意情况,本公开对编码方法的适用场景不做限制。
以下,以人工神经网络和脉冲神经网络的混合通信为例,对本实施例的应用场景进行阐述。相关技术中,人工神经网络的各个神经元之间通过模拟信号的方式传输数据,脉冲神经网络的各个神经元之间通过脉冲信号的方式传输数据。通过将人工神经网络神经元输出的模拟值编码为脉冲神经网络能够传输并处理的目标脉冲信号,能够实现人工神经网络和脉冲神经网络的混合通信。
示例性地,卷积神经网络(Convolutional Neural Networks,CNN)是图像处理领域常用的一种人工神经网络。在卷积神经网络中,各卷积层采用张量(Tensor)作为数据结构。张量可以理解为一个多维数组X∈R
其中,多维数组中的一个数值表示一个可以用模拟值表示的神经元激活或者像素点。
相关技术中,可以将模拟值转换为具有单一时间维度的脉冲信号,以输入脉冲神经网络中进行处理,这样,需要以较长时间的脉冲信号表达一个模拟值。
以下结合说明书附图,对单一时间维度的脉冲信号进行说明。请参阅图2,如图所示,图中包括有直角坐标系,横坐标轴表示时间维度,纵坐标轴表示空间维度,可以将一个矩形在横坐标轴上的长度理解为一个时间步,将填充黑色的矩形理解为发放脉冲,将未填充颜色的矩形理解为不发放脉冲。如图所示,图2中的脉冲信号为包括8个时间步的脉冲信号,其中,脉冲信号在第1、4和7时间步发放脉冲,在其余时间步不发放脉冲。
发明人发现,在模拟值只能转换为具有时间维度的脉冲信号的情况下,会产生以下技术问题:
第一,需要以较长时间的脉冲信号表达一个模拟值,会降低编码效率。
第二,若在脉冲神经网络模型的计算过程中,输入模拟值,那么,需要将模拟值转换为较长时间的脉冲信号,这样,可能导致模型产生较高的延迟,进而降低模型的计算效率。
第三,若在脉冲神经网络模型的训练过程中,输入模拟值,那么,需要将模拟值转换为较长时间的脉冲信号,这样,会增大模型的计算量,占用大量内存。
基于上述可能存在的技术问题,本发明提出以下技术构思:
将一个模拟值由至少包括一个空间维度的脉冲信号表达,以此以较短时间的脉冲信号表达一个模拟值。
请参阅图3,图3为本发明实施例中编码方法的流程图。本实施例提供的编码方法,包括以下步骤:
S101,获取待编码的模拟值。
本实施例中,可以根据人工神经网络输出的模拟信号,确定待编码的模拟值;或者,通过模拟值的内存地址,获取模拟值。本实施例并不具体限制模拟值的获取方式。
S102,根据预先设置的编码信息,对所述模拟值进行编码,得到目标脉冲信号。
其中,所述目标脉冲信号至少包括一个空间维度。例如,在目标脉冲信号用于表示图像的像素的情况下,目标脉冲信号包括2个空间维度。
其中,编码信息可以是预设的与目标脉冲信号相关的各类信息,例如,可以是目标脉冲信号的空间维度信息、时间维度信息等,其中,空间维度信息可以是空间维度数量、每个空间维度上包括的脉冲值的数量等,时间维度信息可以是时间维度数量、时间维度的时间步个数、每个时间步包括的脉冲值的数量等。其中,编码信息可以包括明确的一种或多种与目标脉冲信号相关的信息,例如,时间步数量为M个、空间维度为N维,也可以是包括用于确定目标脉冲信号相关的信息的一个或多个参数,例如,目标脉冲信号对应数组的参数等,本公开对编码信息的形式以及编码信息包括的内容均不做限制。
需要说明的是,目标脉冲信号可以是纯空间维度的脉冲信号,例如,为仅包括空间维度的脉冲信号,例如,可以为包括一个或者多个空间维度的脉冲信号。目标脉冲信号还可以是同时包括空间维度和时间维度的多维度脉冲信号,其中,时间维度可以为0或者1,空间维度可以为一个或多个,本公开对此不做限制。
示例性地,可以将一个模拟值由一个多维数组来表示,例如,由[r,i,j,k]的多维数组来表示,其中,r、i、j和k可以为预设的参数。例如,在r=1,i=1,j=1,k=6的情况下,一个模拟值由1个时间步,6个特征图通道的脉冲值表达,例如,表达为[1,1,1,6]。在r=3,i=1,j=1,k=2的情况下,一个模拟值由3个时间步,2个特征图通道的目标脉冲信号表达,例如,表达为[3,1,1,2]。
在一种可能的实现方式中,可以由维度为[T’,H’,W’,C’]的多维数组来表示模拟值数组。其中,T’表示目标脉冲信号的时间步,H’表示目标脉冲信号的特征图的高度,W’表示目标脉冲信号的特征图的宽度,C’表示目标脉冲信号的特征图的通道数。
在一些可选的实施例中,T’=r,H’=iH,W’=jW,C’=kC,示例性地,在r=1,i=1,j=1,k=6的情况下,模拟值数组可以由多维数组[1,H,W,6C]来表达。
其中,[0,r-1],[iH,iH+i-1],[jW,jW+j-1],[kC,kC+k-1]组成的多维立方体可以用于表达模拟值,该多维立方体中的脉冲值由模拟值决定。
例如,请参阅图4,如图所示,图4中包括3个坐标轴,其中2个坐标轴为空间坐标轴,1个坐标轴为时间坐标轴,空间坐标轴表示目标脉冲信号的空间维度,时间坐标轴表示目标脉冲信号的时间维度,图4所示的目标脉冲信号包括2个空间维度以及1个时间维度。图4所示的目标脉冲信号可以理解为将一个模拟值用包括16个脉冲值的目标脉冲信号来表达,其中,目标脉冲信号在时间维度上包括4个时间步,每个时间步包括4个脉冲值,其中,每个空间维度包括2个脉冲值。
本实施例中,可以根据预先设置的编码信息,将模拟信号转换为只有空间维度的脉冲信号,即纯空间维度的脉冲信号;也可以将模拟信号转换为非纯空间维度的脉冲信号,即包括时间维度和空间维度的多维度脉冲信号。以此可以将一个模拟信号以较少的时间步表达,进而降低模型产生的高延迟,提高模型的计算效率。只要将模拟值编码为至少包括一个空间维度的目标脉冲信号即可,本公开对目标脉冲信号的空间维度数量、每个空间维度的脉冲值的数量以及目标脉冲信号中脉冲值的确定方式等均不做限制。
示例性地,在目标脉冲信号只包括空间维度时,可以是根据模拟值,生成脉冲序列,并根据该脉冲序列,确定每个空间维度包括的脉冲值,得到目标脉冲序列,还可以是根据模拟值,分别生成每个空间维度包括的脉冲值,以生成目标脉冲序列。在目标脉冲信号包括空间维度以及时间维度时,可以根据模拟值,生成脉冲序列,根据该脉冲序列,确定时间维度上每个时间步包括的脉冲值,并确定每个时间步中各个空间维度包括的脉冲值,也可以根据脉冲序列和空间维度的数量,确定每个空间维度包括的脉冲值,并确定每个空间维度上各个时间步包括的脉冲值。也可以是根据模拟值,分别生成每个时间步中各个空间维度包括的脉冲值等。其中,在生成脉冲序列时,可以采用任意编码方式,例如,频率编码、独热编码、群编码等,在确定各维度包括的脉冲值时,可以是将脉冲序列进行划分,也可以是随机抽取脉冲序列中的部分脉冲值,本公开对此均不做限制。
可选地,所述编码信息包括时间步个数和空间维度个数,所述根据预先设置的编码信息,对所述模拟值进行编码,得到目标脉冲信号包括:
对所述模拟值进行编码,得到脉冲信号;根据所述时间步个数和所述空间维度个数,将所述脉冲信号转换为目标脉冲信号,所述目标脉冲信号包括M个时间步,所述目标脉冲信号的空间维度为N维,M为所述时间步个数,N为所述空间维度个数。其中,M为正整数,N为正整数。
本实施例中,在获取到模拟值后,对模拟值进行编码,得到脉冲信号,具体的技术方案请参阅后续实施例。
一种可选的实施方式为,预设的编码信息包括但不限于有时间步个数和空间维度个数,根据编码信息将脉冲信号转换为目标脉冲信号,其中,目标脉冲信号的时间步个数与编码信息中的时间步个数相同,目标脉冲信号的空间维度也与编码信息中的空间维度个数相同。
示例性的,脉冲信号为[10001100],编码信息中的时间步个数为4,空间维度个数为1的情况下,目标脉冲信号可以为[10][00][11][00],其中,1表示发放脉冲。请参阅图5,图5中包括有一个坐标系,其中,横坐标轴为时间坐标轴,纵坐标轴为空间坐标轴,如图所示,若目标脉冲信号为[10][00][11][00],目标脉冲信号在第一个时间步内,发放一次脉冲;相应的,目标脉冲信号在第二个时间步内,不发放脉冲;目标脉冲信号在第三个时间步内,发放两次脉冲;目标脉冲信号在第四个时间步内,不发放脉冲,其中,脉冲值为1表示发放脉冲,脉冲值为0表示不发放脉冲。
一种可选的实施方式为,编码信息还包括有时间维度个数,在时间维度个数为0的情况下,表示目标脉冲信号为纯空间的脉冲信号。
示例性的,脉冲信号为[10001100],编码信息中的时间维度个数为0,空间维度个数为1的情况下,请参阅图6,图6中包括有一个坐标系,其中,横坐标轴为时间坐标轴,纵坐标轴为空间坐标轴。如图所示,在目标脉冲信号为纯空间的脉冲信号的情况下,目标脉冲信号同时发放所有的脉冲。
另一种可选的实施方式为,编码信息中的空间维度个数大于1,这种情况下,需要向多个空间维度发放脉冲。
示例性的,请参阅图4,图4中包括有一个坐标系,该坐标系包括三个坐标轴,其中,一个坐标轴表示时间,另外2个坐标轴表示空间。如图4所表示的目标脉冲信号包括2个空间维度和1个时间维度,其中,目标脉冲信号在时间维度上包括4个时间步,每个时间步包括4个脉冲值,每个空间维度包括2个脉冲值。这种情况下,目标脉冲信号在一个时间步内向2个空间维度发放脉冲。
以下,示例性说明如何对模拟值进行编码,得到脉冲信号:
可选地,所述对所述模拟值进行编码,得到脉冲信号包括:
对所述模拟值进行量化处理,得到量化模拟值;将所述量化模拟值转换为二进制数值,得到所述脉冲信号。
其中,量化模拟值可以是目标区间内的整数,目标区间可以是根据目标脉冲信号包括的脉冲值的数量确定的。
可选地,可以使用量化模型或者使用量化计算公式,得到量化模拟值,本实施例并不限制具体的量化方式。其中,该量化模拟值的目标区间为[0,2
例如,目标脉冲信号包括8个脉冲值,则目标区间可以为[0,2
可选地,所述对所述模拟值进行编码,得到脉冲信号包括:
确定所述模拟值对应的脉冲的发放频率,所述发放频率与模拟值正相关;基于所述发放频率,确定所述脉冲的发放次数和所述脉冲的未发放次数;基于所述发放次数和所述未发放次数,确定所述脉冲信号。
这种实施方式中,可以将模拟值输入至频率编码模型中,确定模拟值对应的脉冲的发放频率,该发放频率与模拟值正相关,即模拟值的数值越大,发放频率越高。发放频率可以通过脉冲的发放次数与脉冲值的总数量的比值来表征,其中,脉冲值的总数量为发放次数与未发放次数之和,因此可以基于脉冲的发放次数和脉冲的未发放次数确定脉冲信号。
例如,模拟值对应的脉冲的发放频率为3/8,则表示脉冲信号发放了3次脉冲,那么,若设定二进制数1表示发放脉冲,则可以将脉冲信号表达为[10100010]或[10001100]等包括3个1的形式。其中,3个1的位置可以为随机产生的。
可选地,所述对所述模拟值进行编码,得到脉冲信号包括:
将所述模拟值量化为小于等于预设数值的十进制数值;将所述十进制数值转换为二进制数组,得到所述脉冲信号;其中,所述二进制数组包含的元素个数与所述预设数值相同,发放元素在所述二进制数组中的位置与所述十进制数值相关,所述发放元素用于指示发放脉冲。
这种实施方式中,对读取到的模拟值进行量化,将模拟值量化为小于等于预设数值的十进制数值,其中,上述预设数值可以是根据编码信息确定的目标脉冲信号的脉冲值的数量。将量化后的十进制数值转换为二进制数组。
示例性的,预设数值为8的情况下,若将模拟值量化为十进制数值3,则将十进制数值3转换为二进制数组,其中,该二进制数组包括8个元素,即包括8个二进制数,可以将二进制数1定义为发放元素,发放元素表征发放脉冲,将二进制数0定义为未发放元素,未发放元素表征不发放脉冲。
进一步的,根据十进制数值确定发放元素在二进制数组中的位置。十进制数值为3,一种情况为,可以确定数组中从低位地址至高位地址的第3个元素为发放元素,即二进制数组为00000100;另一种情况为,可以确定数组中从高位地址至低位地址的第3个元素为发放元素,即二进制数组为00100000。
可选地,所述获取待编码的模拟值包括:
读取地址产生器发送的模拟值地址,所述模拟值地址用于指示待编码的模拟值的实际内存地址;通过所述模拟值地址,获取所述待编码的模拟值。
一种可选地实施方式为,通过模拟值的内存地址,获取模拟值的。
在上述实施方式中,可以读取地址产生器发送的模拟值地址,其中,地址产生器可以是编码装置中预设的一模块,也可以是一外接设备,地址产生器用于生成模拟值地址,该模拟值地址指示待编码的模拟值的的实际内存地址。
通过读取模拟值地址,从模拟值的实际内存地址中,获取待编码的模拟信号。
以使用群编码的方式对模拟值的进行编码为例,进一步详尽的阐述本发明技术方案。其中,根据编码信息确定目标脉冲序列包括1个时间步、1个空间维度以及目标脉冲序列包括8个脉冲值。
请参阅图7,通过读取地址产生器发送的模拟值地址,读取待编码的模拟信号,图中的模拟值内存即模拟值的实际内存。对模拟值进行量化,量化为[0,2
如图8所示,本发明实施例还提供了一种编码装置200,包括:
获取模块201,用于获取待编码的模拟值;
编码模块202,用于根据预先设置的编码信息,对所述模拟值进行编码,得到目标脉冲信号;
其中,所述目标脉冲信号至少包括一个空间维度。
可选地,所述编码模块202包括:
编码单元,用于对所述模拟值进行编码,得到脉冲信号;
划分单元,用于根据时间步个数和空间维度个数,将所述脉冲信号转换为目标脉冲信号,所述目标脉冲信号包括M个时间步,所述目标脉冲信号的空间维度为N维,M为所述时间步个数,N为所述空间维度个数。
可选地,所述编码单元具体用于:
对所述模拟值进行量化处理,得到量化模拟值;
将所述量化模拟值转换为二进制数值,得到所述脉冲信号。
可选地,所述编码单元具体用于:
确定所述模拟值对应的脉冲的发放频率,所述发放频率与模拟值正相关;
基于所述发放频率,确定所述脉冲的发放次数和所述脉冲的未发放次数;
基于所述发放次数和所述未发放次数,确定所述脉冲信号。
可选地,所述编码单元,还具体用于:
将所述模拟值量化为小于等于预设数值的十进制数值;
将所述十进制数值转换为二进制数组,得到所述脉冲信号;
其中,所述二进制数组包含的元素个数与所述预设数值相同,发放元素在所述二进制数组中的位置与所述十进制数值相关,所述发放元素用于指示发放脉冲。
可选地,所述获取模块201具体用于:
读取地址产生器发送的模拟值地址,所述模拟值地址用于指示待编码的模拟值的实际内存地址;
通过所述模拟值地址,获取所述待编码的模拟值。
本发明实施例还提供了一种设备,如图9所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信;
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序;
所述计算机程序被处理器执行时,用于获取待编码的模拟值;
根据预先设置的编码信息,对所述模拟值进行编码,得到目标脉冲信号。
可选地,所述计算机程序被处理器执行时,还用于对所述模拟值进行编码,得到脉冲信号;
根据时间步个数和空间维度个数,将所述脉冲信号转换为目标脉冲信号。
可选地,所述计算机程序被处理器执行时,还用于对所述模拟值进行量化处理,得到量化模拟值;
将所述量化模拟值转换为二进制数值,得到所述脉冲信号。
可选地,所述计算机程序被处理器执行时,还用于确定所述模拟值对应的脉冲的发放频率;
基于所述发放频率,确定所述脉冲的发放次数和所述脉冲的未发放次数;
基于所述发放次数和所述未发放次数,确定所述脉冲信号。
可选地,所述计算机程序被处理器执行时,还用于将所述模拟值量化为小于等于预设数值的十进制数值;
将所述十进制数值转换为二进制数组,得到所述脉冲信号。
可选地,所述计算机程序被处理器执行时,还用于读取地址产生器发送的模拟值地址;
通过所述模拟值地址,获取所述待编码的模拟值。
上述设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一实施例所述的编码方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一实施例所述的编码方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
- 一种电器设备模块的编码方法、装置、设备和存储介质
- 音频编码方法和设备、音频解码方法和设备和采用音频编码方法和设备、音频解码方法和设备的多媒体装置