一种模型剪枝方法、装置及电子设备与流程

文档序号:31658504发布日期:2022-09-27 22:41阅读:49来源:国知局
一种模型剪枝方法、装置及电子设备与流程

1.本发明涉及模型压缩技术领域,特别是涉及一种模型剪枝方法、装置及电子设备。


背景技术:

2.当前,随着人工智能技术的不断发展,各种模型被越来越多的应用到各个领域中,例如,图像识别、语音交互、智能安防等。
3.其中,模型中的各个网络层中可能存在大量的冗余参数,从而,导致各个网络层中可能存在大量激活值趋近于0的神经元,由于这些神经元对于模型的模型性能几乎没有贡献,因此,在将这些神经元去除后,模型具有与去除这些神经元之前的模型相同的模型表达能力。上述情况被称为过参数化,而去除上述神经元的技术则被称为模型剪枝。
4.为了节约模型所占用的硬件资源,加速模型的推理过程,减少模型的计算量,以便于模型在嵌入式端、移动端等的部署,通常,可以利用模型剪枝去除模型中对模型的模型性能的贡献较小的冗余参数。
5.相关技术中,模型剪枝的方法为:针对训练完成的模型,去除该模型的不同子结构,并对子结构去除后的模型进行结构微调,进而,选取微调后模型性能最好的模型进行重新训练,得到剪枝后的最终模型。
6.然而,在上述相关技术中,在选取微调后模型性能最好的模型时,需要推理完整个模型,并且,需要对所选取的模型进行重新训练,才可以得到剪枝后的最终模型,从而,导致增加了模型剪枝的时间,降低了模型剪枝的效率。


技术实现要素:

7.本发明实施例的目的在于提供一种模型剪枝方法、装置及电子设备,以实现减少模型剪枝的时间,提高模型剪枝的效率。具体技术方案如下:
8.第一方面,本发明实施例提供了一种模型剪枝方法,所述方法包括:
9.确定待剪枝模型中的各个目标网络层;
10.确定每个目标网络层中的各个指定参数对应的敏感性指标;
11.基于所述待剪枝模型的预设剪枝率,在所确定的各个敏感性指标中,确定剪枝阈值;
12.去除每个目标网络层中,所对应敏感性指标小于所述剪枝阈值的各个指定参数,得到剪枝后的待剪枝模型。
13.可选的,一种具体实现方式中,所述方法还包括:
14.基于每个目标网络层中的所对应的敏感性指标小于所述剪枝阈值的指定参数的数量,计算每个目标网络层的剪枝率。
15.可选的,一种具体实现方式中,所述预设剪枝率包括:
16.所对应敏感性指标小于所述剪枝阈值的指定参数的数量与各个目标网络层所包括的全部指定参数的总数量的比值。
17.可选的,一种具体实现方式中,所述确定每个目标网络层中的各个指定参数对应的敏感性指标的步骤,包括:
18.针对每个目标网络层,基于去除该目标网络层中的每个指定参数时,该目标网络层的后置网络层的重构误差,确定该指定参数对应的敏感性指标。
19.可选的,一种具体实现方式中,所述基于去除该目标网络层中的每个指定参数时,该目标网络层的后置网络层的重构误差,确定该指定参数对应的敏感性指标的步骤,包括:
20.针对该目标网络层中的每个指定参数,确定去除该指定参数时,该目标网络层的后置网络层的输出结果,作为该指定参数对应的输出结果;
21.确定所述后置网络层的期望输出结果,并基于所述期望输出结果和每个指定参数对应的输出结果,确定去除该指定参数时,所述后置网络层的重构误差;
22.基于去除每个指定参数时,所述后置网络层的重构误差,确定该指定参数对应的敏感性指标。
23.可选的,一种具体实现方式中,所述确定所述后置网络层的期望输出结果的步骤,包括:
24.基于该目标网络层的第一输出结果,确定所述后置网络层的第二输出结果,并基于所述第二输出结果确定所述后置网络层的期望输出结果;
25.或者,
26.基于所述待剪枝模型所执行的任务,构建所述后置网络层的期望输出结果。
27.可选的,一种具体实现方式中,所述基于所述第二输出结果确定所述后置网络层的期望输出结果,包括:
28.将所述第二输出结果确定为所述后置网络层的期望输出结果;
29.或者,
30.利用预设算法对所述第二输出结果进行修正,并将修正后的所述第二输出结果确定为所述后置网络层的期望输出结果。
31.可选的,一种具体实现方式中,所述基于所述期望输出结果和每个指定参数对应的输出结果,确定去除该指定参数时,所述后置网络层的重构误差的步骤,包括:
32.计算所述期望输出结果与每个指定参数对应的输出结果的差值,作为去除该指定参数时,所述后置网络层的重构误差;
33.或者,
34.计算所述期望输出结果与每个指定参数对应的输出结果的相似度,作为去除该指定参数时,所述后置网络层的重构误差。
35.可选的,一种具体实现方式中,在所述基于去除每个指定参数时,所述后置网络层的重构误差,确定该指定参数对应的敏感性指标的步骤之前,所述方法还包括:
36.基于所述待剪枝模型所执行的任务,对去除每个指定参数时,所述后置网络层的重构误差进行加权修正,得到去除每个指定参数时,所述后置网络层的的修正误差;
37.所述基于去除每个指定参数时,所述后置网络层的重构误差,确定该指定参数对应的敏感性指标的步骤,包括:
38.基于去除每个指定参数时,所述后置网络层的修正误差,确定该指定参数对应的敏感性指标。
39.可选的,一种具体实现方式中,所述待剪枝模型为卷积神经网络模型,所述各个目标网络层为:所述待剪枝网络层中的各个卷积层和/或各个全连接层;
40.每个目标网络层的后置网络层为:该目标网络层的下一网络层。
41.第二方面,本发明实施例提供了一种模型剪枝装置,所述装置包括:
42.网络层确定模块,用于确定待剪枝模型中的各个目标网络层;
43.指标确定模块,用于确定每个目标网络层中的各个指定参数对应的敏感性指标;
44.阈值确定模块,用于基于所述待剪枝模型的预设剪枝率,在所确定的各个敏感性指标中,确定剪枝阈值;其中,所对应敏感性指标小于所述剪枝阈值的指定参数的数量与各个目标网络层所包括的全部指定参数的总数量的比值为所述预设剪枝率;
45.模型剪枝模块,用于去除每个目标网络层中,所对应敏感性指标小于所述剪枝阈值的各个指定参数,得到剪枝后的待剪枝模型。
46.可选的,一种具体实现方式中,所述装置还包括:
47.剪枝率计算模块,用于基于每个目标网络层中的所对应的敏感性指标小于所述剪枝阈值的指定参数的数量,计算每个目标网络层的剪枝率;
48.可选的,一种具体实现方式中,所述预设剪枝率包括:
49.所对应敏感性指标小于所述剪枝阈值的指定参数的数量与各个目标网络层所包括的全部指定参数的总数量的比值;
50.可选的,一种具体实现方式中,所述指标确定模块包括:指标确定子模块,用于针对每个目标网络层,基于去除该目标网络层中的每个指定参数时,该目标网络层的后置网络层的重构误差,确定该指定参数对应的敏感性指标;
51.可选的,一种具体实现方式中,所述指标确定子模块包括:结构确定单元,用于针对每个目标网络层中的每个指定参数,确定去除该指定参数时,该目标网络层的后置网络层的输出结果,作为该指定参数对应的输出结果;误差确定单元,用于针对每个目标网络层,确定所述后置网络层的期望输出结果,并基于所述期望输出结果和每个指定参数对应的输出结果,确定去除该指定参数时,所述后置网络层的重构误差;指标确定单元,用于针对每个目标网络层,基于去除每个指定参数时,所述后置网络层的重构误差,确定该指定参数对应的敏感性指标;
52.可选的,一种具体实现方式中,所述误差确定单元包括:第一确定子单元,用于针对每个目标网络层,基于该目标网络层的第一输出结果,确定所述后置网络层的第二输出结果,并基于所述第二输出结果确定所述后置网络层的期望输出结果;或者,第二确定子单元,用于针对每个目标网络层,基于所述待剪枝模型所执行的任务,构建所述后置网络层的期望输出结果;
53.可选的,一种具体实现方式中,所述第一确定子单元具体用于:针对每个目标网络层,将所述第二输出结果确定为所述后置网络层的期望输出结果;或者,针对每个目标网络层,利用预设算法对所述第二输出结果进行修正,并将修正后的所述第二输出结果确定为所述后置网络层的期望输出结果;
54.可选的,一种具体实现方式中,所述误差确定单元具体用于:针对每个目标网络层,计算所述期望输出结果与每个指定参数对应的输出结果的差值,作为去除该指定参数时,所述后置网络层的重构误差;或者,针对每个目标网络层,计算所述期望输出结果与每
个指定参数对应的输出结果的相似度,作为去除该指定参数时,所述后置网络层的重构误差;
55.可选的,一种具体实现方式中,所述装置还包括:误差修正模块,用于针对每个目标网络层,在所述基于去除每个指定参数时,所述后置网络层的重构误差,确定该指定参数对应的敏感性指标之前,基于所述待剪枝模型所执行的任务,对去除每个指定参数时,所述后置网络层的重构误差进行加权修正,得到去除每个指定参数时,所述后置网络层的修正误差;所述指标确定单元具体用于:针对每个目标网络层,基于去除每个指定参数时,所述后置网络层的修正误差,确定该指定参数对应的敏感性指标;
56.可选的,一种具体实现方式中,所述待剪枝模型为卷积神经网络模型,所述各个目标网络层为:所述待剪枝网络层中的各个卷积层和/或各个全连接层;每个目标网络层的后置网络层为:该目标网络层的下一网络层。
57.第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
58.存储器,用于存放计算机程序;
59.处理器,用于执行存储器上所存放的程序时,实现上述第一方面提供的任一模型剪枝方法的步骤。
60.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的任一模型剪枝方法的步骤。
61.第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提供的任一模型剪枝方法的步骤。
62.本发明实施例有益效果:
63.以上可见,应用本发明实施例提供的方案,在对待剪枝模型进行剪枝时,首先确定待剪枝模型中的各个目标网络层,进而,针对每个目标网络层,便可以确定该目标网络层中的每个指定参数对应的敏感性指标;从而,基于待剪枝模型的预设剪枝率,便可以在所确定的各个敏感性指标中,确定剪枝阈值。这样,针对每个目标网络层,便可以去除该网络层中,所对应敏感性指标小于上述剪枝阈值的各个指定参数,得到剪枝后的待剪枝模型。
64.基于此,应用本发明实施例提供的方案,在对待剪枝模型中的每个目标网络层进行剪枝时,可以通过该目标网络层中的各个指定参数对应的敏感性指标表征该指定参数对该目标网络层的后置网络层的影响,从而,根据该指定参数对该目标网络层的后置网络层的影响评估该指定参数的冗余程度,进而,利用各个指定参数对应的敏感度指标与基于预设剪枝率确定的剪枝阈值的大小关系,确定该目标网络层中需要去除的冗余程度较高,而对模型的模型性能的贡献较小的指定参数。在去除上述所确定的指定参数后,可以无需对剪枝后的模型进行训练,该剪枝后的模型仍然可以具有较高的模型性能。这样,可以减少模型剪枝的时间,提高模型剪枝的效率。
65.此外,由于无需推理完整个模型,因此,在对待剪枝模型进行剪枝时,便可以减少对cpu(central processing unit,中央处理器)、gpu(graphicsprocessing unit,图形处理器)等硬件资源的占用,节约硬件资源。并且,由于减少模型剪枝的时间,还可以更容易实现模型剪枝的批量进行。
66.当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
67.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
68.图1为本发明实施例提供的一种模型剪枝方法的流程示意图;
69.图2为本发明实施例提供的另一种模型剪枝方法的流程示意图;
70.图3为本发明实施例提供的另一种模型剪枝方法的流程示意图
71.图4为图2的s102a中针对每个目标网络层所执行的一种流程示意图;
72.图5为图2的s102a中针对每个目标网络层所执行的另一种流程示意图;
73.图6为一种利用sigmoid算法,所得到的特征点的重构误差变化的示意图;
74.图7为本发明实施例提供的一种模型剪枝装置的结构示意图;
75.图8为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
76.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本发明保护的范围。
77.相关技术中,模型剪枝的方法为:针对训练完成的模型,去除该模型的不同子结构,并对子结构去除后的模型进行结构微调,进而,选取微调后模型性能最好的模型进行重新训练,得到剪枝后的最终模型。然而,在上述相关技术中,在选取微调后模型性能最好的模型时,需要推理完整个模型,并且,需要对所选取的模型进行重新训练,才可以得到剪枝后的最终模型,从而,导致增加了模型剪枝的时间,降低了模型剪枝的效率。
78.为了解决上述技术问题,本发明实施例提供了一种模型剪枝方法。
79.其中,该方法可以适用于任一需要对训练完成的模型进行剪枝的应用场景,例如,在手机上部署图像识别模型、在嵌入式设备上部署语音识别模型等。并且,该方法可以应用于笔记本电脑、台式电脑、服务器等各类电子设备中,以下简称电子设备。其中,用于执行该方法的电子设备可以是一个独立的电子设备,也可以是某个系统或者设备集群中的至少一台电子设备。基于此,本发明实施例不对该方法的应用场景和执行主体进行具体行动。
80.本发明实施例提供的一种模型剪枝方法,可以包括如下步骤:
81.确定待剪枝模型中的各个目标网络层;
82.确定每个目标网络层中的各个指定参数对应的敏感性指标;
83.基于所述待剪枝模型的预设剪枝率,在所确定的各个敏感性指标中,确定剪枝阈值;
84.去除每个目标网络层中,所对应敏感性指标小于所述剪枝阈值的各个指定参数,
得到剪枝后的待剪枝模型。
85.以上可见,应用本发明实施例提供的方案,在对待剪枝模型进行剪枝时,首先确定待剪枝模型中的各个目标网络层,进而,针对每个目标网络层,便可以确定该目标网络层中的每个指定参数对应的敏感性指标;从而,基于待剪枝模型的预设剪枝率,便可以在所确定的各个敏感性指标中,确定剪枝阈值。这样,针对每个目标网络层,便可以去除该网络层中,所对应敏感性指标小于上述剪枝阈值的各个指定参数,得到剪枝后的待剪枝模型。
86.基于此,应用本发明实施例提供的方案,在对待剪枝模型中的每个目标网络层进行剪枝时,可以通过该目标网络层中的各个指定参数对应的敏感性指标表征该指定参数对该目标网络层的后置网络层的影响,从而,根据该指定参数对该目标网络层的后置网络层的影响评估该指定参数的冗余程度,进而,利用各个指定参数对应的敏感度指标与基于预设剪枝率确定的剪枝阈值的大小关系,确定该目标网络层中需要去除的冗余程度较高,而对模型的模型性能的贡献较小的指定参数。在去除上述所确定的指定参数后,可以无需对剪枝后的模型进行训练,该剪枝后的模型仍然可以具有较高的模型性能。这样,可以减少模型剪枝的时间,提高模型剪枝的效率。
87.此外,由于无需推理完整个模型,因此,在对待剪枝模型进行剪枝时,便可以减少对cpu(central processing unit,中央处理器)、gpu(graphicsprocessing unit,图形处理器)等硬件资源的占用,节约硬件资源。并且,由于减少模型剪枝的时间,还可以更容易实现模型剪枝的批量进行。
88.下面,结合附图,对本发明实施例提供的一种模型剪枝方法进行具体说明。
89.图1为本发明实施例提供的一种模型剪枝方法的流程示意图,如图1所示,该方法可以包括如下步骤:
90.s101:确定待剪枝模型中的各个目标网络层;
91.在对待剪枝模型进行剪枝时,可以首先确定该待剪枝模型中所需要进行剪枝的各个目标网络层,从而,对待剪枝模型的剪枝是通过对各个目标网络层进行剪枝实现的。
92.可选的,上述待剪枝模型可以为卷积神经网络模型;
93.可选的,待剪枝模型中的各个目标网络层可以是待剪枝模型中的各个卷积层和/或全连接层。
94.s102:确定每个目标网络层中的各个指定参数对应的敏感性指标;
95.针对模型的每个网络层,根据不同的粒度,可以从不同角度对该网络层进行参数划分,从而,得到与粒度相匹配的各个参数。
96.例如,上述粒度可以为:模型参数、卷积核、通道、卷积层等多种粒度中的任一粒度;这样,对于模型中而言,可以根据模型参数、卷积核、通道或卷积层等多种粒度,从多种不同角度对模型进行参数划分,得到各个模型参数、各个卷积核、各个通道或各个卷积层。
97.基于此,针对待剪枝模型中的每个目标网络层,便可以根据指定粒度,对该目标网络层进行参数划分,从而,得到与指定粒度相匹配的各个指定参数。
98.这样,针对待剪枝模型中的每个目标网络层,在得到该目标网络层中的各个指定参数后,便可以确定该目标网络层中的各个指定参数对应的敏感性指标。
99.其中,所谓敏感性是指:对于给定样本,模型输出的稳定程度,其可以理解为:对于已知样本而言,模型获取样本特征的鲁棒性。其中,模型的敏感性越高,则模型输出的稳定
程度越低,反之,模型输出的稳定程度越高。
100.相应的,针对每个指定参数而言,其敏感性越高,其对模型的模型性能的贡献的越大,冗余程度越小,从而,在去除该指定参数时,待剪枝模型的模型性能的下降程度越高;反之,其敏感性越低,其对模型的模型性能的贡献的越小,冗余程度越大,从而,在去除该指定参数时,待剪枝模型的模型性能的下降程度越低。这样,在对待剪枝模型中的每个目标网络层进行剪枝时,倾向于去除敏感性较低的指定参数。
101.而每个指定参数的敏感性高低可以通过该指定参数对应的敏感性指标表示,针对每个指定参数,其对应的敏感性指标越高,则该指定参数的敏感性越高;反之,其对应的敏感性指标越低,则该指定参数的敏感性越低。
102.可选的,一种具体实现方式中,如图2所示,上述步骤s102,可以包括如下步骤s102a:
103.s102a:针对每个目标网络层,基于去除该目标网络层中的每个指定参数时,该目标网络层的后置网络层的重构误差,确定该指定参数对应的敏感性指标。
104.其中,对于模型而言,模型中除最后一个网络层之外的各个网络层的输出结果,是该网络层的下一网络层的输入数据,从而,可以根据该网络层的输出结果,确定该网络层的下一网络层的输出结果。
105.这样,针对模型中除最后一个网络层之外的各个网络层,可以利用该网络层的输出结果,确定位于该网络层之后的各个网络层的输出结果。其中,位于该网络层之后的网络层可以称为该网络层的后置网络层。
106.也就是说,针对待剪枝模型中的每个目标网络层,可以利用该目标网络层的输出结果,确定该目标网络层的后置网络层的输出结果。并且,由于在对待剪枝模型进行剪枝时,需要利用各个目标网络层的后置网络层的重构误差,因此,待检测模型中的各个待检测网络层均不是待检测模型的最后一个网络层。
107.针对每个目标网络层,当该目标网络层获取到输入数据时,该目标网络层可以输出关于该输入数据的直接输出结果,并且,该直接输出结果是基于该目标网络层中的全部指定参数确定的。
108.相应的,针对每个目标网络层,当去除该目标网络层中的一个指定参数时,若该目标网络层仍然获取到上述输入数据,则该目标网络层可以输出关于该输入数据的非直接输出结果,并且,该非直接输出结果是基于该目标网络层中的剩余的各个指定参数确定的。
109.例如,目标网络层为卷积核为n(n》1)的卷积层,指定参数为卷积核,则在向目标网络层输入图片数据时,可以得到该目标网络层所学习到的关于该图片数据的n个特征图,并得到该目标网络层输出的有上述n个特征图确定的直接输出结果,该直接输出结果即为目标网络层的下一网络层的输入数据。
110.相应的,当去除上述目标网络层中的一个卷积核,且向去除卷积核后的目标网络层输入图片数据时,可以得到该去除卷积核后的目标网络层所学习到的关于该图片数据的n-1个特征图,并得到该去除卷积核后的目标网络层输出的有上述n-1个特征图确定的非直接输出结果,该非直接输出结果仍然可以作为该目标网络层的下一网络层的输入数据。
111.进而,针对每个目标网络层,考虑该目标网络层中的各个指定参数对模型的模型性能的贡献的大小,在去除该目标网络层中的不同指定参数时,该目标网络层的后置网络
层的实际输出结果与期望输出结果之间的误差可以不同,而该误差的不同,便可以反映该目标网络层中的不同指定参数对模型的模型性能的贡献的不同,即反映该目标网络层中的不同指定参数的敏感性。
112.基于此,针对每个目标网络层,便可以首先确定去除该目标网络层中的每个指定参数时,该目标网络层的后置网络层的重构误差,进而,针对该目标网络层中的每个指定参数,基于去除该指定参数时,该目标网络层的后置网络层的重构误差,确定该指定参数对应的敏感性指标。
113.可选的,每个目标网络层的后置网络层可以为该目标网络层的下一网络层。
114.在本具体实现方式中,在对待剪枝模型中的每个目标网络层进行剪枝时,可以根据该目标网络层中每个指定参数对该目标网络层的后置网络层的影响,确定评估该指定参数的冗余程度,且在确定该目标网络层中每个指定参数对应的敏感性指标时,仅仅需要推理每个目标网络层的后置网络层即可,而无法推理完整个模型。这样,可以进一步减少模型剪枝的时间,提高模型剪枝的效率。
115.s103:基于所述待剪枝模型的预设剪枝率,在所确定的各个敏感性指标中,确定剪枝阈值;
116.在确定出每个目标网络层中的每个参数指标对应的敏感性指标后,便可以基于待剪枝模型的预设剪枝率,在所确定的各个敏感性指标中,确定剪枝阈值。
117.其中,对模型进行剪枝的目的是在保证模型的模型性能的基础上,尽量减少模型的大小,降低模型推理时的计算量。例如,在保证模型的检出率和/或精确率满足检出需求和/或精度需求的基础上,尽量减少模型的大小。
118.这样,在对待剪枝模型进行剪枝时,用户可以根据实际应用的需求,确定待剪枝模型的预设剪枝率。
119.可选的,一种具体实现方式中,预设剪枝率包括:所对应敏感性指标小于剪枝阈值的指定参数的数量与各个目标网络层所包括的全部指定参数的总数量的比值。
120.在本具体实现方式中,考虑到在对待剪枝模型中的每个目标网络层进行剪枝时,倾向于去除敏感性较低的指定参数。并且,针对每个指定参数,其对应的敏感性指标越高,则该指定参数的敏感性越高;反之,其对应的敏感性指标越低,则该指定参数的敏感性越低。
121.那么,从待剪枝模型的整体角度考虑,在对待剪枝模型进行剪枝时,为了保证剪枝后的待剪枝模型具有较高的模型性能,也就倾向于去除各个目标网络层包括的全部指定参数中,敏感性较低的指定参数,即去除各个目标网络层包括的全部指定参数中,所对应敏感性指标较低的指定参数。
122.基于此,上述预设剪枝率可以表征:在各个目标网络层包括的全部指定参数中,需要去除的指定参数所占据的比例。从而,上述预设剪枝率可以包括:所对应敏感性指标小于剪枝阈值的指定参数的数量与各个目标网络层所包括的全部指定参数的总数量的比值。
123.这样,在确定出计算各个目标网络层包括的全部指定参数中,每个指定参数对应的敏感度指标后,计算上述预设剪枝率和上述全部指定参数的总数量的乘积,并按照所对应敏感度指标由小到大的顺序,对上述全部指定参数中的每个指定参数进行排序。这样,便可以查找到上述排序中,排列顺序为上述乘积加1的和值的指定参数。
124.显然,排列在该所查找到的指定参数之前的各个指定参数的数量与上述全部指定参数的数量的比例即为上述预设剪枝率,即该所查找到的指定参数之前的各个指定参数即为需要去除的各个指定参数,并且,排列在该所查找到的指定参数之前的各个指定参数对应的敏感度指标,均小于该所查找到的指定参数对应的敏感度指标。这样,便可以将所查找到的指定参数对应的敏感度指标确定为剪枝阈值。
125.也就是说,所对应敏感性指标小于上述剪枝阈值的指定参数的数量与上述全部指定参数的总数量的比值为上述预设剪枝率。
126.其中,排列在该所查找到的指定参数之前的各个指定参数可以是属于不同的目标网络层的;也可以是属于同一目标网络层的,这都是合理的。
127.例如,上述全部指定参数的总数量为100,预设剪枝率为20%,则由于 100*20%=20,那么,在将上述100个指定参数,按照所对应的敏感度指标由小到大的顺序进行排序后,便可以将排列顺序为21的指定参数对应的敏感度指标确定为剪枝阈值。
128.s104:去除每个目标网络层中,所对应敏感性指标小于剪枝阈值的各个指定参数,得到剪枝后的待剪枝模型。
129.在确定出上述剪枝阈值后,针对每个目标网络层,便可以去除该目标网络层中,所对应敏感性指标小于上述剪枝阈值的各个指定参数,从而,完成对该目标网络层的剪枝。
130.这样,在完成对全部目标网络层的剪枝后,所对应敏感性指标小于上述剪枝阈值的指定参数被全部去除,并且,所去除的指定参数的数量与上述全部指定参数的比值为上述预设剪枝率。从而,在完成对全部目标网络层的剪枝后,所得到的模型,即为对待剪枝模型进行剪枝后的待剪枝模型。
131.其中,针对每个目标网络层,可以进一步根据该目标网络层中所去除的指定参数的数量,确定该目标网络层的剪枝率。
132.基于此,可选的,一种具体实现方式中,如图3所示,本发明实施例提供的一种模型剪枝方法,还可以包括如下步骤s105:
133.s105:基于每个目标网络层中的所对应的敏感性指标小于剪枝阈值的指定参数的数量,计算每个目标网络层的剪枝率。
134.在本具体实现方式中,针对每个目标网络层,可以确定该目标网络层中,所对应的敏感性指标小于剪枝阈值的指定参数的数量,从而,并可以基于该数量,计算该数量与该目标网络层所包括的全部指定参数的总数量的比值,则该比值即为该目标网络层的剪枝率。
135.其中,本发明实施例不对上述步骤s104和s105的执行顺序进行限定。
136.可选的,确定出剪枝阈值时,可以确定排列目标指定参数之前的各个参数所属的目标网络层,从而,确定每个目标网络层所包括的排列在目标指定参数之前的指定参数的数量,从而,计算该数量与该目标网络层所包括的全部指定参数的总数量的比值,得到该目标网络层的剪枝率。其中,目标指定参数即为:所对应的敏感性指标为所确定的剪枝阈值的指定参数。
137.可选的,针对每个目标网络层,可以统计该目标网络层中,所对应的敏感性指标小于剪枝阈值的指定参数的数量,从而,计算该数量与该目标网络层所包括的全部指定参数的总数量的比值,得到该目标网络层的剪枝率。
138.以上可见,应用本发明实施例提供的方案,在对待剪枝模型中的每个目标网络层
进行剪枝时,可以通过该目标网络层中的各个指定参数对应的敏感性指标表征该指定参数对该目标网络层的后置网络层的影响,从而,根据该指定参数对该目标网络层的后置网络层的影响评估该指定参数的冗余程度,进而,利用各个指定参数对应的敏感度指标与基于预设剪枝率确定的剪枝阈值的大小关系,确定该目标网络层中需要去除的冗余程度较高,而对模型的模型性能的贡献较小的指定参数。在去除上述所确定的指定参数后,可以无需对剪枝后的模型进行训练,该剪枝后的模型仍然可以具有较高的模型性能。这样,可以减少模型剪枝的时间,提高模型剪枝的效率。
139.此外,由于无需推理完整个模型,因此,在对待剪枝模型进行剪枝时,便可以减少对cpu(central processing unit,中央处理器)、gpu(graphicsprocessing unit,图形处理器)等硬件资源的占用,节约硬件资源。并且,由于减少模型剪枝的时间,还可以更容易实现模型剪枝的批量进行。
140.可选的,一种具体实现方式,如图4所示,上述步骤s102a,针对每个目标网络层,基于去除该目标网络层中的每个指定参数时,该目标网络层的后置网络层的重构误差,确定该指定参数对应的敏感性指标中,针对每个目标网络层,可以执行如下步骤s1021-s1023:
141.s1021:针对该目标网络层中的每个指定参数,确定去除该指定参数时,该目标网络层的后置网络层的输出结果,作为该指定参数对应的输出结果;
142.针对每个目标网络层中的每个指定参数,可以确定去除该指定参数后,该目标网络层的输出结果,并进一步基于所确定的输出结果,确定该目标网络层的后置网络层的输出结果,作为该指定参数对应的输出结果。
143.s1022:确定后置网络层的期望输出结果,并基于期望输出结果和每个指定参数对应的输出结果,确定去除该指定参数时,后置网络层的重构误差;
144.对于每个模型而言,针对该模型中的每个网络层,根据该模型所执行的任务,以及所期望达到的任务执行效果,每个网络层可以存在用户所期望该网络层输出的结果,当该网络层输出的结果为用户所期望输出的结果时,该模型可以取得满足用户预期的任务执行效果。
145.例如,当模型所执行的任务为目标检测任务时,输出结果中的box(目标框)区域的期望输出结果为1,box区域外的期望输出结果为0;当模型所执行的任务为分割任务时,输出结果中包含目标物的掩码区域的期望输出结果为1,其余区域的期望输出结果为0。
146.基于此,针对每个目标网络层,可以确定该目标网络层的后置网络层的期望输出结果。
147.进一步的,由于所谓重构误差为模型的期望输出结果与实际输出结果之间的差异,因此,对于每个目标网络层而言,上述所确定的各个指定参数对应的输出结果与上述该目标网络层的后置网络层的期望输出结果之间的差异,即为去除该指定参数时,该目标网络层的后置网络层的重构误差。
148.这样,便可以基于上述所确定的期望输出结果和每个指定参数对应的输出结果,确定去除该指定参数时,上述后置网络层的重构误差。并且,去除每个指定参数时,上述后置网络层的重构误差的大小取决于所去除的该指定参数对目标网络层的输出结果的影响的大小。
149.其中,当该指定参数对目标网络层的输出结果的影响的较大时,则去除每个指定
参数时,上述后置网络层的重构误差较大;当该指定参数对目标网络层的输出结果的影响的较小时,则去除每个指定参数时,上述后置网络层的重构误差较小。
150.s1023:基于去除每个指定参数时,后置网络层的重构误差,确定该指定参数对应的敏感性指标。
151.针对每个目标网络层,在确定出去除该目标网络层中的每个指定参数时,该目标网络层的后置网络层的重构误差后,便可以针对该目标网络层中的每个指定参数,基于去除该指定参数时,该目标网络层的后置网络层的后置网络层的重构误差,确定该指定参数对应的敏感性指标。
152.其中,上述敏感性指标可以为l1范数、l2范数、mse(mean squared error,均方误差)等,对此,本发明实施例不做具体限定。
153.针对待剪枝模型,当用户所期望达到的任务执行效果不同时,针对同一目标网络层,可以在去除不同的指定参数时,为该目标网络层的后置网络层设置不同的重构误差。从而,针对上述所确定的基于去除每个指定参数时,该目标网络层的后置网络层的后置网络层的重构误差,可以通过加权计算,来调整基于去除每个指定参数时,该目标网络层的后置网络层的后置网络层的重构误差。
154.基于此,可选的,一种具体实现方式,如图5所示,在上述步骤s102a中,针对每个目标网络层,还可以执行如下步骤s1024:
155.s1024:基于待剪枝模型所执行的任务,对去除每个指定参数时,后置网络层的重构误差进行加权修正,得到去除每个指定参数时,后置网络层的修正误差。
156.相应的,在本具体实现方式中,上述步骤s1023,可以包括如下步骤s1023a:
157.s1023a:基于去除每个指定参数时,后置网络层的修正误差,确定该指定参数对应的敏感性指标。
158.在本具体实现方式中,针对每个目标网络层,在确定去除每个指定参数时,后置网络层的重构误差后,还可以进一步确定待剪枝模型所执行的任务,从而,根据所期望得到的任务执行效果,对去除每个指定参数时,后置网络层的重构误差进行加权修正,得到去除每个指定参数时,后置网络层的修正误差,从而,基于去除每个指定参数时,后置网络层的修正误差,确定该指定参数对应的敏感性指标。
159.例如,当待剪枝模型所执行的任务为目标检测任务时,若更加关注检出率,希望待剪枝模型能够获取到更高的检出率,则可以通过加权,加重输出结果中 box区域的重构误差,而若更加关注背景的误报,希望待剪枝模型能够获取到更高的准确率,则可以通过加权,加重输出结果中非box区域的重构误差。
160.可选的,一种具体实现方式中,上述步骤s1022中,确定后置网络层的期望输出结果,可以包括如下步骤11:
161.步骤11:基于该目标网络层的第一输出结果,确定后置网络层的第二输出结果,并基于第二输出结果确定后置网络层的期望输出结果。
162.在本具体实现方式中,针对每个目标网络层,可以首先获取该目标网络层的第一输出结果,从而,该第一输出结果即为该目标网络层的下一网络层的输入数据,从而,可以利用该第一输出结果,确定该目标网络层的下一网络层的输出结果。进而,该目标网络层的下一网络层的输出结果,即为该下一网络层的下一网络层的输入数据,用于确定该下一网
络层的下一网络层的输出结果。
163.依次类推,便可以基于该目标网络层的第一输出结果,确定该目标网络层的后置网络层的第二输出结果。进而,便可以利用该第二输出结果,确定该目标网络层的后置网络层的期望输出结果。
164.可选的,针对每个目标网络层,可以直接将该目标网络层的后置网络层的第二输出结果确定为该目标网络层的后置网络层的期望输出结果。
165.可选的,针对每个目标网络层,可以利用预设算法对该目标网络层的后置网络层的第二输出结果进行修正,得到该目标网络层的后置网络层的修正输出结果,并将该修正输出结果确定为该目标网络层的后置网络层的期望输出结果。
166.其中,上述预设算法可以为:sigmoid算法、softmax算法、tanh算法等可以各种能够用于平衡模型网络层输出结果的各特征点的重构误差的算法。也就是说,当特征点的实际值与特定点的期望值的差距较大时,可以利用上述预设算法增加特征点的重构误差;当特征点的实际值与特定点的期望值的差距较小时,可以利用上述预设算法降低特征点的重构误差。
167.例如,如图6所示,上述预设算法为sigmoid算法时所得到的特征点的重构误差变化的示意图。其中,在坐标轴原点附近,特征点的实际值与特定点的期望值的差距被放大,而在横坐标轴的两侧,特征点的实际值与特定点的期望值的差距被缩小。
168.可选的,另一种具体实现方式中,上述步骤s1022中,确定后置网络层的期望输出结果,可以包括如下步骤12:
169.步骤12:基于待剪枝模型所执行的任务,构建后置网络层的期望输出结果。
170.在本具体实现方式中,针对每个目标网络层,在确定该目标网络层的后置网络层的期望输出结果时,可以基于待剪枝模型所执行的任务,构建该目标网络层的后置网络层的期望输出结果。
171.对于每个模型而言,针对该模型中的每个网络层,根据该模型所执行的任务,以及所期望达到的任务执行效果,每个网络层可以存在用户所期望该网络层输出的结果。
172.例如,当模型所执行的任务为目标检测任务时,输出结果中的box(目标框)区域的期望输出结果为1,box区域外的期望输出结果为0;当模型所执行的任务为分割任务时,输出结果中包含目标物的掩码区域的期望输出结果为1,其余区域的期望输出结果为0。
173.基于此,针对每个目标网络层,便可以基于待剪枝模型所执行的任务,确定所期望得到的任务执行效果,并根据上述所期望得到的任务执行效果,构建该目标网络层的后置网络层的期望输出结果。
174.可选的,一种具体实现方式中,上述步骤s1022中,基于期望输出结果和每个指定参数对应的输出结果,确定去除该指定参数时,后置网络层的重构误差,可以包括如下步骤21:
175.步骤21:计算期望输出结果与每个指定参数对应的输出结果的差值,作为去除该指定参数时,后置网络层的重构误差。
176.在本具体实现方式中,针对每个目标网络层,在确定出该目标网络层中的每个指定参数对应的输出结果,以及该目标网络层的后置网络层的期望输出结果后,可以计算上述期望输出结果与每个指定参数对应的输出结果的差值,从而,所得到的差值即为去除该
指定参数时,后置网络层的重构误差。
177.可选的,另一种具体实现方式中,上述步骤s1022中,基于期望输出结果和每个指定参数对应的输出结果,确定去除该指定参数时,后置网络层的重构误差,可以包括如下步骤22:
178.步骤22:计算期望输出结果与每个指定参数对应的输出结果的相似度,作为去除该指定参数时,后置网络层的重构误差。
179.在本具体实现方式中,针对每个目标网络层,在确定出该目标网络层中的每个指定参数对应的输出结果,以及该目标网络层的后置网络层的期望输出结果后,可以计算上述期望输出结果与每个指定参数对应的输出结果的相似度,从而,所得到的相似度即为去除该指定参数时,后置网络层的重构误差。
180.相应于上述本发明实施例提供的一种模型剪枝方法,本发明实施例还提供了一种模型剪枝装置。
181.图7为本发明实施例提供的一种模型剪枝装置的结构示意图,如图7所示,该装置可以包括如下模块:
182.网络层确定模块710,用于确定待剪枝模型中的各个目标网络层;
183.指标确定模块720,用于确定每个目标网络层中的各个指定参数对应的敏感性指标;
184.阈值确定模块730,用于基于所述待剪枝模型的预设剪枝率,在所确定的各个敏感性指标中,确定剪枝阈值;
185.模型剪枝模块740,用于去除每个目标网络层中,所对应敏感性指标小于所述剪枝阈值的各个指定参数,得到剪枝后的待剪枝模型。
186.以上可见,应用本发明实施例提供的方案,在对待剪枝模型中的每个目标网络层进行剪枝时,可以通过该目标网络层中的各个指定参数对应的敏感性指标表征该指定参数对该目标网络层的后置网络层的影响,从而,根据该指定参数对该目标网络层的后置网络层的影响评估该指定参数的冗余程度,进而,利用各个指定参数对应的敏感度指标与基于预设剪枝率确定的剪枝阈值的大小关系,确定该目标网络层中需要去除的冗余程度较高,而对模型的模型性能的贡献较小的指定参数。在去除上述所确定的指定参数后,可以无需对剪枝后的模型进行训练,该剪枝后的模型仍然可以具有较高的模型性能。这样,可以减少模型剪枝的时间,提高模型剪枝的效率。
187.此外,由于无需推理完整个模型,因此,在对待剪枝模型进行剪枝时,便可以减少对cpu(central processing unit,中央处理器)、gpu(graphicsprocessing unit,图形处理器)等硬件资源的占用,节约硬件资源。并且,由于减少模型剪枝的时间,还可以更容易实现模型剪枝的批量进行。
188.可选的,一种具体实现方式中,所述装置还包括:
189.剪枝率计算模块,用于基于每个目标网络层中的所对应的敏感性指标小于所述剪枝阈值的指定参数的数量,计算每个目标网络层的剪枝率。
190.可选的,一种具体实现方式中,所述预设剪枝率包括:所对应敏感性指标小于所述剪枝阈值的指定参数的数量与各个目标网络层所包括的全部指定参数的总数量的比值。
191.可选的,一种具体实现方式中,指标确定模块720包括:
192.指标确定子模块,用于针对每个目标网络层,基于去除该目标网络层中的每个指定参数时,该目标网络层的后置网络层的重构误差,确定该指定参数对应的敏感性指标。
193.可选的,一种具体实现方式中,所述指标确定子模块包括:
194.结构确定单元,用于针对每个目标网络层中的每个指定参数,确定去除该指定参数时,该目标网络层的后置网络层的输出结果,作为该指定参数对应的输出结果;
195.误差确定单元,用于针对每个目标网络层,确定所述后置网络层的期望输出结果,并基于所述期望输出结果和每个指定参数对应的输出结果,确定去除该指定参数时,所述后置网络层的重构误差;
196.指标确定单元,用于针对每个目标网络层,基于去除每个指定参数时,所述后置网络层的重构误差,确定该指定参数对应的敏感性指标。
197.可选的,一种具体实现方式中,所述误差确定单元包括:
198.第一确定子单元,用于针对每个目标网络层,基于该目标网络层的第一输出结果,确定所述后置网络层的第二输出结果,并基于所述第二输出结果确定所述后置网络层的期望输出结果;
199.或者,
200.第二确定子单元,用于针对每个目标网络层,基于所述待剪枝模型所执行的任务,构建所述后置网络层的期望输出结果。
201.可选的,一种具体实现方式中,所述第一确定子单元具体用于:
202.针对每个目标网络层,将所述第二输出结果确定为所述后置网络层的期望输出结果;
203.或者,
204.针对每个目标网络层,利用预设算法对所述第二输出结果进行修正,并将修正后的所述第二输出结果确定为所述后置网络层的期望输出结果。
205.可选的,一种具体实现方式中,所述误差确定单元具体用于:
206.针对每个目标网络层,计算所述期望输出结果与每个指定参数对应的输出结果的差值,作为去除该指定参数时,所述后置网络层的重构误差;
207.或者,
208.针对每个目标网络层,计算所述期望输出结果与每个指定参数对应的输出结果的相似度,作为去除该指定参数时,所述后置网络层的重构误差。
209.可选的,一种具体实现方式中,所述装置还包括:
210.误差修正模块,用于针对每个目标网络层,在所述基于去除每个指定参数时,所述后置网络层的重构误差,确定该指定参数对应的敏感性指标之前,基于所述待剪枝模型所执行的任务,对去除每个指定参数时,所述后置网络层的重构误差进行加权修正,得到去除每个指定参数时,所述后置网络层的修正误差;
211.所述指标确定单元具体用于:针对每个目标网络层,基于去除每个指定参数时,所述后置网络层的修正误差,确定该指定参数对应的敏感性指标。
212.可选的,一种具体实现方式中,所述待剪枝模型为卷积神经网络模型,所述各个目标网络层为:所述待剪枝网络层中的各个卷积层和/或各个全连接层;
213.每个目标网络层的后置网络层为:该目标网络层的下一网络层。
214.本发明实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
215.存储器803,用于存放计算机程序;
216.处理器801,用于执行存储器803上所存放的程序时,实现上述本发明实施例提供的任一模型剪枝方法的步骤。
217.上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponent interconnect,pci)总线或扩展工业标准结构(extended industrystandard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
218.通信接口用于上述电子设备与其他设备之间的通信。
219.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
220.上述的处理器可以是通用处理器,包括中央处理器(central processing unit, cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器 (digital signal processor,dsp)、专用集成电路(application specific integratedcircuit,asic)、现场可编程门阵列(field-programmable gate array,fpga) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
221.在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述本发明实施例提供的任一模型剪枝方法的步骤。
222.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述本发明实施例提供的任一模型剪枝方法的步骤。
223.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstate disk(ssd))等。
224.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖
非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
225.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、电子设备实施例、计算机可读存储介质实施例以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
226.以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1