一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经网络模型的训练方法、装置、设备及存储介质与流程

2022-10-26 04:50:21 来源:中国专利 TAG:


1.本技术实施例涉及人工智能技术领域,特别涉及一种神经网络模型的训练方法、装置、设备及存储介质。


背景技术:

2.随着人工智能技术的不断发展,越来越多的领域开始应用基于深度学习的网络模型。比如,将基于计算机视觉的网络模型应用于图像识别和图像处理,将基于自然语言处理的网络模型应用于语义识别和自动问答等等。
3.然而,随着网络模型精度的不断提高,网络模型的深度也不断增加,导致网络模型的数据量也不断增加。为了能够在损失少量精度的前提下对网络模型进行压缩,使复杂的网络模型能够智能手机等嵌入式终端中,并提高模型的运行速度,模型量化(model quantization)技术也应运而生。相关技术中,通常采用后量化方式对训练完成的网络模型的权重参数进行量化。


技术实现要素:

4.本技术实施例提供了一种神经网络模型的训练方法、装置、设备及存储介质。所述技术方案如下:
5.一方面,本技术实施例提供了一种神经网络模型的训练方法,所述方法包括:
6.为神经网络模型中的网络层生成对应的第一权重参数,其中,神经网络模型中不同网络层对应不同权重参数;
7.基于量化比特数对所述第一权重参数进行量化损失模拟,得到第二权重参数;
8.将训练样本输入采用所述第二权重参数的所述神经网络模型,得到样本推理结果;以及,
9.基于所述样本推理结果确定所述神经网络模型的推理损失,并基于所述推理损失调整所述第一权重参数。
10.另一方面,本技术实施例提供了一种神经网络模型的训练装置,所述装置包括:
11.权重生成模块,用于为神经网络模型中的网络层生成对应的第一权重参数,其中,神经网络模型中不同网络层对应不同权重参数;
12.损失模拟模块,用于基于量化比特数对所述第一权重参数进行量化损失模拟,得到第二权重参数;
13.推理模块,用于将训练样本输入采用所述第二权重参数的所述神经网络模型,得到样本推理结果;以及,
14.调整模块,用于基于所述样本推理结果确定所述神经网络模型的推理损失,并基于所述推理损失调整所述第一权重参数。
15.另一方面,本技术实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述处理器包括中央处理器(central processing unit,cpu)和神经网络处理器
(neural-network processing unit,npu);
16.所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现以下步骤:
17.为神经网络模型中的网络层生成对应的第一权重参数,其中,神经网络模型中不同网络层对应不同权重参数;
18.基于量化比特数对所述第一权重参数进行量化损失模拟,得到第二权重参数;
19.将训练样本输入采用所述第二权重参数的所述神经网络模型,得到样本推理结果;以及,
20.基于所述样本推理结果确定所述神经网络模型的推理损失,并基于所述推理损失调整所述第一权重参数。
21.另一方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如上述方面所述的神经网络模型的训练方法。
22.另一方面,本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面提供的神经网络模型的训练方法。
23.本技术实施例中,为神经网络模型中的网络层生成权重参数后,对权重参数进行量化损失模拟,并将经过量化损失模拟的权重参数应用于神经网络模型,从而通过该神经网络模型对训练样本进行推理,得到样本推理结果,进而基于该样本推理结果确定推理损失,实现对神经网络模型中权重参数的调整,完成神经网络模型的训练;由于将权重参数应用于神经网络模型前,模拟出量化比特数的量化损失,因此能够降低后续对训练得到神经网络模型进行量化时的量化损失,有助于提高量化后神经网络模型的精度。
附图说明
24.图1是相关技术与本技术实施例中神经网络模型训练过程的对比图;
25.图2示出了本技术一个示例性实施例提供的神经网络模型的训练方法的流程图;
26.图3是本技术一个示例性实施例提供的权重生成器的示意图;
27.图4示出了本技术另一个示例性实施例提供的神经网络模型的训练方法的流程图;
28.图5是本技术另一个示例性实施例提供的权重生成器的示意图;
29.图6示出了本技术另一个示例性实施例提供的神经网络模型的训练方法的流程图;
30.图7是本技术另一个示例性实施例提供的权重生成器的示意图;
31.图8示出了本技术一个实施例提供的神经网络模型的训练装置的结构框图;
32.图9示出了本技术一个示例性实施例提供的计算机设备的结构方框图。
具体实施方式
33.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方
式作进一步地详细描述。
34.为了方便理解,下面对本技术实施例中涉及的名词进行说明。
35.量化处理:一种将浮点(float)存储运算转换为整型(int)存储运算的模型压缩技术(即将浮点数转换为定点数)。由于通常情况下浮点运算的能耗高于整型运算的能耗,且整型运算的速度高于浮点运算的速度,因此对神经网络模型进行量化处理后,能够降低神经网络模型的内存占用,提高神经网络模型的推理(运行)速度,并降低神经网络模型推理过程中的功耗。
36.在一种可能的实施方式中,对神经网络模型进行量化处理时通常采用线性量化。对浮点型数据进行线性量化的数学表达式为:r=round(s
×
(q-z)),其中,r为量化后的整型数据,q为浮点型数据,z(zero point)为浮点型数据的偏移量,s(scale)为浮点型数据的缩放因子。
37.反量化处理:量化处理的逆过程,用于将整型存储运算转换为浮点存储运算。通常情况下,利用量化后的神经网络模型进行推理过程,需要对推理结果进行反量化处理,即将整型推理结果转换为浮点型推理结果。
38.相关技术中,开发人员完成对神经网络模型的模型训练后,对神经网络模型进行量化处理,将模型中的权重参数由浮点型转化为整型,比如将32位的浮点型数据转化为8位的整型数据,从而将量化后的神经网络模型部署在终端中。后续利用量化后的神经网络模型进行推理时,只需要在输入时对浮点型的输入数据进行量化处理,在输出时对整型的输出数据进行反量化处理,其余运算均可以使用整型运算完成,既降低了神经网络模型占用的内存,又提高了神经网络模型的推理速度。
39.示意性的,当神经网络模型中权重参数的数据范围为(float
min
,float
max
)时,量化过程中采用的缩放因子可以表示为:
[0040][0041]
其中,**为乘方,bit
num
为量化比特数(比如8bit)。
[0042]
相应的,量化后的权重参数可以表示为:
[0043]
quant
data
=floor(scale*float
data
)
[0044]
其中,quant
data
为量化后的整型数据,float
data
为量化前的浮点数据,floor表示向下取整。
[0045]
然而,采用这种后量化方式对神经网络模型进行量化时,神经网络模型的精度损失较大,无法应用于对精度要求较高的模型。
[0046]
为了提高量化后神经网络模型的精度,以神经网络模型由多个串联的“卷积层 归一化层 激活层”构成为例,如图1所示,不同于相关技术中,在训练过程中直接将权重参数应用于卷积层,并在模型训练过程中基于训练样本对应的样本推理结果对各个卷积层的权重参数进行调整,采用本技术实施例提供的方案,通过为各个卷积层配置权重生成器,利用该权重生成器生成为卷积层生成所需的权重参数,并基于后续量化处理采用的量化比特数对权重参数进行量化损失模拟,从而将经过量化损失模拟的权重参数应用于卷积层,后续得到样本推理结果后,即通过调整权重生成器实现对权重参数的调整,实现对神经网络模型的训练。
[0047]
模型训练过程中,由于在生成权重参数时模拟出量化过程产生的量化损失,因此后续基于量化比特数对训练得到的神经网络模型进行量化时,能够降低量化所带来的量化损失,提高量化后神经网络模型的精度;同时,利用权重生成器替换原先网络层的权重参数,使得开发者无需为网络层实现量化层(只需要将权重生成器接入神经网络模型即可),简化了模型训练的前期准备流程,提高了模型训练的效率。下面采用示意性的实施例进行说明。
[0048]
请参考图2,其示出了本技术一个示例性实施例提供的神经网络模型的训练方法的流程图,本实施例以该方法应用于计算机设备为例进行说明,该方法可以包括如下步骤。
[0049]
步骤201,为神经网络模型中的网络层生成对应的第一权重参数,其中,神经网络模型中不同网络层对应不同权重参数。
[0050]
其中,该神经网络模型应用于计算机视觉(computer vision,cv)、语音技术(speech technology)、自然语言处理(nature language processing,nlp)等技术领域,且该神经网络模型可以为卷积神经网络(convolutional neural networks,cnn)模型或稠密网络(densenet)模型等等,本技术实施例并不对神经网络模型的具体用途以及类型进行限定。
[0051]
在一种可能的实施方式中,开发人员预先将权重生成器接入神经网络模型中的网络层,利用权重生成器为网络层生成所需的第一权重参数(比如浮点型权重参数)。如图1所示,开发人员为卷积神经网络模型中的各个卷积层设置对应的权重生成器。
[0052]
其中,该网络层为前向推理过程中需要使用权重参数的网络层。可选的,当该网络层为卷积神经网络模型中的卷积层时,权重生成器用于生成卷积层中卷积核的参数,当该网络层稠密网络模型中的稠密层时,该权重生成器用于生成稠密层中稠密块(dense block)的参数,本技术实施例并不对网络层以及第一权重参数的具体类型进行限定。
[0053]
步骤202,基于量化比特数对第一权重参数进行量化损失模拟,得到第二权重参数。
[0054]
为了降低后续模型量化过程中的量化损失,本技术实施例中,将生成的权重参数应用于神经网络模型的网络层之前,还需要基于后续量化目标(即量化比特数)对权重参数进行模拟量化损失,其中,该量化损失模拟即用于模拟量化以及反量化过程造成的参数损失。
[0055]
在一种可能的实施方式中,权重生成器除了用于生成第一权重参数外,还用于根据量化比特数,对第一权重参数进行量化损失模拟,得到第二权重参数。该第二权重参数即神经网络模型实际应用的权重参数。
[0056]
可选的,该量化比特数可以由开发人员预先设置,并作为参数输入权重生成器,且不同权重生成模型对应量化比特数可以相同,也可以不同。
[0057]
在一些实施例中,量化比特数可以是常见的1bit,2bit、4bit、8bit等等,也可以是上述比特外其他常见的比特,本实施例对具体的量化比特数不作限定。在一个示意性的例子中,当量化比特数为8bit时,表示需要将浮点型权重参数量化为(-127,127)这一范围内的整型权重参数。
[0058]
步骤203,将训练样本输入采用第二权重参数的神经网络模型,得到神经网络模型输出的样本推理结果。
[0059]
为神经网络模型中各个网络层设置权重参数后,计算机设备利用训练样本对神经网络模型进行一轮训练。每一轮训练过程中,计算机设备将训练样本输入神经网络模型,由神经网络模型对训练样本进行前向推理,从而得到样本推理结果。
[0060]
针对实现不同任务的神经网络模型,该样本推理结果可能不同。比如,当神经网络模型用于实现图像分类任务时,该样本推理结果为图像分类结果;当神经网络模型用于实现语义识别任务时,该样本推理结果为语义识别结果,本技术实施例并不对样本推理结果的具体内容进行限定。
[0061]
在一种可能的实施方式中,计算机设备将样本训练集中的训练样本划分为若干批(batch),每一轮训练时,即将一批训练样本输入神经网络模型,从而得到该批次训练样本对应的样本推理结果。
[0062]
步骤204,基于样本推理结果确定神经网络模型的推理损失,并基于推理损失调整第一权重参数。
[0063]
在一种可能的实施方式中,计算机设备以训练样本对应的标注为监督,将样本标注与样本推理结果之间的差异确定为神经网络模型的推理损失。
[0064]
不同于相关技术中,基于神经网络模型的推理损失,采用反向传播或梯度下降等算法直接对网络层的权重参数进行调整,本技术实施例中,计算机设备基于推理损失,对未经过量化损失模拟的第一权重参数。
[0065]
可选的,计算机设备通过调整权重生成器,实现对第一权重参数的调整,相应的,调整后的第一权重参数仍旧需要进行量化损失模拟后,才能被实际应用于神经网络模型的网络层。
[0066]
可选的,完成权重参数调整后,计算机设备利用训练样本对神经网络模型进行下一轮迭代训练,即循环执行上述步骤,直至满足训练完成条件时停止训练,并将满足训练完成条件时网络层采用的权重参数确定为神经网络模型的目标权重参数。其中,训练完成条件包括推理损失收敛或达到迭代次数,本实施例对此不作限定。
[0067]
综上所述,本技术实施例中,为神经网络模型中的网络层生成权重参数后,对权重参数进行量化损失模拟,并将经过量化损失模拟的权重参数应用于神经网络模型,从而通过该神经网络模型对训练样本进行推理,得到样本推理结果,进而基于该样本推理结果确定推理损失,实现对神经网络模型中权重参数的调整,完成神经网络模型的训练;由于将权重参数应用于神经网络模型前,模拟出量化比特数的量化损失,因此能够降低后续对训练得到神经网络模型进行量化时的量化损失,有助于提高量化后神经网络模型的精度。
[0068]
在一种可能的实施方式中,当满足训练完成条件时,计算机设备基于量化比特数,对神经网络模型中各个网络层的权重参数进行量化处理,得到量化神经网络模型,降低模型的数据量。后续进行模型部署时,即将量化神经网络模型部署在终端或服务器等设备中。
[0069]
利用部署的量化神经网络模型进行推理时,首先基于量化比特数对输入数据进行量化处理,然后将量化处理后的定点数据输入量化神经网络模型,由各个网络层对定点数据进行处理,得到输出数据。由于输出数据为定点数据,因此输出层需要对输出数据进行反量化处理,最终输出浮点型的输出数据。
[0070]
在一个示意性的例子中,当训练得到的卷积神经网络模型的权重参数为32bit浮点数据,经过8bit量化处理后,量化卷积神经网络模型的权重参数为8bit整型数据。利用量
化卷积神经网络模型对数据进行推理时,首先将32bit浮点型输入数据转化为8bit整型输入数据,然后将8bit整型输入数据输入量化卷积神经网络模型,由卷积层对8bit数据进行卷积处理,得到8bit整型输出数据。进一步的,输出层将8bit整型输出数据反量化为32bit浮点型输出数据后输出。
[0071]
关于利用生成权重参数的具体方式,在一种可能的实施方式中,如图3所示,权重生成器31由权重参数生成器311以及模拟量化器312构成,其中,权重参数生成器311用于为网络层生成第一权重参数,模拟量化器312用于基于量化比特数,对权重参数生成器311生成的第一权重参数进行模拟量化损失,从而将经过量化损失模拟的第二权重参数提供给对应的网络层32。下面采用示例性的实施例对权重参数的具体生成过程进行说明。
[0072]
请参考图4,其示出了本技术另一个示例性实施例提供的神经网络模型的训练方法的流程图,本实施例以该方法应用于计算机设备为例进行说明,该方法可以包括如下步骤。
[0073]
步骤401,通过权重参数生成器,为网络层生成第一权重参数。
[0074]
在一种可能的实施方式中,权重参数生成器由n层稠密层(由稠密块构成)以及n层激活层构成,n为大于等于2的整数,其中,n层稠密层用于为网络层生成权重参数。相应的,计算机设备首先通过权重参数生成器生成第一权重参数,该第一权重参数为浮点型数据。可选的,生成第一权重参数的过程可以包括如下子步骤。
[0075]
1、通过第m稠密层对输入数据进行全连接处理,并将处理结果输入第m激活层,m为小于n的正整数,其中,第一层稠密层的输入数据为预设浮点型常量。
[0076]
可选的,权重参数生成器由n个子单元构成,每个子单元由一层稠密层和一层激活层构成。对于第m个子单元,计算机设备获取第m-1个子单元输出的激活结果,通过第m个子单元中的第m稠密层对输入数据进行全连接(full connected,fc)处理,并将全连接结果输入第m个子单元的第m激活层进行激活处理。
[0077]
可选的,激活层可以采用relu函数、sigmoid函数、tanh函数或其他激活函数对全连接结果进行激活处理,本实施例对此不作限定。
[0078]
其中,第一个子单元中第一稠密层的输入数据为预设浮点型常量,比如,该预设浮点型常量为1.0,本实施例对预设浮点型常量的具体数值不作限定。
[0079]
2、将第m激活层的激活结果输入第m 1稠密层。
[0080]
进一步的,第m激活层将激活结果输入第m 1个子单元,由第m 1个子单元中的第m 1层稠密层和第m 1层激活层进行全连接和激活处理。
[0081]
示意性的,如图5所示,权重参数生成器51中包含n个子单元(虚线框中内容),获取到输入的预设浮点型常量后,通过稠密层511进行全连接处理,然后通过激活层512对全连接结果进行激活处理,从将激活结果输入下一个子单元。
[0082]
3、将第n层激活层输出的激活结果确定为第二权重参数。
[0083]
当第n层激活层完成激活处理后(对第n层稠密层输出的全连接结果进行激活),计算机设备将第n层激活层输出的激活结果确定为第一权重参数。
[0084]
示意性的,如图5所示,计算机设备获取第n个子单元输出的浮点型第一权重参数。
[0085]
其中,第一权重参数的数据量由网络层决定。在一个示意性的例子中,当网络层为卷积层,且卷积层的卷积核大小为kh×kw
,输入特征图的通道数为inc,输出特征图的通道数
为outc时,第一权重参数的数据量为:
[0086]
number=kh×kw
×
inc×
outc[0087]
步骤402,基于量化比特数,通过模拟量化器对第一权重参数进行量化损失模拟,得到第二权重参数。
[0088]
由于浮点型数据转换为整型数据,整型数据转换为浮点型数据过程中会产生损失,因此本实施例中,计算机设备在模型训练过程中,利用模拟量化器模拟浮点型数据转换为整型数据,以及整型数据转换为浮点型数据的过程,从而将量化损失融入模型训练,以此降低后续进行模型量化造成的量化损失。可选的,利用模拟量化器对第一权重参数进行模拟量化损失时可以包括如下子步骤。
[0089]
1、基于量化比特数以及第一权重参数的参数范围,对第一权重参数进行量化处理,得到量化权重参数,量化权重参数为定点数,且量化权重参数占用的比特数为量化比特数。
[0090]
在一种可能的实施方式中,计算机设备确定第一权重参数的参数范围,从而基于该参数范围以及开发人员设置的量化比特数,对第一权重参数进行线性量化处理,得到第一权重参数对应的量化权重参数(定点数)。其中,该参数范围可以根据最小第一权重参数以及最大第一权重参数的绝对值确定。
[0091]
在一个示意性的例子中,当第一权重参数为32bit浮点型数据时,且量化比特数为8bit时,第一权重参数即被量化为(-127,127)这一范围内的整型数据。
[0092]
2、基于量化比特数,对量化权重参数进行反量化处理,得到第二权重参数。
[0093]
进一步的,计算机设备基于量化比特数,对量化权重参数进行反量化处理,模拟出整型数据转化为浮点型数据的过程,得到第二权重参数。由于量化以及反量化过程中存在量化误差,因此模拟量化器输出的第二权重参数不同于输入的第一权重参数,从而达到模拟量化损失的效果。
[0094]
示意性的,计算机设备对第一权重参数进行量化损失模拟的过程可以采用如下公式表示;
[0095][0096]
其中,data1为未经过量化损失模拟的权重参数,data2为经过量化损失模拟的权重参数,bitnum为量化比特数,a为未经过量化损失模拟的权重参数的参数范围。
[0097]
示意性的,如图5所示,模拟量化器52首先对第一权重参数进行量化处理,得到整型的量化权重参数,然后对量化权重参数进行反量化处理,重新得到浮点型的第二权重参数。
[0098]
在一种可能的实施方式中,在进行模拟量化损失前,计算机设备检测量化比特数是否小于预设比特数,若小于,则进行模拟量化损失。若等于,则无需进行模拟量化损失(即模拟量化器失效),可选的,计算机设备直接将第一权重参数确定为第二权重参数。其中,预设比特数为浮点数占用的比特数。
[0099]
比如,当设置的量化比特数小于32bit时,计算机设备通过模拟量化器模拟量化损失,当设置的量化比特数等于32bit时,计算机设备则无需通过模拟量化器模拟量化损失。
[0100]
步骤403,将训练样本输入采用第二权重参数的神经网络模型,得到神经网络模型
输出的样本推理结果。
[0101]
本步骤的实施方式可以参考步骤202,本实施例在此不再赘述。
[0102]
步骤404,基于样本推理结果确定神经网络模型的推理损失,并基于推理损失调整权重参数生成器。
[0103]
在一种可能的实施方式中,当权重生成器中的权重参数生成器由稠密层和激活层构成时,计算机设备基于推理损失,对各个权重生成器中稠密层的参数进行调整,从而达到调整网络层权重的效果。
[0104]
本实施例中,计算机设备通过多个稠密层和激活层产生网络层所需的权重参数,并基于量化比特数对产生的权重参数进行量化和反量化处理,模拟出权重参数在浮点型和整型之间转换时产生的损失,将量化损失作为模型训练的一部分,有助于降低后量化造成的量化损失,提高量化后模型的精度。
[0105]
由于权重参数的分布较为分散(不满足对称分布),而进行量化处理时需要基于对称的定点范围,因此权重参数的量化损失较大。为了进一步降低量化损失,提高模型精度,在一种可能的实施方式中,权重生成器中还包含归一化(normalization)层。通过该归一化层对权重参数进行归一化处理,使权重参数满足对称分布,从而降低量化过程中的损失。
[0106]
请参考图6,其示出了本技术另一个示例性实施例提供的神经网络模型的训练方法的流程图,本实施例以该方法应用于计算机设备为例进行说明,该方法可以包括如下步骤。
[0107]
步骤601,通过权重参数生成器,为网络层生成第一权重参数。
[0108]
本步骤的实施方式可以参考步骤401,本实施例在此不再赘述。
[0109]
步骤602,对第一权重参数进行归一化处理,得到归一化权重参数,归一化权重参数的均值为0。
[0110]
在一种可能的实施方式中,计算机设备通过权重生成器的归一化层对第一权重参数进行标准化处理(一种特殊的归一化处理方式),改变第一权重参数的数据分布,使处理后得到的归一化权重参数的均值为0,即归一化权重参数的数据对称。
[0111]
可选的,归一化层可以采用层归一化(layer norm)、批归一化(batch norm)或组归一化(group norm)中的任一种方式进行归一化处理,本实施例对此不作限定。
[0112]
示意性的,在图5的基础上,如图7所示,计算机设备通过归一化层53对权重参数生成器51输出的浮点型第一权重参数进行归一化处理,得到均值为0的归一化权重参数(仍旧为浮点型)。
[0113]
步骤603,基于量化比特数,通过模拟量化器对归一化权重参数进行量化损失模拟,得到第二权重参数。
[0114]
进一步的,计算机设备通过模拟量化器对归一化权重参数进行量化损失模拟,得到第二权重参数。由于归一化权重参数符合对称分布,因此基于对称的定点范围对归一化权重参数进行量化处理时,权重参数的量化损失更小。
[0115]
示意性的,如图7所示,计算机设备通过模拟量化器52对归一化权重参数进行量化和反量化处理,最终输出第二权重参数。
[0116]
步骤604,将训练样本输入采用第二权重参数的神经网络模型,得到神经网络模型输出的样本推理结果。
[0117]
步骤605,基于样本推理结果确定神经网络模型的推理损失,并基于推理损失调整权重参数生成器。
[0118]
步骤604至605的实施方式可以参考步骤403至404,本实施例在此不再赘述。
[0119]
本实施例中,通过对生成的权重参数进行归一化处理,得到对称分布的归一化权重参数,进而通过对归一化权重参数进行模拟量化损失,降低因权重参数不对称导致的量化损失,进一步降低后续模型量化的量化损失;并且,通过归一化处理约束了权重参数的参数范围,有助于加快模型的训练速度。
[0120]
需要说明的是,上述权重生成器还可以引入掩膜(mask)参数,从而利用mask参数对产生的权重参数进行稀疏化或剪枝处理,进一步降低神经网络模型的数据量以及后续推理过程的计算量。
[0121]
请参考图8,其示出了本技术一个实施例提供的神经网络模型的训练装置的结构框图。该装置可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分。该装置包括:
[0122]
权重生成模块801,用于为神经网络模型中的网络层生成对应的第一权重参数,其中,神经网络模型中不同网络层对应不同权重参数;
[0123]
损失模拟模块802,用于基于量化比特数对所述第一权重参数进行量化损失模拟,得到第二权重参数;
[0124]
推理模块803,用于将训练样本输入采用所述第二权重参数的所述神经网络模型,得到样本推理结果;以及,
[0125]
调整模块804,用于基于所述样本推理结果确定所述神经网络模型的推理损失,并基于所述推理损失调整所述第一权重参数。
[0126]
可选的,所述损失模拟模块802,用于:
[0127]
基于所述量化比特数以及所述第一权重参数的参数范围,对所述第一权重参数进行量化处理,得到量化权重参数,所述量化权重参数为定点数,且所述量化权重参数占用的比特数为所述量化比特数;以及,
[0128]
基于所述量化比特数,对所述量化权重参数进行反量化处理,得到所述第二权重参数。
[0129]
可选的,所述权重生成模块801,用于:
[0130]
通过第m稠密层对输入数据进行全连接处理,并将处理结果输入第m激活层,其中,第一层稠密层的输入数据为预设浮点数常量;
[0131]
将所述第m激活层的激活结果输入第m 1稠密层;以及,
[0132]
将第n层激活层输出的激活结果确定为所述第一权重参数,m为小于n的正整数,n为大于等于2的整数。
[0133]
可选的,所述调整模块804,用于:
[0134]
基于所述推理损失,对各层所述稠密层的参数进行调整。
[0135]
可选的,所述装置还包括:
[0136]
归一化模块,用于对所述第一权重参数进行归一化处理,得到归一化权重参数,所述归一化权重参数的均值为0;
[0137]
所述损失模拟模块802,用于:
[0138]
基于所述量化比特数,对所述归一化权重参数进行量化损失模拟,得到所述第二权重参数。
[0139]
可选的,所述损失模拟模块802,还用于:
[0140]
响应于所述量化比特数小于预设比特数,基于所述量化比特数对所述第一权重参数进行量化损失模拟,得到所述第二权重参数,所述预设比特数为浮点数占用的比特数。
[0141]
可选的,所述装置还包括:
[0142]
量化模块,用于响应于满足训练完成条件,基于所述量化比特数对所述神经网络模型中各个所述网络层的权重参数进行量化处理,得到量化神经网络模型。
[0143]
综上所述,本技术实施例中,为神经网络模型中的网络层生成权重参数后,对权重参数进行量化损失模拟,并将经过量化损失模拟的权重参数应用于神经网络模型,从而通过该神经网络模型对训练样本进行推理,得到样本推理结果,进而基于该样本推理结果确定推理损失,实现对神经网络模型中权重参数的调整,完成神经网络模型的训练;由于将权重参数应用于神经网络模型前,模拟出量化比特数的量化损失,因此能够降低后续对训练得到神经网络模型进行量化时的量化损失,有助于提高量化后神经网络模型的精度。
[0144]
请参考图9,其示出了本技术一个示例性实施例提供的计算机设备的结构方框图。本技术中的计算机设备可以包括一个或多个如下部件:处理器910和存储器920。
[0145]
处理器910可以包括一个或者多个处理核心。处理器910利用各种接口和线路连接整个设备内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行计算机设备的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器910可集成cpu、图像处理器(graphics processing unit,gpu)、npu和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责触摸显示屏所需要显示的内容的渲染和绘制;npu用于实现人工智能(artificial intelligence,ai)功能;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块芯片进行实现。
[0146]
存储器920可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory,rom)。可选地,该存储器920包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器920可用于存储指令、程序、代码、代码集或指令集。存储器920可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令、用于实现下述各个方法实施例的指令等;存储数据区可存储根据计算机设备的使用所创建的数据等。
[0147]
除此之外,本领域技术人员可以理解,上述附图所示出的计算机设备的结构并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,本实施例在此不再赘述。
[0148]
本技术实施例还提供了一种计算机可读存储介质,该存储介质存储有至少一条指令,至少一条指令用于被处理器执行以实现如上述实施例所述的神经网络模型的训练方法。
[0149]
本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例提供的神经网络模型的训练方法。
[0150]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本技术实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0151]
以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献