神经网络训练及数据处理方法和装置、介质及计算机设备与流程

文档序号:28618612发布日期:2022-01-22 13:10阅读:77来源:国知局
神经网络训练及数据处理方法和装置、介质及计算机设备与流程

1.本发明涉及人工智能技术领域,尤其涉及一种神经网络训练及数据处理方法和装置、介质及计算机设备。


背景技术:

2.近年来,神经网络在计算机视觉等人工智能领域得到了广泛的应用。随着对神经网络的性能要求越来越高,神经网络的结构设计偏向于更深、更宽,实际应用中带来准确度提升的同时,也带来了对计算资源的需求,例如对内存和带宽的需求,并且对计算速度也提出了挑战。
3.实际应用中部署神经网络的场景也变得越来越丰富,一些场景下对各种设备的要求也相应地提升,尤其是移动端的设备。目前一种高效的方式是将神经网络部署到人工智能芯片上,但受制于芯片的面积、散热等条件,需要对神经网络进行压缩。
4.一种高效的压缩方式是对神经网络进行量化处理,一般的量化方式是将神经网络的每个网络层的输入参数和权重参数映射到更低比特表示的空间。但映射到低比特空间的输入参数和权重参数经过计算后得到的输出参数有可能超出映射的低比特空间的表示范围,因此需要将输出参数保存到更高比特的空间。高比特空间需要高比特的累加器进行计算,从而增加了带宽的消耗,提高了硬件设计的难度。


技术实现要素:

5.第一方面,本公开实施例提供一种神经网络训练方法,所述方法包括:将样本数据输入原始神经网络,获取所述原始神经网络中各网络层的样本输出参数;基于各网络层的样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差异建立损失函数;基于所述损失函数对所述原始神经网络进行训练,得到目标神经网络。
6.可选地,所述基于各网络层的样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差异建立损失函数,包括:对各网络层的样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差值的绝对值进行求和,得到所述损失函数。
7.可选地,所述原始神经网络中不同的网络层对应不同的预设量化位宽;所述基于各网络层的样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差异建立损失函数,包括:针对所述原始神经网络中的每个网络层,对所述网络层的各样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差值的绝对值进行求和,得到所述网络层的总差值;对所述原始神经网络的各个网络层的总差值进行求和,得到所述损失函数。
8.可选地,所述原始神经网络的相邻两个网络层之间设置有一截断层,每个截断层包括一个激活函数,用于对所述相邻两个网络层中的上一网络层的样本输出参数进行截断,并将截断后的样本输出参数输入所述相邻两个网络层中的下一网络层。
9.可选地,所述原始神经网络中一个网络层的样本输出参数基于所述网络层的量化
样本输入参数与所述网络层的量化权重参数得到;所述网络层的量化样本输入参数基于所述网络层的预设量化位宽对所述网络层的样本输入参数进行量化得到;所述网络层的量化权重参数基于所述网络层的预设量化位宽对所述网络层的权重参数进行量化得到;所述原始神经网络各网络层的样本输出参数被截断到所述网络层的预设量化位宽对应的参数边界值之后,作为下一网络层的样本输入参数。
10.可选地,所述方法还包括:将待处理数据输入所述目标神经网络进行前向传播,获取所述目标神经网络的输出层的目标输出参数;在所述待处理数据前向传播过程中所述目标神经网络中每个网络层的输入参数经过所述网络层的输入尺度因子进行映射,且所述目标神经网络中每个网络层的权重参数经过所述网络层的权重尺度因子进行量化处理;基于所述目标神经网络的输出层的输出尺度因子对所述目标神经网络的输出层的目标输出参数进行反映射;其中,所述目标神经网络的输出层的输出尺度因子通过以所述目标神经网络的输入层的输入尺度因子作为所述目标神经网络的输入层的输入参数,在所述目标神经网络中进行前向传播得到。
11.可选地,在所述目标神经网络的目标网络层的输入参数的数量等于1的情况下,所述方法还包括:基于所述目标网络层的输入尺度因子以及所述目标网络层的权重尺度因子确定所述目标网络层的输出尺度因子;其中,所述目标网络层的输入尺度因子等于所述目标网络层的上一网络层的输出尺度因子。
12.可选地,所述方法还包括:在所述目标神经网络的目标网络层的输入参数的数量等于1的情况下,所述目标网络层与所述目标网络层的下一网络层之间设置有尺度因子层,包括所述网络层的输出尺度因子。
13.可选地,在所述目标神经网络的目标网络层的输入参数的数量大于1的情况下,将所述目标网络层的上一网络层的输出尺度因子作为所述目标网络层的输出尺度因子。
14.可选地,在所述目标神经网络的目标网络层的输入参数的数量大于1的情况下,每个输入参数对应一个输入尺度因子,所述方法还包括:对所述目标网络层的每个输入尺度因子进行归一化处理,得到所述目标网络层的每个输入尺度因子对应的归一化输入尺度因子;通过所述每个归一化尺度因子对对应的每个输入参数进行映射。
15.可选地,所述对所述目标网络层的每个输入尺度因子进行归一化处理,得到所述目标网络层的每个输入尺度因子对应的归一化输入尺度因子,包括:获取所述目标网络层的各个输入尺度因子的最小值;将所述目标网络层的每个输入尺度因子与所述最小值的比值确定为所述目标网络层的每个输入尺度因子对应的归一化输入尺度因子。
16.可选地,所述方法还包括:针对所述目标神经网络中的任一目标网络层,将所述目标网络层的输入参数与所述网络层的权重参数分别输入所述网络层对应的乘法器中,得到所述目标网络层的输入参数与所述目标网络层的权重参数的乘积;将所述乘积与所述目标网络层的偏置参数分别输入所述目标网络层对应的加法器中,得到所述乘积与所述目标网络层的偏置参数之和;所述目标网络层对应的乘法器与所述目标网络层对应的加法器的位宽均等于所述目标网络层的预设量化位宽。
17.第二方面,本公开实施例提供数据处理方法,所述方法包括:将待处理数据输入目标神经网络进行前向传播,获取所述目标神经网络的输出层的目标输出参数;在所述待处理数据前向传播过程中所述目标神经网络中每个网络层的输入参数经过所述网络层的输
入尺度因子进行映射,且所述目标神经网络中每个网络层的权重参数经过所述网络层的权重尺度因子进行量化处理;基于所述目标神经网络的输出层的输出尺度因子对所述目标神经网络的输出层的目标输出参数进行反映射;其中,所述目标神经网络的输出层的输出尺度因子通过以所述目标神经网络的输入层的输入尺度因子作为所述目标神经网络的输入层的输入参数,在所述目标神经网络中进行前向传播得到;所述目标神经网络基于原始神经网络各网络层的输出参数与对应网络层的预设量化位宽对应的参数边界值之间的差异训练得到。
18.第三方面,本公开实施例提供一种神经网络训练装置,所述装置包括:获取模块,用于将样本数据输入原始神经网络,获取所述原始神经网络中各网络层的样本输出参数;损失函数建立模块,用于基于各网络层的样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差异建立损失函数;训练模块,用于基于所述损失函数对所述原始神经网络进行训练,得到目标神经网络。
19.可选地,所述损失函数建立模块用于:对各网络层的样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差值的绝对值进行求和,得到所述损失函数。
20.可选地,所述原始神经网络中不同的网络层对应不同的预设量化位宽;所述损失函数建立模块用于:针对所述原始神经网络中的每个网络层,对所述网络层的各样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差值的绝对值进行求和,得到所述网络层的总差值;对所述原始神经网络的各个网络层的总差值进行求和,得到所述损失函数。
21.可选地,所述原始神经网络的相邻两个网络层之间设置有一截断层,每个截断层包括一个激活函数,用于对所述相邻两个网络层中的上一网络层的样本输出参数进行截断,并将截断后的样本输出参数输入所述相邻两个网络层中的下一网络层。
22.可选地,所述原始神经网络中一个网络层的样本输出参数基于所述网络层的量化样本输入参数与所述网络层的量化权重参数得到;所述网络层的量化样本输入参数基于所述网络层的预设量化位宽对所述网络层的样本输入参数进行量化得到;所述网络层的量化权重参数基于所述网络层的预设量化位宽对所述网络层的权重参数进行量化得到;所述原始神经网络各网络层的样本输出参数被截断到所述网络层的预设量化位宽对应的参数边界值之后,作为下一网络层的样本输入参数。
23.可选地,所述装置还包括:第一输入模块,用于将待处理数据输入所述目标神经网络进行前向传播,获取所述目标神经网络的输出层的目标输出参数;在所述待处理数据前向传播过程中所述目标神经网络中每个网络层的输入参数经过所述网络层的输入尺度因子进行映射,且所述目标神经网络中每个网络层的权重参数经过所述网络层的权重尺度因子进行量化处理;反映射模块,用于基于所述目标神经网络的输出层的输出尺度因子对所述目标神经网络的输出层的目标输出参数进行反映射;其中,所述目标神经网络的输出层的输出尺度因子通过以所述目标神经网络的输入层的输入尺度因子作为所述目标神经网络的输入层的输入参数,在所述目标神经网络中进行前向传播得到。
24.可选地,在所述目标神经网络的目标网络层的输入参数的数量等于1的情况下,所述装置还包括:输出尺度因子确定模块,用于基于所述目标网络层的输入尺度因子以及所述目标网络层的权重尺度因子确定所述目标网络层的输出尺度因子;其中,所述目标网络
层的输入尺度因子等于所述目标网络层的上一网络层的输出尺度因子。
25.可选地,在所述目标神经网络的目标网络层的输入参数的数量等于1的情况下,所述目标网络层与所述目标网络层的下一网络层之间设置有尺度因子层,包括所述网络层的输出尺度因子。
26.可选地,在所述目标神经网络的目标网络层的输入参数的数量大于1的情况下,将所述目标网络层的上一网络层的输出尺度因子作为所述目标网络层的输出尺度因子。
27.可选地,在所述目标神经网络的目标网络层的输入参数的数量大于1的情况下,每个输入参数对应一个输入尺度因子,所述装置还包括:归一化模块,用于对所述目标网络层的每个输入尺度因子进行归一化处理,得到所述目标网络层的每个输入尺度因子对应的归一化输入尺度因子;映射模块,用于通过所述每个归一化尺度因子对对应的每个输入参数进行映射。
28.可选地,所述归一化模块用于:获取所述目标网络层的各个输入尺度因子的最小值;将所述目标网络层的每个输入尺度因子与所述最小值的比值确定为所述目标网络层的每个输入尺度因子对应的归一化输入尺度因子。
29.可选地,所述装置还包括:第二输入模块,用于针对所述目标神经网络中的任一目标网络层,将所述目标网络层的输入参数与所述网络层的权重参数分别输入所述网络层对应的乘法器中,得到所述目标网络层的输入参数与所述目标网络层的权重参数的乘积;第三输入模块,用于将所述乘积与所述目标网络层的偏置参数分别输入所述目标网络层对应的加法器中,得到所述乘积与所述目标网络层的偏置参数之和;所述目标网络层对应的乘法器与所述目标网络层对应的加法器的位宽均等于所述目标网络层的预设量化位宽。
30.第四方面,本公开实施例提供一种数据处理装置,所述装置包括:输入模块,用于将待处理数据输入目标神经网络进行前向传播,获取所述目标神经网络的输出层的目标输出参数;在所述待处理数据前向传播过程中所述目标神经网络中每个网络层的输入参数经过所述网络层的输入尺度因子进行映射,且所述目标神经网络中每个网络层的权重参数经过所述网络层的权重尺度因子进行量化处理;反映射模块,用于基于所述目标神经网络的输出层的输出尺度因子对所述目标神经网络的输出层的目标输出参数进行反映射;其中,所述目标神经网络的输出层的输出尺度因子通过以所述目标神经网络的输入层的输入尺度因子作为所述目标神经网络的输入层的输入参数,在所述目标神经网络中进行前向传播得到;所述目标神经网络基于原始神经网络各网络层的输出参数与对应网络层的预设量化位宽对应的参数边界值之间的差异训练得到。
31.第五方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
32.第六方面,本公开实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一实施例所述的方法。
33.本公开实施例基于原始神经网络每个网络层的量化输入参数与量化权重参数确定对应网络层的输出参数,由于输出参数可能超出预设量化位宽对应的参数边界值,因此,基于各网络层的输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差异建立损失函数来对原始神经网络进行训练,从而能够使得原始神经网络在训练过程中降低对
范围外的参数的依赖。这样,既能够保证每个网络层的输出参数不超过该网络层的预设量化位宽对应的参数边界值,从而无需采用高比特的累加器,又能够保证神经网络获得较高的性能。
34.本公开基于原始神经网络各网络层的输出参数与对应网络层的预设量化位宽对应的参数边界值之间的差异训练得到目标神经网络,使得目标神经网络各网络层的输出参数尽量不超过该网络层的预设量化位宽对应的参数边界值,从而在进行待处理数据的前向传播过程中,无需对各网络层的输出参数进行反映射,只需对目标神经网络的输出层的输出参数进行反映射,减少了反映射次数,从而提高了数据处理效率。
附图说明
35.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
36.图1是本公开实施例的神经网络训练方法的流程图。
37.图2a是本公开实施例的网络结构的示意图。
38.图2b是本公开实施例的截断前后的参数的示意图。
39.图3a是相关技术中的量化过程中的映射和反映射过程的示意图。
40.图3b是本公开实施例的映射过程的示意图。
41.图4是本公开实施例的数据处理方法的流程图。
42.图5是本公开实施例的神经网络训练装置的框图。
43.图6是本公开实施例的数据处理装置的框图。
44.图7是本公开实施例的计算机设备的示意图。
具体实施方式
45.为了使本技术领域的人员更好地理解本公开中的技术方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本公开保护的范围。
46.神经网络(例如,卷积神经网络)可以提取到鲁棒和丰富的高维特征,能大幅提高认知能力,在计算机视觉等人工智能领域得到了广泛的应用。为了减少神经网络的资源消耗,往往需要对神经网络进行量化处理,所述量化处理包括以下至少一者:对神经网络的输入参数进行量化处理,得到量化输入参数;对神经网络的权重参数进行量化处理,得到量化权重参数;对神经网络的输出参数进行量化处理,得到量化输出参数。
47.一般的量化方式是将神经网络的每个网络层的输入参数和权重参数映射到更低比特表示的空间,然而,映射到低比特空间的输入参数和权重参数经过计算后得到的输出参数有可能超出映射的低比特空间的表示范围。以8比特量化为例,可以将输入参数和权重参数映射到0到255的取值范围内,然而,输出参数的取值可能大于255。这样,就导致需要采用更多的比特位来表示量化输出参数,从而增加了带宽的消耗,提高了硬件设计的难度。
48.为解决上述问题,本公开提出一种神经网络训练方法。参见图1,该方法包括以下步骤:
49.步骤101:将样本数据输入原始神经网络,获取所述原始神经网络中各网络层的样本输出参数。
50.步骤102:基于各网络层的样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差异建立损失函数。
51.步骤103:基于所述损失函数对所述原始神经网络进行训练,得到目标神经网络。
52.本公开实施例的神经网络训练方法可用于神经网络训练阶段,采用样本数据与上述损失函数对未经训练的神经网络进行训练,也可以用于神经网络的预训练阶段之后,采用样本数据与上述损失函数对经过预训练的神经网络进行微调。因此,在上述步骤101中,原始神经网络可以是经过预训练的神经网络,也可以是未经训练的神经网络。其中,神经网络的预训练与微调过程可以采用不同的样本数据。
53.在一些实施例中,所述样本数据为样本图像,所述原始神经网络可以对样本图像进行特征提取,原始神经网络中各网络层的样本输出参数为输出特征图。在图像应用场景下,本公开实施例可以将样本图像输入原始神经网络,获取所述原始神经网络中各网络层的输出特征图。基于各网络层的输出特征图的像素值与所述网络层的预设量化位宽对应的像素值边界值之间的差异建立损失函数。基于所述损失函数对所述原始神经网络进行训练,得到目标神经网络。
54.所述原始神经网络可以是卷积神经网络,也可以是其他类型的神经网络,此处不做限制。神经网络中可包括多个网络层,所述多个网络层可包括输入层、中间层以及输出层。其中,输入层为神经网络的第一个网络层,输出层为神经网络的最后一个网络层,中间层为输入层与中间层之间的网络层。应当说明的是,在本公开中,训练阶段原始神经网络的各网络层的输入参数和输出参数分别为样本输入参数和样本输出参数,其中,原始神经网络的输入层的样本输入参数为所述样本数据。在训练结束得到目标神经网络之后,目标神经网络的各网络层的输入参数和输出参数分别为目标输入参数和目标输出参数,其中,目标神经网络的输入层的目标输入参数为待处理数据(例如,待处理图像)。为了方便描述,有时也将样本输入参数和目标输入参数统称为输入参数,将样本输出参数和目标输出参数统称为输出参数。
55.原始神经网络中各网络层的输出参数基于所述网络层的量化输入参数与所述网络层的量化权重参数得到。其中,所述网络层的量化输入参数基于所述网络层的预设量化位宽对所述网络层的输入参数进行量化得到,所述网络层的量化权重参数基于所述网络层的预设量化位宽对所述网络层的权重参数进行量化得到。不同网络层的预设量化位宽可以相同,也可以不同。
56.以各网络层的预设量化位宽均为8比特的情况为例,假设一个网络层的输入参数为252.02,权重参数为2.03,则可以分别对输入参数与权重参数取整,得到的量化输入参数和量化权重参数分别为252以及2。当然,量化的方式不限于取整,还可以分别为整数部分与小数部分分配不同的量化位宽,此处对此不做限制。然后,可以将量化输入参数与量化权重参数的乘积与预设偏置量(假设为5)之和确定为输出参数,从而得到的输出参数为509。在相关技术中,由于509这一取值已经超出了8比特量化位宽所能表示的范围(0~255),因此,
需要采用大于8比特的量化位宽对输出参数进行表示。
57.而在本公开实施例中,可以先将各网络层的输出参数被截断到所述网络层的预设量化位宽对应的参数边界值。其中,预设量化位宽对应的参数边界值包括上边界和下边界。可以将超出所述上边界的输出参数截断为所述上边界,将超出所述下边界的输出参数截断为所述下边界。在上面的例子中,509这一取值超出了8比特量化位宽对应的上边界,因此,将509截断为上边界255。同时,将255作为下一网络层的输入参数。
58.然而,直接进行上述截断处理可能导致神经网络的性能明显下降,因此,为了解决神经网络性能下降的问题,在步骤102中,可以基于网络层的截断前的输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差异建立损失函数。该损失函数可以作为惩罚项加入其他损失函数中,最终用于训练神经网络的损失函数为其他损失函数与惩罚项之和。或者,也可以先采用其他损失函数进行预训练,得到原始神经网络,然后,采用该损失函数对原始神经网络进行再次训练。
59.所述其他损失函数可以基于神经网络所实现的功能来确定。例如,在神经网络的功能是分类的情况下,所述其他损失函数可以用于表征神经网络的分类损失。可选地,表征分类损失的损失函数可采用交叉熵损失函数。在神经网络的功能是目标检测的情况下,所述其他损失函数可包括表征神经网络的分类损失的损失函数以及表征神经网络的输出位置与目标对象的真实位置之间的偏差的损失函数(例如,交并比损失函数等)。通过在训练过程中加入惩罚项,可将输出参数的取值作为神经网络训练的一个考量因素,使得训练后得到的目标神经网络各网络层的输出参数尽量不超出该网络层的预设量化位宽对应的参数边界值。
60.在一些实施例中,可以对各网络层的输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差值的绝对值进行求和,得到所述损失函数。进一步地,原始神经网络中不同的网络层可以对应不同的预设量化位宽,因此,针对所述原始神经网络中的每个网络层,可以对所述网络层的各输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差值的绝对值进行求和,得到所述网络层的总差值,再对所述原始神经网络的各个网络层的总差值进行求和,得到所述损失函数。
61.假设原始神经网络中的第i网络层的预设量化位宽qi对应的参数边界值为si,且第i网络层共ni个输出参数,则所述损失函数l可记为:
[0062][0063]
其中,n为原始神经网络中网络层的总数,v
ij
表示第i网络层中的第j个输出参数,i和n均为正整数。
[0064]
如图2a所示,可以在所述原始神经网络的相邻两个网络层之间设置一截断层,用于对所述相邻两个网络层中的上一网络层的输出参数进行截断,并将截断后的输出参数输入所述相邻两个网络层中的下一网络层。图中n1、n2、n3、n
n-1
、nn表示原始神经网络中网络层的编号,该神经网络中共包括n个网络层,r1、r2、r3、r
n-1
分别表示网络层n1、n2、n3、n
n-1
之后的截断层的编号。每个截断层可以包括一个激活函数,在一些实施例中,所述激活函数可表示为以下形式:
[0065][0066]
其中,s

和s

分别表示预设量化位宽对应的参数上边界和参数下边界。不同的截断层所采用的激活函数可以不同,各截断层的激活函数根据该截断层所连接的前一个网络层的预设量化位宽来确定。例如,编号为r1的截断层的激活函数基于编号为n1的网络层的预设量化位宽确定,编号为r2的截断层的激活函数基于编号为n2的网络层的预设量化位宽确定。
[0067]
如图2b所示,是预设量化位宽为8的情况下截断前后的输出参数的对比图。可以看出,大于255的输出参数均被截断成了255,不大于255的输出参数则仍然为该输出参数本身。同理,小于0的输出参数均可被截断为0,不小于0的输出参数仍然为该输出参数本身。在训练阶段结束,得到目标神经网络之后,可以去掉截断层。
[0068]
本公开实施例基于原始神经网络每个网络层的量化输入参数与量化权重参数确定对应网络层的输出参数,由于输出参数可能超出预设量化位宽对应的参数边界值,因此,先对输出参数进行截断再作为下一网络层的输入。此外,基于各网络层的输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差异建立损失函数来对原始神经网络进行训练,从而能够使得原始神经网络在训练过程中降低对范围外的参数的依赖。这样,既能够保证每个网络层的输出参数不超过该网络层的预设量化位宽对应的参数边界值,从而无需采用高比特的累加器,又能够保证神经网络获得较高的性能。
[0069]
在得到目标神经网络之后,可以通过目标神经网络处理待处理数据。在相关技术中,需要通过输入尺度因子对目标神经网络每一层的输入参数进行映射,通过权重尺度因子对目标神经网络每一层的权重参数进行映射,并通过输出尺度因子对目标神经网络每一层的输出参数进行反映射。各种尺度因子的作用是将对应的参数映射到预设量化位宽对应的参数边界值以内,以便可以采用所述预设量化位宽对各参数进行量化处理。在一些实施例中,可以将一个网络层的预设量化位宽对应的上边界与该网络层中取值最大的输入参数的比值确定为该网络层的输入尺度因子。确定权重尺度因子和输出尺度因子的方式与确定输入尺度因子的方式类似。
[0070]
输入尺度因子、权重尺度因子以及输出尺度因子之间满足一定的关系。以卷积层为例,如图3a所示,x1、w1和y1分别表示编号为n1的网络层的输入参数、权重参数以及输出参数,表示x1对应的输入尺度因子,表示w1对应的权重尺度因子,表示y1对应的输出尺度因子。首先采用输入尺度因子对输入参数x1进行映射(即,将乘以x1),并采用权重尺度因子对权重参数w1进行映射(即,将乘以w1)。量化的卷积过程可记为:
[0071][0072]
其中,x泛指任一网络层的输入参数,w为x所在网络层的权重参数,y为x所在网络层的输出参数,s
x
表示输入参数x对应的输入尺度因子,sw表示权重参数w对应的权重尺度因子,sy表示输出参数y对应的输出尺度因子。
[0073]
根据上述公式可知,编号为n1的网络层的输出结果为输出参数与输出尺度因子的
乘积,即因此,需要将输出结果除以该网络层的输出尺度因子从而得到该网络层的输出参数。该过程称为反映射。然后,再将该网络层的输出参数作为下一网络层(编号为n2的网络层)的输入参数,并重复上述过程,直到目标神经网络的每一网络层处理完毕。
[0074]
可以看出,上述过程需要不断地对每个网络层进行映射和反映射处理,过程非常繁琐。为了解决上述问题,本公开实施例中,将待处理数据输入所述目标神经网络进行前向传播,获取所述目标神经网络的输出层的目标输出参数;在所述待处理数据前向传播过程中所述目标神经网络中每个网络层的输入参数经过所述网络层的输入尺度因子进行映射,且所述目标神经网络中每个网络层的权重参数经过所述网络层的权重尺度因子进行量化处理;基于所述目标神经网络的输出层的输出尺度因子对所述目标神经网络的输出层的目标输出参数进行反映射;其中,所述目标神经网络的输出层的输出尺度因子通过以所述目标神经网络的输入层的输入尺度因子作为所述目标神经网络的输入层的输入参数,在所述目标神经网络中进行前向传播得到。
[0075]
在一些实施例中,在所述目标神经网络的目标网络层的输入参数的数量等于1的情况下,可以基于所述目标网络层的输入尺度因子以及所述目标网络层的权重尺度因子确定所述目标网络层的输出尺度因子;其中,所述目标网络层的输入尺度因子等于所述目标网络层的上一网络层的输出尺度因子。
[0076]
根据上一公式可以推导出一个网络层的输入参数与输出参数之间满足以下关系:
[0077][0078]
因此,该网络层的输出尺度因子即为:
[0079][0080]
将网络第一层输入的尺度因子作为网络输入,进行前向传播(即把原本量化的前向过程中尺度因子提取出来),直到得到目标神经网络的输出层的输出。网络最后一层的输出作为新的输出因子so,该新的输出因子等同于原本量化过程中最终输出层的尺度因子。
[0081]
如图3b所示,通过上述处理,在目标神经网络中除最后一个网络层以外的每个网络层中,都不需要对输入参数进行映射处理,也不需要对输出参数进行反映射处理,而是直接将输入参数进行前向传播,得到的输出参数直接作为下一网络层的输入,直到得到最后一个网络层的输出。将最后一个网络层的输出除以so,即可得到最终的输出结果。
[0082]
应当说明的是,待处理数据在前向传播过程中,目标神经网络的每个网络层的输入参数与权重参数仍然需要通过对应的尺度因子进行映射后,再经过量化处理。但是,通过本公开实施例的方式进行处理后,无需对每个网络层的输出参数进行反映射,而是只要对目标神经网络的输出层的输出参数进行反映射即可,这样,就减少了反映射的处理次数,从而提高了处理效率。应当说明的是,正是因为本公开实施例中采用上述训练方法对神经网络进行了训练,使得神经网络能够使每个网络层的输出参数尽量保持在不超过预设量化位宽对应的参数边界,因此,并不需要对每层的输出参数都进行反映射,而是只需要对目标神经网络的输出层进行一次反映射即可。
[0083]
在一些实施例中,在目标神经网络的目标网络层的输入参数的数量等于1的情况下,可以在所述目标网络层与所述目标网络层的下一网络层之间设置尺度因子层(scale层)。连接在每个网络层输出端的尺度因子层可包括所述网络层的输出尺度因子,每个scale层的输出尺度因子均可参与尺度因子的前向传播。
[0084]
在另一些实施例中,在所述目标神经网络的目标网络层的输入参数的数量大于1的情况下,可以将所述目标网络层的上一网络层的输出尺度因子作为所述目标网络层的输出尺度因子。
[0085]
例如,假设第i网络层的输入参数的数量大于1,则进行尺度因子前向传播的时候,第i网络层不参与尺度因子的前向传播,而是直接将第i-1网络层的输出尺度因子输入到第i+1网络层,从而将第i-1网络层的输出尺度因子作为第i+1层的输入尺度因子。
[0086]
进一步地,在所述目标神经网络的目标网络层的输入参数的数量大于1的情况下,由于仍然需要对该目标网络层的输入参数进行前向传播。因此,还可以对所述目标网络层的每个输入尺度因子进行归一化处理,得到所述目标网络层的每个输入尺度因子对应的归一化输入尺度因子。
[0087]
在一些实施例中,可以获取所述目标网络层的各个输入尺度因子的最小值;将所述目标网络层的每个输入尺度因子与所述最小值的比值确定为所述目标网络层的每个输入参数对应的归一化输入参数。
[0088]
例如,假设第i网络层的多个输入尺度因子分别为s1,s2,
……
,sk,则可以确定s1,s2,
……
,sk的最小值,记为s
min
,并将s1,s2,
……
,sk分别归一化为s1/s
min
,s2/s
min

……
,sk/s
min

[0089]
在其他实施例中,也可以采用其他方式进行归一化处理。例如,可以获取所述目标网络层的各个输入尺度因子的最大值;将所述目标网络层的每个输入尺度因子与所述最大值的比值确定为所述目标网络层的每个输入尺度因子对应的归一化输入尺度因子。
[0090]
在一些实施例中,针对所述目标神经网络中的任一目标网络层,可以将所述目标网络层的输入参数与所述网络层的权重参数分别输入所述网络层对应的乘法器中,得到所述目标网络层的输入参数与所述目标网络层的权重参数的乘积;将所述乘积与所述目标网络层的偏置参数分别输入所述目标网络层对应的加法器中,得到所述乘积与所述目标网络层的偏置参数之和;所述目标网络层对应的乘法器与所述目标网络层对应的加法器的位宽均等于所述目标网络层的预设量化位宽。
[0091]
在相关技术中,由于一个网络层的输出参数常常需要通过比输入参数更多的位宽来表示,因此,该网络层对应的乘法器和加法器的位宽常常大于该网络层的预设量化位宽。而本公开实施例由于已经通过训练将神经网络的输出参数限制在预设量化位宽对应的参数边界值之内,因此,可以采用位宽与该网络层的预设量化位宽相等的乘法器和加法器来处理该网络层的输入参数与权重参数。例如,一个网络层的输入参数与权重参数采用的预设量化位宽是8,则该网络层对应的乘法器的位宽以及加法器的位宽也等于8,从而提高了运算效率,并减少了硬件带宽消耗。
[0092]
下面通过一个具体的实施例来对本公开实施例的总体流程进行说明:
[0093]
以8比特量化和卷积层为例,在量化时需要将输入参数和权重参数限制在0~255的范围内。首先使用样本数据对神经网络进行训练,具体的过程为,在神经网络每一个网络
层输出位置添加一个激活函数,所述激活函数会将0~255以外的参数截断,得到0~255范围内的数字。同时,训练时在损失函数中添加惩罚项,所述惩罚项为每层输出中超出边界值0或255的幅度,使得神经网络在训练过程中失去对0~255范围之外的参数的依赖。
[0094]
基于以上操作,在量化时可以直接将所述神经网络的输出参数保存为8比特,减少所述神经网络输出参数溢出的影响,并且在训练时将偏置项也量化到8比特,使其适应更小的位宽,从而部署时可以使用8比特的累加器。
[0095]
为了使基于上述方式训练得到的神经网络在量化过程中能够去掉对每个网络层进行反映射的过程,在量化前,进行所述尺度因子的前向传播,将所述神经网络第1网络层的输入尺度因子作为所述神经网络的输入,进行前向传播。最后得到所述神经网络最后一层的输出,将其作为目标输出因子。基于以上操作,量化时只需对各网络层进行映射,并对输出层进行反映射,即可得到原本神经网络量化的结果,减少了所述神经网络的反映射操作,节约了计算资源。
[0096]
在进行所述神经网络的量化时,将所述神经网络的输入参数和权重参数输入到8比特位宽的乘法器中,再将所述乘法器的输出和偏置项输入到8比特位宽的加法器中,整个神经网络的量化位宽一致,且累加器和/或乘法器位宽一致,计算效率高,也减少了带宽消耗。
[0097]
参见图4,本公开实施例还提供一种数据处理方法,所述方法可包括:
[0098]
步骤401:将待处理数据输入目标神经网络进行前向传播,获取所述目标神经网络的输出层的目标输出参数;在所述待处理数据前向传播过程中所述目标神经网络中每个网络层的输入参数经过所述网络层的输入尺度因子进行映射,且所述目标神经网络中每个网络层的权重参数经过所述网络层的权重尺度因子进行量化处理;
[0099]
步骤402:基于所述目标神经网络的输出层的输出尺度因子对所述目标神经网络的输出层的目标输出参数进行反映射;
[0100]
其中,所述目标神经网络的输出层的输出尺度因子通过以所述目标神经网络的输入层的输入尺度因子作为所述目标神经网络的输入层的输入参数,在所述目标神经网络中进行前向传播得到;
[0101]
所述目标神经网络基于原始神经网络各网络层的输出参数与对应网络层的预设量化位宽对应的参数边界值之间的差异训练得到。
[0102]
本实施例中,目标神经网络各网络层的输入参数、权重参数和输出参数都可采用该网络层的预设量化位宽进行量化处理。量化后的输出参数作为下一层的输入参数。其中,输入参数经输入尺度因子映射到预设量化位宽对应的参数边界值范围以内,再进行量化处理。同理,权重参数经权重尺度因子映射到预设量化位宽对应的参数边界值范围以内,再进行量化处理。相关技术中,每个网络层的输出参数都要经过反映射处理。
[0103]
在本公开中,由于目标神经网络基于原始神经网络各网络层的输出参数与对应网络层的预设量化位宽对应的参数边界值之间的差异训练得到,使得目标神经网络各网络层的输出参数尽量不超过该网络层的预设量化位宽对应的参数边界值。因此,在进行待处理数据的前向传播过程中,无需对各网络层的输出参数进行反映射,只需对目标神经网络的输出层的输出参数进行反映射,减少了反映射次数,从而提高了数据处理效率。
[0104]
本公开实施例的目标神经网络可以采用前述任一实施例中的神经网络的训练方
法训练得到,具体的细节可参见前述训练方法的实施例,此处不再赘述。
[0105]
对应于上面的方法实施例,本公开还提供一种神经网络训练装置,参见图5所示,所述装置包括:
[0106]
获取模块501,用于将样本数据输入原始神经网络,获取所述原始神经网络中各网络层的样本输出参数;
[0107]
损失函数建立模块502,用于基于各网络层的样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差异建立损失函数;
[0108]
训练模块503,用于基于所述损失函数对所述原始神经网络进行训练,得到目标神经网络。
[0109]
可选地,所述损失函数建立模块用于:对各网络层的样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差值的绝对值进行求和,得到所述损失函数。
[0110]
可选地,所述原始神经网络中不同的网络层对应不同的预设量化位宽;所述损失函数建立模块用于:针对所述原始神经网络中的每个网络层,对所述网络层的各样本输出参数与所述网络层的预设量化位宽对应的参数边界值之间的差值的绝对值进行求和,得到所述网络层的总差值;对所述原始神经网络的各个网络层的总差值进行求和,得到所述损失函数。
[0111]
可选地,所述原始神经网络的相邻两个网络层之间设置有一截断层,每个截断层包括一个激活函数,用于对所述相邻两个网络层中的上一网络层的样本输出参数进行截断,并将截断后的样本输出参数输入所述相邻两个网络层中的下一网络层。
[0112]
可选地,所述原始神经网络中一个网络层的样本输出参数基于所述网络层的量化样本输入参数与所述网络层的量化权重参数得到;所述网络层的量化样本输入参数基于所述网络层的预设量化位宽对所述网络层的样本输入参数进行量化得到;所述网络层的量化权重参数基于所述网络层的预设量化位宽对所述网络层的权重参数进行量化得到;所述原始神经网络各网络层的样本输出参数被截断到所述网络层的预设量化位宽对应的参数边界值之后,作为下一网络层的样本输入参数。
[0113]
可选地,所述装置还包括:第一输入模块,用于将待处理数据输入所述目标神经网络进行前向传播,获取所述目标神经网络的输出层的目标输出参数;在所述待处理数据前向传播过程中所述目标神经网络中每个网络层的输入参数经过所述网络层的输入尺度因子进行映射,且所述目标神经网络中每个网络层的权重参数经过所述网络层的权重尺度因子进行量化处理;反映射模块,用于基于所述目标神经网络的输出层的输出尺度因子对所述目标神经网络的输出层的目标输出参数进行反映射;其中,所述目标神经网络的输出层的输出尺度因子通过以所述目标神经网络的输入层的输入尺度因子作为所述目标神经网络的输入层的输入参数,在所述目标神经网络中进行前向传播得到。
[0114]
可选地,在所述目标神经网络的目标网络层的输入参数的数量等于1的情况下,所述装置还包括:输出尺度因子确定模块,用于基于所述目标网络层的输入尺度因子以及所述目标网络层的权重尺度因子确定所述目标网络层的输出尺度因子;其中,所述目标网络层的输入尺度因子等于所述目标网络层的上一网络层的输出尺度因子。
[0115]
可选地,在所述目标神经网络的目标网络层的输入参数的数量等于1的情况下,所述目标网络层与所述目标网络层的下一网络层之间设置有尺度因子层,包括所述网络层的
输出尺度因子。
[0116]
可选地,在所述目标神经网络的目标网络层的输入参数的数量大于1的情况下,将所述目标网络层的上一网络层的输出尺度因子作为所述目标网络层的输出尺度因子。
[0117]
可选地,在所述目标神经网络的目标网络层的输入参数的数量大于1的情况下,所述装置还包括:归一化模块,用于对所述目标网络层的每个输入尺度因子进行归一化处理,得到所述目标网络层的每个输入尺度因子对应的归一化输入尺度因子;映射模块,用于通过所述目标网络层的归一化尺度因子对所述目标网络层的每个输入参数进行映射。
[0118]
可选地,所述归一化模块用于:获取所述目标网络层的各个输入尺度因子的最小值;将所述目标网络层的每个输入尺度因子与所述最小值的比值确定为所述目标网络层的每个输入尺度因子对应的归一化输入尺度因子。
[0119]
可选地,所述装置还包括:第二输入模块,用于针对所述目标神经网络中的任一目标网络层,将所述目标网络层的输入参数与所述网络层的权重参数分别输入所述网络层对应的乘法器中,得到所述目标网络层的输入参数与所述目标网络层的权重参数的乘积;第三输入模块,用于将所述乘积与所述目标网络层的偏置参数分别输入所述目标网络层对应的加法器中,得到所述乘积与所述目标网络层的偏置参数之和;所述目标网络层对应的乘法器与所述目标网络层对应的加法器的位宽均等于所述目标网络层的预设量化位宽。
[0120]
参见图6,本公开实施例还提供一种数据处理装置,所述装置包括:
[0121]
输入模块601,用于将待处理数据输入目标神经网络进行前向传播,获取所述目标神经网络的输出层的目标输出参数;在所述待处理数据前向传播过程中所述目标神经网络中每个网络层的输入参数经过所述网络层的输入尺度因子进行映射,且所述目标神经网络中每个网络层的权重参数经过所述网络层的权重尺度因子进行量化处理;
[0122]
反映射模块602,用于基于所述目标神经网络的输出层的输出尺度因子对所述目标神经网络的输出层的目标输出参数进行反映射;其中,所述目标神经网络的输出层的输出尺度因子通过以所述目标神经网络的输入层的输入尺度因子作为所述目标神经网络的输入层的输入参数,在所述目标神经网络中进行前向传播得到;所述目标神经网络基于原始神经网络各网络层的输出参数与对应网络层的预设量化位宽对应的参数边界值之间的差异训练得到。
[0123]
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
[0124]
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述任一实施例所述的方法。
[0125]
图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器701、存储器702、输入/输出接口703、通信接口704和总线705。其中处理器701、存储器702、输入/输出接口703和通信接口704通过总线705实现彼此之间在设备内部的通信连接。
[0126]
处理器701可以采用通用的cpu(central processing unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或
多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。处理器701还可以包括显卡,所述显卡可以是nvidia titan x显卡或者1080ti显卡等。
[0127]
存储器702可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器702可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器702中,并由处理器701来调用执行。
[0128]
输入/输出接口703用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
[0129]
通信接口704用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
[0130]
总线705包括一通路,在设备的各个组件(例如处理器701、存储器702、输入/输出接口703和通信接口704)之间传输信息。
[0131]
需要说明的是,尽管上述设备仅示出了处理器701、存储器702、输入/输出接口703、通信接口704以及总线705,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0132]
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的方法。
[0133]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0134]
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
[0135]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的
任意几种设备的组合。
[0136]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0137]
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1