掌桥专利:专业的专利平台
掌桥专利
首页

卷积神经网络的量化方法及装置、电子设备和存储介质

文献发布时间:2023-06-19 19:30:30


卷积神经网络的量化方法及装置、电子设备和存储介质

技术领域

本公开涉及计算机技术领域,具体涉及一种卷积神经网络的量化方法、卷积神经网络的量化装置、电子设备和计算机可读存储介质。

背景技术

随着计算机技术的高速发展,基于卷积神经网络的深度学习技术获得蓬勃发展,在视觉、语言等领域取得较好成功。然而,这些成就很大程度依赖于网络结构的复杂程度和庞大的参数量,对计算机的算力和内存提出更高要求,进而限制了卷积神经网络在算力与内存有限的边缘设备上的部署。

相关技术中通过量化算法实现模型压缩,但是目前的量化算法需要大量训练数据,且迭代效率低,一定程度上影响了卷积神经网络的广泛应用。

发明内容

本公开的目的在于提供一种卷积神经网络的量化方法、卷积神经网络的量化装置、电子设备和计算机可读存储介质,进而至少在一定程度上提高对卷积神经网络进行量化时的迭代效率。

根据本公开的第一方面,提供一种卷积神经网络的量化方法,包括:利用待量化网络对标准数据集进行处理,并逐层获取所述待量化网络中每一网络层对应的模型参数量化误差;根据各所述网络层的模型参数量化误差,将各所述网络层划分至对应于不同目标量化位宽的级别组;将各所述级别组中网络层的模型参数按照对应的目标量化位宽进行量化处理。

根据本公开的第二方面,提供一种卷积神经网络的量化装置,包括:量化误差获取模块,用于利用待量化网络对标准数据集进行处理,并逐层获取所述待量化网络中每一网络层对应的模型参数量化误差;量化位宽分配模块,用于根据各所述网络层的模型参数量化误差,将各所述网络层划分至对应于不同目标量化位宽的级别组;量化处理模块,用于将各所述级别组中网络层的模型参数按照对应的目标量化位宽进行量化处理。

根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的方法。

根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的方法。

本公开实施例所提供的卷积神经网络的量化方法,利用待量化网络对标准数据集进行推理处理,并逐层获取待量化网络中每一网络层对应的模型参数量化误差,根据各网络层的模型参数量化误差将各网络层划分至对应于不同目标量化位宽的级别组,进而将各级别组中网络层的模型参数按照所对应的目标量化位宽进行量化处理。一方面,基于量化误差的混合精度量化方案,无需进行模型迭代和训练过程,基于标准数据集通过待量化网络进行一次前向推理处理过程,即可获得待量化网络中各网络层对应的模型参数量化误差,以基于模型参数量化误差进行量化位宽的分配,极大地提高卷积神经网络的量化效率,针对网络层较多或复杂的卷积神经网络的量化过程,可明显降低量化运行时间;另一方面,可利用较少训练数据进行一次推理运算得到量化位宽分配策略,对于没有大量训练数据的模型量化场景也具有普适性;此外,基于量化误差的量化位宽分配方案降低卷积神经网络的迭代次数,提升量化效率,对于卷积神经网络进一步地在边缘设备的部署和应用具有实际意义。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示出了可以应用本公开实施例的一种卷积神经网络的量化方法及装置所涉及的示例性应用环境的示意图;

图2示意性示出本公开示例性实施例中一种卷积神经网络的量化方法的流程图;

图3示意性示出本公开示例性实施例中一种获取任一网络层对应的模型权重的模型参数量化误差的流程图;

图4示意性示出本公开示例性实施例中一种确定激活值的模型参数量化误差的流程图;

图5示意性示出本公开示例性实施例中一种卷积神经网络的结构示意图;

图6示意性示出本公开示例性实施例的根据各网络层的模型参数量化误差将各网络层划分级别组的流程图;

图7示意性示出本公开示例性实施例中一种分配级别组的示意图;

图8示意性示出本公开示例性实施例中另一种卷积神经网络的量化流程图;

图9示意性示出本公开示例性实施例中卷积神经网络的量化装置的组成示意图;

图10示出了可以应用本公开实施例的一种电子设备的示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图1示出了可以应用本公开实施例的一种卷积神经网络的量化方法及装置所涉及的示例性应用环境的示意图。

如图1所示,以卷积神经网络的量化方法应用于实体展现形式台式电脑的电子设备为例,电子设备可以获取待量化网络和用于训练的标准数据集,利用待量化网络对标准数据集进行处理,并逐层获取待量化网络中每一网络层对应的模型参数量化误差,根据各网络层的模型参数量化误差,将各网络层划分至对应于不同目标量化位宽的级别组,将各级别组中网络层的模型参数按照对应的目标量化位宽进行量化处理。

其中,电子设备可以为具有模型量化处理功能的智能设备,例如可以为智能手机、电脑、平板电脑等智能设备,电子设备还可以被称为移动终端、终端、移动设备、终端设备等,本公开实施例对电子设备的类型不做限制。

需要说明的是,本公开实施例所提供的卷积神经网络的量化方法可以由电子设备来执行。本公开实施例所提供的卷积神经网络的量化方法也可以由服务器来执行。服务器可以为提供本公开实施例中卷积神经网络的量化处理相关服务的后台系统,可以包括便携式计算机、台式计算机、智能手机等具有计算功能的一台电子设备或多台电子设备形成的集群。本公开实施例中,以卷积神经网络的量化方法由电子设备来执行为例进行说明。

基于卷积神经网络的深度学习在很多领域取得较好成果,但很大程度依赖于网络结构的复杂程度和庞大的参数量,进而对计算机的算力和内存提出了更高的要求,对于一些边缘设备,如手机、摄像头等,其算力和内存受限,限制了深度卷积神经网络在该些设备上的部署和应用。

在相关技术中,通过量化、剪枝和蒸馏等方法进行模型压缩。其中,量化算法在深度卷积神经网络的部署中是至关重要的一环。深度卷积神经网络的参数以32位浮点数Float 32(Full precision,全精度)的形式保存,通过量化算法将该些参数量化为整型数,如8位整型数(Int8),即量化位宽为8bit,或者量化为更低精度的整型数,如4位整型数(Int4),即量化位宽为4bit,进而可降低模型的内存占用,提高运算速度。

但是,参数表示的位宽减小不可避免地导致信息丢失,使得量化后的模型与原模型相比,产生量化损失,导致模型精度降低。基于此,为解决量化带来的模型精度损失,可通过混合精度量化(Mixed-precision quantization)方式对卷积神经网络进行量化处理,混合精度量化是指针对模型中的不同参数使用不同的量化位宽进行量化,以降低量化损失,提高量化后的模型精度。

现有的混合精度量化算法包括基于测度的混合精度量化算法和基于搜索的混合精度量化算法,但是均需要大量的训练数据,并且需要进行较多次迭代才能使算法收敛或满足模型精度要求,特别是对于一些层数较多或较复杂的网络,需要较长的运行时间,极大地影响了模型的量化效率,一定程度上限制了卷积神经网络的广泛部署和应用。

基于上述一个或多个问题,本公开示例性实施例提供了一种卷积神经网络的量化方法。参考图2所示,该卷积神经网络的量化方法可以包括以下步骤S210至步骤S230:

在步骤S210中,利用待量化网络对标准数据集进行处理,并逐层获取待量化网络中每一网络层对应的模型参数量化误差。

在本公开的示例性实施例中,待量化网络为包括多个网络层的卷积神经网络。模型参数可包括模型权重和模型经激活层输出的激活值,可对模型权重进行量化,也可对激活值进行量化,当然,还可对模型权重和激活值均进行量化过程。模型参数量化误差是指模型参数在量化前后的差别,例如,某个网络层的模型权重的模型参数量化误差是模型权重在量化前后的差别。

本公开实施例将标准数据集输入至待量化网络,获取每个网络层对应的模型参数量化误差。该模型参数量化误差是在待量化网络的前向推理过程中的积累的量化误差,在后文将详细说明。

需要说明的是,对于网络层的模型权重和激活值是分别按照各自计算模型参数量化误差的方式确定模型参数量化误差的。

在步骤S220中,根据各网络层的模型参数量化误差,将各网络层划分至对应于不同目标量化位宽的级别组。

在本公开的示例性实施例中,各级别组分别对应不同的目标量化位宽,级别组对应的目标量化位宽可根据实际的模型量化需求设定,如包括目标量化位宽为8bit的级别组,目标量化位宽为4bit的级别组,对此不做特殊限定。当然,本公开实施例中也可由用户设置各级别组的目标量化位宽。

通过按照网络层的模型参数量化误差将网络层分配至对应不同的目标量化位宽的级别组,属于同一级别组内的网络层采用相同的目标量化位宽,不同级别组内的网络层采用差别化的目标量化位宽,使得待量化模型中的模型参数采用不同的量化位宽,以减少量化损失,提高量化后的模型精度。

在步骤S230中,将各级别组中网络层的模型参数按照对应的目标量化位宽进行量化处理。

在本公开的示例性实施例中,将网络层所属级别组对应的目标量化位宽作为该网络层的目标量化位宽并进行量化处理,得到量化后的网络模型。

通过本公开实施例的技术方案,一方面,基于量化误差的混合精度量化方案,无需进行模型迭代和训练过程,基于标准数据集通过待量化网络进行一次前向推理处理过程,即可获得待量化网络中各网络层对应的模型参数量化误差,以基于模型参数量化误差进行量化位宽的分配,极大地提高卷积神经网络的量化效率,针对网络层较多或复杂的卷积神经网络的量化过程,可明显降低量化运行时间;另一方面,可利用较少训练数据进行一次推理运算得到量化位宽分配策略,对于没有大量训练数据的量化场景也具有普适性。

在一示例性实施例中,网络层的模型参数包括模型权重,相应的网络层对应的模型参数量化误差包括权重量化误差。图3示出了根据本公开示例性的一种获取任一网络层对应的模型参数量化误差的流程图,如图3所示,确定模型权重的模型参数量化误差可以包括步骤S310至步骤S330:

步骤S310,获取网络层的上游网络层的原始输出数据,并根据原始输出数据和网络层的第一权重确定第一输出数据,原始输出数据为未经激活层处理的输出结果。

原始输出数据为上游网络层输出的,未经激活层处理的结果。

步骤S320:将第一权重进行量化处理,并将量化处理结果进行反量化操作得到第二权重。

对第一权重进行量化处理是将浮点数据转换为整型数据的过程,相反,将量化处理结果进行反量化是将整型数据转换为估计的浮点数据,即第二权重。

下面对模型权重的量化过程和反量化过程进行说明。为方便描述,设W为浮点权重,W

其中,

其中,z为量化的零点,为整数;s为缩放因子,为浮点数,表示量化步长,其中量化步长s通过公式(3)获得:

其中,f

通过公式(1)至(3)实现模型权重的量化过程,将浮点数W映射为整型数W

需要说明的是,本公开实施例还可以采用其它的量化与反量化方式,对此也不做特殊限定。

步骤S330:获取量化后的上游网络层的第二输出数据,并根据第二输出数据和第二权重确定第三输出数据。

在获取量化后的上游网络层的第二输出数据之前,先利用预设的量化精度对上游网络层进行量化处理,如选择4bit、8bit和16bit中的任一种对上游网络层进行量化,将量化后的上游网络层的输出作为第二输出数据,以根据第二输出数据和经量化及反量化操作后得到的第二权重确定第三输出数据。基于此,第一输出数据与第三输出数据之间的差别就可以作为用于衡量模型权重的量化误差因子。

步骤S340:根据第一输出数据和第三输出数据,确定权重量化误差。

在获得第一输出数据和第三输出数据后,可基于F-范数计算权重量化误差,由于在结合第一输出数据和第三输出数据计算权重量化误差的过程中,可实现量化误差的积累,从而可准确反映该层网络层在实际量化误差中的作用。

本公开实施例可通过以下公式(5)获得模型权重的模型参数量化误差:

其中,Err

参见公式(5)可知,针对每一网络层对应的模型权重量化误差均进行量化误差积累,进而可准确地反映该网络层在实际量化误差中的贡献情况。

在一示例性实施例中,网络层的模型参数包括网络层输出的激活值,相应的网络层对应的模型参数量化误差包括激活值量化误差。图4示出了根据本公开示例性的另一种获取任一网络层对应的模型参数量化误差的流程图,如图4所示,确定激活值的模型参数量化误差可以包括步骤S410至步骤S430:

步骤S410:将第一输出数据经激活层处理得到第一激活值。

步骤S420:将第三输出数据经激活层处理得到的结果进行量化处理,并将量化处理结果进行反量化处理,得到第二激活值。

步骤S430:根据第一激活值和第二激活值确定激活值量化误差。

基于此,第一激活值和第二激活值之间的差别可以作为用于衡量激活值的量化误差因子。

需要说明的是,在步骤S420中的量化与反量化操作的实现方式可参见步骤S320记载的内容,当然,本公开实施例在此对量化与反量化方式不做特殊限定。

其中,本公开实施例可通过以下公式(6)获得网络层输出的激活值的模型参数量化误差:

其中,Err

参见公式(6)可知,对每一网络层对应的激活值量化误差均进行量化误差积累,进而可准确地反映该网络层在实际量化误差中的贡献情况。

图5示出了根据本公开示例性实施例的一种卷积神经网络的结构示意图,下面结合图5,以获取模型权重的权重量化误差为例进行说明。

对于第二网络层,首先获取第一网络层的原始输出数据,并根据原始输出数据和第二网络层的第一权重确定第一输出数据,然后对第一权重进行量化及反量化操作得到第二权重,并获取量化后的上游网络层(第一网络层)的第二输出数据,以根据第二输出数据和第二权重确定第三输出数据,最后根据第一输出数据和第三输出数据确定权重量化误差基于此,对于第二网络层,在获得权重量化误差的过程中将该网络层的上游网络层的量化误差进行积累。

对于第三网络层,将前两层网络可作为子网络整体,首先获取子网络的原始输出数据(即第二网络层的原始输出数据),并根据原始输出数据和第三网络层的第一权重确定第一输出数据,然后将第一权重进行量化处理,将量化处理结果进行反量化操作得到第二权重,以根据量化后的子网络的第二输出数据和第二权重确定第三输出数据,最后根据第一输出数据和第三输出数据确定权重量化误差。。基于此,第三网络层对应的模型权重的权重量化误差将前两个网络层的量化误差进行了累积。

依次类推,对于第N网络层,该层网络层对应的模型权重的模型参数量化误差是根据前N—1个网络层未经量化的输出结果和经量化后的前N—1层网络的输出结果确定的,该过程实现了将前N—1个网络层产生的量化误差的累积效果。

需要说明的是,以上各层网络层的权重量化误差的计算方式可参见公式(5)所示,在此不再赘述。

在一示例性实施例中,还提供一种确定网络层的目标量化位宽的实现方式,如图6所示,根据各网络层的模型参数量化误差将各网络层划分至对应于不同目标量化位宽的级别组可以包括:

基于各网络层的模型参数量化误差的数值大小,将各网络层分配至对应不同目标量化位宽的级别组;将各网络层对应级别组的目标量化位宽确定为各网络层的目标量化位宽;

其中,高目标量化位宽的级别组中网络层的模型参数量化误差大于低目标量化位宽的级别组中网络层的模型参数量化误差。

可以将各网络层的模型参数量化误差按照数值由大到小的顺序排序后,将模型参数量化误差较大的分配至高目标量化位宽的级别组中,将模型参数量化误差较小的分配至低目标量化位宽的级别组中。

参见图7所示,若仅存在两个级别组(第一级别组和第二级别组),第一级别组对应的目标量化位宽为8bit,第二级别组对应的目标量化位宽为4bit,待量化网络包括50个网络层,则将50个网络层按照模型参数量化误差由大到小排序后,获取前30个网络层分配至第一级别组,并将剩余网络层分配至第二级别组。其中,各级别组中的网络层的数量可预先设置,并允许按需调整。

通过按照计算获得的模型参数量化误差将待量化网络的各网络层分配至相应的级别组并确定目标量化位宽,使得模型的不同参数基于不同的量化位宽进行量化处理,避免了量化位宽带来的信息丢失,降低量化损失,进而提升网络精度。

在一示例性实施例中,在将各级别组中网络层的模型参数按照对应的目标量化位宽进行量化处理之前,还可以循环执行以下过程,直到待量化网络对应的预测量化后模型规模符合预设规模阈值:

基于各网络层对应的目标量化位宽确定预测量化后模型规模;

响应于预测量化后模型规模大于预设规模阈值,降低高目标量化位宽的级别组中的网络层的数量,提高低目标量化位宽的级别组中的网络层的数量,并根据对应的级别组确定各网络层的目标量化位宽。

其中,若预测量化后模型规模仍较大,可降低更大精度网络层的数量,即降低高目标量化位宽的级别组中的网络层的数量,相应的提高低目标量化位宽的级别组中的网络层的数量。

继续参见图7所示,若预测量化后模型规模仍较大,则可以获取前20个网络层分配至第一级别组,并将剩余网络层分配至第二级别组。

基于此,本公开实施例可根据用户的模型规模需求分配各网络层的目标量化位宽,以获得符合用户期望的量化结果。

在一示例性实施例中,在将各级别组中网络层的模型参数按照对应的目标量化位宽进行量化处理之前,还可以循环执行以下过程,直到待量化网络对应的预测量化后模型精度达到设定模型精度阈值:

基于各网络层对应的目标量化位宽确定预测量化后模型精度;

响应于预测量化后模型精度小于预设模型精度阈值,提高高目标量化位宽的级别组中的网络层的数量,降低低目标量化位宽的级别组中的网络层的数量,并根据对应的级别组确定各网络层的目标量化位宽。

其中,若预测量化后模型精度仍达不到精度要求,还可提高更大精度网络层的数量,即提高高目标量化位宽的级别组中的网络层的数量,相应的降低低目标量化位宽的级别组中的网络层的数量。

继续参见图7所示,若预测量化后模型精度仍较大,则可以获取前35个网络层分配至第一级别组,并将剩余网络层分配至第二级别组。

基于此,本公开实施例可根据用户的模型精度需求分配各网络层的目标量化位宽,以获得符合用户期望的量化结果。

此外,本公开实施例还可以通过调整各级别组对应的目标量化位宽和各级别组中网络层的数量,平衡模型大小与模型精度。

在一示例性实施例中,还可以响应于针对每一级别组的网络层数量调整操作,确定各级别组对应的目标网络层数量,并按照各级别组对应的目标网络层数量,基于各网络层的模型参数量化误差的数值大小,将各网络层分配至对应不同目标量化位宽的级别组。

继续参见图7所示,在将50个网络层按照模型参数量化误差由大到小排序后,基于各网络层数量调整操作确定各级别组对应的目标网络层数量后,基于各网络层的模型参数量化误差的数值大小,将各网络层分配至对应不同目标量化位宽的级别组。

当然,还可以响应于针对每一级别组对应的目标量化位宽的调整操作,确定各级别组对应的目标量化位宽,进而调整相应网络层的目标量化位宽。

图8示出了本公开示例性实施例的另一种卷积神经网络的量化流程图,下面以对模型的激活值进行量化为例,对本公开实施例的卷积神经网络的量化过程进行说明。

步骤S810:预设混合精度可选的目标量化位宽为16bit和4bit,各目标量化位宽对应不同的级别组。

步骤S820:选取部分训练数据作为标准数据集。

步骤S830:将标准数据集作为待量化网络(包括50个网络层)的输入,利用待量化网络对标准数据进行推理。

其中,在推理过程中,逐层获取每一网络层的激活值量化误差,获取方式可参见步骤S410至步骤S430所示。

步骤S840:基于各网络层的激活值量化误差的数值大小,将各网络层分配至对应不同目标量化位宽的级别组。

其中,将各网络层的激活值量化误差按照从大至小的顺序排序,将较大激活值量化误差的网络层分配至目标量化位宽为16bit的级别组,并将剩余的网络层分配至目标量化位宽为4bit的级别组。各级别组中网络层的数量可按照预先设定的确定,如目标量化位宽为16bit的级别组中网络层的数量为15,目标量化位宽为4bit的级别组中网络层的数量为35。

步骤S850可根据网络层对应的目标量化位宽进行量化处理,获得量化后的网络。至此,通过一次前向推理过程,即可实现向各网络层分配目标量化位宽并进行量化处理。

在步骤860中,还可以基于各网络层对应的目标量化位宽确定预测量化后模型规模和/或预测量化后模型精度,并根据预设规模阈值和/或预设模型精度阈值,调整各级别组中网络层的数量,并重复步骤S840,直到获得模型规模和/或模型精度符合需求的预测量化结果。

其中,若预测量化后模型规模大于预设规模阈值,降低高目标量化位宽的级别组中的网络层的数量,提高低目标量化位宽的级别组中的网络层的数量;若预测量化后模型精度小于预设模型精度阈值,提高高目标量化位宽的级别组中的网络层的数量,降低低目标量化位宽的级别组中的网络层的数量。

在步骤S870中,当预测量化结果符合实际需求,则根据各网络层所属的级别组对应的目标量化位宽,对相应的网络层进行量化处理,获得量化后的网络。

综上可知,本公开实施例所提供的卷积神经网络的量化方法,利用待量化网络对标准数据集进行推理处理,并逐层获取待量化网络中每一网络层对应的模型参数量化误差,根据各网络层的模型参数量化误差将各网络层划分至对应于不同目标量化位宽的级别组,进而将各级别组中网络层的模型参数按照所对应的目标量化位宽进行量化处理。一方面,基于量化误差的混合精度量化方案,无需进行模型迭代和训练过程,基于标准数据集通过待量化网络进行一次前向推理处理过程,即可获得待量化网络中各网络层对应的模型参数量化误差,以基于模型参数量化误差进行量化位宽的分配,极大地提高卷积神经网络的量化效率,针对网络层较多或复杂的卷积神经网络的量化过程,可明显降低量化运行时间;另一方面,可利用较少训练数据进行一次推理运算得到量化位宽分配策略,对于没有大量训练数据的量化场景也具有普适性;此外,基于量化误差的量化位宽分配方案降低卷积神经网络的迭代次数,提升量化效率,对于卷积神经网络进一步地在边缘设备的部署具有实际意义。

需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

进一步的,参考图9所示,本公开的示例性实施方式中提供一种卷积神经网络的量化装置900,量化误差获取模块910、量化位宽分配模块920和量化处理模块930。其中:

量化误差获取模块910,用于利用待量化网络对标准数据集进行处理,并逐层获取待量化网络中每一网络层对应的模型参数量化误差;

量化位宽分配模块920,用于根据各网络层的模型参数量化误差,将各网络层划分至对应于不同目标量化位宽的级别组;

量化处理模块930,用于将各级别组中网络层的模型参数按照对应的目标量化位宽进行量化处理。

在一示例性实施例中,网络层对应的模型参数量化误差包括权重量化误差;量化误差获取模块910可以包括:

第一获取单元,用于获取所述网络层的上游网络层的原始输出数据,并根据所述原始输出数据和所述网络层的第一权重确定第一输出数据,所述原始输出数据为未经激活层处理的输出结果;第一量化处理单元,用于将所述第一权重进行量化处理,并将量化处理结果进行反量化操作得到第二权重;所述第一获取单元还用于获取量化后的所述上游网络层的第二输出数据,并根据所述第二输出数据和所述第二权重确定第三输出数据;第一量化误差获取单元,用于根据所述第一输出数据和所述第三输出数据,确定所述权重量化误差。

在一示例性实施例中,所述网络层对应的模型参数量化误差还包括激活值量化误差;量化误差获取模块910可以包括:

第二获取单元,用于将所述第一输出数据经激活层处理得到第一激活值;第二量化处理单元,用于将所述第三输出数据经所述激活层处理得到的结果进行量化处理,并将量化处理结果进行反量化处理,得到第二激活值;第二量化误差获取单元,用于根据所述第一激活值和所述第二激活值确定所述激活值量化误差。

在一示例性实施例中,卷积神经网络的量化装置900还包括:

网络量化模块,用于基于预设的量化精度对所述上游网络层进行量化处理,得到所述量化后的上游网络层。

在一示例性实施例中,量化位宽分配模块920,包括:

分配单元,用于基于各所述网络层的模型参数量化误差的数值大小,将各所述网络层分配至对应不同目标量化位宽的级别组;第二确定单元,用于将各所述网络层对应级别组的目标量化位宽确定为各所述网络层的目标量化位宽;其中,高目标量化位宽的级别组中网络层的模型参数量化误差大于低目标量化位宽的级别组中网络层的模型参数量化误差。

在一示例性实施例中,卷积神经网络的量化装置900还包括:

第一调整模块,用于循环执行以下过程,直到所述待量化网络对应的预测量化后模型规模符合预设规模阈值:基于各所述网络层对应的目标量化位宽确定所述预测量化后模型规模;响应于所述预测量化后模型规模大于预设规模阈值,降低所述高目标量化位宽的级别组中的网络层的数量,提高所述低目标量化位宽的级别组中的网络层的数量,并根据对应的级别组确定各所述网络层的目标量化位宽。

在一示例性实施例中,卷积神经网络的量化装置900还包括:

第二调整模块,用于循环执行以下过程,直到所述待量化网络对应的预测量化后模型精度达到设定模型精度阈值:基于各所述网络层对应的目标量化位宽确定所述预测量化后模型精度;响应于所述预测量化后模型精度小于预设模型精度阈值,提高所述高目标量化位宽的级别组中的网络层的数量,降低所述低目标量化位宽的级别组中的网络层的数量,并根据对应的级别组确定各所述网络层的目标量化位宽。

在一示例性实施例中,分别单元还用于响应于针对每一所述级别组的网络层数量调整操作,确定各所述级别组对应的目标网络层数量;按照各所述级别组对应的目标网络层数量,基于各所述网络层的模型参数量化误差的数值大小,将各所述网络层分配至对应不同目标量化位宽的级别组。

上述装置中各模块的具体细节在方法部分实施方式中已经详细说明,未披露的细节内容可以参见方法部分的实施方式内容,因而不再赘述。

所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

本公开的示例性实施方式中还提供一种用于上述方法的电子设备,该电子设备可以是上述影像设备或服务器。一般的,该电子设备至少包括处理器和存储器,存储器用于存储处理器的可执行指令,处理器配置为经由执行可执行指令来执行上述方法。

下面以图10中的移动终端1000为例,对本公开实施例中的电子设备的构造进行示例性说明。本领域技术人员应当理解,除了特别用于移动目的的部件之外,图10中的构造也能够应用于固定类型的设备。在另一些实施方式中,移动终端1000可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或软件和硬件的组合实现。各部件间的接口连接关系只是示意性示出,并不构成对移动终端1000的结构限定。在另一些实施方式中,移动终端也可以采用与图10不同的接口连接方式,或多种接口连接方式的组合。

如图10所示,移动终端1000具体可以包括:处理器1001、存储器1002、总线1003、移动通信模块1004、天线1、无线通信模块1005、天线2、显示屏1006、摄像模块1007、音频模块1008、电源模块1009、传感器模块1010。

处理器1001可以包括一个或多个处理单元,例如:处理器1001可以包括AP(Application Processor,应用处理器)、调制解调处理器、GPU(Graphics ProcessingUnit,图形处理器)、ISP(Image Signal Processor,图像信号处理器)、控制器、编码器、解码器、DSP(Digital Signal Processor,数字信号处理器)、基带处理器和/或NPU(Neural-Network Processing Unit,神经网络处理器)等。

编码器可以对图像或视频进行编码(即压缩),以减小数据大小,便于存储或发送。解码器可以对图像或视频的编码数据进行解码(即解压缩),以还原出图像或视频数据。移动终端1000可以支持一种或多种编码器和解码器,例如:JPEG(Joint PhotographicExperts Group,联合图像专家组)、PNG(Portable Network Graphics,便携式网络图形)、BMP(Bitmap,位图)等图像格式,MPEG(Moving Picture Experts Group,动态图像专家组)1、MPEG10、H.1063、H.1064、HEVC(High Efficiency Video Coding,高效率视频编码)等视频格式。

处理器1001可以通过总线1003与存储器1002或其他部件形成连接。

存储器1002可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器1001通过运行存储在存储器1002的指令,执行移动终端1000的各种功能应用以及数据处理。存储器1002还可以存储应用数据,例如存储图像,视频等文件。

移动终端1000的通信功能可以通过移动通信模块1004、天线1、无线通信模块1005、天线2、调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。移动通信模块1004可以提供应用在移动终端1000上3G、4G、5G等移动通信解决方案。无线通信模块1005可以提供应用在移动终端1000上的无线局域网、蓝牙、近场通信等无线通信解决方案。

显示屏1006用于实现显示功能,如显示用户界面、图像、视频等,以及显示异常提示信息。摄像模块1007用于实现拍摄功能,如拍摄图像、视频等,以采集场景图像。音频模块1008用于实现音频功能,如播放音频,采集语音等。电源模块1009用于实现电源管理功能,如为电池充电、为设备供电、监测电池状态等。传感器模块1010可以包括一种或多种传感器,用于实现相应的感应检测功能。

此外,本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。

需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

此外,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

本领域技术人员在考虑说明书及实践这里公开的发明后,容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

相关技术
  • 电子设备的显示控制方法、装置、电子设备和存储介质
  • 电子设备控制方法及装置、电子设备及存储介质
  • 数据分布存储方法、装置、存储介质及电子设备
  • 存储清理方法、装置、电子设备及存储介质
  • 多版本数据存储管理方法及装置、电子设备、存储介质
  • 卷积神经网络量化方法、装置、电子设备和存储介质
  • 卷积神经网络的量化方法以及存储介质、电子设备
技术分类

06120115931160