神经网络模型压缩方法、装置和系统与流程



1.本技术涉及神经网络领域,尤其涉及一种神经网络模型压缩方法、装置和系统。


背景技术:



2.量化感知训练、蒸馏训练和非结构化剪枝是几种神经网络模型的模型压缩技术,上述模型压缩技术可以相结合。不论是量化感知训练还是非结构化剪枝,为了降低训练效果损失,均可以添加大模型进行蒸馏训练,即量化感知训练+蒸馏训练,非结构化剪枝+蒸馏训练。
3.如果先对神经网络模型进行量化感知训练,然后再进行非结构化剪枝,由于非结构化剪枝过程仅更新卷积层的参数,而不会同步更新量化模型(经过量化感知训练的带有伪量化节点的神经网络模型)中伪量化节点的参数,会导致量化模型的伪量化节点参数引入新的偏差,影响最终量化模型的精度。
4.如果先对神经网络模型进行非结构化剪枝,然后再进行量化感知训练,经过非结构化剪枝后得到的稀疏浮点模型容易加重量化感知训练的不稳定性,影响最终量化模型的精度。
5.另外,蒸馏训练往往是用结构更复杂的大模型当老师,在输入相同的训练数据集合的条件下,令神经网络模型的输出去拟合大模型的输出,该过程需要同步计算大模型的输出。蒸馏通常会使整个训练时间延长一倍以上(因为计算大模型输出的耗时会更久),因此不论是先进行量化感知训练再进行非结构化剪枝,还是先进行非结构化剪枝再进行量化感知训练,如果添加蒸馏训练则整个训练过程耗时会大幅增加。


技术实现要素:



6.本技术实施例提供一种神经网络模型压缩方法、装置和系统,用于实现非结构化剪枝、量化感知训练、蒸馏训练相结合,可提升模型性能,减少模型的精度损失。
7.为达到上述目的,本技术的实施例采用如下技术方案:第一方面,提供了一种神经网络模型压缩方法,包括:s1、根据训练数据集合对第一神经网络模型和第二神经网络模型进行训练直至收敛,第二神经网络模型的结构复杂度高于第一神经网络模型的结构复杂度;训练后的第一神经网络模型的第一卷积层中包括第一伪量化节点、第二伪量化节点,第一伪量化节点用于在第一卷积层的权重和输入的特征图进行卷积运算前对卷积层的权重进行量化和反量化,第二伪量化节点用于在第一卷积层的权重和输入的特征图进行卷积运算前对输入的特征图进行量化和反量化;s2、对第一神经网络模型的第二卷积层进行非结构化剪枝直至进行非结构化剪枝的第二卷积层的稀疏度均达到第一目标稀疏度;s3、将第二神经网络模型作为老师对第一神经网络模型进行蒸馏量化训练,直到满足蒸馏量化训练结束条件;s4、判断是否继续进行非结构化剪枝,如果不再进行非结构化剪枝,则结束非结构化剪枝的迭代过程,否则增加第一目标稀疏度,并重新开始执行步骤s2。
8.本技术提供的神经网络模型压缩方法,将量化感知训练、非结构化剪枝与蒸馏训练三种技术结合,分为非结构化剪枝与蒸馏量化训练两个阶段。应理解,在训练时,输入的特征图和权重均在进行卷积计算之前,经过了伪量化节点进行了量化和反量化,所以实质上在对第一神经网络模型进行蒸馏训练的同时,也实现了对第一神经网络模型进行量化感知训练,因此合称为蒸馏量化训练。也就是说,该蒸馏量化训练是量化感知训练和蒸馏训练的结合。由此可见,非结构化剪枝与蒸馏量化训练两个阶段,实质是量化感知训练、非结构化剪枝与蒸馏训练三种技术的结合。
9.其中,量化感知训练和非结构化剪枝都可以提升模型的推理速度;因此,这两种技术的结合能够尽可能的提升模型的推理速度。进一步的,量化感知训练和非结构化剪枝过程中的模型压缩难免会带来模型的精度损失,而采用上述蒸馏训练可以降低模型压缩带来的精度损失。综上所述,这三种技术的结合,可以利用每个技术的优势,提升模型的推理速度,减少模型的精度损失,从而获取最大化的性能收益。
10.进一步的,将非结构化剪枝与蒸馏量化训练两个阶段交替进行。相比于将量化感知训练与非结构化剪枝拆开先后进行,本方案可以避免先量化感知训练再非结构化剪枝导致的伪量化节点没有同步更新的现象,也可以避免先非结构化剪枝后量化感知训练所导致的稀疏模型加重量化训练不稳定性的问题,同时可以降低训练的耗时。
11.在一种可能的实施方式中,蒸馏量化训练的训练轮次随着第二卷积层的稀疏度的增加而增加。
12.在最初几次非结构化剪枝,由于进行非结构化剪枝的第二卷积层的稀疏度较低,模型整体的信息损失相对较少,通过较少轮次的蒸馏量化训练即可以达到精度要求,因此非结构化剪枝前期训练较少轮次以提升非结构化剪枝的效率。随着非结构化剪枝的次数增加,进行非结构化剪枝的第二卷积层的稀疏度逐渐增大,模型整体的信息损失越来越多,就需要逐渐增加蒸馏量化训练的训练轮次以维持量化模型的精度。
13.在一种可能的实施方式中,判断是否继续进行非结构化剪枝,包括:如果所有进行非结构化剪枝的第二卷积层的稀疏度与增量稀疏度之和均大于第二目标稀疏度,则不再进行非结构化剪枝,否则进行下一轮非结构化剪枝的迭代过程,第二目标稀疏度大于或等于第一目标稀疏度。
14.在一种可能的实施方式中,对卷积层进行非结构化剪枝时,按照第二卷积层中的有效权重的绝对值从小到大的顺序对该第二卷积层中的有效权重进行置零。该有效权重指在之前所有的非结构化剪枝过程中,未被置零的权重。其中,非结构化剪枝过程中已经置零的权重参数,在蒸馏量化训练过程中始终保持不变。
15.应注意,非结构化剪枝过程中,第二卷积层已经置零的权重参数,在蒸馏量化训练过程中始终保持不变。也就是说,对于在之前的非结构化剪枝过程中已经置零的权重,在之后的蒸馏量化训练过程中始终为零,不再更新。并且,在之前的非结构剪枝过程中已经置零的权重,在之后的非结构化剪枝过程中不再重复置零。原因在于:绝对值较小的权重对于神经网络模型输出的最终结果的影响更小,可以认为其重要性更低,因此优先对绝对值较小的有效权重进行置零。
16.在一种可能的实施方式中,满足蒸馏量化训练结束条件指训练轮次达到轮次门限并且损失函数的值小于损失门限,损失函数的值用于衡量第一神经网络模型与第二神经网
络模型在输入相同训练数据集合的条件下,输出结果的差别。损失函数的值用于评估第一神经网络模型的模型精度。
17.在一种可能的实施方式中,还包括:在进行蒸馏量化训练时,更新第一神经网络模型的所有层的参数。其中,第一神经网络模型的所有层的参数包括:上述第一卷积层中第一伪量化节点的参数和第二伪量化节点的参数。
18.其中,在进行蒸馏量化训练时,就更新第一神经网络模型中包括第一伪量化节点的参数和第二伪量化节点在内的所有层的参数,可以避免现有技术中先进行量化感知训练后进行非结构化剪枝时,伪量化节点没有同步更新的问题。
19.当然,第一神经网络模型的所有层的参数不仅包括上述第一卷积层中第一伪量化节点的参数和第二伪量化节点的参数,还可以包括第一神经网络模型的其他层的参数,以及第一卷积层中除第一伪量化节点和第二伪量化节点之外其他节点的参数,本技术对此不作限制。
20.在一种可能的实施方式中,上述第一卷积层包括第一神经网络模型中、全部或部分支持量化的卷积层。第二卷积层包括第一神经网络模型中、全部或部分卷积层。其中,第一卷积层与第二卷积层可以相同,也可以不同。
21.本方案中,上述插入伪量化节点的第一卷积层与进行非结构化剪枝的第二卷积层可以独立设置。具体的,不插入伪量化节点的卷积层,可以进行非结构化剪枝;插入伪量化节点的卷积层,也可以进行非结构化剪枝。一个卷积层是否插入伪量化节点,并不影响该卷积层是否进行非结构化剪枝。
22.第二方面,提供了一种神经网络模型压缩装置,包括处理器和存储器,存储器中存储指令,当处理器执行指令时,如第一方面及其任一实施方式所述的方法被执行。
23.第三方面,提供了一种神经网络模型压缩系统,包括电子设备以及第二方面所述的神经网络模型压缩装置,神经网络模型压缩装置压缩神经网络模型后发送给电子设备。
24.第四方面,提供了一种计算机可读存储介质,包括指令,当指令在神经网络模型压缩装置上运行时,使得神经网络模型压缩装置执行如第一方面及其任一实施方式所述的方法。
25.第五方面,提供了一种包含指令的计算机程序产品,当指令在上述神经网络模型压缩装置上运行时,使得该神经网络模型压缩装置执行如第一方面及其任一实施方式所述的方法。
26.第六方面,提供了一种芯片系统,该芯片系统包括处理器,用于支持神经网络模型压缩装置实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括接口电路,接口电路可用于从其它装置(例如存储器)接收信号,或者,向其它装置(例如通信接口)发送信号。该芯片系统可以包括芯片,还可以包括其他分立器件。
27.第二方面至第六方面的技术效果参照第一方面及其任一实施方式的技术效果,在此不再重复。
附图说明
28.图1为本技术实施例提供的一种神经网络模型压缩系统的架构示意图;图2为本技术实施例提供的一种神经网络模型压缩装置的结构示意图;
图3为本技术实施例提供的一种神经网络模型压缩方法的流程示意图;图4为本技术实施例提供的一种神经网络模型的一层的结构示意图;图5为本技术实施例提供的一种芯片系统的结构示意图。
具体实施方式
29.首先对本技术涉及的一些概念进行描述。
30.本技术实施例涉及的术语“第一”、“第二”等仅用于区分同一类型特征的目的,不能理解为用于指示相对重要性、数量、顺序等。
31.本技术实施例涉及的术语“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
32.本技术实施例涉及的术语“耦合”、“连接”应做广义理解,例如,可以指物理上的直接连接,也可以指通过电子器件实现的间接连接,例如通过电阻、电感、电容或其他电子器件实现的连接。
33.神经网络模型的训练与模型压缩技术:神经网络模型的训练数据集合中每组训练数据包括神经网络模型的输入和对应的标签,标签表示输入数据对应的真实输出值。神经网络模型的训练过程是通过不断更新神经网络模型的参数,让神经网络模型在输入每组训练数据的输入数据后,使其输出结果逐渐拟合该组训练数据中的标签。拟合的好坏通常通过损失函数来评估,其中,损失函数的值用于衡量神经网络模型的输出与真实输出之间的差距,即损失函数的值越小则认为神经网络模型拟合的越好。通常情况下,结构较复杂的神经网络模型(参数量大,结构复杂度高,简称大模型)的拟合能力更好,即学习能力更强,结构相对简单的神经网络模型(参数量小,结构复杂度低,简称小模型)的拟合能力相对较差。由于大模型的参数量较大,因此大模型的推理时间更长。神经网络模型的推理时间指从向神经网络模型输入数据开始直至计算得到输出结果的时间。
34.因此虽然大模型的表达能力很强,但是因为推理时间更长而难以实际应用。实际应用场景中电子设备需要在较短时间内得到模型的输出结果。例如,手机上的语音识别,手机摄像或拍照程序,二维码检测识别等,均需要短时间内可以得到神经网络模型的输出结果。为了提升神经网络模型在电子设备上的推理速度,除了设计轻量级的神经网络结构外,还会对现有的神经网络模型做压缩处理。本技术涉及的模型压缩技术包括知识蒸馏、非结构化剪枝和量化。
35.蒸馏训练技术:本技术涉及的蒸馏训练是指预先训练一个大模型,然后在小模型的训练过程中,让大模型作为老师引导小模型训练,具体地,在小模型的训练过程中,不再使小模型的输出结果拟合数据集的标签,而是拟合大模型在输入相同输入数据时的输出结果。蒸馏训练的目的是提升小模型的拟合能力,也就是学习能力,由于小模型的参数量相对较少,因此学习能力相对较弱,直接训练很难收敛到与大模型相同的程度,即小模型的输出结果与实际值的误差难以下降到与大模型同样的程度。因此在训练过程中,将大模型在输入相同输入数
据时的输出结果作为输入数据的标签,让小模型的输出结果去拟合大模型的输出,收敛到与大模型相近的程度,可以提升小模型的学习能力。上述让大模型作为老师来引导小模型学习的过程称为蒸馏训练。由于蒸馏训练过程中,对于每组训练数据的输入数据来说,除了要用于计算小模型的输出结果,还要用于同步计算大模型的输出结果,并且因为大模型的参数量更大,计算得到大模型输出结果的时间会更久,因此蒸馏训练的过程耗时会比直接训练的耗时增加一倍以上。
36.非结构化剪枝:剪枝是指对神经网络模型进行修剪,可以粗略分为结构化剪枝和非结构化剪枝。其中,结构化剪枝通过修剪神经网络模型的结构,减少模型的参数量来提升神经网络模型的推理速度,因此结构化剪枝会改变神经网络模型的结构。假设神经网络模型(例如卷积神经网络模型)包含5层卷积层,分别为[l1,l2,l3,l4,l5]。其中,l2包含8个形状为3*3的卷积核,则l2的8个卷积核中每个卷积核都有3*3=9个权重参数(即可以看作3*3的矩阵),则l2的权重可以看作8*3*3的矩阵。结构化剪枝可以直接修剪神经网络模型的一个卷积层,比如修剪l4,修剪后的神经网络模型仅剩4个卷积层,如[l1,l2,l3,l5]。结构化剪枝也可以修剪神经网络模型的一个或多个卷积层的卷积核,比如将l2层中的8个卷积核修剪为5个卷积层,修剪后神经网络模型的l2层还剩5个形状为3*3的卷积核。结构化剪枝还可以修剪神经网络模型中一个或多个卷积层的卷积核的形状,比如将l2层中的8个卷积核的形状从3*3修剪为2*2,修剪后神经网络模型的l2层的8个卷积核中每个卷积核都有2*2=4个权重参数(即可以看作2*2的矩阵)。综上所述,上述的三种结构化剪枝方法均会改变神经网络模型的结构。
[0037]
不同的是,本技术涉及的非结构化剪枝,不会对神经网络模型的结构进行修剪,而是将神经网络模型的一个或多个卷积层中的卷积核中的部分权重参数置0,即将权重矩阵中的一部分权重数值置0得到稀疏矩阵(即部分数值为0的矩阵)。结合上述实例,神经网络模型的l2层的第二个卷积核,原始的权重矩阵为[[0.5,0.4,-0.2],[-0.1,0.3,0.25],[0.15,-0.6,0.35]];经过非结构化剪枝,变成权重稀疏矩阵[[0.5,0.4,0],[0,0.3,0],[0.-0.6,0.35]],而神经网络模型的结构未改变。非结构化剪枝需要依赖支持矩阵稀疏计算的硬件平台,来获得性能收益。
[0038]
本技术中涉及的稀疏度指:神经网络模型某卷积层中,置零的权重参数的数量占总权重参数数量的比值。假设神经网络模型某卷积层包含3个形状为2*2的卷积核,则该卷积层的权重可以看作是3*2*2的矩阵,且该卷积层包含12个权重参数。假设该卷积层的权重矩阵为[[[0.5,-0.3],[-0.7,0.2]],[[0.45,0.25],[-0.6,0.15]],[[-0.5,0.2],[0.1,-0.15]]],经过非结构化剪枝后变成[[[0.5,-0.3],[-0.7,0]],[[0.45,0],[-0.6,0]],[[-0.5,0],[0,0]]]。经过非结构化剪枝的权重矩阵中,置零的权重参数的数量是6个,总权重参数数量是12,则该卷积层的稀疏度为0.5。
[0039]
量化和反量化:量化和反量化本质上都是对数值范围进行调整,可以简单的理解为一种映射。其中,量化是指将浮点数转换为定点数,例如,将数值从单精度浮点数(float)、双精度浮点数(double)等浮点型数值转换为16位整型(int16)、8位整型(int8)等整型数值。一个32位浮点数(float32)占4个字节,而一个8位整型(int8)最多只占1个字节,因此量化的优势不仅是整型数值在内存读取上比浮点型数值快了几倍,而且定点运算也会比浮点运算更容易实
现硬件加速。
[0040]
量化虽然可以提升模型性能,但是会导致模型的精度损失,比如将32位浮点数(float32)转换为8位整型(int8),因为32位浮点数(float32)能保持的数值范围比8位整型(int8)多,会有大量数值无法用8位整型(int8)表示,只能四舍五入成8位整型(int8)的数值。
[0041]
反量化过程是将定点数转为浮点数,例如,反量化可以指将8位整型(int8)的数值转换为32位浮点数(float32)。
[0042]
公式1-公式4中,假设表示浮点实数,表示经过量化后的定点实数,s表示浮点数和定点数之间的映射比例,z表示浮点实数0经过量化后对应的定点值。公式3和公式4中,表示的最大值,表示的最小值,表示的最大值,表示的最小值。量化过程见公式2,round表示四舍五入,反量化过程见公式1。
[0043]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式1
ꢀꢀꢀꢀꢀꢀꢀꢀ
公式2
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式3
ꢀꢀꢀꢀꢀ
公式4量化感知训练:量化感知训练指在神经网络模型的训练过程中,对神经网络模型所有或部分可量化的层插入伪量化节点,通过进行量化与反量化来模拟上述量化过程引入的截断(四舍五入)误差,从而让神经网络模型能更好的适应量化带来的误差。例如,以对神经网络模型(如卷积神经网络模型)的所有卷积层进行量化感知训练(即对所有卷积层插入伪量化节点)为例。在对卷积神经网络模型的所有卷积层进行量化感知训练过程中,在卷积层的权重与输入的特征图进行卷积计算前,分别对卷积层的权重与输入的特征图进行量化与反量化。其中,卷积层的权重与特征图的量化过程可以将浮点为数转换为不同的比特位整型,例如权重的量化过程可以将32位浮点数(float32)转换为8位整型(int8),特征图的量化过程可以将32位浮点数(float32)转换为16位整型(int16)。
[0044]
上述神经网络模型的模型压缩技术可以相结合,不论是量化感知训练还是非结构化剪枝,为了降低训练效果损失,可以添加大模型进行蒸馏训练,即量化感知训练+蒸馏训练,非结构化剪枝+蒸馏训练。
[0045]
但是,如本技术背景技术中所述,上述模型压缩技术的结合,可能会因为量化感知训练和非结构化剪枝执行的先后,而影响最终量化模型的精度;并且,不论是先进行量化感知训练再进行非结构化剪枝,还是先进行非结构化剪枝再进行量化感知训练,如果添加蒸馏训练会使整个训练过程耗时大幅增加,导致模型训练效率非常低。
[0046]
为了解决上述问题,本技术实施例提供一种神经网络模型压缩方法。该方法中,可以将量化感知训练、非结构化剪枝与蒸馏训练三种方法结合,分为非结构化剪枝与蒸馏量化训练两个阶段。其中,上述蒸馏量化训练是量化感知训练和蒸馏训练的结合。具体的,在
训练时,输入的特征图和权重均在进行卷积计算之前,经过了伪量化节点进行了量化和反量化,所以实质上在对第一神经网络模型进行蒸馏训练的同时,也实现了对第一神经网络模型进行量化感知训练,因此合称为蒸馏量化训练。
[0047]
其中,量化感知训练和非结构化剪枝都可以提升模型的推理速度;因此,这两种技术的结合能够尽可能的提升模型的推理速度。进一步的,量化感知训练和非结构化剪枝过程中的模型压缩难免会带来模型的精度损失,而采用上述蒸馏训练可以降低模型压缩带来的精度损失。综上所述,这三种技术的结合,可以利用每个技术的优势,提升模型的推理速度,减少模型的精度损失,从而获取最大化的性能收益。
[0048]
并且,将非结构化剪枝与蒸馏量化训练两个阶段交替进行。相比于将量化感知训练与非结构化剪枝拆开先后进行,本方案可以避免先量化感知训练再非结构化剪枝导致的伪量化节点没有同步更新的现象,也可以避免先非结构化剪枝后量化感知训练所导致的稀疏模型加重量化训练不稳定性的问题,同时可以降低训练的耗时。
[0049]
上述神经网络模型压缩方法可以应用于神经网络模型压缩系统。如图1所示,本技术实施例提供了一种神经网络模型压缩系统,包括神经网络模型压缩装置11和电子设备12。神经网络模型压缩装置11用于执行本技术提供的神经网络模型压缩方法,以将压缩后的神经网络模型发送给电子设备12,并在电子设备12上运行。所述电子设备12可以为智能音箱、手机、平板、笔记本电脑、智能眼镜、手持终端等电子产品。
[0050]
应理解,部署有上述压缩后的神经网络模型的电子设备12可以利用该压缩后的神经网络模型执行二维码检测和人脸识别等目标检测任务,还可以执行拍照或摄像等图像处理任务。相比于压缩前的神经网络模型,电子设备12采用压缩后的神经网络模型执行上述任务,其模型的推理时间可以减少,可以减少提升上述目标检测任务的响应时延,提升目标检测任务的处理效率。
[0051]
图2示出了神经网络模型压缩装置的一种可能的结构,神经网络模型压缩装置11可以包括至少一个处理器111、通信线路112、存储器113以及至少一个通信接口114。通信线路112可以包括一通路,在上述组件之间传送信息。通信接口114使用任何收发器一类的装置,用于与其他设备通信。存储器113中存储指令,当处理器111执行所述指令时,如图3所示的神经网络模型压缩方法被执行。
[0052]
本技术实施例涉及的处理器可以是一个芯片。例如,可以是现场可编程门阵列(field programmable gate array,fpga)、专用集成芯片(application specific integrated circuit,asic)片上系统(system on chip,soc)、中央处理器(central processor unit,cpu)、网络处理器(network processor,np)、数字信号处理电路(digital signal processor,dsp)、微控制器(micro controller unit,mcu)、可编程控制器(programmable logic device,pld)或其他集成芯片。
[0053]
本技术实施例涉及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器
(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0054]
以下实施例中,结合附图详细介绍本技术实施例提供的神经网络模型压缩方法。如图3所示,该神经网络模型压缩方法包括:s101、根据训练数据集合对第一神经网络模型进行训练直至收敛,并且根据相同的训练数据集合对第二神经网络模型进行训练直至收敛。
[0055]
其中,第一神经网络模型和第二神经网络模型经过训练后为浮点模型,即神经网络模型中各层的权重为浮点数。第一神经网络模型为结构相对简单的小模型,第二神经网络模型为结构复杂的大模型,即第二神经网络模型的结构复杂度高于第一神经网络模型的结构复杂度。第二神经网络模型经过训练后作为对第一神经网络模型进行蒸馏训练时的老师。特别地,第一神经网络模型可以为卷积神经网络模型。
[0056]
s102、向第一神经网络模型的第一卷积层插入第一伪量化节点和第二伪量化节点。
[0057]
本技术实施例对如何确定所述第一卷积层不作限定,例如,所述第一卷积层可以基于重要性进行选择(例如优先选择重要性低的层),或者,所述第一卷积层可以基于性能收益(例如优先选择性能收益高的层)来选择。
[0058]
伪量化节点用于在对第一卷积层的权重以及该卷积层输入的特征图进行卷积计算前,对权重以及特征图均进行量化和反量化,从而模拟量化的损失,令神经网络模型学习到量化损失的部分。其中,特征图指前一层的输出结果。具体的,上述训练后的第一神经网络模型的第一卷积层中包括第一伪量化节点、第二伪量化节点。该第一伪量化节点用于在第一卷积层的权重和输入的特征图进行卷积运算前,对第一卷积层的权重进行量化和反量化。第二伪量化节点用于在第一卷积层的权重和输入的特征图进行卷积运算前,对输入的特征图进行量化和反量化。
[0059]
如图4所示,第一神经网络模型的第一卷积层包括第一伪量化节点41、第二伪量化节点42。第一伪量化节点41用于在第一卷积层的权重和输入的特征图进行卷积运算前,对第一卷积层的权重进行量化和反量化。例如,将权重从浮点数量化至8位整型,再从8位整型反量化至浮点数。第二伪量化节点42用于在第一卷积层的权重和输入的特征图进行卷积运算前对该卷积层输入的特征图进行量化和反量化。例如,将特征图从浮点数量化至16位整型,再从16位整型反量化至浮点数。
[0060]
伪量化节点(例如第一伪量化节点或第二伪量化节点)的量化过程如公式5所示,伪量化节点的反量化过程如公式6所示,其中,round表示四舍五入,v表示伪量化节点的输入,表示伪量化节点的参数,表示将按照进行截断(即保留区间内的值),表示伪量化节点的参数的最小值,表示伪量化节点的参数的最大值:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式5
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式6初始化时权重的浮点数最大值为1,初始化权重的浮点数最小值为0,初始化特征图的浮点数最大值为1,初始化特征图的浮点数最小值为-1。
[0061]
s103、对第一神经网络模型的第二卷积层进行非结构化剪枝(稀疏化),直至进行非结构化剪枝的第二卷积层的稀疏度均达到第一目标稀疏度。
[0062]
选择插入伪量化节点的第一卷积层与选择进行非结构化剪枝的第二卷积层是可以独立设置的。插入第一伪量化节点和第二伪量化节点的第一卷积层与进行非结构化剪枝的第二卷积层可以不同,也可以相同。
[0063]
需要说明的是,上述第一卷积层可以包括一个或多个卷积层。即可以对一个或多个卷积层插入伪量化节点。上述第二卷积层也可以包括一个或多个卷积层。即可以对一个或多个卷积层进行非结构化剪枝。应注意,第一卷积层和第二卷积层分别可以包括一个或多个卷积层,第一卷积层和第二卷积层所包括的卷积层可以不同。在一些实施例中,上述第一卷积层和第二卷积层也可以相同。
[0064]
以下详细介绍本技术实施例中,上述插入伪量化节点的第一卷积层与进行非结构化剪枝的第二卷积层的设置方法:通常,可以对第一神经网络模型中,全部支持量化的卷积层都插入伪量化节点。当然,也可以仅对第一神经网络模型中,部分支持量化的卷积层插入伪量化节点。也就是说,上述第一卷积层可以包括第一神经网络模型中,全部或部分支持量化的卷积层。
[0065]
可以对第一神经网络模型中的所有卷积层(其中,第一神经网络模型中除卷积层之外,还包括其他层,如激活层、全连接层等)进行非结构化剪枝。当然,也可以仅选取第一神经网络模型中的部分卷积层进行非结构化剪枝。也就是说,上述第二卷积层可以包括第一神经网络模型中,全部或部分卷积层。
[0066]
应注意,上述插入伪量化节点的第一卷积层与进行非结构化剪枝的第二卷积层可以独立设置,具体是指:不插入伪量化节点的卷积层,可以进行非结构化剪枝;插入伪量化节点的卷积层,也可以进行非结构化剪枝。一个卷积层是否插入伪量化节点,并不影响该卷积层是否进行非结构化剪枝。
[0067]
综上所述,可以对第一神经网络模型的支持量化的所有卷积层都插入伪量化节点,也可以仅对部分卷积层插入伪量化节点。可以对第一神经网络模型的所有卷积层进行非结构化剪枝,也可以仅对部分卷积层进行非结构化剪枝。
[0068]
对第二卷积层进行非结构化剪枝,即为对该第二卷积层中的权重矩阵稀疏化。在对第二卷积层进行非结构化剪枝时,优先对该第二卷积层的权重矩阵中绝对值较小的有效权重置零,有效权重指在之前所有的非结构化剪枝过程中,未被置零的权重。例如,按照第二卷积层的有效权重的绝对值从小到大的顺序对第二卷积层的有效权重置零。原因在于:绝对值较小的权重对于神经网络模型输出的最终结果的影响更小,可以认为其重要性更
低,因此优先对绝对值较小的有效权重进行置零。
[0069]
应注意,非结构化剪枝过程中,第二卷积层已经置零的权重参数,在蒸馏量化训练过程中始终保持不变。也就是说,对于在之前的非结构化剪枝过程中已经置零的权重,在之后的蒸馏量化训练过程中始终为零,不再更新。并且在之前的非结构化剪枝过程中已经置零的权重,在之后的非结构化剪枝过程中不再重复置零。
[0070]
示例性的,假设第一目标稀疏度为1/4,第一神经网络模型的一个卷积层(即第二卷积层)的权重矩阵为[[[1,-3],[2,5]],[[-1.5,0.5],[2,-3]],[[4,-1.2],[-3,-2]]]。
[0071]
该第一神经网络的第二卷积层在第一轮非结构化剪枝过程中,该第二卷积层的权重矩阵的变化过程是:[[[1,-3],[2,5]],[[-1.5,0],[2,-3]],[[4,-1.2],[-3,-2]]],此时该第二卷积层的权重矩阵的稀疏度为1/12,未达到第一目标稀疏度1/4,继续进行第一轮非结构化剪枝,[[[0,-3],[2,5]],[[-1.5,0],[2,-3]],[[4,-1.2],[-3,-2]]],此时该第二卷积层的权重矩阵的稀疏度为1/6,未达到第一目标稀疏度1/4,继续进行第一轮非结构化剪枝,[[[0,-3],[2,5]],[[-1.5,0],[2,-3]],[[4,0],[-3,-2]]],此时,该第二卷积层的权重矩阵的稀疏度为1/4,达到第一目标稀疏度1/4,可以停止本轮非结构化剪枝。
[0072]
需要说明的是,进行非结构化剪枝的各个第二卷积层可以采用相同的第一目标稀疏度。
[0073]
s104、将第二神经网络模型作为老师对第一神经网络模型进行蒸馏量化训练,直到满足蒸馏量化训练结束条件。
[0074]
由于在训练时,输入的特征图和权重均在进行卷积计算之前,经过了伪量化节点进行了量化和反量化,所以实质上在对第一神经网络模型进行蒸馏训练的同时,也实现了对第一神经网络模型进行量化感知训练,合称蒸馏量化训练。
[0075]
在进行蒸馏量化训练时,令量化感知模型的输出去拟合第二神经网络模型在相同的输入数据时的输出,以提升第一神经网络模型的学习能力,获得更好的效果。
[0076]
满足蒸馏量化训练结束条件可以指训练轮次达到轮次门限并且损失函数的值小于损失门限,由于蒸馏量化训练是令第一神经网络模型去学习第二神经网络模型,所以损失函数的值用于衡量第一神经网络模型与第二神经网络模型在输入相同训练数据集合的条件下,输出结果的差别。损失函数的值用于评估第一神经网络模型的模型精度。
[0077]
蒸馏量化训练的训练轮次随着第二卷积层的稀疏度的增加而增加,即非结构化剪枝的力度越大,第一神经网络模型需要训练的轮次越多。由于每次非结构化剪枝都会带来信息的损失,所以在进行非结构化剪枝之后要训练整个模型来恢复神经网络模型的精度。在最初几次非结构化剪枝,由于进行非结构化剪枝的第二卷积层的稀疏度较低,模型整体的信息损失相对较少,通过较少轮次的蒸馏量化训练即可以达到精度要求,因此非结构化剪枝前期训练较少轮次以提升非结构化剪枝的效率。随着非结构化剪枝的次数增加,进行非结构化剪枝的第二卷积层的稀疏度逐渐增大,模型整体的信息损失越来越多,就需要逐渐增加蒸馏量化训练的训练轮次以维持量化模型的精度。当训练轮次达到门限,则通过损失函数来评估当前神经网络模型的质量,损失函数的值用于衡量当前神经网络模型在输入相同数据集时的输出结果与实际值的差别(由于增加了蒸馏训练,此处的损失函数的值指在输入相同数据集时,当前神经网络模型的输出结果与大模型mt的输出结果之间的差别),当损失函数的值小于损失门限时,就认为训练已经满足要求,进入下一轮的剪枝。
[0078]
蒸馏量化训练的过程中,非结构化剪枝过程中已经被置零的权重参数始终不变。并且,在进行蒸馏量化训练时,可以更新第一神经网络模型的所有层的参数。第一神经网络模型的所有层的参数可以包括:上述第一卷积层中的第一伪量化节点的参数和第二伪量化节点的参数。
[0079]
本技术实施例中,是在进行蒸馏量化训练时,就更新第一神经网络模型的所有层的参数。其中,在进行蒸馏量化训练时,就更新第一神经网络模型中包括第一伪量化节点的参数和第二伪量化节点在内的所有层的参数,可以避免现有技术中先进行量化感知训练后进行非结构化剪枝时,伪量化节点没有同步更新的问题。
[0080]
当然,第一神经网络模型的所有层的参数不仅包括上述第一卷积层中第一伪量化节点的参数和第二伪量化节点的参数,还可以包括第一神经网络模型的其他层的参数,以及第一卷积层中除第一伪量化节点和第二伪量化节点之外其他节点的参数,本技术对此不作限制。
[0081]
s105、判断是否继续进行非结构化剪枝,如果不再进行非结构化剪枝,则结束非结构化剪枝的迭代过程,训练结束。否则增加第一目标稀疏度,并重新开始执行步骤s103。
[0082]
如果所有进行非结构化剪枝的第二卷积层的稀疏度与增量稀疏度(见步骤s103)之和均大于第二目标稀疏度,则不再进行非结构化剪枝,否则进行下一轮非结构化剪枝。如果进行下一轮非结构化剪枝,可以将第一目标稀疏度增加增量稀疏度,即第一目标稀疏度=第一目标稀疏度+增量稀疏度,并重新开始执行步骤s103。其中,第二目标稀疏度大于或等于第一目标稀疏度。
[0083]
下面举例说明上述工作过程。
[0084]
示例性的,假设第一目标稀疏度为1/4,第二目标稀疏度为1/2,增量稀疏度(即每轮非结构化剪枝相比上一轮非结构化剪枝需要增加的稀疏度)为1/4,第一神经网络模型的一个卷积层(即第二卷积层)的权重矩阵是3*2*2的矩阵:[[[1,-3],[2,5]],[[-1.5,0.5],[2,-3]],[[4,-1.2],[-3,-2]]]。
[0085]
在步骤s103,该第二卷积层做第一轮非结构化剪枝,即按照该第二卷积层权重参数绝对值由小到大的顺序置零权重参数,在第一轮非结构化剪枝过程中,该卷积层权重矩阵变化为: [[[1,-3],[2,5]],[[-1.5,0],[2,-3]],[[4,-1.2],[-3,-2]]],此时该第二卷积层的权重稀疏度为1/12,未达到第一目标稀疏度1/4,继续进行第一轮非结构化剪枝,[[[0,-3],[2,5]],[[-1.5,0],[2,-3]],[[4,-1.2],[-3,-2]]],此时该第二卷积层的权重稀疏度为1/6,未达到第一目标稀疏度1/4,继续进行第一轮非结构化剪枝,[[[0,-3],[2,5]],[[-1.5,0],[2,-3]],[[4,0],[-3,-2]]],此时该第二卷积层的权重矩阵的稀疏度为1/4,达到第一目标稀疏度1/4。该第二卷积层的第一轮非结构化剪枝可以停止,开始执行步骤s104。
[0086]
在步骤s104,已经置零的权重保持不变,而是训练其他未置零的权重。假设训练满足蒸馏量化训练结束条件,该第二卷积层的权重矩阵变成:[[[0,-2.8],[2.2,4.7]],[[-1.2,0],[2.1,-3.2]],[[3.8,0],[-2.9,-1.7]]],该第二卷积层的权重矩阵的稀疏度仍为1/4,开始执行步骤s105。
[0087]
在步骤s105,由于第二卷积层的权重矩阵的稀疏度1/4与增量稀疏度之和1/4不大于第二目标稀疏度1/2,可以进行下一轮非结构化剪枝(即第二轮非结构化剪枝),所以增加
第一目标稀疏度。增加后的第一目标稀疏度1/2=第一目标稀疏度1/4+增量稀疏度1/4,并重新开始执行步骤s103。
[0088]
在第二轮非结构化剪枝中,第一目标稀疏度为1/2,第二目标稀疏度为1/2,增量稀疏度为1/4。
[0089]
在步骤s103,该第二卷积层做第二轮非结构化剪枝,该卷积层权重矩阵变化为:[[[0,-2.8],[2.2,4.7]],[[0,0],[2.1,-3.2]],[[3.8,0],[-2.9,-1.7]]],此时该第二卷积层的权重稀疏度为1/3,未达到第一目标稀疏度1/2,继续进行第二轮非结构化剪枝, [[[0,-2.8],[2.2,4.7]],[[0,0],[2.1,-3.2]],[[3.8,0],[-2.9,0]]],此时该第二卷积层的权重稀疏度为5/12,未达到第一目标稀疏度1/2,继续进行第二轮非结构化剪枝,[[[0,-2.8],[2.2,4.7]],[[0,0],[0,-3.2]],[[3.8,0],[-2.9,0]]],此时该第二卷积层的权重矩阵的稀疏度为1/2,达到第一目标稀疏度1/2。该第二卷积层的第二轮非结构化剪枝可以停止,开始执行步骤s104。
[0090]
在步骤s104,已经置零的权重保持不变,而是训练其他未置零的权重。假设训练满足蒸馏量化训练结束条件,该第二卷积层的权重矩阵变成:[[[0,-2.6],[2.4,4.5]],[[0,0],[0,-3.5]],[[3.2,0],[-2.4,0]]],该第二卷积层的权重矩阵的稀疏度仍为1/2,开始执行步骤s105。
[0091]
在步骤s105,由于第二卷积层的权重矩阵的稀疏度1/2与增量稀疏度1/4之和大于第二目标稀疏度1/2,则不再进行下一轮的非结构化剪枝,即训练结束。
[0092]
需要说明的是,进行非结构化剪枝的各个第二卷积层可以采用相同的第二目标稀疏度以及相同的增量稀疏度。
[0093]
本技术提供的神经网络模型压缩方法,将量化感知训练、非结构化剪枝与蒸馏训练三种技术结合,分为非结构化剪枝与蒸馏量化训练两个阶段。其中,上述蒸馏量化训练是量化感知训练和蒸馏训练的结合。具体的,在训练时,输入的特征图和权重均在进行卷积计算之前,经过了伪量化节点进行了量化和反量化,所以实质上在对第一神经网络模型进行蒸馏训练的同时,也实现了对第一神经网络模型进行量化感知训练,因此合称为蒸馏量化训练。
[0094]
由此可见,非结构化剪枝与蒸馏量化训练两个阶段,实质是量化感知训练、非结构化剪枝与蒸馏训练三种技术的结合。其中,量化感知训练和非结构化剪枝都可以提升模型的推理速度;因此,这两种技术的结合能够尽可能的提升模型的推理速度。进一步的,量化感知训练和非结构化剪枝过程中的模型压缩难免会带来模型的精度损失,而采用上述蒸馏训练可以降低模型压缩带来的精度损失。综上所述,这三种技术的结合,可以利用每个技术的优势,提升模型的推理速度,减少模型的精度损失,从而获取最大化的性能收益。
[0095]
并且,将非结构化剪枝与蒸馏量化训练两个阶段交替进行。相比于将量化感知训练与非结构化剪枝拆开先后进行,本方案可以避免先量化感知训练再非结构化剪枝导致的伪量化节点没有同步更新的现象,也可以避免先非结构化剪枝后量化感知训练所导致的稀疏模型加重量化训练不稳定性的问题,同时可以降低训练的耗时。
[0096]
如图5所示,本技术实施例还提供一种芯片系统。该芯片系统50包括至少一个处理器501和至少一个接口电路502。至少一个处理器501和至少一个接口电路502可通过线路互联。处理器501用于支持神经网络模型压缩装置实现上述方法实施例中的各个步骤,例如图
3所示的方法,至少一个接口电路502可用于从其它装置(例如存储器)接收信号,或者,向其它装置(例如通信接口)发送信号。该芯片系统可以包括芯片,还可以包括其他分立器件。
[0097]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括指令,当指令在上述神经网络模型压缩装置上运行时,使得该神经网络模型压缩装置执行上述方法实施例中的各个步骤,例如执行图3所示的方法。
[0098]
本技术实施例还提供一种包括指令的计算机程序产品,当指令在上述神经网络模型压缩装置上运行时,使得该神经网络模型压缩装置执行上述方法实施例中的各个步骤,例如执行图3所示的方法。
[0099]
关于神经网络模型压缩装置、芯片系统、计算机可读存储介质、计算机程序产品的技术效果参照前面方法实施例的技术效果。
[0100]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0101]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0102]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0103]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0104]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个设备,或者也可以分布到多个设备上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0105]
另外,在本技术各个实施例中的各功能模块可以集成在一个设备中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个设备中。
[0106]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一
个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0107]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:


1.一种神经网络模型压缩方法,其特征在于,包括:s1、根据训练数据集合对第一神经网络模型和第二神经网络模型进行训练直至收敛,所述第二神经网络模型的结构复杂度高于所述第一神经网络模型的结构复杂度;训练后的所述第一神经网络模型的第一卷积层中包括第一伪量化节点、第二伪量化节点,所述第一伪量化节点用于在所述第一卷积层的权重和输入的特征图进行卷积运算前,对所述第一卷积层的权重进行量化和反量化,所述第二伪量化节点用于在所述第一卷积层的权重和输入的特征图进行卷积运算前,对输入的特征图进行量化和反量化;s2、对所述第一神经网络模型的第二卷积层进行非结构化剪枝,直至进行非结构化剪枝的第二卷积层的稀疏度均达到第一目标稀疏度;s3、将所述第二神经网络模型作为老师对所述第一神经网络模型进行蒸馏量化训练,直到满足蒸馏量化训练结束条件;s4、判断是否继续进行非结构化剪枝,如果不再进行非结构化剪枝,则结束非结构化剪枝的迭代过程,否则增加所述第一目标稀疏度,并重新开始执行步骤s2。2.根据权利要求1所述的方法,其特征在于,所述蒸馏量化训练的训练轮次随着所述第二卷积层的稀疏度的增加而增加。3.根据权利要求1或2所述的方法,其特征在于,所述判断是否继续进行非结构化剪枝,包括:如果所有进行非结构化剪枝的第二卷积层的稀疏度与增量稀疏度之和均大于第二目标稀疏度,则不再进行非结构化剪枝,否则进行下一轮非结构化剪枝,所述第二目标稀疏度大于或等于所述第一目标稀疏度。4.根据权利要求1或2所述的方法,其特征在于,对所述第二卷积层进行非结构化剪枝时,按照所述第二卷积层的有效权重的绝对值从小到大的顺序对所述第二卷积层的有效权重进行置零,所述有效权重指在之前所有的非结构化剪枝过程中,未被置零的权重;其中,非结构化剪枝过程中,所述第二卷积层中已经置零的权重参数,在蒸馏量化训练过程中保持不变。5.根据权利要求1或2所述的方法,其特征在于,所述满足蒸馏量化训练结束条件指训练轮次达到轮次门限并且损失函数的值小于损失门限,所述损失函数的值用于衡量所述第一神经网络模型与所述第二神经网络模型在输入相同训练数据集合的条件下,输出结果的差别。6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:在进行蒸馏量化训练时,更新所述第一神经网络模型的所有层的参数;其中,所述第一神经网络模型的所有层的参数包括:所述第一卷积层中所述第一伪量化节点的参数和所述第二伪量化节点的参数。7.根据权利要求1或2所述的方法,其特征在于,所述第一卷积层包括所述第一神经网络模型中、全部或部分支持量化的卷积层;所述第二卷积层包括所述第一神经网络模型中、全部或部分卷积层;其中,所述第一卷积层与所述第二卷积层相同,或者,所述第一卷积层与所述第二卷积层不同。8.一种神经网络模型压缩装置,其特征在于,包括处理器和存储器,所述存储器中存储
指令,当所述处理器执行所述指令时,如权利要求1-7任一项所述的方法被执行。9.一种神经网络模型压缩系统,其特征在于,包括电子设备以及如权利要求8所述的神经网络模型压缩装置;所述神经网络模型压缩装置压缩神经网络模型后发送给所述电子设备,由所述电子设备运行压缩后的神经网络模型。10.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在神经网络模型压缩装置上执行时,使得所述神经网络模型压缩装置执行如权利要求1-7任一项所述的方法。

技术总结


本申请公开一种神经网络模型压缩方法、装置和系统,用于实现非结构化剪枝、量化感知训练、蒸馏训练相结合,可提升模型性能,减少模型的精度损失。模型训练方法包括:根据训练数据集合对第一神经网络模型和第二神经网络模型进行训练直至收敛,第一神经网络模型的第一卷积层包括第一伪量化节点、第二伪量化节点;S2、对第一神经网络模型的第二卷积层进行非结构化剪枝,直至进行非结构化剪枝的第二卷积层的稀疏度均达到第一目标稀疏度;将第二神经网络模型作为老师对第一神经网络模型进行蒸馏量化训练,直到满足蒸馏量化训练结束条件;如果不再进行非结构化剪枝,则结束非结构化剪枝的迭代过程,否则增加第一目标稀疏度,并重新开始执行步骤S2。始执行步骤S2。始执行步骤S2。


技术研发人员:

姚万欣

受保护的技术使用者:

荣耀终端有限公司

技术研发日:

2022.11.08

技术公布日:

2022/12/19

本文发布于:2024-09-20 10:53:28,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/40150.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:卷积   神经网络   模型   结构化
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议