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

神经网络的压缩方法和装置、设备、介质与流程

2022-03-09 02:00:19 来源:中国专利 TAG:


1.本发明涉及计算机应用技术领域,具体涉及一种神经网络的压缩方法和装置、设备、介质。


背景技术:

2.相关技术中,神经网络压缩方法大多是基于参数数量、压缩率、每秒浮点运算次数或乘积累加运算操作数等代理指标来降低神经网络的延时、内存、功耗等硬件指标。然而,这些代理指标与延时、内存、功耗等硬件指标非单调,而且对硬件不敏感,无法满足深度神经网络应用快速部署的需求。
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.图1是本技术实施例提供的神经网络压缩方法的第一流程图;
47.图2是图1中的步骤s150的流程图;
48.图3是图2中的步骤s240的第一流程图;
49.图4是图2中的步骤s240的第二流程图;
50.图5是图2中的步骤s240的第三流程图;
51.图6是本技术实施例提供的神经网络压缩方法的第二流程图;
52.图7是本技术实施例提供的神经网络压缩方法的第三流程图;
53.图8是本技术实施例提供的神经网络压缩方法的第四流程图;
54.图9是本技术实施例提供的神经网络压缩方法的第五流程图;
55.图10是本技术实施例提供的神经网络压缩方法的第一三维效果图;
56.图11是图10的二维平面效果图;
57.图12是本技术实施例提供的神经网络压缩方法的第二三维效果图;
58.图13是图12的二维平面效果图;
59.图14是本技术实施例提供的神经网络压缩装置的模块结构框图;
60.图15是本技术实施例提供的电子设备的硬件结构示意图。
具体实施方式
61.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
62.需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
63.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
64.目前,深度神经网络已被广泛应用于图像识别、目标检测、自然语言处理等许多领域。在保证神经网络功能效果的基础上,利用神经网络压缩方法对给定神经网络进行精简,实现压缩神经网络在移动设备、可穿戴设备、军用设备等不同硬件平台上的部署。但现有神经网络压缩方法大多是基于参数数量、压缩率、每秒浮点运算次数或乘积累加运算操作数等代理指标来实现降低神经网络的延时、内存、功耗等硬件性能指标,然而这些代理指标与延时、内存、功耗等硬件性能指标非单调,而且对硬件不敏感,基于这些代理指标的神经网络压缩方法不能获得硬件性能最佳的神经网络。与此同时,智能芯片近年来得到了快速发展,在当前新型智能硬件层出不穷且各式各样的背景下,无法满足深度神经网络应用快速部署的需求。
65.基于此,本技术实施例的主要目的在于提出一种神经网络的压缩方法和装置、设备、介质,通过直接感知硬件的延时、内存、功耗等硬件性能指标来指导神经网络的压缩,并根据硬件性能指标和准确率进行多目标优化以解决硬件性能指标和准确率之间的冲突。根据硬件性能指标和准确率来进行神经网络的压缩可视为多目标优化问题,不同于单目标优化,多目标优化问题的多个目标之间是相互对立的,各目标之间没有统一的衡量标准或量纲,并不存在一个解使所有目标达到最优,多目标优化的解是一组均衡解即pareto解集,使多个目标在给定条件下尽可能达到最优。通过多目标优化,解决压缩神经网络在硬件性能和准确率之间的冲突,使压缩后的神经网络同时获得高硬件性能和高准确率,从而获得对硬件更为适配且兼具准确率的压缩神经网络,实现神经网络在硬件上的快速部署。
66.本技术实施例提供的神经网络的压缩方法和装置、设备、介质,具体通过如下实施
例进行说明,首先描述本技术实施例中的神经网络的压缩方法。
67.参照图1,根据本技术实施例第一方面实施例的神经网络的压缩方法,包括但不限于步骤s110至步骤s160。
68.s110,获取在硬件上运行的预设神经网络;
69.s120,对预设神经网络进行压缩处理,以生成至少两个第一压缩神经网络;
70.s130,获取每一第一压缩神经网络对应于硬件的硬件性能指标;
71.s140,计算预设神经网络的第一准确率和每一第一压缩神经网络的第二准确率;
72.s150,根据硬件性能指标、第一准确率、多个第二准确率对多个第一压缩神经网络进行初步筛选,得到初始神经网络集;
73.s160,根据预设条件对初始神经网络集进行二次筛选,得到目标压缩神经网络。
74.在步骤s110中,预设神经网络可以是预训练的神经网络,也可以是训练好的神经网络。获取在硬件上运行的预设神经网络,是为了便于直接获取硬件对应的硬件性能指标等硬件反馈信息,并利用该硬件反馈信息指导神经网络的压缩以精简神经网络,实现压缩后的神经网络在硬件上的快速部署。在神经网络的压缩过程中,使用硬件性能指标代替参数数量、压缩率、每秒浮点运算次数或乘积累加运算操作数等代理指标评价神经网络的压缩效果,解决了基于代理指标的神经网络压缩方法无法获得最佳硬件性能的问题。
75.在步骤s120中,采用不同的压缩算法对预设神经网络进行压缩处理,生成n个第一压缩神经网络,其中n≥2,每一第一神经网络的网络结构、权重、偏置等不同。利用压缩算法对预设神经网络处理,能够减少预设神经网络占用硬件的存储空间、减少参数量、加快计算速度。压缩算法由模型剪裁、权重共享、量化、卷积层bn(batch normalization)层合并等方法中的一种或多种组成。模型剪裁是根据一种有效的评价方式,将冗余的连接或者滤波器进行裁剪,保留信息量最大的连接。权重共享是对权重做聚类,利用权重均值代替该类中的每个权重,使同属一类的多个连接共享相同的权重。量化是指减少权重的位数,权重一般采用32bit长度的浮点型数表示,但当权重大多集中于0附近,采用32bit表示会造成存储空间的浪费。卷积层bn层合并是指将bn层的参数合并到卷积层,以提高神经网络前向推断的速度。通过对一组不同的压缩神经网络进行处理,来保证最终得到的压缩神经网络的多样性。
76.在步骤s130中,在数据集上对预设神经网络压缩得到第一压缩神经网络,数据集可以是图像、音频等数据,例如cifar-10数据集。cifar-10数据集为图像数据集,包含60000张尺寸为32
×
32的彩色图像,这些图像被分为10个类,每类6000张图。需要说明的是,这10个类相互独立没有重叠。用于运行预设神经网络的硬件可以是一些人工智能硬件或芯片,例如nvdia jetson nano。nvdia jetson nano为一种gpu运算平台,使用microsd卡作为主存储,通过连接internet的计算机将系统镜像写入microsd卡。需要说明的是,本领域技术人员可以根据实际需要选择不同内存的microsd卡,例如可以使用32gb的microsd卡。硬件性能指标可以是硬件敏感的指标或硬件的直接反馈,例如内存、延时、功耗等。由于神经网络直接在待部署的硬件上运行,所以可直接获取对应硬件的硬件性能指标,便于神经网络在硬件上的部署。
77.在步骤s140中,将无标签的数据集输入神经网络中,神经网络对该数据集进行分类,输出一张图像属于多个类的概率,将概率最大的类作为该图片所属的类,即将该图片标记为该类,对数据集的所有图片分类结束后,将分类好的图片与带标签的样本数据集进行
对比,将分类正确的图片占所有图片的比例作为准确率。若计算第一准确率,则将无标签的数据集输入到预设神经网络中进行计算;若计算第一压缩神经网络的第二准确率,则将该无标签的数据集输入到该第一压缩神经网络中进行计算。
78.在步骤s150中,根据硬件性能指标、第一准确率和第二准确率对多个第一压缩神经网络进行初步筛选即多目标选择,得到初始神经网络集。
79.在步骤s160中,根据预设条件对初始神经网络集进行二次筛选,若初始神经网络集满足预设条件,则将初始神经网络集作为目标压缩神经网络。若初始神经网络集不满足预设条件,采用启发式或元启发式方法,如遗传算法、分布式估计算法、差分进化算法、进化策略等,搜索满足预设条件的神经网络。预设条件即终止条件,预设条件可以是待二次筛选神经网络的硬件性能指标、准确率等一个或多个指标达到该指标的标准参考值,可以是待二次筛选神经网络的搜索次数达到上限次数的参考值,也可以是待二次筛选的神经网络的个数达到预设的个数阈值参考值。
80.在一些实施例中,如图2所示,基于第一神经网络的不同分组,对不同分组采用不同的选择策略,并融合准确率约束条件,构成一个多目标选择机制。步骤s150具体包括步骤:
81.s210,根据预设神经网络的第一准确率、每一第一压缩神经网络的第二准确率和预设的约束参数建立每一第一压缩神经网络的准确率约束条件;
82.s220,判断满足准确率约束条件的第一压缩神经网络的个数是否小于预设阈值,若判断结果为是,则执行步骤s230,若判断结果为否,则执行步骤s240;
83.s230,根据每一第一压缩神经网络的准确率约束条件和每一第一压缩神经网络的第二准确率,对多个第一压缩神经网络进行排序,以得到一次排序后的第一压缩神经网络,根据预设的策略对一次排序后的第一压缩神经网络进行初步筛选,以得到初始神经网络集;
84.s240,根据每一第一压缩神经网络的硬件性能指标和每一第一压缩神经网络的第二准确率,对多个第一压缩神经网络进行分组处理,以得到第一分组和第二分组,根据预设的第一选择策略从第一分组中获取第一分组压缩网络,并根据预设的第二选择策略从第二分组中获取第二分组压缩网络,将第一分组压缩网络和第二分组压缩网络作为初始神经网络集。
85.在步骤s210中,若预设神经网络表示为其层数为d,采用每一层的剩余比例定义该层通道是如何被删减的,令r
i0
表示预设神经网络第i层的过滤器数目,则压缩神经网络的第i层的过滤器数目为r
i0
×
xi,将第一压缩神经网络表示为x={x1,x2,

,xd},x∈(0,1],则第一压缩神经网络的第二准确率表示为acc(x),预设神经网络的第一准确率为设置准确率约束参数为c,则根据预设神经网络的第一准确率第一压缩神经网络的第二准确率acc(x)和预设的约束参数c建立的准确率约束条件为:
86.在步骤s210之后,判断满足准确率约束条件的第一压缩神经网络的个数是否小于预设阈值,若判断结果为是,则执行步骤s230,若判断结构为否,则执行步骤s240。
87.在步骤s230中,统计满足准确率约束条件的第一压缩神经
网络x的个数a,若x的个数a小于预设阈值b,根据准确率约束条件对多个第一压缩神经网络进行排序,满足准确率约束条件的第一压缩神经网络为相同序,不满足准确率约束条件的第一压缩神经网络按照其准确率降序排列,得到一次排序后的第一压缩神经网络。预设的策略可以是选取满足准确率约束条件的第一压缩神经网络和不满足准确率约束条件的第一压缩神经网络中准确率较高的个体二者的组合。根据预设的策略对一次排序后的第一压缩神经网络进行初步筛选,得到初始神经网络集。
88.在步骤s240中,统计满足准确率约束条件的第一压缩神经网络x的个数a,若x的个数a大于或等于预设阈值b,根据硬件性能指标和第二准确率,对第一压缩神经网络进行分组处理得到第一分组和第二分组,对第一分组和第二分组分别采用不同的选择策略,获取第一分组压缩网络和第二分组压缩网络,将第一分组压缩网路和第二分组压缩网络作为初始神经网络集。
89.在一些实施例中,如图3所示,步骤s240具体包括步骤:
90.s310,根据每一第一压缩神经网络的硬件性能指标和每一第一压缩神经网络的第二准确率建立每一第一压缩神经网络的目标函数;
91.s320,根据硬件性能指标、第二准确率和目标函数,对第一压缩神经网络进行分组处理,以得到第一分组和第二分组。
92.在步骤s310中,在预设神经网络的基础上,随机生成一组不同的第一压缩神经网络x,获取第一压缩神经网络x对应硬件的第j个硬件性能指标hj(x),获取第一压缩神经网络x的第二准确率acc(x),根据硬件性能指标{h1(x),hj(x),

,hm(x)}和第二准确率acc(x)建立第一压缩神经网络x的目标函数,即公式(1),其中m为硬件性能指标的个数,则目标函数表示为:
[0093][0094]
采用硬件性能指标和第二准确率对第一压缩神经网络的压缩性能进行评价。
[0095]
在步骤s320中,首先根据每一第一压缩神经网络的硬件性能指标和每一第一压缩神经网络的第二准确率对多个第一压缩神经网络进行非支配排序,记录排序后位于首层的第一压缩神经网络a;然后从{h1(x),hj(x),

,hm(x)}这m个硬件性能指标和第二准确率中任意选取两个指标,根据每一第一压缩神经网络的这两个指标对多个第一压缩神经网络进行非支配排序,记录排序后位于首层的第一压缩神经网路a1,直到任意两个指标的组合方式被选取完毕,记录得到位于首层的第一压缩神经网络为{a1,

,ak},其中k为m个硬件性能指标和准确率两两任意组合的个数;最后从{a1,

,ak}选出与a最为接近的{ai}作为第一分组,从{a1,

,ak}选出与a最不同{aj}且之前对{aj}进行非支配排序不是根据准确率指标排序的,则将{aj}作为第二分组。a与{ai}最为接近,即a与{ai}的目标函数的冲突较强,将第一分组{ai}对应的目标函数作为强冲突组。a与{aj}最不同,即a与{aj}的目标函数的冲突较弱,将第二分组{aj}对应的目标函数加入弱冲突组,再将没有出现在所得第一分组和第二分组的目标函数也加入弱冲突组。基于目标函数的冲突强弱,将多个第一压缩神经网络目
标函数的集合分为强冲突组和弱冲突组。
[0096]
在一些实施例中,如图4所示,步骤s240具体还包括步骤:
[0097]
s410,根据第一分组对应的目标函数,对满足准确率约束条件的第一压缩神经网络进行排序,以得到二次排序后的第一压缩神经网络;
[0098]
s420,根据第一选择策略从二次排序后的第一压缩神经网络中获取对应的第一分组压缩神经网络。
[0099]
在步骤s410中,根据第一分组{ai}对应的目标函数即强冲突组,对满足准确率约束条件的多个第一压缩神经网络进行多目标排序,得到二次排序后的第一压缩神经网络。多目标排序采用多目标选择算子实现,多目标选择算子可以为基于分解的、基于指示器的和基于非支配排序和拥挤距离的选择算子。使用基于非支配排序和拥挤距离的选择算子进行多目标排序时,首先基于第一分组的目标函数对满足准确率约束条件的多个第一压缩神经网络进行非支配排序,从而完成对第一压缩神经网络的分层,然后计算处于同一层的第一压缩神经网络的拥挤距离,并根据拥挤距离对同一层第一压缩神经网络进行降序排列,得到二次排序后的第一压缩神经网络。在进行非支配排序的过程中,首先基于第一分组的目标函数从满足准确率约束条件的多个第一压缩神经网络中选出非支配的个体,并赋予这些非支配个体一个共享的虚拟适应度值,得到第一个支配最优层,然后重复上述步骤,直到所有满足准确率约束的多个第一压缩神经网络被分层。使用基于分解的选择算子进行多目标排序时,利用设定的权值向量如基于均匀分布的权值向量,将多目标优化问题分解为多个单目标优化问题,即将第一分组中的多目标函数分解为多个单目标函数,然后根据这些单目标函数的取值对多个第一压缩神经网络进行升序排列。使用基于指示器的选择算子进行多目标排序时,以第一分组的目标函数作为多目标排序的目标函数,采用设定的指示器如超体积,计算每一第一压缩神经网络对该指示器取值的贡献,然后基于该贡献率对这多个第一压缩神经网络降序排列。
[0100]
在步骤s420中,选取二次排序后的第一压缩神经网络靠前η比例的第一压缩神经网络,将选取的第一压缩神经网络作为第一分组压缩神经网络。
[0101]
在一些实施例中,如图5所示,步骤s240具体还包括步骤:
[0102]
s510,根据第二分组对应的目标函数,对满足准确率约束条件的第一压缩神经网络进行排序,以得到三次排序后的第一压缩神经网络;
[0103]
s520,根据第二选择策略从三次排序后的第一压缩神经网络中获取对应的第二分组压缩网络。
[0104]
在步骤s510中,根据第二分组{aj}对应的目标函数以及没有出现在第一分组和第二分组的目标函数,即根据弱冲突组对满足准确率约束条件的第一压缩神经网络进行非支配排序,以对多个第一压缩神经网络分层,然后基于没有出现在第一分组{ai}中的目标函数对同一层的第一神经网络进行升序排序,以得到三次排序后的第一压缩神经网络。三次排序后的第一压缩神经网络的目标函数越小,则该神经网络的排序越靠前。
[0105]
在步骤s520中,选取三次排序后的第一压缩神经网络靠前1-η比例且没有出现在第一分组压缩神经网络中的第一压缩神经网络,将该第一压缩神经网络作为第二分组压缩网络。需要说明的是,本领域技术人员能够根据实际需求设置η的值,例如η为0.6。
[0106]
在一些实施例中,如图6所示,采用基于代理模型的启发式搜索方法获取目标压缩神经网络,若初始神经网络集不满足预设条件,但根据预设神经网络生成的多个第一压缩神经网络满足加强条件,神经网络的压缩方法还包括:
[0107]
s610,获取预设的代理模型所设定的限定条件;
[0108]
s620,根据限定条件和层级剪枝算子对第一压缩神经网络的每层进行剪裁处理,以得到至少两个第二压缩神经网络;
[0109]
s630,将第一压缩神经网络和第二压缩神经网络合并,以得到第三压缩神经网络;
[0110]
s640,获取满足预设条件的第三压缩神经网络,作为目标压缩神经网络。
[0111]
在步骤s610中,加强条件决定了子代产生的方式即第一压缩神经网络更新的方式。若第一压缩神经网络经步骤s210至s240的多目标选择后获取的初始神经网络集不满足预设条件,但根据预设神经网络生成的多个第一压缩神经网络满足加强条件,从多个第一压缩神经网络中随机选取一个满足准确率约束条件的第一压缩神经网络作为给定神经网络将该给定神经网络的参数数目作为代理模型。限定条件由代理模型定义,令a表示该给定神经网络的错误率,b表示可接受的最大错误率,即其中c为准确率约束参数,为预设神经网络的准确率,则该给定神经网络的改进比例可以表示为a/b,c表示该给定神经网络的参数数目的取值,则限定条件被定义为裁剪后的神经网络的最小可接受的参数数目c
×
a/b。
[0112]
在步骤s620中,对给定神经网络的每一层单独进行剪裁,且对于每一层的裁剪,为了避免发生过大的准确率损失,都是在限定条件下进行的。若给定神经网络的层数为l层,对每一层单独剪裁会生成一个单独的神经网络,在对第i层裁剪时,首先基于l2-norm对过滤器排序,然后不断增大被剪裁的过滤器的数目,直到满足限定条件为止,生成第i个神经网络。
[0113]
在步骤s630中,将第一压缩神经网络与剪裁后生成的多个第二压缩神经网络作为一个整体,将这个整体作为第三压缩神经网络。通过将第一压缩神经网络与其子代的第二压缩神经网络合并作为第三压缩神经网络,使得上一代适应度高的个体保留到了下一代,避免神经网络压缩过程中因遗漏局部最优解而导致压缩神经网络的性能差。
[0114]
在步骤s640中,利用步骤s210至s240的多目标选择从该整体中选择满足预设条件的n个神经网络,作为目标压缩神经网络。若从该整体中选择出的神经网络不满足预设条件,将选择出的神经网络作为新的第一压缩神经网络以更新第一压缩神经网络,判断第一压缩神经网络是否满足加强条件,若满足,则执行步骤s610至s640。加强条件可以是第一压缩神经网络更新的次数大于或等于参考值,也可以是第一压缩神经网络的一个或多个指标达到参考值。
[0115]
在一些实施例中,如图7所示,采用启发式搜索算法获取目标压缩神经网络,若初始神经网络集不满足预设条件,且根据预设神经网络生成的第一压缩神经网络不满足加强条件,神经网络的压缩方法还包括:
[0116]
s710,对第一压缩神经网络进行交叉变异处理,以得到至少两个第四压缩神经网络;
[0117]
s720,将第一压缩神经网络和第四压缩神经网络合并,以得到第五压缩神经网络;
[0118]
s730,获取满足预设条件的第五压缩神经网络,作为目标压缩神经网络。
[0119]
在步骤s710中,若经步骤s210至s240的多目标选择后获取的初始神经网络集不满足预设条件,且第一压缩神经网络不满足加强条件,将第一压缩神经网络交叉变异,得到至少两个第四压缩神经网络。
[0120]
在步骤s720中,将第一压缩神经网络和第四压缩神经网络作为一个整体,将这个整体作为第五压缩神经网络。与步骤s630相同,步骤s720也通过保留上一代的优秀个体,以避免遗漏部分局部最优解。
[0121]
在步骤s730中,利用步骤s210至步骤s240的多目标选择从该整体中进行初步筛选得到初始神经网络集,根据预设条件对该初始神经网络集进行二次筛选,即从该初始神经网络集中获取满足预设条件的n个神经网络作为目标压缩神经网络,其中n≥2,与步骤s120中的n的取值相同,本技术实施例对n的具体取值不做限定。若从该整体中选择出的神经网络不满足预设条件,将选择出的神经网络作为新的第一压缩神经网络以更新第一压缩神经网络,判断新的第一压缩神经网络是否满足加强条件,若判断结果为否,则重复步骤s710至s730继续搜索,若判断结果为是,则重复步骤s610至s640继续搜索。
[0122]
在一些实施例中,如图8所示,在实际应用中,神经网络的压缩方法包括但不限于步骤s810至s850。
[0123]
s810,对神经网络进行训练得到训练好的神经网络或直接使用训练好的神经网络;
[0124]
s820,使用合适的压缩算法对训练好的神经网络进行压缩,生成多个不同的压缩神经网络;
[0125]
s830,采用硬件敏感的指标或硬件的直接反馈、准确率或其他功能性指标对压缩后的神经网络进行评价,并在该评价的基础上使用多目标选择机制对神经网络进行选择;
[0126]
s840,判断选择出来的神经网络是否达到终止条件,若判断结果为是,则执行步骤s850,若判断结果为否,则回到步骤s820生成多个不同的压缩神经网络后继续搜索;
[0127]
s850,终止搜索。
[0128]
在一些实施例中,如图9所示,在实际使用中,神经网络的压缩方法包括但不限于步骤s9010至s9120。
[0129]
s9010,获取一组初始压缩神经网络;
[0130]
s9020,获取该组压缩神经网络的硬件性能指标和准确率,完成对压缩神经网络的评价;
[0131]
s9030,在评价的基础上,基于目标函数之间的冲突强弱进行目标分组;
[0132]
s9040,基于目标分组,对强冲突组和弱冲突组采用不同的选择策略,并融合准确率约束,建立多目标选择机制;
[0133]
s9050,判断选择出的神经网络是否达到终止条件,若判断结果为是,则执行步骤s9120,若判断结果为否,则执行步骤s9060;
[0134]
s9060,判断初始压缩神经网络是否满足加强条件,若判断结果为是,则执行步骤s9070,若判断结果为否,则执行步骤s9080;
[0135]
s9070,从初始压缩神经网络中随机选取一个满足准确率约束条件的神经网络作为给定的神经网络,对该给定神经网络采用基于代理模型的层级剪枝算子,生成一组新的
神经网络,执行步骤s9090;
[0136]
s9080,对初始压缩神经网络采用交叉变异产生新的神经网络,执行步骤s9090;
[0137]
s9090,将新的神经网络与初始压缩神经网络合并,利用多目标选择机制从合并后的神经网络中选择神经网络;
[0138]
s9100,判断选择的神经网络是否满足终止条件,若判断结果是,则执行步骤s9120,若判断结果为否,则执行步骤s9110;
[0139]
s9110,更新初始压缩神经网络,将选择的神经网络作为新的初始压缩神经网络,重复执行步骤s9010至s9120;
[0140]
s9120,终止搜索。
[0141]
利用上述神经网络压缩方法在cifar-10数据集上对alexnet进行压缩,在nvidia jetson nano上部署,在未进行神经网络重训练的时候就可以获得不低于原始神经网络准确率90%即错误率为10%的条件下,压缩效果如图10和图11所示。由图10和图11可知,相比于已有硬件感知神经网络压缩方法netadapt,在相同准确率约束下,本技术实施例的神经网络压缩方法可以同时获得延时和内存的显著提升,并且可以提供一组多样的解供用户选择。
[0142]
利用上述神经网络压缩方法在cifar-10数据集上对alexnet进行压缩,在nvidia jetson nano上部署,在未进行神经网络重训练的时候就可以获得不低于原始神经网络准确率90%即错误率为10%的条件下,压缩效果如图12和图13所示。由图12和图13可知,相比于已有的多目标优化算法nsga-ii,本技术实施例的神经网络压缩方法可以获得准确率、延时和内存的显著提升。
[0143]
本技术实施例提出的一种神经网络的压缩方法,通过获取在硬件上运行的预设神经网络,对预设神经网络进行压缩处理,生成至少两个第一压缩神经网络,获取每一第一压缩神经网络对应于硬件的硬件性能指标,计算预设神经网络的第一准确率和每一第一压缩神经网络的第二准确率,根据硬件性能指标、第一准确率和第二准确率对第一压缩神经网络进行初步筛选,得到初始神经网络集,从初始神经网络集中获取满足预设条件的神经网络,将该神经网络作为目标压缩神经网络。通过直接获取神经网络对应硬件的硬件性能指标来指导神经网络的压缩,并根据硬件性能指标和准确率建立多目标选择机制进行多目标优化,能够解决硬件性能和准确率之间的冲突,获取同时具备高硬件性能和高准确率的目标压缩神经网络,方便神经网络在各种硬件平台上的部署,而不必局限于某一特定的硬件平台。
[0144]
参照图14,本技术实施例还提供一种神经网络的压缩装置,可以实现上述神经网络的压缩方法,该装置包括第一获取模块1410、压缩模块1420、第二获取模块1430、计算模块1440、第三获取模块1450和第四获取模块1460。其中,第一获取模块1410用于获取在硬件上运行的预设神经网络;压缩模块1420用于对预设神经网络进行压缩处理,以生成至少两个第一压缩神经网络;第二获取模块1430用于获取每一第一压缩神经网络对应于硬件的硬件性能指标;计算模块1440用于计算预设神经网络的第一准确率和每一第一压缩神经网络的第二准确率;第三获取模块1450用于根据硬件性能指标、第一准确率和多个第二准确率对第一压缩神经网络进行初步筛选,得到初始神经网络集;第四获取模块1460,用于根据预设条件对初始神经网络集进行二次筛选,得到目标压缩神经网络。
[0145]
本技术实施例的神经网络的压缩装置用于执行上述实施例中的神经网络的压缩方法,其具体处理过程与上述实施例中的神经网络的压缩方法相同,此处不再一一赘述。
[0146]
本技术实施例提出的神经网络的压缩装置,通过实现上述神经网络的压缩方法,能够直接获取第一压缩神经网络对应于硬件的硬件性能指标和准确率,并通过硬件性能指标和准确率建立多目标选择机制,获取满足预设条件的第一压缩神经网络作为目标压缩神经网络。由于获得的目标压缩神经网络为多个不同的压缩神经网络,保证了最终获取的压缩神经网络的多样性,同时还可根据场景需求选择符合要求的压缩神经网络,能够符合不同用户在不同硬件上的需求,完成神经网络在各种硬件上的快速部署。
[0147]
本技术实施例还提供一种电子设备,包括存储器和处理器,其中,所述存储器中存储有程序,所述程序被所述处理器执行时,所述处理器用于执行如本技术第一方面实施例中任一项所述的方法。
[0148]
下面结合图15对电子设备的硬件结构进行详细说明。该电子设备包括:处理器1510、存储器1520、输入/输出接口1530、通信接口1540和总线1550。
[0149]
处理器1510,可以采用通用的cpu(central processin unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本技术实施例所提供的技术方案;
[0150]
存储器1520,可以采用rom(read only memory,只读存储器)、静态存储设备、动态存储设备或者ram(random access memory,随机存取存储器)等形式实现。存储器1520可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1520中,并由处理器1510来调用执行本技术实施例的神经网络的压缩方法。
[0151]
输入/输出接口1530,用于实现信息输入及输出;
[0152]
通信接口1540,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信;和
[0153]
总线1550,在设备的各个组件(例如处理器1510、存储器1520、输入/输出接口1530和通信接口1540)之间传输信息;
[0154]
其中处理器1510、存储器1520、输入/输出接口1530和通信接口1540通过总线1550实现彼此之间在设备内部的通信连接。
[0155]
本技术实施例还提供一种存储介质,该存储介质是计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令用于使计算机执行本技术实施例的神经网络的压缩方法。
[0156]
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0157]
本技术实施例描述的实施例是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变
和新应用场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
[0158]
本领域技术人员可以理解的是,图1至图9中示出的技术方案并不构成对本技术实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
[0159]
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0160]
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
[0161]
本技术的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0162]
应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0163]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0164]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0165]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0166]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设
备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序的介质。
[0167]
以上参照附图说明了本技术实施例的优选实施例,并非因此局限本技术实施例的权利范围。本领域技术人员不脱离本技术实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本技术实施例的权利范围之内。
再多了解一些

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

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

相关文献