CN115936092A - 神经网络模型量化方法及装置、存储介质及电子设备 - Google Patents
神经网络模型量化方法及装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115936092A CN115936092A CN202211539211.3A CN202211539211A CN115936092A CN 115936092 A CN115936092 A CN 115936092A CN 202211539211 A CN202211539211 A CN 202211539211A CN 115936092 A CN115936092 A CN 115936092A
- Authority
- CN
- China
- Prior art keywords
- neural network
- network model
- quantization
- training
- quantization parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
本公开涉及模型量化技术领域,具体涉及一种神经网络模型量化方法及装置、计算机可读存储介质及电子设备,该方法包括:获取待量化神经网络模型和训练数据;利用训练数据对待量化神经网络模型进行预设数次的量化感知迭代训练;获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新初始量化参数;在每次迭代后根据初始量化参数更新待量化神经网络模型权重,以得到目标神经网络模型;其中,N为大于或等于2且小于或等于预设次数的正整数。本公开实施例的技术方案提升模型量化方法的精度,克服了量化过程中模型精度损失较大的问题,同时提升了量化效率。
Description
背景技术
随着深度学习的快速发展,深度学习模型的精度不断地得到提高。这些深度学习模型在应用时,也需要消耗巨大的硬件资源,不适用于移动终端等,为了解决在移动终端上应用高精度的深度学习模型,通常会采用对模型进行量化的方法来获得可以在移动终端上使用的模型。
但是,相关技术中的模型量化方法的量化精度较差,会造成模型的精度损失。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种神经网络模型量化方法、神经网络模型量化装置、计算机可读介质和电子设备,进而至少在一定程度上提升模型量化方法的精度,克服了量化过程中模型精度损失较大的问题,提升了量化效率。
根据本公开的第一方面,提供一种神经网络模型量化方法,包括:获取待量化神经网络模型和训练数据;利用所述训练数据对所述待量化神经网络模型进行预设数次的量化感知迭代训练;获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新所述初始量化参数;在每次迭代后根据所述初始量化参数更新所述待量化神经网络模型权重,以得到目标神经网络模型;其中,N为大于或等于1且小于或等于所述预设次数的正整数。
根据本公开的第二方面,提供一种神经网络模型量化装置,包括:获取模块,用于获取待量化神经网络模型和训练数据;训练模块,用于利用所述训练数据对所述待量化神经网络模型进行预设数次的量化感知迭代训练;参数更新模块,用于获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新所述初始量化参数,所述量化参数包括激活值;模型更新模块,用于在每次迭代后根据所述初始量化参数更新所述待量化神经网络模型权重,以得到目标神经网络模型;其中,N为大于或等于1且小于或等于所述预设次数的正整数。
根据本公开的第三方面,提供一种计算机可读介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的方法。
根据本公开的第四方面,提供一种电子设备,其特征在于,包括:一个或多个处理器;以及存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的方法。
本公开的一种实施例所提供的神经网络模型量化方法,获取待量化神经网络模型和训练数据;利用训练数据对待量化神经网络模型进行预设数次的量化感知迭代训练;获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新初始量化参数;在每次迭代后根据初始量化参数更新待量化神经网络模型权重,以得到目标神经网络模型;其中,N为大于或等于2且小于或等于预设次数的正整数。相较于现有技术,利用第一次至第N次迭代训练得到的量化参数更新初始量化参数,充分考虑了多次迭代过程中的量化参数的变化,提升了量化精度,同时,在更新初始量化参数时,并非是每一次迭代都更新,在保证精度的同时,降低了计算量,提升了量化效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了可以应用本公开实施例的一种示例性系统架构的示意图;
图2示意性示出本公开示例性实施例中一种神经网络模型量化方法的流程图;
图3示意性示出本公开示例性实施例中一种获取待量化神经网络模型的流程图;
图4示意性示出本公开示例性实施例中另一种获取待量化神经网络模型的流程图;
图5示意性示出本公开示例性实施例中一种确定量化范围的流程图;
图6示意性示出本公开示例性实施例中另一种确定量化范围的流程图;
图7示意性示出本公开示例性实施例中一种量化范围确定的数据结构图;
图8示意性示出本公开示例性实施例中另一种量化范围确定的数据结构图;
图9示意性示出本公开示例性实施例中更新初始量化参数的流程图;
图10示意性示出本公开示例性实施例中另一种新初始量化参数的流程图;
图11示意性示出本公开示例性实施例中再一种新初始量化参数的流程图;
图12示意性示出本公开示例性实施例中还一种新初始量化参数的流程图;
图13示意性示出本公开示例性实施例中神经网络模型量化装置的组成示意图;
图14示出了可以应用本公开实施例的一种电子设备的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
在相关技术中,随着机器学习、深度学习的不断发展,深度神经网络被广泛的运用在自动驾驶、计算机视觉、自然语言处理、语音识别和数据处理等各个方面。以自动驾驶领域中的物料检测为例,通常是采用训练好的神经网络模型对输入数据进行预测处理,以得到对应的物料检测结果。但是,通常训练好的神经网络模型中的数据通常为32位浮点数,为了使得训练好的神经网络模型可以部署到不同硬件设备(如移动端设备)上,通常对神经网络模型进行量化。
神经网络模型量化是一种流行的深度学习优化方法,例如,将模型数据从32位浮点数(FP32)转换成定点数(如INT8),使得量化后的模型尺寸缩小,所占用内存比较小,另外,计算使用定点乘法器而不是浮点乘法器,速度更快,并且访问内存所占用的传输带宽更低。基于以上优点,模型量化成为在嵌入式设备上进行网络模型加速的一个重要手段。因此,如何能够使得训练好的神经网络模型较好的适用于嵌入式设备上,成为亟待解决的问题。
相关技术在对模型进行量化过程中,在模型训练时量化权重和激活值,逐步迭代,调整量化参数(激活值和权重范围)。调整量化参数的过程主要包括如下方法:
采用设置预设值的方法,该方法在设置预设值时的难度减低,对于不同的网络、不同的任务应该有不同的预设值。
采用按最新的数据分布来计算,max为最新激活值的最大值,min为最小值的方式,该方法只考虑最新一次迭代的结果,未考虑之前的统计数据,导致量化精度较差。
采用聚类算法进行更新量化参数的方式计算量较大。
采用采用移动平均值方法更新过程覆盖整个量化训练过程,计算量较大,量化效率较低。
基于上述缺点,本公开提供一种神经网络模型量化方法,图1示出了可以实现上述神经网络模型量化方法的系统架构的示意图,该系统架构100可以包括终端110与服务器120。其中,终端110可以是智能手机、平板电脑、台式电脑、笔记本电脑等终端设备,服务器120泛指提供本示例性实施方式中神经网络模型量化方法相关服务的后台系统,可以是一台服务器或多台服务器形成的集群。终端110与服务器120之间可以通过有线或无线的通信链路形成连接,以进行数据交互。
在一种实施方式中,可以由终端110执行上述神经网络模型量化方法。例如,用户使用终端110加载待量化神经网络模型和训练数据,由终端110利用训练数据对该待量化神经网络模型进行量化感知训练得到目标神经网络模型。
在一种实施方式中,可以由服务器120可以执行上述神经网络模型量化方法。例如,用户使用终端110待量化神经网络模型和训练数据,终端110将待量化神经网络模型和训练数据上传至服务器120,由服务器120对待量化神经网络模型进行量化感知训练得到目标神经网络模型,向终端110返回目标神经网络模型。
由上可知,本示例性实施方式中的神经网络模型量化方法的执行主体可以是上述终端110或服务器120,本公开对此不做限定。
下面结合图2对本示例性实施方式中的神经网络模型量化方法进行说明,需要说明的是,本公开中的神经网络模型可以是目标领域下所使用的模型。其中,该目标领域可以是图像处理、自动驾驶、计算机视觉、自然语言处理、语音识别和数据处理等领域。也就是说,本申请提供的神经网络模型训练后量化提升精度的算法,可以适用于图像目标检测分割,激光雷达点云目标检测,语音识别,自然语言处理等领域。图2示出了该神经网络模型量化方法的示例性流程,可以包括:
步骤S210,获取待量化神经网络模型和训练数据;
步骤S220,利用所述训练数据对所述待量化神经网络模型进行预设数次的量化感知迭代训练;
步骤S230,获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新所述初始量化参数;
步骤S240,在每次迭代后根据所述初始量化参数更新所述待量化神经网络模型权重,以得到目标神经网络模型;其中,N为大于或等于1且小于或等于所述预设次数的正整数。
基于上述方法,利用第一次至第N次迭代训练得到的量化参数更新初始量化参数,充分考虑了多次迭代过程中的量化参数的变化,提升了量化精度,同时,在更新初始量化参数时,并非是每一次迭代都更新,在保证精度的同时,降低了计算量,增强了量化效率。
下面对图2中的每个步骤进行具体说明。
参考图2,在步骤S210中,获取待量化神经网络模型和训练数据。
在一示例性实施例中,参照图3所示,在获取待量化神经网络模型时,可以包括步骤S310至步骤S320。
在步骤S310中,获取浮点型预训练神经网络模型。
在一示例性实施例中,上述浮点型预训练神经网络模型的模型数据(如模型权重和激活层的数据)可以为32位浮点数,也可以是64为浮点数,还可以根据用户需求进行自定义,在本示例实施方式中不做具体限定。
在步骤S320中,确定预设量化精度,并根据所述预设量化精度对所述预训练神经网络模型进行量化得到待量化神经网络模型。
在本公开的一种示例实施方式中,在得到上述浮点型预训练神经网络模型之后,可以确定预设量化精度,其中,上述预设量化精度可以是8位,即8比特,也可以根据用户需求进行自义定,在本示例实施方式中不做具体限定。
在本示例实施方式中,参照图4所示,上述根据所述预设量化精度对所述预训练神经网络模型进行量化得到待量化神经网络模型可以包括步骤S410至步骤S420。
在步骤S410中,确定所述预训练神经网络模型中各层网络的量化范围。
在本示例实施方式中,参照图5所示,可以针对预训练神经网络模型中的任一层中的网络执行如下步骤S510至步骤S520。
在步骤S510中,获取各层网络中的权重值集合。
在本示例实施方式中,可以首先将上述预训练的神经网络模型中的每一层的网络做权重值提取操作,进而获取每一层中的各个节点之间的所有权重值,构成权重值集合。
在步骤S520中,根据权重值集合和预设比例系数确定各层网络的量化范围。
在本示例实时方式中,参照图6所示,在得到上述每一层的网络中的权重值集合之后,可以基于上述权重值集合和预设比例系数确定各层网络的量化范围,具体的,可以包括步骤S610至步骤S620。
在步骤S610中,根据所述预设比例系数在所述权重值集合中确定最大值和最小值。
在本示例实施方式中,可以首先设定一个预设比例系数,例如,99%,预设比例系数还可以是98%,97%等,也可以根据用户需求进行自定义,在本示例实施方式中不做具体限定。
在本示例实施方式中,在得到上述预设比例系数之后,可以基于上述也设比例系数在上述权重集合中确定最大值和最小值。
举例而言,在对上述预训练神经网络模型进行量化事可以包括对象量化和非对称量化,当上述量化过程为对称量化时,参照图7所示,最大值与最小值的绝对值相等,可以确定最大值max和最小值min,让预设比例系数的权重值落入最大值与最小值之间。
在上述量化为非对称量化时,参照图8所示,可以分别确定最大值和最小值,举例而言,若上述预设比例系数为99%,对上述权重值进行排序,确定一个最大值,以使得99%大于等于0的权重值小于上述小于等于上述最大值,并确定一个最小值,以使得,99%小于等于0的权重值小于上述大于等于上述最小值。
在步骤S620中,根据所述最大值和所述最小值确定所述量化范围。
在本示例实施方式中,在得到上述最大值和最小值之后,可以将最大值与最小值之间的范围最为量化范围,即在对上述预训练模型进行量化时,只对上述量化范围内的权重值进行量化。
需要说明的,上述确定量化范围的方式还可以是KLD(Kullback-Leiblerdivergense,KL散度)方法,百分比(percentile)方法,MSE(Mean squared error,均方误差),L2-norm(L2范数)等。其中,百分比量化方法可以是直接选择整个数据元素排序后的99.9%或99.99%等比例上述量化范围,还可以根据用户需求进行自定义,在本示例实施方式中不做具体限定。
在步骤S420中,根据所述预设量化精度和所述量化范围对所述预训练神经网络模型中的至少一层网络进行量化得到待量化神经网络模型。
在本示例实施方式中,在得到上述量化范围之后,可以基于上述预设量化精度确定中间量化位数,具体的,上述中间量化位数可以小于等于上述预设量化精度,举例而言,若上述预设量化精度为8位,即8比特,那上述中间量化位数可以是6位、7位、4位等,也可以根据用户需求进行自定义,在本示例实施方式中不做具体限定。
在本示例实施方式中,在确定上述中间量化位数之后,可以基于上述中间量化精度与上述量化范围对上述至少一层网络进行量化得到待量化神经网络模型。具体的量化过程为将原有的32位浮点数(FP32)转换成定点数,如INT6。
在步骤S220中,利用所述训练数据对所述待量化神经网络模型进行预设数次的量化感知迭代训练。
在本公开的一种示例实施方式中,在本示例实施方式中,可以首先获取训练数据,训练数据可以根据不同的应用领域确定,举例而言,若上述模型应用于图像处理技术领域,则上述训练数据可以包括多个原始图像以及对上述原始图像的标定数据。
在本示例实施方式中,在得到上述训练数据之后,可以对上述训练数据进行预处理,预处理操作可以包括图像大小缩放,特征提取等,也可以根据上述预训练模型的输入类型决定,在此不做具体限定。
在本示例实施方式中,上述预设次数可以是100,也可以根据用户需求进行自定义,在本示例实施方式中不做具体限定。
在得到训练数据之后,可以利用上述利用所述训练数据对所述待量化神经网络模型进行预设量化精度的量化感知训练,
在步骤S230中,获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新所述初始量化参数。
在本示例实施方式中,上述初始量化参数可以包括激活值的最大值和最小值,在进行第一次运算过后可以得到两个初始值,然后可以确定一个初始值量化系数,利用初始值量化系数来确定上述初始量化参数,即得到初始激活值的最大值和最下值,其中,上述初始值量化系数可以是0.0-1.0之间的数,例如0.7、0.65等,也可以根据用户需求进行自定义,在本示例实施方式中不做具体限定。
举例而言,利用上述两个初始值与上述量化系数的乘积作为上述初始激活值的最大值和最小值。
在本示例实施方式中,在得到上述初始量参数之后,可以利用第一次至第N次迭代训练得到的量化参数更新所述初始量化参数,所述量化参数包括激活值。具体的,参照图9所示,可以包括步骤S910至步骤S920。
在步骤S910中,设定第一更新比例和第二更新比例;
在本示例实施方式中,上述第一更新比例可以是80%,也可以是90%,还可以根据用户需求进行自定义,在本示例实施方式中不做具体限定。
上述第二更新比例可以是60%、50%等,也可以根据用户需求进行自定义,在本示例实施方式中不做具体限定。
在步骤S920中,根据所述每一次迭代的激活值、迭代次数、所述最大值更新比例和最小值更新比例更新所述激活值范围。
在本示例实施方式中,参照图10所示,上述步骤可以包括S1010至步骤S1040。
在步骤S1010中,确定所述第一次至第N次迭代训练得到的量化参数中大于所述初始量化参数的第一数量。
在本示例实施方式中,上述第一数量可以是第一次至第N次迭代训练得到的激活值中的最大值大于初始量化参数中激活值最大值的数量,也可以是第一次至第N次迭代训练得到的激活值中的最小值大于初始量化参数中激活值最小值的第一数量。
在步骤S1020中,确定所述第一次至第N次迭代训练得到的量化参数中小于所述初始量化参数的第二数量。
在本示例实施方式中,第二数量可以表示第一次至第N次迭代训练得到的激活值中的最答值小于初始量化参数中激活值最大值的数量;也可以是第一次至第N次迭代训练得到的激活值中的最小值大于初始量化参数中激活值最小值的数量。
在步骤S1030中,响应所述第一数量与所述迭代次数N的比值大于所述第一更新比例,利用所述第一次至第N次迭代训练得到的量化参数的平均值增大所述初始量化参数。
在本示例实施方式中,可以首先确定上述初始量化参数与平均值的更新权重,举例而言,初始量化参数的更新权重为0.999,平均值的更新权重为0.001,上述更新权重的值可以根据用户需求及自定义,在本示例实施方式中不做具体限定。
下面以初始量化参数的更新权重为0.999,平均值的更新权重为0.001为例对上述步骤进行说明。
在本示例实施方式中,当上述第一数量与迭代次数N的比值大于第一更新比例时,max1=0.999*max0+0.001*max平均,其中,max1为更新后量化参数的最大值,max0为初始量化参数的最大值,max平均为第一次至第N次迭代训练得到的量化参数中最大值的平均值。
当上述第一数量与迭代次数N的比值大于第一更新比例时,min1=0.999*min0+0.001*min平均,其中,min1为更新后量化参数的最小值,min0为初始量化参数的最小值,min平均为第一次至第N次迭代训练得到的量化参数的最小值的平均值。
在步骤S1040中,响应所述第二数量与所述迭代次数N的比值大于所述第二更新比例,利用所述第一次至第N次迭代训练得到的量化参数的平均值减小所述初始量化参数。
当上述第二数量与迭代次数N的比值大于第二更新比例时,max1=0.999*max0-0.001*max平均,其中,max1为更新后量化参数的最大值,max0为初始量化参数的最大值,max平均为第一次至第N次迭代训练得到的量化参数的最大值的平均值。
当上述第二数量与迭代次数N的比值大于第二更新比例时,min1=0.999*min0-0.001*min平均,其中,min1为更新后量化参数的最小值,min0为初始量化参数的最小值,min平均为第一次至第N次迭代训练得到的量化参数的最小值的平均值。
在本示例实施方式中,在对上述初始量化参数中的最大值或者最小值进行更新之后,将上述N的值复位。即将上述N的值赋予1。
需要说明的是,在对上述N的值进行复位时,保留复位前的数值,用于计算迭代总次数,当迭代总次数达到上述预设次数之后得到目标神经网络模型。
在另一种示例实施方式中,参照图11所示,根据所述每一次迭代的激活值、迭代次数、所述最大值更新比例和最小值更新比例更新所述激活值范围可以包括步骤S1110至步骤S1140。
在步骤S1110中,确定所述第一次至第N次迭代训练得到的量化参数中大于所述初始量化参数的第一数量。
在本示例实施方式中,上述第一数量可以是第一次至第N次迭代训练得到的激活值中的最大值大于初始量化参数中激活值最大值的数量,也可以是第一次至第N次迭代训练得到的激活值中的最小值大于初始量化参数中激活值最小值的第一数量。
在步骤S1120中,确定所述第一次至第N次迭代训练得到的量化参数中小于所述初始量化参数的第二数量。
在本示例实施方式中,第二数量可以表示第一次至第N次迭代训练得到的激活值中的最答值小于初始量化参数中激活值最大值的数量;也可以是第一次至第N次迭代训练得到的激活值中的最小值大于初始量化参数中激活值最小值的数量。
在步骤S1130中,响应所述第一数量与所述迭代次数N的比值大于所述第一更新比例,利用预设更新系数增大所述初始量化参数。
在本示例实施方式中,上述预设更新系数可以是0.001,也可以根据用户需求进行自定义,在本示例实施方式中不做具体限定。
在本示例实施方式中,当上述第一数量与迭代次数N的比值大于第一更新比例时,max1=(1+0.001)*max0,其中,max1为更新后量化参数的最大值,max0为初始量化参数的最大值。
当上述第一数量与迭代次数N的比值大于第一更新比例时,min1=(1+0.001)*min0,其中,min1为更新后量化参数的最小值,min0为初始量化参数的最小值。
在步骤S1140中,响应所述第二数量与所述迭代次数N的比值大于所述第二更新比例,利用预设更新系数减小所述初始量化参数。
当上述第二数量与迭代次数N的比值大于第二更新比例时,max1=(1-0.001)*max0,其中,max1为更新后量化参数的最大值,max0为初始量化参数的最大值。
当上述第二数量与迭代次数N的比值大于第二更新比例时,min1=(1-0.001)**min0,其中,min1为更新后量化参数的最小值,min0为初始量化参数的最小值。
在本示例实施方式中,在对上述初始量化参数中的最大值或者最小值进行更新之后,将上述N的值复位。即将上述N的值赋予1。
需要说明的是,在对上述N的值进行复位时,保留复位前的数值,用于计算迭代总次数,当迭代总次数达到上述预设次数之后得到目标神经网络模型。
下面参照图12,以更新初始量化参数中的最大值为例对上述更新初始量化参数的过程进行详细说明,首先可以执行步骤S1210,初始化初始量化参数以及迭代次数;然后执行步骤S1220,每次迭代后将迭代次数加一,之后执行步骤S1230,判断迭代次数是否小于预设次数,若否,则结束迭代训练。若是,则执行步骤S1240,确定迭代后激活值最大值,并将最大值进行累加;并执行步骤S1250,获取上述第一数量和第二数量,计算第一数量与N的比值,以及第二数量与N的比值。之后执行步骤S1260,判断上述第一数量与N的比值是否大于第一更新比例或者第二数量与N的比值大于上述第二更新比例;若否,则不更新,并返回步骤S1220,若是,则执行步骤S1270,更新上述初始量化参数的最大值,并复位上述迭代次数N、第一数量以及第二数量,并返回步骤S1220。
在步骤S240中,在每次迭代后根据所述初始量化参数更新所述待量化神经网络模型权重,以得到目标神经网络模型。
在本示例实施方式中,在每一次迭代后,可以根据上述初始量化参数求出误差,并根据该误差反向传播梯度,以使待量化神经网络模型根据该梯度调整待量化神经网络模型每一网络层的权重。在采用权重量化值和激活量化值进行前向运算和反向计算待量化神经网络模型的梯度更新模型的原浮点权重后完成一次模型的量化训练。在完成对上述待量化神经网络模型的权重进行更新之后得到上述目标神经网络模型。
综上所述,本示例性实施方式中,利用第一次至第N次迭代训练得到的量化参数更新初始量化参数,充分考虑了多次迭代过程中的量化参数的变化,提升了量化精度,同时,在更新初始量化参数时,并非是每一次迭代都更新,在保证精度的同时,降低了计算量,增强了量化效率。在更新上述初始量化参数时,采用了多次迭代的平均值来更新上述初始量化参数,即保留了多次迭代的信息,又降低了计算量,增强量化效率。
进一步的,利用多次迭代后的最大值与总量化次数的来确定是否更新量化参数,充分考虑了量化参数的变化,增强了量化精度。
需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
进一步的,参考图13所示,本示例的实施方式中还提供一种神经网络模型量化装置1300,包括获取模块1310、训练模块1320、参数更新模块1330和模型更新模块1340。其中:
获取模块1310可以用于获取待量化神经网络模型和训练数据。
在一种示例实施方式中,获取模块1310可以被配置为获取浮点型预训练神经网络模型确定预设量化精度,并根据所述预设量化精度对所述预训练神经网络模型进行量化得到待量化神经网络模型。
其中,根据所述预设量化精度对所述预训练神经网络模型进行量化得到待量化神经网络模型,包括:根据所述预设量化精度确定中间量化位数;根据所述量化位数对所述预训练神经网络模型进行量化得到待量化神经网络模型。
根据所述预设量化精度对所述预训练神经网络模型进行量化得到待量化神经网络模型,包括:确定所述预训练神经网络模型中各层网络的量化范围;根据所述预设量化精度和所述量化范围对所述预训练神经网络模型中的至少一层网络进行量化得到待量化神经网络模型。
确定所述预训练神经网络模型中各层网络的量化范围,包括:获取各层网络中的权重值集合;根据权重值集合和预设比例系数确定各层网络的量化范围。
权重值集合和预设比例系数确定各层网络的量化范围,包括:根据所述预设比例系数在所述权重值集合中确定最大值和最小值;根据所述最大值和所述最小值确定所述量化范围。
训练模块1320可以用于利用所述训练数据对所述待量化神经网络模型进行预设数次的量化感知迭代训练。
参数更新模块1330可以用于获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新所述初始量化参数,所述量化参数包括激活值。
在一种示例实施方式中,参数更新模块1330可以被配置为设定第一更新比例和第二更新比例;根据所述每一次迭代的激活值、所述迭代次数N、所述第一更新比例和第二更新比例更新所述初始激活值范围。
其中,根据所述每一次迭代的激活值、所述迭代次数N、所述第一更新比例和第二更新比例更新所述初始量化参数,包括:确定所述第一次至第N次迭代训练得到的量化参数中大于所述初始量化参数的第一数量;确定所述第一次至第N次迭代训练得到的量化参数中小于所述初始量化参数的第二数量;响应所述第一数量与所述迭代次数N的比值大于所述第一更新比例,利用所述第一次至第N次迭代训练得到的量化参数的平均值增大所述初始量化参数;响应所述第二数量与所述迭代次数N的比值大于所述第二更新比例,利用所述第一次至第N次迭代训练得到的量化参数的平均值减小所述初始量化参数。
利用所述第一次至第N次迭代训练得到的量化参数的平均值更新所述初始量化参数:分别确定所述初始量化参数与所述平均值的更新权重;利用所述更新权重、所述初始量化参数以及所述平均值更新所述初始量化参数。
在另一种示例实施方式中,根据所述每一次迭代的激活值、所述迭代次数N、所述第一更新比例和第二更新比例更新所述初始量化参数,包括:确定所述第一次至第N次迭代训练得到的量化参数中大于所述初始量化参数的第一数量;确定所述第一次至第N次迭代训练得到的量化参数中小于所述初始量化参数的第二数量;响应所述第一数量与所述迭代次数N的比值大于所述第一更新比例,利用预设更新系数增大所述初始量化参数;响应所述第二数量与所述迭代次数N的比值大于所述第二更新比例,利用预设更新系数减小所述初始量化参数。
其中,所述神经网络模型量化装置1300还可以用于响应对所述初始量化参数更新,将所述迭代次数N、所述第一数量以及所述第二数量复位。
模型更新模块1340可以用于在每次迭代后根据所述初始量化参数更新所述待量化神经网络模型权重,以得到目标神经网络模型。
上述装置中各模块的具体细节在方法部分实施方式中已经详细说明,未披露的细节内容可以参见方法部分的实施方式内容,因而不再赘述。
本公开的示例性实施方式还提供一种用于执行上述神经网络模型量化方法的电子设备,该电子设备可以是上述终端110或服务器120。一般的,该电子设备可以包括处理器与存储器,存储器用于存储处理器的可执行指令,处理器配置为经由执行可执行指令来执行上述神经网络模型量化方法。
下面以图14中的移动终端1400为例,对该电子设备的构造进行示例性说明。本领域技术人员应当理解,除了特别用于移动目的的部件之外,图14中的构造也能够应用于固定类型的设备。
如图14所示,移动终端1400具体可以包括:处理器1401、存储器1402、总线1403、移动通信模块1404、天线1、无线通信模块1405、天线2、显示屏1406、摄像模块1407、音频模块1408、电源模块1409与传感器模块1410。
处理器1401可以包括一个或多个处理单元,例如:处理器1401可以包括AP(Application Processor,应用处理器)、调制解调处理器、GPU(Graphics ProcessingUnit,图形处理器)、ISP(Image Signal Processor,图像信号处理器)、控制器、编码器、解码器、DSP(Digital Signal Processor,数字信号处理器)、基带处理器和/或NPU(Neural-Network Processing Unit,神经网络处理器)等。本示例性实施方式中的神经网络模型量化方法可以由AP、GPU或DSP来执行,当方法涉及到神经网络相关的处理时,可以由NPU来执行。
处理器1401可以通过总线1403与存储器1402或其他部件形成连接。
存储器1402可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器1401通过运行存储在存储器1402的指令,执行移动终端1400的各种功能应用以及数据处理。存储器1402还可以存储应用数据,例如存储图像,视频等文件。
移动终端1400的通信功能可以通过移动通信模块1404、天线1、无线通信模块1405、天线2、调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。移动通信模块1404可以提供应用在移动终端1400上2G、3G、4G、5G等移动通信解决方案。无线通信模块1405可以提供应用在移动终端1400上的无线局域网、蓝牙、近场通信等无线通信解决方案。
显示屏1406用于实现显示功能,如显示用户界面、图像、视频等。摄像模块1407用于实现拍摄功能,如拍摄图像、视频等。音频模块208用于实现音频功能,如播放音频,采集语音等。电源模块209用于实现电源管理功能,如为电池充电、为设备供电、监测电池状态等。传感器模块1410可以包括深度传感器14101、压力传感器14102、陀螺仪传感器14103、气压传感器14104等,以实现相应的感应检测功能。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
此外,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。
Claims (14)
1.一种神经网络模型量化方法,其特征在于,包括:
获取待量化神经网络模型和训练数据;
利用所述训练数据对所述待量化神经网络模型进行预设数次的量化感知迭代训练;
获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新所述初始量化参数;
在每次迭代后根据所述初始量化参数更新所述待量化神经网络模型权重,以得到目标神经网络模型;
其中,N为大于或等于1且小于或等于所述预设次数的正整数。
2.根据权利要求1所述的方法,其特征在于,所述量化参数包括激活值,所述获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新所述初始量化参数,包括:
设定第一更新比例和第二更新比例;
根据所述每一次迭代的激活值、所述迭代次数N、所述第一更新比例和第二更新比例更新所述初始激活值范围。
3.根据权利要求1所述的方法,其特征在于,根据所述每一次迭代的激活值、所述迭代次数N、所述第一更新比例和第二更新比例更新所述初始量化参数,包括:
确定所述第一次至第N次迭代训练得到的量化参数中大于所述初始量化参数的第一数量;
确定所述第一次至第N次迭代训练得到的量化参数中小于所述初始量化参数的第二数量;
响应所述第一数量与所述迭代次数N的比值大于所述第一更新比例,利用所述第一次至第N次迭代训练得到的量化参数的平均值增大所述初始量化参数;
响应所述第二数量与所述迭代次数N的比值大于所述第二更新比例,利用所述第一次至第N次迭代训练得到的量化参数的平均值减小所述初始量化参数。
4.根据权利要求3所述的方法,其特征在于,所述利用所述第一次至第N次迭代训练得到的量化参数的平均值更新所述初始量化参数:
分别确定所述初始量化参数与所述平均值的更新权重;
利用所述更新权重、所述初始量化参数以及所述平均值更新所述初始量化参数。
5.根据权利要求2所述的方法,其特征在于,根据所述每一次迭代的激活值、所述迭代次数N、所述第一更新比例和第二更新比例更新所述初始量化参数,包括:
确定所述第一次至第N次迭代训练得到的量化参数中大于所述初始量化参数的第一数量;
确定所述第一次至第N次迭代训练得到的量化参数中小于所述初始量化参数的第二数量;
响应所述第一数量与所述迭代次数N的比值大于所述第一更新比例,利用预设更新系数增大所述初始量化参数;
响应所述第二数量与所述迭代次数N的比值大于所述第二更新比例,利用预设更新系数减小所述初始量化参数。
6.根据权利要求3-5任一项所述的方法,其特征在于,所述方法还包括:
响应对所述初始量化参数更新,将所述迭代次数N、所述第一数量以及所述第二数量复位。
7.根据权利要求1所述的方法,其特征在于,所述获取待量化神经网络模型包括:
获取浮点型预训练神经网络模型;
确定预设量化精度,并根据所述预设量化精度对所述预训练神经网络模型进行量化得到待量化神经网络模型。
8.根据权利要求7所述的方法,其特征在于,所述根据所述预设量化精度对所述预训练神经网络模型进行量化得到待量化神经网络模型,包括:
根据所述预设量化精度确定中间量化位数;
根据所述量化位数对所述预训练神经网络模型进行量化得到待量化神经网络模型。
9.根据权利要求7所述的方法,其特征在于,所述根据所述预设量化精度对所述预训练神经网络模型进行量化得到待量化神经网络模型,包括:
确定所述预训练神经网络模型中各层网络的量化范围;
根据所述预设量化精度和所述量化范围对所述预训练神经网络模型中的至少一层网络进行量化得到待量化神经网络模型。
10.根据权利要求9所述的方法,其特征在于,所述预训练神经网络模型中各层网络的量化范围,包括:
获取各层网络中的权重值集合;
根据权重值集合和预设比例系数确定各层网络的量化范围。
11.根据权利要求10所述的方法,其特征在于,根据权重值集合和预设比例系数确定各层网络的量化范围,包括:
根据所述预设比例系数在所述权重值集合中确定最大值和最小值;
根据所述最大值和所述最小值确定所述量化范围。
12.一种神经网络模型量化装置,其特征在于,包括:
获取模块,用于获取待量化神经网络模型和训练数据;
训练模块,用于利用所述训练数据对所述待量化神经网络模型进行预设数次的量化感知迭代训练;
参数更新模块,用于获取初始量化参数,并利用第一次至第N次迭代训练得到的量化参数更新所述初始量化参数;
模型更新模块,用于在每次迭代后根据所述初始量化参数更新所述待量化神经网络模型权重,以得到目标神经网络模型;
其中,N为大于或等于1且小于或等于所述预设次数的正整数。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至11中任一项所述的神经网络模型量化方法。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;以及
存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至11所述的神经网络模型量化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211539211.3A CN115936092A (zh) | 2022-12-01 | 2022-12-01 | 神经网络模型量化方法及装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211539211.3A CN115936092A (zh) | 2022-12-01 | 2022-12-01 | 神经网络模型量化方法及装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115936092A true CN115936092A (zh) | 2023-04-07 |
Family
ID=86698636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211539211.3A Pending CN115936092A (zh) | 2022-12-01 | 2022-12-01 | 神经网络模型量化方法及装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115936092A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116451770A (zh) * | 2023-05-19 | 2023-07-18 | 北京百度网讯科技有限公司 | 神经网络模型的压缩方法、训练方法、处理方法和装置 |
-
2022
- 2022-12-01 CN CN202211539211.3A patent/CN115936092A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116451770A (zh) * | 2023-05-19 | 2023-07-18 | 北京百度网讯科技有限公司 | 神经网络模型的压缩方法、训练方法、处理方法和装置 |
CN116451770B (zh) * | 2023-05-19 | 2024-03-01 | 北京百度网讯科技有限公司 | 神经网络模型的压缩方法、训练方法、处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109816589B (zh) | 用于生成漫画风格转换模型的方法和装置 | |
CN108520220B (zh) | 模型生成方法和装置 | |
CN111523640B (zh) | 神经网络模型的训练方法和装置 | |
WO2020207174A1 (zh) | 用于生成量化神经网络的方法和装置 | |
CN111105017B (zh) | 神经网络量化方法、装置及电子设备 | |
CN113436620B (zh) | 语音识别模型的训练方法、语音识别方法、装置、介质及设备 | |
CN114418121A (zh) | 模型训练方法、对象处理方法及装置、电子设备、介质 | |
CN112149699B (zh) | 用于生成模型的方法、装置和用于识别图像的方法、装置 | |
JP2022502758A (ja) | 符号化方法、装置、機器およびプログラム | |
CN115936092A (zh) | 神经网络模型量化方法及装置、存储介质及电子设备 | |
CN110009101B (zh) | 用于生成量化神经网络的方法和装置 | |
CN113505848A (zh) | 模型训练方法和装置 | |
CN110276404B (zh) | 模型训练方法、装置及存储介质 | |
CN109359727B (zh) | 神经网络的结构确定方法、装置、设备及可读介质 | |
WO2022246986A1 (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN113850890A (zh) | 动物形象的生成方法、装置、设备及存储介质 | |
US20230260245A1 (en) | Image segmentation model quantization method and apparatus, computer device, and storage medium | |
CN116090543A (zh) | 模型压缩方法及装置、计算机可读介质和电子设备 | |
CN111915689A (zh) | 用于生成目标函数的方法、装置、电子设备和计算机可读介质 | |
CN114758130B (zh) | 图像处理及模型训练方法、装置、设备和存储介质 | |
CN115983349A (zh) | 卷积神经网络的量化方法及装置、电子设备和存储介质 | |
CN114330239A (zh) | 文本处理方法及装置、存储介质及电子设备 | |
CN116644783A (zh) | 模型训练方法、对象处理方法及装置、电子设备、介质 | |
CN113537470A (zh) | 模型量化方法及装置、存储介质及电子设备 | |
CN114139703A (zh) | 知识蒸馏方法及装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |