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

神经网络模型的构建方法、图像处理方法、设备及介质与流程

2022-04-09 04:39:20 来源:中国专利 TAG:


1.本技术涉及人工智能技术领域,具体涉及一种神经网络模型的构建方法、图像处理方法、设备及介质。


背景技术:

2.神经网络模型是由算子(operator)组成的一个计算网络。其中,算子指的是神经网络模型中各层所做的各种运算,例如神经网络模型的卷积层对神经网络模型的输入数据所做的卷积运算即为卷积算子。
3.在实际的神经网络模型的应用中,可以采用不同的硬件来实现神经网络模型的算子,比如对于上述卷积算子,便可以采用图像处理单元(graphics processing unit,gpu)、中央处理器(central processing unit,cpu)、机器学习单元(machine learning unit)或者现场可编程阵列(field programmable gate array,fpga)等硬件实现神经网络模型中的算子。
4.但是不同的硬件的处理能力、可支持带宽等性能以及存储空间不同,为了更大程度发挥硬件的性能,需要针对特定的硬件,为其选择更适合的神经网络模型。


技术实现要素:

5.有鉴于此,本技术提供了一种神经网络模型的构建方法、图像处理方法、设备及介质。通过本技术一些实施例提供的一种神经网络模型的构建方法,可得到适应目标硬件平台约束条件,且符合目标硬件平台上特定应用所需目标神经网络模型,充分利用手机的硬件资源,例如处理器资源、存储空间等。
6.第一方面,本技术实施例提供了一种神经网络模型的构建方法,该方法可应用于电子设备,方法包括:确定目标算子候选集,目标算子候选集中包括至少一个算子;基于预设的功能需求,从目标算子候选集中选取算子和/或算子的组合,以构建多个第一神经网络模型,利用测试数据和运行目标神经网络模型的电子设备的硬件约束条件,分别对多个第一神经网络模型进行测试,以获得对应于各个第一神经网络模型的性能测试结果;基于每个第一神经网络模型的性能测试结果与第一预设条件的比较结果,从多个第一神经网络模型中确定目标神经网络模型。
7.其中,在一些实施例中,确定目标算子候选集指的是,利用满足预设的功能需求的神经网络模型所使用的算子,来构建或是更新目标算子候选集。其中,在一些实施例中,预设的功能需求是根据安装在电子设备上的第一应用所需的神经网络模型的功能或用途确定的。
8.示例性地,安装在电子设备上的第一应用包括目标电子设备的系统应用,其中,系统应用包括人脸识别解锁应用。那么根据人脸识别解锁应用的所需的神经网络模型的功能可以确定预设的功能需求为“图像识别”,那么在确定目标算子候选集时,就利用功能与“图像识别”相同或相似的神经网络模型所使用的算子,来构建目标算子候选集。
9.可以理解,上述安装在目标电子设备上的第一应用还可以是其他第三方应用,例如视频应用、聊天应用等等,本技术对此不作限制。
10.在确定目标算子候选集后,在利用目标算子候选中的算子或算子的组合,来构建多个第一神经网络模型,可以理解,由于第一神经网络模型使用的算子为满足预设的功能需求的神经网络模型所使用的算子,故第一神经网络模型的功能也满足预设的功能需求。
11.其中,在一些实施例中,上述电子设备的硬件约束条件包括目标电子设备的处理能力以及存储空间。可以理解,电子设备的处理能力越弱、存储空间越小,目标电子设备的硬件约束条件越严格,则目标神经网络模型的网络层数也会越少。
12.故,利用测试数据和上述硬件约束条件,对第一神经网络模型进行测试得到各个第一神经网络模型的性能测试结果,可以从各个第一神经网络模型的性能测试结果,确定出比较适应上述电子设备的第一神经网络模型,并从中根据各第一神经网络模型的性能测试结果与第一预设条件的比较结果,进一步确定出目标神经网络模型。
13.通过上述方法,即可得到适应电子设备的硬件约束条件,且功能满足预设的功能需求的神经网络模型。
14.结合第一方面,在第一方面的一种可能的实现方式中,基于每个第一神经网络模型的性能测试结果与第一预设条件的比较结果,从多个第一神经网络模型中确定目标神经网络模型,包括:基于每个第一神经网络模型的性能测试结果与第一预设条件的比较结果,从多个第一神经网络模型中,确定性能测试结果满足第一预设条件的至少一个第二神经网络模型;基于第二预设条件,从至少一个第二神经网络模型中确定目标神经网络模型。
15.也即是,从第一神经网络模型中选择出性能测试结果满足第一预设条件的第二神经网络模型,然后在从第二神经网络模型中,选择出性能测试结果满足第二预设条件的目标神经网络模型。其中,在一些实施例中,性能测试结果包括性能综合评分,基于每个第一神经网络模型的性能测试结果与第一预设条件的比较结果,从多个第一神经网络模型中,确定性能测试结果满足第一预设条件的至少一个第二神经网络模型包括:将性能综合评分大于作为第一预设条件的第一阈值的神经网络模型作为第二神经网络模型,以及基于第二预设条件,从至少一个第二神经网络模型中确定目标神经网络模型包括:将第二神经网络模型中,性能综合评分最高的神经网络模型作为目标神经网络模型。
16.也即是,将第一神经网络模型中性能综合评分大于第一阈值(例如是50分)的第一神经网络模型作为第二神经网络模型,然后从第二神经网络模型中,将性能综合评分最高的神经网络模型作为目标神经网络模型。其中,在一些实施例中,性能综合评分指的是神经网络模型的精确度指标、运行神经网络模型时所消耗的带宽、运行神经网络模型所耗费的时长等因素综合决定的评分。
17.在一些实施例中,如果第二神经网络模型中性能综合评分最高的神经网络模型有多个,则从这些神经网络模型中,根据具体的需求,选择神经网络模型的精确度指标最高、或者运行神经网络模型时所消耗的带宽最小,或者运行神经网络模型所耗费的时长最短的审计净网络模型作为目标神经网络模型,本技术对此不作限制。
18.结合第一方面及上述可能的实现方式,在第一方面的一种可能的实现方式中,基于每个第一神经网络模型的性能测试结果与第一预设条件的比较结果,从多个第一神经网络模型中确定目标神经网络模型,包括:基于每个第一神经网络模型的性能测试结果与第
一预设条件的比较结果,从多个第一神经网络模型中确定目标神经网络模型,包括基于每个第一神经网络模型的性能测试结果与第一预设条件的比较结果,从性能测试结果不满足第一预设条件的至少一个第一神经网络模型中,基于该至少一个第一神经网络模型的性能测试结果与第三预设条件的比较结果,确定至少一个第三神经网络模型;从至少一个第三神经网络模型中,确定目标神经网络模型。
19.也即是,当第一神经网络模型的性能测试结果均不满足第一预设条件,则从第一神经网络模型中,选择性能测试结果满足第三预设条件的第三神经网络模型。
20.在一些实施例中,基于每个第一神经网络模型的性能测试结果与第一预设条件的比较结果,从性能测试结果不满足第一预设条件的至少一个第一神经网络模型中,基于该至少一个第一神经网络模型的性能测试结果与第三预设条件的比较结果,确定至少一个第三神经网络模型包括:在第一神经网络模型的性能综合评分均小于作为第一预设条件的第一阈值的情况下,从第一神经网络模型中选择性能综合评分大于预设性能测试结果阈值的神经网络模型作为第三神经网络模型。
21.也即是,如果性能测试结果的表现形式为性能综合评分,则当第一神经网络模型中的性能综合评分均小于作为上述第一阈值的情况下,从第一神经网络模型中,选择性能综合评分大于预设性能测试结果阈值的神经网络模型作为第三神经网络模型,然后从第三神经网络模型中选择目标神经网络模型。
22.结合第一方面及上述可能的实现方式,在第一方面的一种可能的实现方式中,从至少一个第三神经网络模型中,确定目标神经网络模型,包括:执行n次循环过程,以确定目标神经网络模型,其中n是大于等于1的整数,每次循环过程包括:根据第三神经网络模型,更新目标算子候选集;根据更新后的目标算子候选集,利用目标算子候选集中至少一个算子或算子的组合构建多个第一神经网络模型,利用测试数据和运行神经网络模型的电子设备的硬件约束条件,分别对多个第一神经网络模型进行测试,以获得对应于各个第一神经网络模型的性能测试结果;将性能测试结果与第一预设条件比较,在存在性能测试结果满足第一预设条件的神经网络模型的情况下,终止循环,输出第二神经网络模型(也即是在性能测试结果满足上述第一预设条件的情况下,从上述多个第一神经网络模型中,确定性能测试结果满足第一预设条件的至少一个第二神经网络模型)。
23.在不存在性能测试结果满足第一预设条件的神经网络模型的情况下,基于第三预设条件获得第三神经网络模型(也即是在该循环确认过程获得的多个第一神经网络模型的性能测试结果不满足第一预设条件的情况下,从性能测试结果不满足第一预设条件的至少一个神经网络模型中,基于该至少一个第一神经网络模型的性能测试结果与第三预设条件的比较结果,确定至少一个第一神经网络模型作为第三神经网络模型),然后根据获得的第三神经网络模型重新执行新的一次循环。
24.也即是,为了得到性能更好的目标神经网络模型,电子设备可以循环执行上述方法多次,然后根据每次得到的第三神经网络模型所使用的算子或组合算子出现的次数,更新目标算子候选集,然后利用更新后的目标算子候选集中的算子或算子的组合,再重新构建下一次循环中的第一神经网络模型,并利用测试数据以及上述硬件预设条件,对第一神经网络模型进行测试,从中选择性能测试结果满足第一预设条件的神经网络模型作为第二神经网络模型,并从第二神经网络模型中选择性能测试结果满足第二预设条件的目标神经
网络模型。
25.如此循环多次,如果还是没通过“第一神经网络模型-第二神经网络模型-目标神经网络模型”的方式,得到目标神经网络模型,并且循环次数又达到了预设阈值,也即(对于得到至少一个第三神经网络模型的第n次循环,且n等于预设阈值的情况下),则从第三神经网络模型中选择目标神经网络模型。其中,在一些实施例中,对于得到至少一个第三神经网络模型的第n次循环,且n等于预设阈值的情况下,从至少一个第三神经网络模型中,确定目标神经网络模型,包括:从第三神经网络模型中,选择性能综合评分最大的神经网络模型作为目标神经网络模型。
26.同样的,如果第三神经网络模型中,性能综合评分最大的神经网络模型有多个,则也可以根据需求,从中选择神经网络模型精度指标最高、或者运行神经网络模型时消耗的时长最短、或者运行神经网络模型时消耗的带宽最少的神经网络模型作为目标神经网络模型,本技术对此不作限制。
27.其中,在一些实施例中,根据第三神经网络模型更新目标算子候选集的方式包括:
28.根据第三神经网络模型使用的算子或组合算子的次数,决定是否更新目标算子候选集,如果第三神经网络模型使用的算子或组合算子次数超过预设次数,则增加目标算子候选集中对应算子或组合算子的权重。其中,预设次数可以是经验值或实验值,例如为5。可以理解,第三神经网络模型使用某个算子或组合算子的次数,可以在一定程度上表示该算子或组合算子是否适应电子设备的硬件条件,如果第三神经网络模型频繁地使用某些算子,则表明这些算子更加适应电子设备的硬件条件。
29.如果第三神经网络模型使用的组合算子是目标算子候选集中未包括的组合算子,则在目标算子候选集中,添加该组合算子。
30.第二方面,本技术实施例提供了一种图像处理方法,该方法也可应用于电子设备,方法包括:获取待识别图像;采用神经网络模型识别待识别图像,其中,神经网络模型是采用上述第一方面以及第一方面中任一种可能的实现方式的神经网络模型构建方法到的。
31.第三方面,本技术实施例提供了一种可读介质,该可读介质上存储有指令,该指令在电子设备上执行时使电子设备执行第一方面以及第一方面各种可能的实现方式以及第二方面的神经网络模型的构建方法。
32.第四方面,本技术实施例提供了一种电子设备,该电子设备包括:
33.存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及
34.处理器,是电子设备的处理器之一,用于执行上述第一方面、上述第一方面各种可能的实现方式以及上述第二方面提供的任意一种方法。
35.第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面、上述第一方面各种可能的实现方式以及上述第二方面提供的任意一种方法。
36.可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
37.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述
中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
38.图1是一些实施例提供的一例神经网络模型构建方法的应用场景图;
39.图2是一些实施例提供的一例本技术涉及的目标算子候选集的构建方法流程示意图;
40.图3是一些实施例提供的一例神经网络模型构建方法流程示意图;
41.图4是一些实施例提供的一例神经网络模型构建装置示意图;
42.图5是一些实施例提供的一例计算设备结构示意图。
具体实施方式
43.下面介绍本技术的神经网络模型的构建方法。
44.图1是本技术神经网络模型的构建方法应用场景图,该场景中包括服务器100、数据存储平台200以及目标硬件平台300。下面为了便于说明,以目标硬件平台300是手机为例,但可以理解,目标硬件平台300不限于手机,还可以是平板电脑、笔记本电脑等等。
45.如图1所示,服务器100可以根据手机300的应用程序所需的目标神经网络模型的功能或用途,从数据存储平台200中存储的具有与所需目标神经网络模型相同或相似功能或用途的神经网络模型所采用的算子中选取至少部分算子得到目标算子候选集,并从目标算子候选集中选取至少部分算子构建满足层数要求的多个神经网络模型,再基于测试数据对上述多个神经网络模型进行测试,得到各神经网络模型的测试结果,并将测试结果满足预设条件的神经网络模型确定为目标神经网络模型。其中,利用测试数据对神经网络模型进行测试,并且将测试结果满足预设条件的神经网络模型作为目标神经网络模型的具体实现将在下文结合附图3介绍。
46.通过上述方法,服务器100可以为手机300构建出能够适应手机300硬件条件并且符合手机300特定系统应用的目标神经网络模型,也即该目标神经网络模型能够更好地利用手机300的硬件/软件资源,例如处理器资源、存储空间等,并且同时满足手机300上特定系统应用的需求。
47.其中,在一些实施例中,手机300中的应用程序可以是手机300上特定的系统应用程序,也即,服务器100可以根据手机300上特定系统应用程序所需的神经网络模型的用途,来从数据存储平台200中筛选算子构建目标算子候选集。例如,手机300上的人脸识别解锁应用,该应用所需的神经网络模型的用途为图像识别,那么服务器100将从数据存储平台200中筛选与“图像识别”相同或相似用途的神经网络模型所采用的算子来构建目标算子候选集。
48.在一些实施例中,手机300中的应用程序也可以是用户根据需求在手机300上安装的应用程序,也即,服务器100可以根据用户在手机300所安装的应用程序,在用户安装应用程序时或在应用程序需要更新版本或升级的时候,确定该应用程序所需神经网络模型的用途,从数据存储平台200中筛选算子构建目标算子候选集。例如,用户在手机300上安装了能够实现以图搜图功能的应用程序,那么服务器100将根据该应用程序的用途“以图搜图”(也即图像识别),从数据存储平台200中筛选与“图像识别”相同或相似用途的神经网络模型所
采用的算子来构建目标算子候选集。又例如,在手机300上安装的“以图搜图”应用更新或升级版本时,服务器100可以根据“以图搜图”应用的升级需求,确定该应用程序所需神经网络模型的用途。
49.其中,从数据存储平台200中存储的具有与所需目标神经网络模型相同或相似用途的神经网络模型所采用的算子中选取至少部分算子得到目标算子候选集的原因在于,一般用途相同或相近的神经网络模型使用的算子一般也是相同的,因此选择与目标神经网络模型的用途相同或相近的神经网络模型所采用的算子构建目标算子候选集,能够确保目标神经网络模型可以满足上述应用程序所需的用途。
50.其中,所提及的层数要求指的是根据手机300等目标硬件平台上的硬件约束条件,确定的关于目标神经网络模型的层数要求。可以理解,不同的目标硬件平台的硬件约束条件是不同的,因此不同目标硬件平台对目标神经网络模型的层数要求也是不同的。例如相对于电脑,手机300的处理能力较弱、内存空间也较小,因此手机300上的目标神经网络模型的层数相对于电脑上运行的神经网络模型的层数较少。更具体地,例如,电脑上运行的图像识别类神经网络模型的层数可以是100层,但是手机300上运行的目标神经网络模型的层数可能仅有20层。
51.基于上文的描述,下面基于图1所示的场景图介绍在服务器100上实现本技术神经网络模型的构建方法,为手机300上的人脸识别解锁应用构建目标经网络模型的过程。本技术神经网络模型的构建方法包括构建目标算子候选集阶段以及利用目标算子候选集中算子构建目标神经网络模型的阶段,下面对此分别展开介绍。
52.如图2所示,服务器100构建目标算子候选集的过程包括:
53.201,根据手机300的硬件约束条件以及人脸识别解锁应用确定筛选条件。
54.可以理解,服务器100首先根据手机300的人脸识别解锁应用确定目标神经网络模型的用途为人脸识别(也即图像识别)。其次,服务器100根据手机300上的硬件约束条件,确定目标神经网络模型的层数。例如,假设手机300的内存为8g,除去系统应用所占内存,手机300的可用内存可能不足4g,并且手机300的处理器计算能力不足,那么目标神经网络模型的层数较少为20层。
55.202,从数据存储平台200中筛选出符合筛选条件的算子作为目标算子。
56.在本技术的一些实施例中,数据存储平台200中存储有多个算子,每个算子都可以用于至少一种用途的神经网络模型。则服务器100根据上述目标神经网络模型的用途(图像识别),从数据存储平台200中选择与目标神经网络模型的用途相同或相似的神经网络模型对应的算子作为目标算子。示例性地,数据存储平台200中算子与神经网络模型的用途对应关系可以如表1所示:
57.表1
58.算子神经网络模型用途算子1图像识别、语义分割算子2图像分类、图像识别算子3语音检测
……
算子n-1语音检测、语音识别
算子n图像分类、语义分割
59.从表1可看出,算子1对应有两种用途的神经网络模型(图像识别、语义分割),算子2也对应有两种用途(图像分类、图像识别)的神经网络模型,算子3只对应有一种用途(语音检测)的神经网络模型,
……
,算子n-1也对应有两种用途(语音检测、语音识别)的神经网络模型,算子n也对应有两种用途(图像分类、语义分割)的神经网络模型。
60.由于目标神经网络模型的用途为图像识别,那么服务器100将从上表1中选择与“图像识别”相同或相似神经网络模型对应的算子作为目标算子,也即选择算子1、算子2,
……
,算子n-1。
61.203,利用目标算子构建目标算子候选集,并为目标算子候选集中的各个算子设置初始权重。
62.在本技术的一些实施例中,可以利用权重来表示算子在构建目标神经网络模型的过程中,被使用的次数,可以理解,权重越大的算子,其被使用的次数就越多,就越能适应手机300的硬件资源,为了体现每个算子在构建目标神经网络模型过程中,被使用次数的变化,也即权重的变化情况,以便于后续构建目标神经网络模型的过程中,服务器100可以优先采用权重较大的算子构建目标神经网络模型,服务器100需为各个算子设置初始权重。在一些实施例中,目标算子候选集中各个算子的初始权重可以相同,并且各个算子的初始权重之和为1,例如,目标算子候选集中有5个算子,则这5个算子的权重可以均为1/5=0.2。在其他实施例中,目标算子候选集中各个算子的初始权重也可以为其他数值,本技术对此不作限制。
63.上述方法200介绍了服务器100构建目标算子候选集的方法,下面介绍服务器100基于上述目标算子候选集,构建目标神经网络模型的过程。具体如图3所示,该过程包括:
64.301,利用目标算子候选集中的各个算子,构建层数符合层数要求的第一神经网络模型。
65.在一些实施例中,假设经过上述300构建的目标算子候选集中包括的算子为算子a1、算子a2、算子a3、算子a4、

a(n-1)、an,目标神经网络模型的层数为20,那么服务器100在利用目标算子候选集构建20层的第一神经网络模型时,将从目标算子候选集中为每层神经网络选择一个或多个算子组合而成的组合算子,作为该层的算子,并且每层神经网络所用的算子或组合算子可以相同,也可以不同,然后得到多个第一神经网络模型。
66.为了便于理解,以目标算子候选集中包括4个算子a1、算子a2、算子a3、算子a4为例,目标神经网络模型的层数也为4为例,介绍服务器100构建层数符合筛选条件的第一神经网络模型的方式。具体如下:
67.服务器100首先计算算子a1至算子a4的每种组合方式得到算子以及组合算子,即如下表2所示:
68.表2
[0069][0070]
也即,算子a1至算子a4一共有15(4 4 6 1)种组合方式。其中,单一算子为算子a1、算子a2、算子a3、算子a4,包括2个算子的组合算子为[算子a1,算子a2]、[算子a1,算子a3]、[算子a1,算子a4]、[算子a2,算子a3]、[算子a2,算子a4]、[算子a3,算子a4],包括3个算子的组合算子为[算子a1,算子a2,算子a3]、[算子a1,算子a2,算子a4]、[算子a2,算子a3,算子a4],包括4个算子的组合算子为[算子a1,算子a2,算子a3,算子a4]。
[0071]
服务器100从这15种算子中,为4层的神经网络模型的每一层匹配一个算子,即可得到个第一神经网络模型。其中,c表示组合数量。
[0072]
可以理解,如果目标算子候选集中算子的数量以及目标神经网络模型的层数很多,则基于目标算子构建的第一神经网络模型的数量会非常庞大,此时服务器100如果直接对全部待选神经网络模型进行测试的话,会消耗大量的计算资源。所以,为了降低服务器100消耗的计算资源,在一些实施例中,服务器100可以从大量的第一神经网络模型中,先筛选出一部分性能较好的第一神经网络模型,然后只对这些性能相对较好的第一神经网络模型进行测试。
[0073]
例如,服务器100可以利用训练数据对上述第一神经网络模型进行训练,然后从中选择出训练结果较好的第一神经网络模型。其中,可以理解,训练数据也是与目标神经网络模型对应的数据,例如,假设目标神经网络模型为图像识别类神经网络模型,那么训练数据即为大量包含被检测对应的图像,又例如假设目标神经网络模型为语音检测类神经网络模型,那么训练数据则为大量的音频数据,应理解,本技术对训练数据不作限制。
[0074]
其中,训练结果较好的神经网络模型指的是,神经网络模型的输出结果与输入数据对应的预设标签之间的相似度不小于相似度阈值。其中,预设标签指的是经过神经网络模型处理后的输入数据的参考结果(或者标准结果),例如假设输入数据为预设标签是“哈士奇”的图像,那么预设标签“哈士奇”即为该图像输入至神经网络模型后的应当得到的结果。可以理解,真实的输出结果往往与参考结果并不完全相同,故一般通过计算真实的输出结果与参考结果之间的相似度,来表示神经网络模型训练结果的好坏(或神经网络模型的精确度)
[0075]
例如,假设神经网络模型输入为语义分割数据集中带有标签的图像(“哈士奇(预
设标签)
”‑
图像),如果神经网络模型输出的结果为“哈士奇”,则表明该神经网络模型的输出结果与输入图像的标签之间的相似度较高,则该神经网络模型的训练结果较好,如果神经网络模型输出的结果为“阿拉斯加”,则表明该神经网络模型的输出结果与输入图像的标签之间的相似度较低,则神经网络模型的训练结果较差。
[0076]
其中,计算神经网络模型输入图像的标签与输出结果之间的相似度的方式可以为计算二者之间的欧式距离。又例如,服务器100基于第一神经网络模型占用的存储空间、所消耗的计算资源等,从第一神经网络模型中,将所占用的存储空间、所消耗的计算资源等都较小的第一神经网络模型筛选出来;或者,服务器100还可以通过强化学习、进化算法或者可微分的梯度下降算法等方式,从第一神经网络模型中筛选出部分性能较好的第一神经网络模型,本技术对此不作限制。
[0077]
可以理解,上述计算神经网络模型输入图像的标签与输出结果之间的相似度的方式还可以是其他相似度计算方式,例如曼哈顿距离计算公式、余弦计算公式等等。本技术对此不作限制。
[0078]
302,利用测试数据以及手机300的硬件约束条件对上述多个第一神经网络模型进行测试,得到每个第一神经网络模型的性能测试结果。
[0079]
具体地,服务器100结合手机300的硬件约束条件,向这些第一神经网络模型输入测试数据,得到每个第一神经网络模型的性能测试结果。其中,测试数据与上述训练数据的区别在于,测试数据的数量更多、种类更广泛。在一些实施例中,第一神经网络模型的性能测试结果可以是第一神经网络模型在该手机300上的运行时长、精度、消耗的带宽资源等等的性能综合评分,通过该性能综合评分的大小,可以从第一神经网络模型选择出适应手机300的第二神经网络模型。
[0080]
在一些实施例中,性能综合评分可以通过下式(1)来计算:
[0081]
性能综合评分=α*(运行时长) β*(神经网络模型的精确度指标) γ*(消耗的带宽)(1)
[0082]
其中,α、β、γ为权重,需要说明的是,性能综合评分与神经网络模型的精确度指标之间为正相关,但与手机300运行神经网络模型的运行时长以及消耗的带宽之间负相关。也即,神经网络模型的精度指标越高,则该性能综合评分越高,手机300运行该神经网络模型所消耗的运行时长越长或者手机300运行该神经网络模型时所消耗的带宽越多,则性能综合评分越低。
[0083]
示例性地,通过302构建的多个第一神经网络模型以及它们的性能测试结果可以如下表3所示:α=-0.1、β=0.8、γ=-0.1
[0084]
表3
[0085][0086]
从表3中可以看出,通过402构建的第一神经网络模型a的性能综合评分为63,第一神经网络模型b的性能综合评分为54,第一神经网络模型c的性能综合评分为39,第一神经网络模型d的性能综合评分为39,第一神经网络模型e的性能综合评分为4,第一神经网络模型f的性能综合评分为48,第一神经网络模型g的性能综合评分为4。
[0087]
303,判断上述第一神经网络模型是否存在满足预设条件的第二神经网络模型。
[0088]
如果存在,则进入304,即从这些满足预设条件的第二神经网络模型中筛选出目标神经网络模型。如果不存在,则进入305,即根据性能测试结果,从上述第一神经网络模型中筛选出性能测试结果大于预设性能测试结果阈值的第三神经网络模型。
[0089]
其中,在一些实施例中,预设条件可以是上述神经网络模型的性能测试结果大于预设第一阈值。其中,预设第一阈值可以为经验值或实验值,例如为50分。继续以上表2为例,那么服务器100将从表1所示的第一神经网络模型中,筛选出性能综合评分大于80分的第一神经网络模型a、b、c、d作为第二神经网络模型。
[0090]
304,从上述满足预设条件的第二神经网络模型中筛选出目标神经网络模型。
[0091]
在一些实施中,可以从第二神经网络模型中选择性能综合评分最大的第二神经网络模型作为目标神经网络模型。可以理解,当性能综合评分最大的第二神经网络模型有多个时,可以从多个第二神经网络模型中根据需求选择一个第二神经网络模型作为目标神经网络模型。
[0092]
例如,如果性能综合评分最大的第二神经网络模型有10个,则可以将对神经网络模型的需求按照优先级排序,比如优先级为:精确度指标》运行时长》消耗的带宽,那么可以从10个第二神经网络模型中优先选择精确度指标最高的第二神经网络模型作为目标神经网络模型,如果精确度指标最高的第二神经网络模型有多个,则继续从精确度指标最高的第二神经网络模型中选择运行时长最短的第二神经网络模型最为目标神经网络模型,如果运行时长最短的神经网络模型有多个,则继续从运行时长最短的第二神经网络模型中选择消耗带宽最少的第二神经网络模型作为目标神经网络模型。本技术对此不作限制。
[0093]
305,根据性能测试结果,从上述多个第一神经网络模型中筛选出性能测试结果大于预设性能测试结果阈值的第三神经网络模型。
[0094]
如果第一神经网络模型中存在满足预设条件的第二神经网络模型,例如上述第一神经网络模型的性能综合评分均小于或等于上述预设第一阈值(例如50)分,则表明当前得到的第一神经网络模型不符合作为目标神经网络模型的条件,那么服务器100将进一步从第一神经网络模型中筛选出性能测试结果大于预设性能测试结果阈值的神经网络模型作
为第三神经网络模型,然后基于性能测试结果大于预设性能测试结果阈值的第三神经网络模型,进行后续筛选过程。其中,预设性能测试结果为经验值或实验值,其可以根据得到的全部第一神经网络模型的性能测试结果,根据需求确定。例如可以将上表3中第一神经网络模型的性能测试结果的平均值作为预设性能测试结果,例如将(63 54 39 39 4 48 4)/7=35.8作为预设性能测试结果。然后,从上表3中选择性能测试结果大于35.8的第一神经网络模型作为第三神经网络模型。
[0095]
其中,可以理解,预设性能测试结果阈值小于预设第一阈值。
[0096]
306,判断上述第三神经网络模型使用的算子中是否存在目标算子候选集中没有的组合算子。
[0097]
由上述302可以看出,每轮构建第一神经网络模型时,可能会出现新的组合算子。为了下一轮筛选时,目标算子候选集中的算子更能满足构建第一神经网络模型的需求,在一些实施例中,服务器100可以判断第三神经网络模型使用的算子是否存在目标算子候选集中没有的组合算子。
[0098]
如果是,则进入307,即在目标算子候选集中添加该组合算子。如果否,则进入308,即直接判断第三神经网络模型使用的算子中是否有出现次数超过预设次数的算子。
[0099]
具体地,假设服务器100在第n(n大于2)轮筛选得到的某个第三神经网络模型(假设为神经网络模型a)以及该神经网络模型使用的算子如下表4所示:
[0100]
表4
[0101][0102][0103]
从表4可知神经网络模型a的层数为20层,并且使用的算子为算子a2,算子a4,算子a11,算子a9,
……
,算子a21,算子a20,算子a19。假设算子a2和算子a4出现的次数为5次,算子a11出现的次数为6次,算子a9出现的次数为1次,算子a21、算子a20出现的次数为2次。则算子a9为第n轮筛选时新出现的组合算子。
[0104]
307,将该算子添加至目标算子候选集中。
[0105]
可以理解,如果第三神经网络模型使用的算子是之前目标算子候选集中没有出现的组合算子,则将该组合算子添加至目标算子候选集中。
[0106]
308,判断第三神经网络模型使用的算子中是否有出现次数大于或等于预设次数的算子。
[0107]
如上文所述,每轮得到的第三神经网络模型使用的算子可能不同,也即目标算子候选集中算子出现在第三神经网络模型中的次数可能不同,但是如果仅出现一次或少数
次,就更新目标算子候选集中算子的权重,那么目标算子候选集的稳定性就不高,基于不稳定的目标算子候选集构建出的第一神经网络模型、以至于后续得到的第三神经网络模型的稳定性也不高,也即有可能出现每轮筛选都得到一个不同的第三神经网络模型,这不利于从第三神经网络模型中选择目标神经网络模型。故出于预防筛选结果偶然性的考虑,服务器100需要判断第三神经网络模型使用的算子是否有超过预设次数的算子。在一些实施例中,上述预设次数可以为经验值或实验值,其取值例如可以为5。
[0108]
如果是,则进入309,即在目标算子候选基中更新该算子的权重。如果否,则进入310,即判断循环次数是否达到终止条件。
[0109]
具体地,继续以上表4为例,假设预设次数为5,服务器100第n(n大于2)次得到的神经网络模型a中,算子a2和算子a4出现的次数为5次,算子a11出现的次数为6次,不小于预设次数,则服务器100会更新算子a2、算子a4以及算子a11在目标算子候选集中的权重。而算子a9出现的次数为1次,算子a21、算子a20出现的次数为2次,均小于预设次数,则服务器100暂不更新算子a9、算子a21以及算子a20在目标算子候选集中的权重。
[0110]
309,在目标算子候选集中更新该算子的权重。
[0111]
在一些实施例中,假设预设次数为5,服务器100可以下式(2)来更新各个算子的权重:
[0112]w2i
=w
1i
t*h
[0113][0114]
其中,w
1i
表示算子在进行测试评估前的权重,w
2i
表示算子在进行测试评估后的权重,i表示具体的某个算子,i为正整数,t表示测试评估时的测试时算子权重变化的差值,一般取0.01,h为时延的饱和计算的函数,n表示算子出现的次数,当算子出现的次数大于5次时,h的值为5,当算子出现的次数小于5次时,h的值为0,也即仅在算子出现在上述第一神经网络模型的次数大于5次时,该算子的权重才会发生变化。
[0115]
具体地,继续以上表4为例,算子a2、算子a4出现的次数为5,也即在此之前算子a2与算子a4的权重也未被更新过,即算子a2与算子a4的权重为初始权重(例如0)。
[0116]
那么服务器100利用上式(2)更新算子a2、算子a4权重时,算子a2的权重w
22
=w
12
t*h=0 0.01*5=0.05。
[0117]
同理算子a4的权重w
24
=0 t*h=0 0.01*5=0.05。
[0118]
而算子a11出现的次数为6,则表明算子a11此前出现的次数已经大于预设次数,也即算子a11的权重已经被更新过一次,那么此时算子a11的权重应为w
211
=w
111
t*h=0.05 0.01*5=0.1。
[0119]
可以理解,上述更新算子权重的式(2)仅为示例性的,在其他实施例中,服务器100也可采用其他方式更新算子的权重,本技术对此不作限制。
[0120]
并且,可以理解,为了减少目标算子候选集占用的存储空间,服务器100还可以在经过m轮筛选后,删除目标算子候选集中权重小于预设权重的算子。其中,预设权重的取值为实验值或经验值,例如可以为0.1。
[0121]
310,判断是否达到终止条件。若否,则进入301,即服务器100继续重复上述筛选过程,以得到目标神经网络模型。若是,则进入311,即服务器100从上述筛选过程中得到的第
三神经网络模型中,筛选出目标神经网络模型。
[0122]
可以理解,为了节约服务器100的处理资源,在本技术的一些实施例中,可以为服务器100筛选过程设置循环的终止条件。可以理解,终止条件可以包括预设的循环次数,当循环次数大于预设次数时,说明达到终止条件,则从本轮筛选过程的305中得到的第三神经模型中筛选出目标神经网络模型;否则,当循环次数大于预设次数时,说明还未达到终止条件,则服务器100继续重复上述筛选过程,直至得到目标神经网络模型或者循环次数达到终止条件。
[0123]
311,从上述第三神经网络模型中筛选出目标神经网络模型。
[0124]
在一些实施例中,服务器100可以从上述第三神经网络模型中选择性能综合评分最高的神经网络模型作为目标神经网络模型。并且,如果性能综合评分最高的第三神经网络模型有多个,则可以根据需求,从中选择出运行速度最快或者运行该神经网络模型时消耗的带宽最少,又或者精确度指标最高的一个第三神经网络模型作为目标神经网络模型。其中,具体筛选方式可参考上述304,此处不再赘述。
[0125]
在本技术的一些实施例中,提供了一种神经网络模型构建装置的具体结构示意图,具体地,如图4所示,本技术方法可以应用于神经网络模型构建装置400,神经网络模型构建装置400的功能可以软件系统实现,也可以由硬件设备实现,还可以由软件系统和硬件设备结合来实现,本技术对此不作限制。当神经网络模型构建装置为软件装置时,该神经网络模型构建装置400可以在逻辑上分成多个模块,每个模块可以具有不同的功能,每个模块的功能由计算设备中的处理器读取并执行存储器中的指令来实现,其中,所述的计算设备的结构可以如下文图5中所示的计算设备500。
[0126]
示例性的,该神经网络模型构建装置400可以包括目标算子候选集构建模块401,神经网络模型构建模块402,测试模块403和权重更新模块404。需要说明的是,本技术实施例仅对神经网络模型构建模块400的结构和功能模块进行示例性划分,但是并不对其具体划分做任何限定。
[0127]
其中,目标算子候选集构建模块401用于根据上述目标硬件平台300的硬件约束条件以及目标硬件平台300所需神经网络模型的用途,从上述数据存储平台200中筛选目标算子来构建目标算子候选集。在一些实施例中,目标算子候选集构建模块401可以通过可视化的方式,提示用户在相应的输入框输入手机300的硬件约束条件以及所需神经网络模型的用途,本技术对此不作限制。可以理解,目标算子候选集构建模块401在构建好目标算子候选集后,可以将其存储在下图5所述的存储器中。在一些实施例中,在目标算子候选集构建模块401上可以实现上述方法300。
[0128]
神经网络模型构建模块402,用于从目标算子候选集构建模块401中选择算子构建上述第一神经网络模型,以及根据测试模块403对第一神经网络模型的测试结果,从第一神经网络模型中选择出测试结果符合预设条件的第二神经网络模型,并从第二神经网络模型中确定目标神经网络模型。并且,当第一神经网络模型中没有符合预设条件的第二神经网络模型时,神经网络模型构建模块402则用于从第一神经网络模型中选择出测试结果满足预设测试结果条件的第三神经网络模型,例如从第一神经网络模型中选择出性能综合评分大于预设测试结果阈值的第三神经网络模型,然后在循环次数超过预设次数的情况下,从第三神经网络模型中选择出目标神经网络模型。如果循环次数没有超过预设次数,则根据
第三神经网络模型所使用的算子出现的次数,来决定权重更新模块404是否更新上述由目标算子候选集构建模块401构建的目标算子候选集。其中,预设条件、测试结果等相关介绍可参考上述方法400中的相关描述,在此不作限制。
[0129]
其中,权重更新模块404更新目标算子候选集包括增加目标算子候选集中,算子出现次数超过预设次数的算子的权重或者在目标算子候选集中添加第三神经网络模型使用的、未在目标算子候选集中出现的组合算子。可以理解,在一些实施例中,权重更新模块404也可以从目标算子候选集中删除权重小于某一值的算子,在此不作限制。
[0130]
在一些实施例中,在神经网络模型构建装置400上可以执行上述方法300。
[0131]
现在参考图5,所示为根据本技术的一个实施例的电子设备500的框图。电子设备500可以包括一个或多个处理器502,与处理器502中的至少一个连接的系统控制逻辑508,与系统控制逻辑508连接的系统内存504,与系统控制逻辑508连接的非易失性存储器(nvm)505,以及与系统控制逻辑508连接的网络接口510。
[0132]
处理器502可以包括一个或多个单核或多核处理器。处理器502可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任何组合。在本文的实施例中,处理器502可以被配置为执行根据如图3-5所示的各种实施例的一个或多个实施例。
[0133]
在一些实施例中,系统控制逻辑508可以包括任意合适的接口控制器,以向处理器502中的至少一个和/或与系统控制逻辑508通信的任意合适的设备或组件提供任意合适的接口。在一些实施例中,系统控制逻辑508可以包括一个或多个存储器控制器,以提供连接到系统内存504的接口。系统内存504可以用于加载以及存储数据和/或指令。在一些实施例中,电子设备500的内存504可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(dram)。
[0134]
nvm/存储器505可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,nvm/存储器505可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如hdd(hard disk drive,硬盘驱动器),cd(compact disc,光盘)驱动器,dvd(digital versatile disc,数字通用光盘)驱动器中的至少一个。nvm/存储器505可以包括安装在电子设备500的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口510通过网络访问nvm/存储505。特别地,系统内存504和nvm/存储器505可以分别包括:指令520的暂时副本和永久副本。指令520可以包括:由处理器502中的至少一个执行时导致电子设备500实施如图3-4所示的方法的指令。在一些实施例中,指令520、硬件、固件和/或其软件组件可另外地/替代地置于系统控制逻辑508,网络接口510和/或处理器502中。
[0135]
网络接口510可以包括收发器,用于为电子设备500提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口510可以集成于电子设备500的其他组件。例如,网络接口510可以集成于处理器502的,系统内存504,nvm/存储器505,和具有指令的固件设备(未示出)中的至少一种,当处理器502中的至少一个执行所述指令时,电子设备500实现上述各种实施例的一个或多个实施例。
[0136]
网络接口510可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无
线电接口。例如,网络接口510可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
[0137]
在一个实施例中,处理器502中的至少一个可以与用于系统控制逻辑508的一个或多个控制器的逻辑封装在一起,以形成系统封装(sip)。在一个实施例中,处理器502中的至少一个可以与用于系统控制逻辑508的一个或多个控制器的逻辑集成在同一管芯上,以形成片上系统(soc)。
[0138]
电子设备500可以进一步包括:输入/输出(i/0)设备512。i/0设备512可以包括用户界面,使得用户能够与电子设备500进行交互;外围组件接口的设计使得外围组件也能够与电子设备500交互。在一些实施例中,电子设备500还包括传感器,用于确定与电子设备500相关的环境条件和位置信息的至少一种。在一些实施例中,用户界面可包括但不限于显示器(例如,液晶显示器,触摸屏显示器等),扬声器,麦克风,一个或多个相机(例如,静止图像照相机和/或摄像机),手电筒(例如,发光二极管闪光灯)和键盘。在一些实施例中,外围组件接口可以包括但不限于非易失性存储器端口、音频插孔和电源接口。在一些实施例中,传感器可包括但不限于陀螺仪传感器,加速度计,近程传感器,环境光线传感器和定位单元。定位单元还可以是网络接口510的一部分或与网络接口510交互,以与定位网络的组件(例如,全球定位系统(gps)卫星)进行通信。
[0139]
可以理解的是,本发明实施例示意的结构并不构成对电子设备500的具体限定。在本技术另一些实施例中,电子设备500可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0140]
可将程序代码应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本技术的目的,处理系统包括具有诸如例如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器之类的处理器的任何系统。
[0141]
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
[0142]
至少一个实施例的一个或多个方面可以由存储在计算机可读存储介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“ip核”的这些表示可以被存储在有形的计算机可读存储介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
[0143]
本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述以计算机程序代码的方式被实现的解码流程实施例中的步骤。
[0144]
本技术实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行时实现可实现上述实施例中的步骤。
[0145]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0146]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0147]
在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0148]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0149]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
再多了解一些

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

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

相关文献