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

神经网络压缩方法、装置、介质、电子设备及车辆与流程

2022-06-05 03:37:04 来源:中国专利 TAG:


1.本公开涉及人工智能技术领域,尤其涉及一种神经网络压缩方法、装置、介质、电子设备及车辆。


背景技术:

2.深度学习作为近年来发展极为迅速的科技领域,潜在的应用场景不计其数,有极高的实用价值。但是dnn(deep neural networks,深度神经网络)与传统机器学习算法相比,网络结构更加复杂,导致其计算开销和运行时的内存开销也比较大,无法达到实时性要求,严重限制了其在实际场景中的消费级设备上的应用,尤其是在自动驾驶领域。
3.因此,如何对现有的优良神经网络进行压缩,以减少计算代价和存储代价,是目前神经网络应用中亟待解决的问题。


技术实现要素:

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.滤波器确定模块,被配置为针对每个所述目标节点组,确定所述目标节点组对应的待裁剪滤波器;
66.所述压缩模块,还被配置为:
67.针对每个所述目标节点组,根据所述目标节点组对应的待裁剪滤波器,对所述目标节点组的目标节点和/或所述输出节点组的输出节点进行压缩处理。
68.可选地,所述滤波器确定模块,还被配置为:
69.确定所述目标节点组中每个滤波器对应的重要度;
70.根据所述重要度,从多个所述滤波器中确定所述目标节点组对应的待裁剪滤波器。
71.可选地,所述滤波器确定模块,还被配置为:
72.针对所述目标节点组的每个所述目标节点,确定所述目标节点的每个所述滤波器对应的待定重要度;
73.针对所述目标节点组中的每个所述滤波器,将所述滤波器对应的多个所述待定重要度的平均值,作为所述滤波器对应的重要度。
74.可选地,所述滤波器确定模块,还被配置为:
75.获取所述目标神经网络对应的预设压缩数量;
76.根据所述滤波器对应的重要度,从多个所述滤波器中确定重要度最低的所述预设压缩数量个待定滤波器;
77.将所述预设压缩数量个待定滤波器,作为所述待裁剪滤波器。
78.可选地,所述压缩模块,还被配置为:
79.针对所述目标节点组的每个所述目标节点,对所述目标节点中的所述待裁剪滤波器进行裁剪处理,得到所述目标节点对应的目标裁剪节点;
80.针对每个所述输出节点,根据所述待裁减滤波器确定待裁剪通道,并对所述输出节点中的所述待裁剪通道进行裁剪处理,得到所述输出节点对应的输出裁剪节点;
81.根据所述预设压缩数量,确定所述目标裁剪节点对应的输出通道属性信息和所述输出裁剪节点对应的输入通道属性信息;
82.根据所述输出通道属性信息和所述输入通道属性信息,更新所述目标神经网络的参数。
83.可选地,所述依赖节点组还包括第二依赖节点组,所述目标节点组划分模块,还被配置为:
84.确定多个所述关系节点中存在拼接关系的至少一个拼接关系节点;
85.针对每个所述拼接关系节点,确定所述拼接关系节点的多个拼接父节点,并将多个所述拼接父节点作为所述拼接关系节点对应的第二依赖节点组。
86.可选地,所述压缩模块,还被配置为:
87.在所述第一依赖节点组与所述第二依赖节点组中存在相同节点的情况下,确定所述第二依赖节点组中所述拼接父节点进行拼接处理后的滤波器的索引值;
88.按照所述索引值对所述第二依赖节点组对应的输出节点组的输出节点进行裁剪处理。
89.可选地,所述目标节点组划分模块,还被配置为:
90.确定所述目标神经网络中属于第一预设神经网络层的多个独立节点;
91.确定多个所述独立节点中不属于多个所述依赖节点组的多个目标独立节点;
92.将每个所述目标独立节点作为所述独立节点组。
93.可选地,所述输出节点组确定模块,还被配置为:
94.针对所述目标节点组的每个所述目标节点,执行输出节点组确定步骤;
95.其中,所述输出节点组确定步骤包括:
96.从所述目标节点的多个子节点中,确定距离所述目标节点最近且属于第一预设神经网络层的多个第一目标子节点;
97.针对每个所述第一目标子节点,确定所述第一目标子节点和所述第一目标子节点的根节点所组成的节点分支上,属于第二预设神经网络层的第二目标子节点,所述第一预设神经网络层的输出端与所述第二预设神经网络层的输入端耦合;
98.将多个所述第一目标子节点和多个所述第二目标子节点作为所述目标节点组对应的输出节点组。
99.根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的神经网络压缩方法的步骤。
100.根据本公开实施例的第四方面,提供一种电子设备,包括:
101.存储器,其上存储有计算机程序;
102.处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所提供的神经网络压缩方法的步骤。
103.根据本公开实施例的第五方面,提供一种车辆,包括:车身及第四方面所述的电子设备。
104.本公开的实施例提供的技术方案可以包括以下有益效果:通过获取待压缩的目标神经网络;将所述目标神经网络中能够进行剪枝处理的目标节点划分为多个目标节点组,所述目标节点组包括依赖节点组或者独立节点组,所述依赖节点组包括多个依赖节点,多个所述依赖节点之间存在依赖关系,所述独立节点组包括一个独立节点;针对每个所述目标节点组,确定所述目标节点组对应的输出节点组,所述输出节点组包括多个输出节点,所述目标节点组的目标节点的输出端与所述输出节点组的输出节点的输入端耦合;对所述目标节点组的目标节点和/或所述输出节点组的输出节点进行压缩处理,以得到所述目标神经网络对应的压缩神经网络。也就是说,本公开将能够进行剪枝处理的目标节点划分为多个目标节点组,其中存在依赖关系的依赖节点作为依赖节点组,独立节点作为独立节点组,以组为单位对神经网络的节点进行压缩处理,无需人工参与,可以自动处理目标神经网络中的依赖关系,这样,在保证目标神经网络的压缩效果的同时,提高了目标神经网络压缩的效率。
105.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
106.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
107.图1是根据本公开一示例性实施例示出的一种神经网络压缩方法的流程图;
108.图2是根据本公开一示例性实施例示出的另一种神经网络压缩方法的流程图;
109.图3是根据本公开一示例性实施例示出的一种神经网络裁剪示意图;
110.图4是根据本公开一示例性实施例示出的一种神经网络压缩装置的框图;
111.图5是根据本公开一示例性实施例示出的另一种神经网络压缩装置的框图;
112.图6是根据本公开一示例性实施例示出的一种电子设备的框图。
具体实施方式
113.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
114.首先,对本公开的应用场景进行说明。基于神经网络的剪枝主要包括非结构化剪枝和结构化剪枝,非结构化剪枝的裁剪对象是单个权重参数,结构化剪枝的裁剪对象是整组权重参数,包括神经元、滤波器、通道等,因此,非结构化剪枝很难在硬件上实现加速,而结构化剪枝则比较容易。现有的神经网络剪枝框架大部分是基于结构化剪枝算法的,例如,vega、nni、distiller、paddleslim等,这几种算法便于部署,不依赖于特定的编译器或硬件,具有较强的通用性。除此之外还有基于pattern剪枝的cocopie框架和基于细粒度结构化稀疏的nvidia的2:4fine-grained pruning剪枝框架,这两个框架于依赖特定的编译器和硬件,缺乏通用性和可扩展性,但在特定软硬件环境下通常可以达到较好的剪枝效果。
115.但是,本公开发明人发现,现有的剪枝算法在处理存在依赖关系的神经网络时,为了解决冲突导致的依赖,会偏离设置的稀疏度,导致最终的剪枝结果的加速效果比较差,另外,针对比较复杂的神经网络,还需要手动解决依赖关系,消耗大量的人力,且容易出错,导致神经网络压缩的效率比较低。
116.为了克服以上相关技术中存在的技术问题,本公开提供了一种神经网络压缩方法、装置、介质、电子设备及车辆,将能够进行剪枝处理的目标节点划分为多个目标节点组,其中存在依赖关系的依赖节点作为依赖节点组,独立节点作为独立节点组,以组为单位对神经网络的节点进行压缩处理,无需人工参与,可以自动处理目标神经网络中的依赖关系,这样,在保证目标神经网络的压缩效果的同时,提高了目标神经网络压缩的效率。
117.需要说明的是,本公开的神经网络压缩方法可以用于边缘设备,该边缘设备的存储空间比较小,能够支持的计算量比较少,示例地,该边缘设备可以是车辆、iot(internet of things)设备。
118.下面结合具体实施例对本公开进行说明。
119.图1是根据本公开一示例性实施例示出的一种神经网络压缩方法的流程图,如图1所示,该方法可以包括:
120.s101、获取待压缩的目标神经网络。
121.其中,该目标神经网络可以是包括第一预设神经网络层的神经网络,该第一预设神经网络层可以包括卷积层(conv2d)、线性层(linear)以及逆卷积层(convtranspose2d)中的一个或多个的神经网络,该第一预设神经网络层的输出端与第二预设神经网络层的输入端耦合,该第二预设神经网络层可以是batchnorm2d。
122.在本步骤中,可以先获取原始神经网络和样本集,参照现有技术的模型训练方法,通过该样本集对该原始神经网络进行训练,得到该目标神经网络。
123.s102、将该目标神经网络中能够进行剪枝处理的目标节点划分为多个目标节点组。
124.其中,该目标节点组可以包括依赖节点组或者独立节点组,该依赖节点组包括多个依赖节点,多个依赖节点之间存在依赖关系,该独立节点组包括一个独立节点。
125.在本步骤中,在获取该目标神经网络后,可以确定该目标神经网络中属于预设运算类型的多个关系节点,根据多个关系节点,确定该依赖节点组,并根据该依赖节点组,确定该独立节点组。其中,该预设运算类型可以包括多个节点参与运算的运算类型,示例地,该预设运算类型可以包括加法运算、乘法运算、减法运算以及拼接运算。
126.s103、针对每个目标节点组,确定该目标节点组对应的输出节点组。
127.其中,该输出节点组可以包括多个输出节点,该目标节点组的目标节点的输出端与该输出节点组的输出节点的输入端耦合。
128.在本步骤中,在将该目标神经网络中能够进行剪枝处理的目标节点划分为多个目标节点组后,针对每个目标节点组中的每个目标节点,可以执行输出节点组确定步骤,以得到该目标节点对应的多个第一目标子节点和多个第二目标节点,并将每个目标节点对应的多个第一目标子节点和多个第二目标子节点,作为该目标节点组对应的输出节点组。
129.其中,该输出节点组确定步骤可以包括:
130.s1、从该目标节点的多个子节点中,确定距离该目标节点最近且属于第一预设神经网络层的多个第一目标子节点。
131.将该目标节点作为根节点,以广度优先方式遍历该目标节点的子节点,确定该目标节点对应的所有分支上距离该目标节点最近,且节点类型属于该第一预设神经网络层的多个第一目标子节点。
132.s2、针对每个第一目标子节点,确定该第一目标子节点和该第一目标子节点的根节点所组成的节点分支上,属于第二预设神经网络层的第二目标子节点。
133.其中,该第一预设神经网络层的输出端与该第二预设神经网络层的输入端耦合。
134.针对该目标节点组中的每个目标节点均执行上述输出节点组确定步骤后,可以得到每个目标节点对应的多个第一目标子节点和多个第二目标子节点,之后,可以将该目标节点组中所有目标节点对应的多个第一目标子节点和多个第二目标子节点的组合,作为该目标节点组对应的输出节点组。
135.s104、对该目标节点组的目标节点和/或该输出节点组的输出节点进行压缩处理,以得到所该目标神经网络对应的压缩神经网络。
136.在本步骤中,针对每个目标节点组,可以先确定该目标节点组对应的待裁剪滤波器,并根据该待裁剪滤波器,对该目标节点组的目标节点和/或该输出节点组的输出节点进行压缩处理。其中,不同目标节点组对应的待裁剪滤波器可以不同。
137.在一种可能的实现方式中,若该目标节点组为依赖节点组,且该依赖节点组中的依赖节点为进行拼接运算的拼接节点,则可以仅对该目标节点组对应的输出节点组的输出节点进行压缩处理;若该目标节点组为依赖节点组且该依赖节点组中的依赖节点为进行加法预算、乘法运算或减法运算的节点,或者该目标节点组为该独立节点组,则可以对该目标节点组的目标节点和该输出节点组的输出节点进行压缩处理。
138.需要说明的是,上述压缩处理只是举例说明,针对现有技术的其它运算处理,也可以仅对该目标节点组的目标节点进行压缩处理,本公开对此不作限定。
139.采用上述方法,将能够进行剪枝处理的目标节点划分为多个目标节点组,其中存在依赖关系的依赖节点作为依赖节点组,独立节点作为独立节点组,以组为单位对神经网络的节点进行压缩处理,无需人工参与,可以自动处理目标神经网络中的依赖关系,这样,在保证目标神经网络的压缩效果的同时,提高了目标神经网络压缩的效率。
140.图2是根据本公开一示例性实施例示出的另一种神经网络压缩方法的流程图,如图2所示,该方法可以包括:
141.s201、获取待压缩的目标神经网络。
142.其中,该目标神经网络可以是包括第一预设神经网络层的神经网络,该第一预设神经网络层可以包括卷积层(conv2d)、线性层(linear)以及逆卷积层(convtranspose2d)中的一个或多个的神经网络,该第一预设神经网络层的输出端与第二预设神经网络层的输入端耦合,该第二预设神经网络层可以是batchnorm2d。
143.s202、确定该目标神经网络中属于预设运算类型的多个关系节点。
144.其中,该预设运算类型可以包括多个节点参与运算的运算类型,该预设运算类型可以包括加法运算、乘法运算、减法运算以及拼接运算示例地,示例地,该预设运算类型可以是'aten::add'、'aten::add_'、'aten::mul'、'aten::mul_'、'aten::sub'、'aten::sub_'以及'aten::cat'中的一个或多个。
145.在本步骤中,在获取该目标神经网络后,可以遍历该目标神经网络中的每个节点,确定每个节点的节点类型,并将该目标神经网络中节点类型为预设运算类型的节点作为该关系节点。
146.s203、根据多个关系节点,确定该依赖节点组。
147.其中,该依赖节点组可以包括第一依赖节点组和第二依赖节点组,该第二依赖节点组可以包括运算类型为拼接运算的关系节点,该第一依赖节点组可以包括运算类型为加法运算、乘法运算以及减法运算的关系节点。
148.在本步骤中,在确定该目标神经网络中属于预设运算类型的多个关系节点后,针对每个关系节点,可以先确定该关系节点的类型,若该关系节点的类型为非拼接节点,则可以通过方式一确定该第一依赖节点组,若该关系节点的类型为拼接节点,则可以通过方式二确定该第二依赖节点组。
149.方式一、确定每个关系节点的节点信息,针对每个关系节点,根据该关系节点的节点信息,确定该关系节点的父节点中,距离该关系节点最近且属于第一预设神经网络层的多个目标父节点,并将多个目标父节点作为该关系节点对应的第一依赖节点组。
150.确定该目标神经网络中每个关系节点的节点信息,该节点信息可以包括节点参数和连接关系,示例地,可以通过torch.jit.trace接口获取该目标神经网络中每个节点的节
点信息。进一步地,针对每个关系节点,可以将该关系节点作为根节点,通过广度遍历方式遍历该关系节点的多个父节点,将多个父节点中距离该关系节点最近且属于该第一预设神经网络层的多个目标父节点,作为该关系节点对应的第一依赖节点组。示例地,可以先遍历距离该关系节点的最近的多个第一父节点,确定多个第一父节点中是否存在属于该第一预设神经网络层的目标父节点,若多个第一父节点中存在属于该第一预设神经网络层的目标父节点,则将该目标父节点作为该关系节点对应的第一依赖节点组;若多个第一父节点中不存在属于该第一预设神经网络层的目标父节点,则遍历距离该关系节点次近的第二父节点(距离该第一父节点最近的父节点),确定多个第二父节点中是否存在属于该第一预设神经网络层的目标父节点,若多个第二父节点中存在属于该第一预设神经网络层的目标父节点,则将该目标父节点作为该关系节点对应的第一依赖节点组,若多个第二父节点中不存在属于该第一预设神经网络层的目标父节点,则参照上述方式继续遍历距离该关系节点更远的父节点,直至得到该关系节点对应的第一依赖节点组。
151.方式二、确定多个关系节点中存在拼接关系的至少一个拼接关系节点,针对每个拼接关系节点,确定该拼接关系节点的多个拼接父节点,并将多个拼接父节点作为该拼接关系节点对应的第二依赖节点组。
152.示例地,可以从多个关系节点中,确定类型为'aten::cat'的至少一个拼接关系节点,之后,针对每个拼接关系节点,可以将该拼接关系节点作为根节点,以广度优先方式遍历该拼接关系节点的多个拼接父节点,并将多个拼接父节点作为该拼接关系节点对应的第二依赖节点组。
153.s204、根据该依赖节点组,确定该独立节点组。
154.在本步骤中,在确定每个关系节点对应的依赖节点组后,可以确定该目标神经网络中属于第一预设神经网络层的多个独立节点,确定多个独立节点中不属于多个依赖节点组的多个目标独立节点,并将每个目标独立节点作为该独立节点组。
155.示例地,可以遍历该目标神经网络的每个节点,确定属于该第一预设神经网络层的多个独立节点,针对每个独立节点,确定该独立节点是否属于任一依赖节点组,若该独立节点不属于任一依赖节点组,则该独立节点即为目标独立节点,将该目标独立节点作为该独立节点组;若该独立节点属于任一依赖节点组,则对该独立节点不进行任何操作。
156.s205、针对该目标节点组的每个目标节点,执行输出节点组确定步骤,以得到该目标节点对应的多个第一目标子节点和多个第二目标节点。
157.其中,该输出节点组确定步骤可以包括:
158.从该目标节点的多个子节点中,确定距离该目标节点最近且属于第一预设神经网络层的多个第一目标子节点;针对每个第一目标子节点,确定该第一目标子节点和该第一目标子节点的根节点所组成的节点分支上,属于第二预设神经网络层的该第二目标子节点,该第一预设神经网络层的输出端与该第二预设神经网络层的输入端耦合。
159.s206、将每个目标节点对应的多个第一目标子节点和多个第二目标子节点,作为该目标节点组对应的输出节点组。
160.s207、确定该依赖节点组是否为第一依赖节点组,在该依赖节点组为第一依赖节点组的情况下,执行步骤s208~步骤s209,在该依赖节点组不是该第一依赖节点组(是第二依赖节点组)的情况下,执行步骤s210~s211。
161.s208、针对每个目标节点组,确定该目标节点组对应的待裁剪滤波器。
162.在本步骤中,针对每个目标节点组,可以确定该目标节点组中每个滤波器对应的重要度,根据该重要度,从多个滤波器中确定该目标节点组对应的待裁剪滤波器。
163.在一种可能的实现方式中,针对该目标节点组的每个目标节点,确定该目标节点的每个滤波器对应的待定重要度,针对该目标节点组中的每个滤波器,将该滤波器对应的多个待定重要度的平均值,作为该滤波器对应的重要度。
164.示例地,若目标节点组包括目标节点1、目标节点2以及目标节点3,该3个目标节点均包括a滤波器、b滤波器以及c滤波器,则针对该目标节点1,分别确定a滤波器对应的待定重要度、b滤波器对应的待定重要度以及c滤波器对应的待定重要度,针对该目标节点2,分别确定a滤波器对应的待定重要度、b滤波器对应的待定重要度以及c滤波器对应的待定重要度,针对该目标节点3,分别确定a滤波器对应的待定重要度、b滤波器对应的待定重要度以及c滤波器对应的待定重要度,这样,可以得到a滤波器对应的3个待定重要度、b滤波器对应的3个待定重要度以及c滤波器对应的3个待定重要度,最后,可以将a滤波器对应的3个待定重要度的平均值作为a滤波器对应的重要度,将b滤波器对应的3个待定重要度的平均值作为b滤波器对应的重要度,将c滤波器对应的3个待定重要度的平均值作为c滤波器对应的重要度。
165.进一步地,在确定该目标节点组中每个滤波器对应的重要度后,可以获取该目标神经网络对应的预设压缩数量,根据该滤波器对应的重要度,从多个滤波器中确定重要度最低的预设压缩数量个待定滤波器,并将该预设压缩数量个待定滤波器,作为该待裁剪滤波器。其中,该预设压缩数量可以根据试验预先测试得到,示例地,该预设压缩数量可以是32。
166.示例地,在确定该目标节点组中每个滤波器对应的重要度后,可以按照重要度由低至高的顺序对多个滤波器进行排序,之后,可以从多个滤波器中选择排序最靠前的预设压缩数量个待定滤波器,并将该预设压缩数量个待定滤波器,作为该待裁剪滤波器。继续以上述目标节点组为例,若该目标节点组中a滤波器对应的重要度最低,该预设压缩数量为1,则可以将a滤波器作为该待裁剪滤波器。
167.s209、针对每个目标节点组,根据该目标节点组对应的待裁剪滤波器,对该目标节点组的目标节点和/或该输出节点组的输出节点进行压缩处理。
168.在本步骤中,在确定每个目标节点组对应的待处理滤波器后,针对每个目标节点组,均可以根据该目标节点组对应的待裁剪滤波器,对该目标节点组的目标节点和该输出节点组的输出节点进行压缩处理。
169.下面以任一目标节点组为例进行说明,针对该目标节点组中的每个目标节点,对该目标节点中的该待裁剪滤波器进行裁剪处理,得到该目标节点对应的目标裁剪节点,针对每个输出节点,根据该待裁减滤波器确定待裁剪通道,并对该输出节点中的待裁剪通道进行裁剪处理,得到该输出节点对应的输出裁剪节点;根据该预设压缩数量,确定该目标裁剪节点对应的输出通道属性信息和该输出裁剪节点对应的输入通道属性信息;根据该输出通道属性信息和该输入通道属性信息,更新该目标神经网络的参数。
170.示例地,针对每个目标节点,可以按照该目标节点组对应的待裁剪滤波器对该目标节点进行裁剪处理,仅保留该目标节点中除该待裁剪滤波器之外的滤波器,以得到裁剪
后的目标裁剪节点,之后,可以按照该目标裁剪节点的滤波器对该目标裁剪节点的权重和偏置进行切片处理,示例地,可以将该目标裁剪节点的out_channels(['conv2d','linear','convtranspose2d'])或者num_features(['batchnorm2d'])的属性信息修改为保留的滤波器的数量。例如,若该目标节点的类型为'conv2d',该目标节点的权重尺寸为[64,64,3,3],该预设压缩数量为32,则该目标裁剪节点的权重尺寸为[32,64,3,3]。
[0171]
针对每个输出节点,确定该输出节点中与该待裁剪滤波器位置相同的待裁剪通道,对该输出节点中的待裁剪通道进行裁剪处理,得到该输出节点对应的输出裁剪节点,之后,可以在该输出裁剪节点权重的通道维度执行与该目标裁剪节点形同的切片操作,以上述目标节点为例,该通道维度可以是第1个维度。示例地,可以将该输出裁剪节点的in_channels(['conv2d','linear','convtranspose2d'])或num_features(['batchnorm2d'])属性修改为保留的滤波器的数量。
[0172]
s210、在该第一依赖节点组与该第二依赖节点组中存在相同节点的情况下,确定该第二依赖节点组中该拼接父节点进行拼接处理后的滤波器的索引值。
[0173]
在本步骤中,可以先确定该第一依赖节点组与该第二依赖节点组是否存在交集,在该第一依赖节点组与该第二依赖节点组存在交集的情况下,表示该第二依赖组中的依赖父节点存在依赖关系,在这种情况下,可以确定该第二依赖节点组中该拼接父节点进行拼接处理后的滤波器的索引值。示例地,若该第二依赖节点组包括2个拼接父节点,权重尺寸分别为[64,64,3,3]和[64,64,3,3],则对第2个拼接父节点的第1个滤波器进行裁剪处理的情况下,该拼接处理后的滤波器的索引值为64(索引从0开始计数)。
[0174]
s211、按照该索引值对该第二依赖节点组对应的输出节点组的输出节点进行裁剪处理。
[0175]
在本步骤中,在确定该第二依赖节点组中该拼接父节点进行拼接处理后的滤波器的索引值后,可以根据该索引值,对该输出节点组的输出节点的滤波器进行裁剪处理。
[0176]
需要说明的是,上述实施例中的裁剪处理均可以参照现有技术的裁剪方法,此处不再赘述。
[0177]
图3是根据本公开一示例性实施例示出的一种神经网络裁剪示意图,如图3所示,目标节点组包括第一目标节点和第二目标节点,与该目标节点组对应的输出节点组包括第一输出节点和第二输出节点,该第一目标节点的输出端与该第一输出节点的输入端耦合,该第二目标节点的输出端与该第二输出节点的输入端耦合。该第一目标节点和该第二目标节点的前三个滤波器(1、2、3)为保留的滤波器,后三个滤波器(4、5、6)为裁剪的滤波器,该第一输出节点和该第二输出节点的前三个通道(1、2、3)为保留的通道,后三个通道(4、5、6)为裁剪的通道。
[0178]
在一种可能的实现方式中,在得到该目标神经网络对应的压缩神经网络后,可以参照现有的模型训练方法,通过样本集对该压缩神经网络进行训练,以恢复该压缩神经网络的模型性能。
[0179]
采用上述方法,将能够进行剪枝处理的目标节点划分为多个目标节点组,其中存在依赖关系的依赖节点作为依赖节点组,独立节点作为独立节点组,以组为单位对神经网络的节点进行压缩处理,无需人工参与,可以自动处理目标神经网络中的依赖关系,这样,在保证目标神经网络的压缩效果的同时,提高了目标神经网络压缩的效率。进一步地,在对
该目标神经网络进行压缩处理过程中,对该目标神经网络的相关属性信息也同步进行了调整,避免了冗余的中间流程,降低了压缩过程中出错的概率,进一步提高了目标神经网络压缩的准确率。
[0180]
图4是根据本公开一示例性实施例示出的一种神经网络压缩装置的框图,如图4所示,该装置可以包括:
[0181]
神经网络获取模块401,被配置为获取待压缩的目标神经网络;
[0182]
目标节点组划分模块402,被配置为将该目标神经网络中能够进行剪枝处理的目标节点划分为多个目标节点组,该目标节点组包括依赖节点组或者独立节点组,该依赖节点组包括多个依赖节点,多个该依赖节点之间存在依赖关系,该独立节点组包括一个独立节点;
[0183]
输出节点组确定模块403,被配置为针对每个该目标节点组,确定该目标节点组对应的输出节点组,该输出节点组包括多个输出节点,该目标节点组的目标节点的输出端与该输出节点组的输出节点的输入端耦合;
[0184]
压缩模块404,被配置为对该目标节点组的目标节点和/或该输出节点组的输出节点进行压缩处理,以得到该目标神经网络对应的压缩神经网络。
[0185]
可选地,该目标节点组划分模块402,还被配置为:
[0186]
确定该目标神经网络中属于预设运算类型的多个关系节点,该预设运算类型包括多个节点参与运算的运算类型;
[0187]
根据多个该关系节点,确定该依赖节点组;
[0188]
根据该依赖节点组,确定该独立节点组。
[0189]
可选地,该依赖节点组包括第一依赖节点组,该目标节点组划分模块402,还被配置为:
[0190]
确定每个该关系节点的节点信息;
[0191]
针对每个该关系节点,根据该关系节点的节点信息,确定该关系节点的父节点中,距离该关系节点最近且属于第一预设神经网络层的多个目标父节点,并将多个该目标父节点作为该关系节点对应的第一依赖节点组。
[0192]
可选地,图5是根据本公开一示例性实施例示出的另一种神经网络压缩装置的框图,如图5所示,该装置还包括:
[0193]
滤波器确定模块405,被配置为针对每个该目标节点组,确定该目标节点组对应的待裁剪滤波器;
[0194]
该压缩模块404,还被配置为:
[0195]
针对每个该目标节点组,根据该目标节点组对应的待裁剪滤波器,对该目标节点组的目标节点和/或该输出节点组的输出节点进行压缩处理。
[0196]
可选地,该滤波器确定模块405,还被配置为:
[0197]
确定该目标节点组中每个滤波器对应的重要度;
[0198]
根据该重要度,从多个该滤波器中确定该目标节点组对应的待裁剪滤波器。
[0199]
可选地,该滤波器确定模块405,还被配置为:
[0200]
针对该目标节点组的每个该目标节点,确定该目标节点的每个该滤波器对应的待定重要度;
[0201]
针对该目标节点组中的每个该滤波器,将该滤波器对应的多个该待定重要度的平均值,作为该滤波器对应的重要度。
[0202]
可选地,该滤波器确定模块405,还被配置为:
[0203]
获取该目标神经网络对应的预设压缩数量;
[0204]
根据该滤波器对应的重要度,从多个该滤波器中确定重要度最低的该预设压缩数量个待定滤波器;
[0205]
将该预设压缩数量个待定滤波器,作为该待裁剪滤波器。
[0206]
可选地,该压缩模块404,还被配置为:
[0207]
针对该目标节点组的每个该目标节点,对该目标节点中的该待裁剪滤波器进行裁剪处理,得到该目标节点对应的目标裁剪节点;
[0208]
针对每个该输出节点,根据该待裁减滤波器确定待裁剪通道,并对该输出节点中的该待裁剪通道进行裁剪处理,得到该输出节点对应的输出裁剪节点;
[0209]
根据该预设压缩数量,确定该目标裁剪节点对应的输出通道属性信息和该输出裁剪节点对应的输入通道属性信息;
[0210]
根据该输出通道属性信息和该输入通道属性信息,更新该目标神经网络的参数。
[0211]
可选地,该依赖节点组还包括第二依赖节点组,该目标节点组划分模块402,还被配置为:
[0212]
确定多个该关系节点中存在拼接关系的至少一个拼接关系节点;
[0213]
针对每个该拼接关系节点,确定该拼接关系节点的多个拼接父节点,并将多个该拼接父节点作为该拼接关系节点对应的第二依赖节点组。
[0214]
可选地,该压缩模块404,还被配置为:
[0215]
在该第一依赖节点组与该第二依赖节点组中存在相同节点的情况下,确定该第二依赖节点组中该拼接父节点进行拼接处理后的滤波器的索引值;
[0216]
按照该索引值对该第二依赖节点组对应的输出节点组的输出节点进行裁剪处理。
[0217]
可选地,该目标节点组划分模块402,还被配置为:
[0218]
确定该目标神经网络中属于第一预设神经网络层的多个独立节点;
[0219]
确定多个该独立节点中不属于多个该依赖节点组的多个目标独立节点;
[0220]
将每个该目标独立节点作为该独立节点组。
[0221]
可选地,该输出节点组确定模块403,还被配置为:
[0222]
针对该目标节点组的每个该目标节点,执行输出节点组确定步骤;
[0223]
其中,该输出节点组确定步骤包括:
[0224]
从该目标节点的多个子节点中,确定距离该目标节点最近且属于第一预设神经网络层的多个第一目标子节点;
[0225]
针对每个该第一目标子节点,确定该第一目标子节点和该第一目标子节点的根节点所组成的节点分支上,属于第二预设神经网络层的第二目标子节点,该第一预设神经网络层的输出端与该第二预设神经网络层的输入端耦合;
[0226]
将多个该第一目标子节点和多个该第二目标子节点作为该目标节点组对应的输出节点组。
[0227]
通过上述装置,将能够进行剪枝处理的目标节点划分为多个目标节点组,其中存
在依赖关系的依赖节点作为依赖节点组,独立节点作为独立节点组,以组为单位对神经网络的节点进行压缩处理,无需人工参与,可以自动处理目标神经网络中的依赖关系,这样,在保证目标神经网络的压缩效果的同时,提高了目标神经网络压缩的效率。
[0228]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0229]
本公开还提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开提供的神经网络压缩方法的步骤。
[0230]
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的神经网络压缩方法的代码部分。
[0231]
图6是根据本公开一示例性实施例示出的一种电子设备600的框图。参照图6,电子设备600包括处理组件622,其进一步包括一个或多个处理器,以及由存储器632所代表的存储器资源,用于存储可由处理组件622的执行的指令,例如应用程序。存储器632中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件622被配置为执行指令,以执行上述神经网络压缩方法。
[0232]
电子设备600还可以包括一个电源组件626被配置为执行电子设备600的电源管理,一个有线或无线网络接口650被配置为将电子设备600连接到网络,和一个输入输出(i/o)接口658。电子设备600可以操作基于存储在存储器632的操作系统,例如windows server
tm
,mac os x
tm
,unix
tm
,linux
tm
,freebsd
tm
或类似。
[0233]
根据本公开实施例提供一种车辆,包括:车身及上述电子设备600。
[0234]
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0235]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献