神经网络系统中数据处理的电路和方法

文档序号:1772648 发布日期:2019-12-03 浏览:29次 >En<

阅读说明:本技术 神经网络系统中数据处理的电路和方法 (The circuit and method of data processing in nerve network system ) 是由 费旭东 周红 袁宏辉 于 2018-05-24 设计创作,主要内容包括:本申请提供一种神经网络系统中数据处理的电路和方法,能够在神经网络的硬件架构中兼容多种精度的数据格式。该电路包括串行加法电路、第一非线性映射电路、累加电路和第二非线性映射电路,其中,该串行加法电路,串行获取至少一个输入数据中的每个输入数据和该每个输入数据对应的权重参数,对每个输入数据和每个输入数据对应的权重参数进行串行加法运算得到至少一个第一数据;该第一非线性映射电路,对至少一个第一数据中的每个第一数据进行第一非线性映射,获得至少一个第二数据;该累加电路,对至少一个第二数据进行累加;该第二非线性映射电路,对累加电路输出的累加结果进行第二非线性映射,获得输出数据。(The application provides the circuit and method of data processing in a kind of nerve network system, and the data format of a variety of precision can be compatible in the hardware structure of neural network.The circuit includes serial addition circuit, the first Nonlinear Mapping circuit, summation circuit and the second Nonlinear Mapping circuit, wherein, the serial addition circuit, each input data at least one input data weight parameter corresponding with each input data is serially obtained, serial addition operation is carried out to each input data and the corresponding weight parameter of each input data and obtains at least one first data;The first Nonlinear Mapping circuit carries out the first Nonlinear Mapping to the first data of each of at least one first data, obtains at least one second data;The summation circuit adds up at least one second data;The second Nonlinear Mapping circuit carries out the second Nonlinear Mapping to the accumulation result of summation circuit output, obtains output data.)

神经网络系统中数据处理的电路和方法

技术领域

本申请涉及电路领域,并且更具体的,涉及神经网络系统中的数据处理的电路和方法。

背景技术

神经网络及深度学习算法已经获得了非常成功的应用,并处于迅速发展的过程中,业界普遍预期新的计算方式有助于实现更为普遍、复杂的智能应用。神经网络及深度学习算法等近年来在图像识别应用领域取得了非常突出的成就,因此业界对深度学习算法的优化及高效率实现开始关注并重视,并投入到神经网络优化算法的研究。

由于应用的驱动,业界普遍开始研究并开发高效率的神经网络加速硬件和芯片。研究和实践发现,相对于已经成熟应用的fp32、fp16格式而言,很多低精度的数据格式在神经网络运算中是完全可行的,包括INT8及其他4位,2位,甚至1位的实现方法,因此多精度的数据格式在不同网络、不同应用中有不同的表现,在特定场景下都可以分别满足应用的要求。

因此,如何在神经网络的硬件架构中兼容多种精度的数据格式是亟待解决的问题。

发明内容

本申请提供一种神经网络系统中数据处理的电路和方法,能够在神经网络的硬件架构中兼容多种精度的数据格式。

第一方面,提供了一种神经网络系统中数据处理的电路,该电路包括串行加法电路、第一非线性映射电路、累加电路和第二非线性映射电路,其中,

所述串行加法电路,串行获取至少一个输入数据中的每个输入数据和所述每个输入数据对应的权重参数,对所述每个输入数据和所述每个输入数据对应的权重参数进行串行加法运算得到至少一个第一数据;

所述第一非线性映射电路,对所述至少一个第一数据中的每个第一数据进行第一非线性映射,获得至少一个第二数据,其中,所述第一非线性映射为以2底的指数变换;

所述累加电路,对所述至少一个第二数据进行累加;

所述第二非线性映射电路,对所述累加电路输出的累加结果进行第二非线性映射,获得输出数据,其中,所述第二非线性映射是根据所述神经网络的非线性映射和所述第一非线性映射确定的。

因此,本申请实施例中,通过加法器串行获取输入数据和权值参数,并对所述输入数据和权值参数进行串行加法运算获得至少一个第一数据,接着通过第一非线性映射电路对所述至少一个第一数据进行第一非线性映射获得至少一个第二数据,然后通过累加电路对该至少一个第二数据进行累加,再通过第二非线性映射电路对所述累加电路输出的累加结果进行第二非线性映射,基于此本申请实施例通过将加法器的操作数的输入和计算过程串行化,能够实现将多精度的兼容处理转移到时钟节拍的计数上,因此可以实现多精度兼容的神经网络运算架构。

一种具体的实现方式中,由于神经网络的计算是分级进行的,前一级的输出是后一级的输入,因此对输入数据进行对数变换可以通过前一级的第二非线性映射电路实现,也就是说,前一级的累加和在经过第二非线性映射之后又送回计算单元的输入端,准备执行下一次的计算。可选的,权重参数可以事先计算完,保存在存储器中,在计算的时候临时取到计算单元。

可选的,第二非线性映射为是根据神经网络的非线性映射和所述第一非线性映射的逆映射确定的。具体的,当第一非线性映射是以2为底的指数函数时,第一非线性映射的逆映射为以2为底的对数函数。

本申请实施例,以8bit为例,相对于并行处理而言,虽然串行处理的性能降低了8倍,但是串行处理电路的资源代价比并行处理电路的资源代价降低了8倍,因此如果将同样的资源用来实现8倍数量的串行处理单元,那么总体性能可以保持基本不变,因此本申请实施例能够在实现多精度兼容的同时,保证数据处理的效率。

可选的,本申请实施例中,累加器所处理的累加过程以及第二非线性映射电路所进行的第二非线性映射的过程在神经网络计算的实际场景中都需要较高的精度,因此可以不需要满足多精度兼容的要求,基于此累加器和第二非线性映射电路可以并行进行数据处理,也可以串行进行数据处理。

结合第一方面,在第一方面的一些可能的实现方式中,还包括:

串并转换电路,串行获取所述每个第一数据的至少部分数据,并将所述每个第一数据的至少部分数据并行输出至所述第一非线性映射电路。

可选的,该串并转换电路可以为第一串并转换电路,串行获取加法器输出的数据,并将该数据并行输出至第一非线性映射电路,以使得通过第一非线性映射电路对该数据进行第一非线性映射。

可选的,第一非线性映射电路可以对数据进行串行处理。具体而言,整数部分的第一非线性映射的过程可以被串行化处理,而小数部分的第一非线性映射的过程不能被串行化处理。在一种可能的实现方式中,该串并转换电路可以为第二串并转换电路,串行获取加法器输出的数据的小数部分,并将该小数部分并行输出至第一非线性映射电路,以使通过第一非线性映射电路对该小数部分进行第一非线性映射。

结合第一方面,在第一方面的一些可能的实现方式中,所述第一非线性映射电路包括非线性映射单元、移位控制电路和移位寄存电路,其中,

所述非线性映射单元,并行获取所述每个第一数据的小数部分,对所述每个第一数据的小数部分进行所述第一非线性映射,获得第三数据,并将所述第三数据输出至所述移位寄存电路;

所述移位控制电路,获取所述每个第一数据的整数部分,并根据所述每个第一数据的整数部分,向所述移位寄存电路输出控制信号;

所述移位寄存电路,根据所述控制信号对所述第三数据进行移位,获得所述至少一个第二数据。

结合第一方面,在第一方面的一些可能的实现方式中,所述控制信号为k个时钟信号,所述移位寄存电路串行输出所述第三数据,并在输出所述第三数据之后根据所述k个时钟信号串行输出k个0,获得所述第二数据,其中,k为所述第一数据的整数部分的取值,k为正整数。这样可以使得移位操作更加简单,有利于降低功耗。

结合第一方面,在第一方面的一些可能的实现方式中,所述移位寄存电路根据所述控制信号对所述第三数据左移k位,获得所述第二数据,其中,k为所述第一数据的整数部分的取值,k为正整数。

结合第一方面,在第一方面的一些可能的实现方式中,所述控制信号为k个时钟信号。

结合第一方面,在第一方面的一些可能的实现方式中,所述控制信号为j个时钟信号,其中,所述j个时钟信号中的第i个时钟信号与所述整数部分的二进制数的由低位至高位的第i位对应,j为所述整数部分的二进制数的位数,i、j为正整数,1≤i≤j;

其中,当所述二进制数的第i位为非0时,所述移位寄存电路根据所述第i个时钟信号,对所述第三数据左移2i-1位;

当所述二进制数的第i位为0时,所述移位寄存电路不对所述第三数据进行移位。

这样,可以减少移位的次数,有利于降低系统功耗,提高系统性能。

可选的,本申请实施例中,还包括:精度配置控制器,控制串行加法器、串并转换寄存器、移位控制器以及移位寄存器中的至少一种的时钟以及数据选路。这样,精度配置控制器通过控制串行加法器、串并转换寄存器、移位控制器以及移位寄存器中的至少一种的时钟以及数据选路,能够控制串行加法器、串并转换寄存器、移位控制器以及移位寄存器中的至少一种处理的数据的位宽,即精度。

第二方面,提供了一种神经网络系统中数据处理的方法,该方法是采用第一方面任一种电路对输入数据进行处理,该方法包括:

通过所述串行加法电路串行获取至少一个输入数据中的每个输入数据和所述每个输入数据对应的权重参数,对所述每个输入数据和所述每个输入数据对应的权重参数进行串行加法运算得到至少一个第一数据;

通过所述第一非线性映射电路对所述至少一个第一数据中的每个第一数据进行第一非线性映射,获得至少一个第二数据,其中,所述第一非线性映射为以2底的指数变换;

通过所述累加电路对所述至少一个第二数据进行累加;

通过所述第二非线性映射电路对所述累加电路输出的累加结果进行第二非线性映射,获得输出数据,其中,所述第二非线性映射是根据所述神经网络的非线性映射和所述第一非线性映射确定的。

第二方面的方法的各个步骤可以参照第一方面的数据处理的电路的相应模块的各个操作,在此不再重复。

附图说明

图1示出了一种n级(层)的神经网络计算模型的示意图。

图2示出了传统的神经网络中数据处理的电路的示意图。

图3示出了本申请实施例提供的一种神经网络中数据处理的电路的示意图。

图4示出了本申请实施例提供的一种神经网络中数据处理的电路的示意图。

图5示出了本申请实施例的一种具体的移位寄存器的示意图。

图6示出了本申请实施例提供的一种神经网络系统中数据处理的方法的示意性流程图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

图1示出了一种n级(层)的神经网络计算模型的示意图,神经网络处理其中的一个神经元的计算对应的公式如下:

y=f(x1*w1+x2*w2+…+xn*wn+b),

其中,xi是数据输入,wi是权重参数,i=1,2,…,n,b是一个常数,f()是一个特定的函数,i和n为正整数。上述公式即表示两个向量(x1、x2、…xn)和(w1、w2、…wn)的点乘。这种运算可以在一个计算单元上逐次完成乘法,及累加。

图2是传统的神经网络中数据处理的电路的示意图。神经网络的计算是分级进行的,前一级的输出是后一级的输入。具体的,前级输出作为数据输入(x1、x2、…xn),由硬件乘法器201将x1、x2、…xn分别与对应的权重参数相乘,然后由累加器202完成x1*w1+x2*w2+…+xn*wn+b的累加操作,在经过非线性映射单元203对累加结果进行非线性映射y=f(累加后的结果)得到计算结果,最后完成数据的输出。

但是,图2中的电路需要使用硬件乘法器201,这增加了计算单元的复杂度和占用的资源。为了简化乘法运算,可以通过对数变换,将复杂的乘法运算转换为加法运算。图3示出了本申请实施例提供的一种神经网络中数据处理的电路的示意图。

下面对图3中的工作原理进行说明。假设数据A和数据B要进行乘法运算,可以对A和B先进行对数变换得到:a=log2A,b=log2B。这里,假设A是数据,B是权重参数,则对A进行对数变换可以通过前一级的第二非线性映射电路实现,也就是说,前一级的累加和在经过第二非线性映射之后又送回计算单元的输入端,准备执行下一次的计算,而权重参数B可以事先计算完,保存在存储器中,在计算的时候临时取到计算单元。

然后,通过加法器301对a和b执行加法运算:c=a+b。

然后,通过第一非线性映射电路302对c进行第一非线性映射。这里,第一非线性映射是以2为底的指数函数,即:d=2c。可知,此时d=A*B。

然后,通过累加器303将此前得到的多个类似的乘积累加,就得到了这些乘积的累加和。

然后,通过第二非线性映射电路304对累加器输出的累加和进行第二非线性映射。并且,经过第二非线性映射之后数据又被送回计算单元的输入端,准备执行下一次的计算。

这里,第二非线性映射为是根据神经网络的非线性映射和所述第一非线性映射的逆映射确定的。具体的,当第一非线性映射是以2为底的指数函数时,第一非线性映射的逆映射为以2为底的对数函数。

一种方案,神经网络中数据处理的过程中可以对数据进行并行处理,也就是说,神经网络中数据处理所采用的每个数据处理的单元可以并行读取数据、处理数据、并行输出数据。但是,任何并行化的实现方案要实现多精度的兼容都是比较困难的。例如,一个8位并行处理单元,如果要处理4位的数据,那就是8位当4位用,可以在浪费一半资源的情况下实现4位精度的运算。当处理单元从存储器读出数据的时候,需要有电路分别实现2种读取方式,一种是4位的,一种是8位的。而且,在满足相同存储器带宽的情况下,4位数据相对8位数据需要2倍的读出处理速度,因此此时还需要加倍处理单元对4位数据进行处理。因此,对数据进行并行处理难以实现多精度兼容。

本申请实施例中,可以在神经网络中的数据处理的过程中对数据进行串行处理。例如,对于8位的数据并不是一次一个字节的读出,而是逐位读出、逐位处理,此时可以实现多精度的兼容。具体而言,8位数据的读出和处理需要8个时钟节拍,4位数据的读出和处理需要4个时钟节拍,其他的数据宽度同理,基于此本申请实施例能够实现将一个弹性的、多变的需求转换到时间域来实现。由于需要的时间节拍是可以灵活控制的,而具体的并行硬件电路是固定的,因此本申请实施例能够灵活的实现多精度的兼容。

另外,以8bit为例,相对于并行处理而言,虽然串行处理的性能降低了8倍,但是串行处理电路的资源代价比并行处理电路的资源代价降低了8倍,因此如果将同样的资源用来实现8倍数量的串行处理单元,那么总体性能可以保持基本不变,因此本申请实施例能够在实现多精度兼容的同时,保证数据处理的效率。

应注意,由于图3中累加器303所处理的累加过程以及第二非线性映射电路304所进行的第二非线性映射的过程在神经网络计算的实际场景中都需要较高的精度,因此可以不需要满足多精度兼容的要求,基于此累加器303和第二非线性映射电路304可以并行进行数据处理,也可以串行进行数据处理,本申请实施例对此不作限定。

本申请实施例中,需要加法器301对数据进行串行处理,即加法器301可以为串行加法器,或者也可以称为串行全加器。具体而言,串行加法器采用从低位到高位的逐位相加的方式,分时复用同一个一位全加器。

作为一个可选的实施例,如果加法器301和后面部件的串行输入匹配时,可以不需要任何寄存器(Reg)来缓存输出的串行数据,而直接将该加法器301输出的数据输入到后面的部件中。

作为一个可选的实施例,如果与加法器301连接的后面的部件不能够串行输入时,可以将该加法器301的每一位的计算结果保存到寄存器中,然后从该寄存器中并行将该计算结果输出至后面的部件中。

本申请实施例中,通过第一非线性映射电路302对加法器301输出的数据进行第一非线性映射,第一非线性映射是以2为底的指数变换,即:y=2x。作为一个可选的实施例,在302输出的数据包括整数部分和小数部分。对于整数部分来说,第一非线性映射相当于移位操作,对于小数部分来说,第一非线性映射可以通过一个小规模的查找表或映射表来求值。

作为一个可选的实施例,第一非线性映射电路302可以对数据进行并行处理。此时,本申请实施例中的数据处理的电路中还包括第一串并转换电路,串行获取加法器301输出的数据,并将该数据并行输出至第一非线性映射电路,以使得通过第一非线性映射电路对该数据进行第一非线性映射。

作为一个可选的实施例,第一非线性映射电路302可以对数据进行串行处理。具体而言,整数部分的第一非线性映射的过程可以被串行化处理,而小数部分的第一非线性映射的过程不能被串行化处理。在一种可能的实现方式中,本申请实施例中的数据处理的电路中还包括第二串并转换电路,串行获取加法器301输出的数据的小数部分,并将该小数部分并行输出至第一非线性映射电路,以使通过第一非线性映射电路对该小数部分进行第一非线性映射。

应注意,本申请实施例中,虽然小数部分的第一非线性映射的过程不能被串行化处理,但是其并行化处理的过程中资源占用的代价可以接受。在实际应用场景下,通常需要优先保证整数的位数,从而得到足够大的取值范围。作为一个具体的例子,当需要的精度是1bit到3bit时,通常只需要整数位,当需要的精度为4bit时,可以有一个小数位,或者没有小数位(即4个都是整数位),当需要的精度为4bit到8bit时,可以有1-4个小数位,其余为整数位。

然后,通过累加器303对第一非线性映射电路输出的至少一个数据进行累加,再通过第二非线性映射电路304对累加器303输出的累加结果进行第二非线性映射。

应注意,本申请实施例中,加法器301可以替换为可以执行上述加法器301的功能的加法电路,累加器303可以替换为可以执行上述累加器303的功能的累加电路,本申请实施例对此不作具体限定。

因此,本申请实施例通过将加法器的操作数的输入和计算过程串行化,能够实现将多精度的兼容处理转移到时钟节拍的计数上,基于此本申请实施例可以实现多精度兼容的神经网络运算电路。

图4示出了本申请实施例提供的一种神经网络中数据处理的电路的示意图。应理解,

图4示出了数据处理的电路的示意性模块或单元,但这些模块或单元仅是示例,本申请实施例还可以包括其他模块或单元,或者图4中的各个模块或单元的变形。此外,图4中的例子仅仅是为了帮助本领域技术人员理解和实现本申请实施例,而非限制本申请实施例的范围。本领域技术人员可以根据这里给出的例子进行等价变换或修改,这样的变换或修改仍然应落入本申请实施例的范围内。

本申请实施例中,该数据处理的电路包括串行加法器401、精度配置控制器402、串并转换寄存器403、非线性映射单元404、移位控制器405、移位寄存器406、累加器407和第二非线性映射电路408。其中,非线性映射单元404、移位控制器405、移位寄存器406可以为第一非线性映射电路302的组成部分。一个可选的实施例中,串并转换寄存器403可以为第一非线性映射电路302的组成部分,本申请实施例对此不作限定。另一个可选的实施例中,移位控制器405可以为精度配置控制器402中包括的用于对移位寄存器406进行控制的局部控制电路,本申请实施例对此不作限定。

本申请实施例中,精度配置控制器402可以控制串行加法器401、串并转换寄存器403、移位控制器405以及移位寄存器406中的至少一种的时钟以及数据选路。这样,精度配置控制器402通过控制串行加法器401、串并转换寄存器403、移位控制器405以及移位寄存器406中的至少一种的时钟以及数据选路,能够控制串行加法器401、串并转换寄存器403、移位控制器405以及移位寄存器406中的至少一种处理的数据的位宽,即精度。

应理解,精度配置控制器中可以包括对应于控制串行加法器401、串并转换寄存器403、移位控制器405或移位寄存器406的局部控制电路。这样,通过对应于控制串行加法器401、串并转换寄存器403、移位控制器405或移位寄存器406的局部控制电路,可以实现对串行加法器401、串并转换寄存器403、移位控制器405或移位寄存器406分别进行控制,即时钟以及数据选路。例如,通过与串行加法器401的对应的局部控制电路,可以实现对串行加法器401的控制。又例如,通过与移位寄存器406对应的局部控制电路,可以实现对移位寄存器406的控制。

串行加法器401,串行获取至少一个输入数据中的每个输入数据和所述每个输入数据对应的权重参数,对所述每个输入数据和所述每个输入数据对应的权重参数进行串行加法运算得到至少一个第一数据。

这里,输入数据例如为上文中的数据A,每个输入数据对应的权值参数例如为上文中的权重参数B。本申请实施例中,可以将输入数据和权值参数的一个比特称为操作数,具体而言可以将输入数据中的一个比特称为串行操作数1,将输入数据对应的权重参数中的一个比特称为串行操作数2。

具体的,串行操作数1和串行操作数2从存储器中同步读出,每个时钟周期内各读出1位,作为串行加法器401的输入。这样,精度配置控制器402可以控制在经过M个时钟周期后可以将精度为M的两个操作数读取完毕,其中M为正整数,作为一例,M可以为8。这里,精度实际上就是数据的位宽。另外,操作数在存储器中的保存方式需要适合串行读取方式,例如,存储器每个地址上保存的一个字节由8个操作数各取一个比特组成,这样每次从存储器中读出的字节可以分别对应于8个操作数中的一个比特。

然后,串行操作数1和串行操作数2送到串行加法器401完成一个比特的加法运算,具体的,输入数据和权值参数的每个比特位依次进入串行加法器401,经过M个时钟周期之后就能完成输入数据和权重参数的全部位宽的加法运算,得到输入数据和权重参数的和,即上述第一数据。

具体的,对于单个全加器来说,假设输入数据的第n个操作数记为An,权重参数的第n个操作数记为Bn,来自低位的进位位记为Cn,和记为Yn,向高位的进位位记为Cn+1。这里,n为正整数,且小于或等于输入数据或权重参数的位宽。

在开始计算之前,需要对串行加法器401进行初始化,即需要先将保存进位位的寄存器清零。可选的,串行加法器401的初始化可以由精度配置控制器402完成。具体而言,精度配置控制器402可以将串行加法器401用来保存输入操作数和低位进位位的寄存器清零。然后,将两个操作数的当前位相加,再加上来自低位位的进位位,可以得到当前数据输出和向高位的进位输出。这里,可以采用(Cn+1,Yn)=(An,Bn,Cn)的形式,来表示其运算规律:

(0,0)=(0,0,0)

(0,1)=(0,1,0)

(0,1)=(1,0,0)

(1,0)=(1,1,0)

(0,1)=(0,0,1)

(1,0)=(0,1,1)

(1,0)=(1,0,1)

(1,1)=(1,1,1)

这时,向高位的进位位可以保存在缓存寄存器中,以用于进行下一次的加法运算。同时,当当前数据输出为小数位时,可以将当前数据输出保存到小数位串并转换寄存器403中。

然后,n的取值可以加1,进行下一位的加法运算,直至输入数据和权值参数的所有位都计算完毕。作为一例,如果输入数据和权值参数的位宽是8位,则经过8个时钟周期后,计算过程结束。

本申请实施例中,串行加法器401计算的结果可以串行逐位输出。假设串行操作数是按照从右至左(即先小数部分、后整数部分)输入到串行加法器401,此时输出也按照从右至左的顺序,先输出和的小数部分,即第一数据的小数部分,后输出和的整数部分,即第一数据的整数部分。

串并转换寄存器403,串行获取第一数据的小数部分,并将所述小数部分并行输出至非线性映射单元404。具体的,小数部分可以按照从右至左的顺序输入到串并转换寄存器403。具体而言,如果小数部分为n位,则精度配置控制器402可以控制使得n个时钟周期后,所有小数位都保存到串并转换寄存器403中,并且在这n个时钟周期之后,可以并行输出该小数部分。

非线性映射单元404,并行获取串并转换寄存器403输出的第一数据的小数部分,对所述第一数据的小数部分进行所述第一非线性映射,获得第三数据,并将所述第三数据输出至移位寄存器406。具体的,第一非线性映射可以参见上文中的描述,为避免重复,这里不再赘述。

移位控制器405,获取第一数据的整数部分,并根据所述每个第一数据的整数部分,向移位寄存器406输出控制信号。这里,移位控制器405还可以称为整数浮点移位控制器。

具体的,该第一数据的整数部分的取值为k,k为正整数,这时该控制信号可以为k个时钟信号。或者,该第一数据的整数部分的二进制数表示为j位,j为正整数,此时该控制信号可以为j个时钟信号。

所述移位寄存器406,根据所述移位控制器405输出的控制信号对获取的所述第三数据进行移位,获得第二数据。这里,移位寄存器还可以称为小数位移位寄存器。

一种可能的实现方式,当控制信号为k个时钟信号时,移位寄存器406可以串行输出该第三数据,并在输出该第三数据之后根据该k个时钟信号串行输出k个0,完成对第三数据的移位。这样可以使得移位操作更加简单,有利于降低功耗。

另一种可能的实现方式,移位寄存器406可以对该第三数据左移k位,以获得第二数据,然后可以并行输出该第二数据。

具体的,当控制信号为k个时钟信号时,移位寄存器406可以根据该k个时钟信号,对该第一数据左移k次,每次移一位来完成对第三数据的移位。

当控制信号为j个时钟信号时,移位寄存器406可以根据该j个时钟信号,对该第一数据左移j次,完成对第三数据的移位。具体而言,该j个时钟信号中的每个时钟信号与该二进制数的每一位对应。在这种情况下,每次的移位数不同,可以是1位、2位、4位或8位等2的幂。也就是说,如果该二进制数的某一位非0,则需要对第三数据进行移位,且移位数等于该位的权重。如果某一位为0,则不对该第三数据进行移位。这样,可以减少移位的次数,有利于降低系统功耗,提高系统性能。

一种具体的实现方式中,该j个时钟信号中的第i个时钟信号可以与该二进制数的由低至高的第i位对应,i为正整数,1≤i≤j。此时,当该二进制数的第i位为非0时,移位寄存器406根据该第i个时钟信号,对该第三数据左移2i-1位;当所述二进制数的第i位为0时,所述移位寄存电路不对所述第三数据进行移位。

在具体实现时,该移位寄存器406可以包括多个触发器,该多个触发器的字长大小足够覆盖非线性变换后的数据的大小。这里,每个触发器的输入不再仅与前一个触发器直接相连,而是与一个多路选择器(multiplexer,MUX)的输出相连,而该MUX的输入来自该触发器前面的第2u个触发器,这里u为大于或等于0的整数。

图5示出了本申请实施例的一种具体的移位寄存器的示意图。该移位寄存器为16位移位寄存器,包括16个触发器,分别为D0、D1、…D14、D15。其中,每个触发器的输入来自该触发器前面的第1、第2、第4或第8个触发器的输出。比如,第16个触发器D15通过MUX1,可以输入来自D14、D13、D11、D7之一的输出,进而实现1位、2位、4位或者8位的数据移位。又比如,第15个触发器D14通过MUX2,可以输入来自D13、D12、D10、D6之一的输出,进而实现1位、2位、4位或者8位的数据移位。又比如,第6个触发器D5通过MUX3,可以输入来自D4、D3、D1之一的输出,进而实现1位、2位或者4位的数据移位,这时,MUX2的一个输入端包括0。其他各位的连接方式可以依次类推,对于低位触发器,例如D0、D1、D2等,他们的MUX的输入端可以包括0。

具体的,MUX的切换控制可以由上述j个时钟信号控制。作为一个具体的例子,当该整数部分的二进制数表示为1011时,移位控制器405可以串行获取该整数部分的每个比特位,例如移位控制器405可以依次获取由低位至高位的1,1,0,1四个比特。

当移位控制器405获取由低位至高位的第一位的“1”时,可以向移位寄存器406输出第1个时钟信号,该时钟信号可以为高电平的时钟信号,指示移位寄存器对第三数据左移1位,此时该第1个时钟信号可以控制触发器D1的MUX,可以将D0作为D1的输入。

当移位控制器405获取由低位至高位的第二位的“1”时,可以向移位寄存器406输出第2个时钟信号,该时钟信号可以为高电平的时钟信号,指示移位寄存器对第三数据左移2位,此时该第2个时钟信号可以控制触发器D3的MUX,可以将D1作为D3的输入。

当移位控制器405获取由低位至高位的第三位的“0”时,可以向移位寄存器406输出第3个时钟信号,该时钟信号可以为低电平的时钟信号,指示移位寄存器不对该第三数据进行移位。

当移位控制器405获取由低位至高位的第四位的“1”时,可以向移位寄存器406输出第4个时钟信号,该时钟信号可以为高电平的时钟信号,指示移位寄存器对第三数据左移8位,此时该第4个时钟信号可以控制触发器D11的MUX,可以将D3作为D11的输入。此时,经过对所有非零位的遍历,能够实现对第三数据进行11(即8+2+1)位的左移,获取第二数据。

当移位寄存器406完成对第三数据的移位时,精度配置控制器402可以向移位寄存器406发送使能信号,使得移位寄存器406将移位后的结果(即第二数据)输出至累加器407,这里该输出为累加项。

累加器407对移位寄存器406输出的累加项进行逐个累加。可选的,本申请实施例中,累加器407可以根据需要被控制为不作累加,例如当累加项为0时,保持上一次的累加结果不变。或者,累加器407还可以根据需要被控制为作减法运算,例如当累加项为负数时,可以将上一次的累加结果与当前的累加项进行减法运算。

第二非线性映射电路408对累加器407输出的结果做第二非线性映射。通常,第二非线性映射可以根据神经网络的特点以及前级的非线性变换(即第一非线性映射)的类型来定制。作为一个举例,该第二非线性映射可以包括两种非线性变换的级联,其中,当第一非线性映射是指数变换时,这里的第一种非线性映射是神经网络原有的非线性变换,例如Sigmoid,ReLU等,另一种非线性映射是第一非线性映射的逆运算,即该另一种非线性映射为对数变换。

另外,本申请实施例中,第二非线性映射电路408输出的数据可以经过并串转换,以串行形式重新送回存储器,以便执行下一次的计算。

应注意,本申请实施例中,上述器件401至408中的任意一种器件可以替换为可以执行该器件的功能的电路模块或电路单元,本申请实施例对此不作具体限定。

因此,本申请实施例中,通过加法器串行获取输入数据和权值参数,并对所述输入数据和权值参数进行串行加法运算获得至少一个第一数据,接着通过第一非线性映射电路对所述至少一个第一数据进行第一非线性映射获得至少一个第二数据,然后通过累加电路对该至少一个第二数据进行累加,再通过第二非线性映射电路对所述累加电路输出的累加结果进行第二非线性映射,基于此本申请实施例通过将加法器的操作数的输入和计算过程串行化,能够实现将多精度的兼容处理转移到时钟节拍的计数上,因此可以实现多精度兼容的神经网络运算架构。

本申请实施例提供的神经网络系统中数据处理的电路可以应用于云端服务器应用场合,可以终端(如手机)应用上的独立的处理芯片,也可以是终端处理器芯片里的一个模块(如基于ASIC实现的一个模板)。具体的,该电路的信息的输入可以来自语音、图像、自然语言等需要智能处理的各种信息输入,并可以经过必要的预处理(如采样,模数转换,特征提取等)形成待处理的神经网络运算的数据。另外,该电路的信息可以输出到其他后续处理模块或软件,例如图形或其他可以理解可用的表现方式。其中,在云端应用形态下,神经网络系统中数据处理的电路的前后级的处理单元例如可以由其他服务器运算单元承担,在终端应用环境下,神经网络系统中数据处理的电路的前后级处理单元可由终端软硬件的其他部分(如包括传感器、接口电路)等完成,本申请实施例对此不作限定。

下面以8位精度的操作数为例,具体说明本申请实施例的神经网络中的数据处理的例子。

步骤1、两个操作数A和B同时从存储器中逐位读出,其中A=0111.0101,B=0011.1001,数据A和B都有4位整数部分和4位小数部分。每次读出1位,按从右到左的顺序,依次是10101110和10011100,8个时钟周期后数据A和B可以全部读出来。这里,能够实现串行读出的前提是数据在存储器中本来就是串行存放的,例如A和B的第一位都保存在同一个字节里,存储器按字节访问,这样当这个字节从存储器中读出时,A和B的第一个位就同时读出来了。

步骤2、两个串行操作数(即步骤1中读出的两个操作数)送到串行加法器完成一个比特的加法运算。串行加法器的初始化由精度配置控制器完成,精度配置控制器将全加器用来保存低位进位位的寄存器清零,表示最初没有进位。开始运算时,串行加法器先做第一个比特的加法1+1=0,进位值为1;然后做第二个比特的加法0+0=0,结合来自第一个比特的进位值,所以输出结果为1,进位值为0;依此类推,完成全部8位数据的加法运算,串行输出的结果是01110101,表示1010.1110。

步骤3、串行加法器执行运算的结果1010.1110按输出顺序分为两个部分,先行输出的是小数部分1110,随后输出的是整数部分1010。

步骤4、小数部分(1110)逐位进入小数位串并转换寄存器,然后并行输出小数部分。这里,串入并出的过程由精度配置控制器控制,由于小数位有4位,因此精度配置控制器可以控制串并转换寄存器在输入4个时钟后就可以将4个小数位并行输出。

步骤5、整数部分(1010)进入整数浮点移位控制器,按输入的整数值控制小数移位Reg的移位数,1010对应的移位数是8+2=10。整数浮点移位控制器的位宽由精度配置控制器提供,整数浮点移位控制器还用来控制移位的开始和结束。

步骤6、小数位串并转换寄存器的内容输入到非线性变换单元1,经过非线性变换后输出到小数移位Reg。所述非线性变换可以是一个指数变换,例如变换后的结果是1111,具体实现可以采用查找表或者组合逻辑电路完成。

步骤7、从非线性变换单元1输出的数据1111,输入到小数移位Reg。根据整数浮点移位控制器的取值10,控制小数移位Reg进行移位。

步骤8、移位的结果是11110000000000(相比1111左移了10位),在移位完成后精度配置控制器输出使能信号,将移位后的结果输出,这个输出是累加项。

步骤9、累加器对输出的累加项进行逐个累加。

步骤10、非线性变换单元2对来自累加器的结果做另一种非线性变换。该变换可取两种变换的级联,第一种是神经网络原有的非线性变换,例如Sigmoid,ReLU等,另一种是对数变换(因为前面的非线性变换单元1是做指数变换,它的逆变换是对数变换)。

步骤11、非线性变换单元2的输出数据经过并串转换,以串行形式重新送回存储器。

下面再以3位精度的操作数为例,具体说明本申请实施例的神经网络中的数据处理的例子。

步骤1、两个操作数A和B同时从存储器中逐位读出,其中A=11.0,B=01.1,都有2位整数部分和1位小数部分。每次读出1位,按从右到左的顺序,依次是011和110,3个时钟周期后全部读出来。

步骤2、两个串行操作数(即步骤1中读出的两个操作数)送到串行加法器完成一个比特的加法运算。开始运算时,先做第一个比特的加法1+0=1,进位值为0;然后做第二个比特的加法1+1=0,结合来自第一个比特的进位值,所以输出结果为1,进位值为1。依此类推,完成全部3位数据的加法运算,串行输出的结果是1001,表示100.1。

步骤3、串行加法器执行运算的结果100.1按输出顺序分为两个部分,先行输出的是小数部分1,随后输出的是整数部分100。

步骤4、小数部分(1)进入小数位串并转换寄存器,然后并行输出小数部分。这里,串入并出的过程由精度配置控制器控制,由于小数位有1位,因此精度配置控制器可以控制串并转换寄存器在输入1个时钟后就可以将1个小数位并行输出。

步骤5、整数部分(100)进入整数浮点移位控制器,按输入的整数值控制小数移位Reg的移位数,100对应的移位数是4。

步骤6、小数位串并转换寄存器的内容输入到非线性变换单元1,经过非线性变换后输出到小数移位Reg。所述非线性变换可以是一个指数变换,例如变换后的结果是1。

步骤7、从非线性变换单元1输出的数据1,输入到小数移位Reg。根据整数浮点移位控制器的取值4,控制小数移位Reg进行移位。

步骤8、移位的结果是10000(相比1移动了4位),在移位完成后精度配置控制器输出使能信号,将移位后的结果输出,这个输出是累加项。

步骤9、累加器对输出的累加项进行逐个累加。

步骤10、非线性变换单元2对来自累加器的结果做另一种非线性变换。该变换可取两种变换的级联,第一种是神经网络原有的非线性变换,例如Sigmoid,ReLU等,另一种是对数变换(因为前面的非线性变换单元1是做指数变换,它的逆变换是对数变换)。

步骤11、非线性变换单元2的输出数据经过并串转换,以串行形式重新送回存储器。

因此,本申请实施例通过将加法器的操作数的输入和计算过程串行化,能够实现将多精度的兼容处理转移到时钟节拍的计数上,基于此本申请实施例可以实现多精度兼容的神经网络运算架构。

图6示出了本申请实施例提供的一种神经网络系统中数据处理的方法的示意性流程图。该方法由数据处理电路执行,该数据处理电路可以包括串行加法电路、第一非线性映射电路、累加电路和第二非线性映射电路,该方法包括:

610,通过所述串行加法电路串行获取至少一个输入数据中的每个输入数据和所述每个输入数据对应的权重参数,对所述每个输入数据和所述每个输入数据对应的权重参数进行串行加法运算得到至少一个第一数据;

620,通过所述第一非线性映射电路对所述至少一个第一数据中的每个第一数据进行第一非线性映射,获得至少一个第二数据,其中,所述第一非线性映射为以2底的指数变换;

630,通过所述累加电路对所述至少一个第二数据进行累加;

640,通过所述第二非线性映射电路对所述累加电路输出的累加结果进行第二非线性映射,获得输出数据,其中,所述第二非线性映射是根据所述神经网络的非线性映射和所述第一非线性映射确定的。

可选的,所述数据处理电路还包括串并转换电路,所述方法还包括:

通过所述串行获取所述每个第一数据的至少部分数据,并将所述每个第一数据的至少部分数据并行输出至所述第一非线性映射电路。

可选的,所述第一非线性映射电路包括非线性映射单元、移位控制电路和移位寄存电路,其中,所述通过所述第一非线性映射电路对所述至少一个第一数据中的每个第一数据进行第一非线性映射,获得至少一个第二数据,包括:

通过所述非线性映射单元并行获取所述每个第一数据的小数部分,对所述每个第一数据的小数部分进行所述第一非线性映射,获得第三数据,并将所述第三数据输出至所述移位寄存电路;

通过所述移位控制电路获取所述每个第一数据的整数部分,并根据所述每个第一数据的整数部分,向所述移位寄存电路输出控制信号;

所述移位寄存电路根据所述控制信号对所述第三数据进行移位,获得所述至少一个第二数据。

可选的,所述控制信号为k个时钟信号,所述移位寄存电路根据所述控制信号对所述第三数据进行移位,获得所述至少一个第二数据,包括:

所述移位寄存电路串行输出所述第三数据,并在输出所述第三数据之后根据所述k个时钟信号串行输出k个0,获得所述第二数据,其中,k为所述第一数据的整数部分的取值,k为正整数。

可选的,所述移位寄存电路根据所述控制信号对所述第三数据进行移位,获得所述至少一个第二数据,包括:

所述移位寄存电路根据所述控制信号对所述第三数据左移k位,获得所述第二数据,其中,k为所述第一数据的整数部分的取值,k为正整数。

可选的,所述控制信号为k个时钟信号。

可选的,所述控制信号为j个时钟信号,其中,

所述j个时钟信号中的第i个时钟信号与所述整数部分的二进制数的由低位至高位的第i位对应,j为所述整数部分的二进制数的位数,i、j为正整数,1≤i≤j;

所述移位寄存电路根据所述控制信号对所述第三数据左移k位,获得所述第二数据,包括:

当所述二进制数的第i位为非0时,所述移位寄存电路根据所述第i个时钟信号,对所述第三数据左移2i-1位;

当所述二进制数的第i位为0时,所述移位寄存电路不对所述第三数据进行移位。

具体的,该数据处理电路例如为上文中图3或图4所示。也就是说,图3或图4中的数据处理的电路能够实现图6所示的方法实施例对应的各个过程,具体的,该数据处理的电路可以参见上文中的描述,为避免重复,这里不再赘述。

因此,本申请实施例中,通过加法器串行获取输入数据和权值参数,并对所述输入数据和权值参数进行串行加法运算获得至少一个第一数据,接着通过第一非线性映射电路对所述至少一个第一数据进行第一非线性映射获得至少一个第二数据,然后通过累加电路对该至少一个第二数据进行累加,再通过第二非线性映射电路对所述累加电路输出的累加结果进行第二非线性映射,基于此本申请实施例通过将加法器的操作数的输入和计算过程串行化,能够实现将多精度的兼容处理转移到时钟节拍的计数上,因此可以实现多精度兼容的神经网络运算架构。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

应理解,本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:深度学习加速的方法和设备及深度神经网络

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!