神经网络模型的量化方法、设备及计算机存储介质与流程

文档序号:22615181发布日期:2020-10-23 19:14阅读:148来源:国知局
神经网络模型的量化方法、设备及计算机存储介质与流程

本申请涉及神经网络技术领域,特别是涉及一种神经网络模型的量化方法、设备及计算机存储介质。



背景技术:

目前,常见的神经网络量化方法是采用同一种算法对所有的卷积层和全连接层的输入激活值进行量化,但由于输入激活值的灵活可变性,采用一种算法会导致神经网络中某一层的误差变大,又因为网络结构的前馈性和复杂性,进一步导致神经网络在推理过程中误差越来越大,最终使神经网络模型的量化精度较差。



技术实现要素:

本申请提供了一种神经网络模型的量化方法、设备及计算机存储介质,主要解决的技术问题是如何提高神经网络模型量化精度的问题。

为解决上述技术问题,本申请提供了一种神经网络模型的量化方法,所述方法包括:

对所述神经网络模型输入训练图片,进行第一数据类型的计算,获得所述神经网络模型中每一计算层的第一输入数据;

根据至少两种算法获得所述每一计算层的至少两个初始量化因子;

基于所述至少两个初始量化因子获得所述每一计算层量化后的至少两个第二输入数据;

比较所述每一计算层中第一输入数据和每个第二输入数据的相关性;

将相关性最大的第二输入数据对应的初始量化因子作为所述计算层的最终量化因子;

将所述最终量化因子输入所述神经网络模型。

根据本申请提供的一实施方式,所述方法还包括:

将所述计算层之后的数据归一层合并至所述计算层以进行计算。

根据本申请提供的一实施方式,所述计算层包括卷积层和全连接层;所述方法还包括:

将所述卷积层、全连接层的前一层的输出数据类型设置为第二数据类型。

根据本申请提供的一实施方式,所述方法还包括:

将所述非计算层的前一层的输出数据类型设置为第二数据类型。

根据本申请提供的一实施方式,所述量化因子包括权重量化因子和输入量化因子;所述将所述最终量化因子输入所述神经网络模型,包括:

将所述计算层的输入量化因子传输至前一层,使得所述前一层的输出数据为第二数据类型。

根据本申请提供的一实施方式,所述第一数据类型为浮点类型,所述第二数据类型为定点类型。

根据本申请提供的一实施方式,所述将所述最终量化因子输入所述神经网络模型,还包括:

根据所述权重量化因子计算得到量化权重值,将所述量化权重值输入所述神经网络模型。

根据本申请提供的一实施方式,所述将所述最终量化因子输入所述神经网络模型,包括:

根据所述量化因子将所述计算层的偏置值转换为所述计算层的输出数据类型。

为解决上述技术问题,本申请提供了一种终端设备,所述设备包括存储器以及与所述存储器耦接的处理器;

所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现如上述的神经网络模型的量化方法。

为解决上述技术问题,本申请还提供了一种计算机存储介质,所述计算机存储介质用于存储程序数据,所述程序数据在被处理器执行时,用以实现如上述的神经网络模型的量化方法。

本申请的有益效果是:对神经网络模型输入训练图片,进行第一数据类型的计算,获得神经网络模型中每一计算层的第一输入数据;根据至少两种算法获得每一计算层的至少两个初始量化因子;基于至少两个初始量化因子获得每一计算层量化后的至少两个第二输入数据;比较每一计算层中第一输入数据和每个第二输入数据的相关性;将相关性最大的第二输入数据对应的初始量化因子作为计算层的最终量化因子;将最终量化因子输入神经网络模型。本申请的神经网络模型的量化方法通过至少两种算法计算每一计算层的至少两个初始量化因子,将每一计算层的至少两个初始量化因子与每一计算层的第一输入数据进行相关性的比较,以将相关性最大的第二输入数据对应的初始量化因子作为最终量化因子,即精度最优的量化因子,将最终量化因子输入神经网络模型,提高了整个神经网络模型的量化精度。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:

图1是本申请提供的神经网络模型的量化方法一实施例的流程示意图;

图2是现有技术中卷积层和全连接层量化运算的流程示意图;

图3是本申请提供的终端设备一实施例的结构示意图;

图4是本申请提供的计算机存储介质一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

现有技术中,通常会采用一种算法对神经网络模型中所有的卷积层和全连接层的输入激活值进行量化,以此提高神经网络模型的精度。但采用同一种算法对所有的卷积层和全连接层的输入激活值进行量化时,由于输入激活值的灵活可变性,导致神经网络模型中某一层的误差变大,又由于神经网络模型的前馈性和复杂性,神经网络模型在推理过程中的误差会越来越大,最终使神经网络模型的量化精度较差。

为了解决上述技术问题,本申请提出了一种神经网络模型的量化方法,具体请参阅图1,图1是本申请提供的神经网络模型的量化方法一实施例的流程示意图。本实施例中神经网络模型的量化方法可以应用于神经网络模型量化的终端设备,也可应用于具有数据处理能力的服务器。本实施例的神经网络模型的量化方法具体包括以下步骤:

s101:对神经网络模型输入训练图片,进行第一数据类型的计算,获得神经网络模型中每一计算层的第一输入数据。

为了快速训练模型得到精度最优的神经网络模型,可在训练图像中随机选取若干张图像输入神经网络模型中,例如,100张,并按照第一数据类型计算,以获得神经网络模型中每一计算层的第一输入数据。其中,第一数据类型为浮点类型,浮点类型就是实数,浮点是计算机中用以近似表示任意某个实数。计算层可以为卷积层或者全连接层。第一输入数据为每个卷积层或者全连接层的输入数据绝对值的最大值和每个卷积层或者全连接层的权重数据绝对值的最大值。

s102:根据至少两种算法获得每一计算层的至少两个初始量化因子。

本实施例采用至少两种算法获得量化因子,具体可以为两种算法或者三种算法,对具体的算法数量不作限定。对于算法的种类,本领域的技术人员可以根据实际情况进行设置。例如,采用两种算法获取每一计算层的两个初始量化因子,两种算法可以分别为global-sacle算法和kl-divergence算法。

在实际应用中,采用global-sacle算法和kl-divergence算法获取每一计算层的两个初始量化因子时,利用global-sacle算法,获取到每一计算层的初始量化因子m;利用kl-divergence算法,获取到每一计算层的初始量化因子n。

其中,量化因子包括权重量化因子和输入量化因子。具体地,可采用global-sacle算法,获取到每一计算层的权重量化因子m1和输入量化因子m2;利用kl-divergence算法,获取到每一计算层的权重量化因子n1和输入量化因子n2。

s103:基于至少两个初始量化因子获得每一计算层量化后的至少两个第二输入数据。

基于s102中获取的每一计算层的至少两个初始量化因子,将初始量化因子输入卷积神经网络每一计算层中,以获得每一计算层量化后的至少两个第二输入数据。具体地,将每一算法下的输入量化因子和权重量化因子输入卷积神经网络的每一计算层中,获得每一算法中每一计算层量化后的第二输入数据。第二输入数据是将每一算法中权重量化因子和输入量化因子输入卷积神经网络计算后的每一层输入数据。例如,在实际应用中,将采用global-sacle算法获取的权重量化因子m1和输入量化因子m2输入到卷积神经网络中,获取到global-sacle算法下的第二输入数据;将采用kl-divergence算法获取的权重量化因子n1和输入量化因子n2输入到卷积神经网络中,获取到kl-divergence算法下的第二输入数据。

s104:比较每一计算层中第一输入数据和每个第二输入数据的相关性。

基于s101获取的每一计算层中的第一输入数据和s103中每一算法中的第二输入数据,比较第一输入数据和每个第二输入数据的相关性。相关性表示了第一输入数据和第二输入数据的关联程度,与第一输入数据关联程度越高的第二输入数据所量化后的神经网络模型更为精确。

例如,在实际应用中,将基于global-sacle算法获取的第二输入数据与第一输入数据进行相关性计算,获取到相关性为c;将基于kl-divergence算法获取的第二输入数据与第一输入数据进行相关性计算,获取到相关性为c’,比较相关性c和相关性c’大小。

s105:将相关性最大的第二输入数据对应的初始量化因子作为计算层的最终量化因子。

基于s104中比较出的相关性大小,将相关性最大的第二输入数据对应的初始量化因子作为计算层的最终量化因子。例如,相关性c大于相关性c’时,则相关性c的第二输入数据对应的初始量化因子m作为计算层的最终量化因子,即将相关性c的第二输入数据对应的权重量化因子m1和输入量化因子m2作为最终量化因子。

s106:将最终量化因子输入神经网络模型。

基于s105中获取的最终量化因子,将最终量化因子输入神经网络模型中,以获取到推理过程加速的神经网络模型。例如,将相关性c的第二输入数据对应的权重量化因子m1和输入量化因子m2输入神经网络模型中。

本实施例中,对神经网络模型输入训练图片,进行第一数据类型的计算,获得神经网络模型中每一计算层的第一输入数据;根据至少两种算法获得每一计算层的至少两个初始量化因子;基于至少两个初始量化因子获得每一计算层量化后的至少两个第二输入数据;比较每一计算层中第一输入数据和每个第二输入数据的相关性;将相关性最大的第二输入数据对应的初始量化因子作为计算层的最终量化因子;将最终量化因子输入神经网络模型。本申请通过至少两种算法计算每一计算层的至少两个初始量化因子,并比较至少两种算法获取的每一计算层的两个初始量化因子与每一计算层的第一输入数据的相关性,能够获取到精度最优的量化因子,从而提高了整个神经网络模型的量化精度。

进一步地,在训练神经网络模型时,为了有效解决神经网络梯度消失与梯度爆炸等问题,本申请通过将计算层之后的数据归一层合并至计算层以进行计算。其中,数据归一层可以为bn(batchnormalization)层或scale层等,bn(batchnormalization)一般放在卷积层之后,能够加速网络收敛,且能控制过拟合,但在神经网络推断时,bn(batchnormalization)层或scale层的运算将影响神经网络模型的性能,占用过多内存或显示空间。

在具体实施例中,为了解决bn(batchnormalization)层或scale层对计算带来的上述问题,在实际训练神经网络时,若存在conv+bn+scale或者conv+bn等网络片段,可将bn(batchnormalization)层和scale层的权重值采用同一权重合并到卷积层,以在训练神经网络过程中减少数据归一层的计算,同时减少数据归一层占用过多内存或显示空间。本实施例对数据归一层合并的方式不作具体限定。

为了使卷积神经网络模型的卷积层、全连接层或非计算层的输出数据类型为第二数据类型,从而减少一次数据类型的转化,本申请将卷积层、全连接层的前一层的输出数据类型设置为第二数据类型,将非计算层等前一层的输出数据类型设置为第二数据类型。其中,非计算层为神经网络模型中不涉及到计算的层,例如,permute层、concat层等。第二数据类型为定点类型。

具体地,为了使神经网络模型的卷积层或全连接层的前一层的输出数据也为第二数据类型,本实施例通过将神经网络模型中卷积层或全连接层的输入量化因子传输至卷积层或全连接层的前一层,以使得卷积层或全连接层的前一层输出数据为第二数据类型,即定点类型。

对于权重量化因子输入神经网络模型的方式,本实施例中根据权重量化因子计算得到量化权重值,最终将量化权重值输入神经网络模型中,以提高神经网络模型的量化精度。

可参阅图2,图2是现有技术中卷积层和全连接层量化运算的流程示意图。现有技术中,通过将中间数据进行反量化处理,使得反量化的数据类型与偏置值的数据类型相同,但这种方式增加了计算量,占用过多内存。本实施例为了方便运算时统一精度且利于数据转化,在卷积层或全连接层存在偏置值时,根据量化因子将计算层的偏置值转化为计算层的输出数据类型。具体地,通过将偏置值float32转化为输出数据类型的int32,可使中间数据int32直接与输出数据类型为int32的偏置值直接求和,避免了中间数据int32的反量化过程,减少数据运算,同时减少转化开销。

本实施例中,对神经网络模型输入训练图片,进行第一数据类型的计算,获得神经网络模型中每一计算层的第一输入数据;根据至少两种算法获得每一计算层的至少两个初始量化因子;基于至少两个初始量化因子获得每一计算层量化后的至少两个第二输入数据;比较每一计算层中第一输入数据和每个第二输入数据的相关性;将相关性最大的第二输入数据对应的初始量化因子作为计算层的最终量化因子;将最终量化因子输入神经网络模型。本申请采用至少两种算法计算量化因子,并比较至少两种算法获取的每一计算层的两个初始量化因子与每一计算层的第一输入数据的相关性,能够根据相关性获取到精度最优的量化因子,从而提高了整个神经网络模型的量化精度;进一步地,采用数据归一层合并至计算层进行计算,减少数据归一层的计算,同时减少数据归一层占用过多内存或显示空间;将卷积层、全连接层及非计算层的前一层的输出数据类型设置为第二数据类型,使每一层网络的输出数据类型根据输出层的特性设置,减少每一层间的数据搬移开销;计算层的偏置值转化为计算层的输出数据类型,避免了中间数据的反量化过程,减少数据运算,同时减少转化开销,提高了神经网络模型的推理速度。

为实现上述实施例的神经网络模型的量化方法,本申请提出了另一种终端设备,具体请参阅图3,图3是本申请提供的终端设备一实施例的结构示意图。

设备300包括存储器31和处理器32,其中,存储器31和处理器32耦接。

存储器31用于存储程序数据,处理器32用于执行程序数据以实现上述实施例的神经网络模型的量化方法。

在本实施例中,处理器32还可以称为cpu(centralprocessingunit,中央处理单元)。处理器32可能是一种集成电路芯片,具有信号的处理能力。处理器32还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器32也可以是任何常规的处理器等。

本申请还提供一种计算机存储介质400,如图4所示,计算机存储介质400用于存储程序数据41,程序数据41在被处理器执行时,用以实现如本申请方法实施例中所述的神经网络模型的量化方法。

本申请神经网络模型的量化方法实施例中所涉及到的方法,在实现时以软件功能单元的形式存在并作为独立的产品销售或使用时,可以存储在装置中,例如一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1