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

神经网络的测试方法、装置、计算机设备及存储介质与流程

2022-02-19 06:41:20 来源:中国专利 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.图1示出了本公开实施例所提供的一种神经网络的测试方法的流程图;
25.图2示出了本公开实施例所提供的一种神经网络的测试装置的示意图;
26.图3示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
27.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的
组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
28.经研究发现,深度学习网络的训练过程通常在高算力、高数据精度的环境下实现;在将深度学习网络部署至嵌入式设备中时,由于嵌入式设备的算力、数据精度都有一定的限制,因此需要根据嵌入式设备的具体硬件环境,对训练好的深度学习网络进行量化,以使量化后的深度学习网络能够适应硬件环境。由于数据精度的下降,会导致深度学习网络在部署至嵌入式设备中后,精度会存在显著的下降,进而无法满足使用需求。
29.为了减少深度学习网络在部署到嵌入式设备后的精度下降问题,通常需要在将深度学习网络部署至嵌入式设备之前,对深度学习网络中的参数进行进一步的调整。当前,通常采用随机搜索(random search)、贝叶斯优化(bayesian optimization)等基于超参数调整的方式进行全局下的参数调整,这种方式耗时较长,且效率较低。
30.基于上述研究,本公开提供了一种神经网络的测试方法,能够利用与待部署神经网络对应的标准网络,从待部署神经网络中,确定导致待部署神经网络的精度出现问题的目标网络层,从而能够针对性的对目标网络层的参数进行调整,以降低对待部署神经网络的参数进行调整所需要的耗时,减少神经网络在执行处理任务过程中所需要的计算资源和存储资源、以及数据传输资源,降低神经网络部署时所需要的运行环境要求,提升调整的效率。
31.针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
32.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
33.为便于对本实施例进行理解,首先对本公开实施例所公开的一种神经网络的测试方法进行详细介绍。在一些可能的实现方式中,该神经网络的测试方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
34.下面对本公开实施例提供的神经网络的测试方法加以说明。
35.参见图1所示,为本公开实施例提供的一种神经网络的测试方法的流程图,所述方法包括步骤s101~s103,其中:
36.s101:获取待部署神经网络、以及与所述待部署神经网络对应的标准网络;
37.s102:在所述待部署神经网络的硬件环境下,利用所述待部署神经网络对第一验证数据进行处理,得到所述待部署神经网络的各个网络层分别对应的第一结果数据;以及在测试环境下,利用所述标准网络对所述第一验证数据进行处理,得到与各个所述网络层分别对应的第二结果数据;
38.s103:基于所述第一结果数据和所述第二结果数据,从所述待部署神经网络中确定目标网络层。
39.本公开实施例通过获取待部署神经网络、以及与待部署神经网络对应的标准网络,并获取在待部署的硬件环境下待部署神经网络与标准网络的各个网络层分别对第一验
证数据进行处理得到的结果数据,从待部署神经网络中确定目标网络层,从而利用与待部署神经网络对应的标准网络,从待部署神经网络中,确定导致待部署神经网络的精度出现问题的目标网络层,从而能够针对性的对目标网络层的参数进行调整,以降低对待部署神经网络的参数进行调整所需要的耗时,提升调整的效率。
40.根据待部署神经网络功能的不同,待部署神经网络可以具有相应的功能以及结构;示例性的,为人脸检测功能,则待部署神经网络为人脸检测神经网络,对应的验证数据为包含人脸的图像;为三维重建功能,则待部署神经网络为三维重建神经网络,对应的验证数据为进行三维重建的图像;为语音识别功能,则待部署神经网络为语音识别网络,对应的验证数据为语音。具体的,可以根据实际的情况确定待部署神经网络的功能以及结构,本公开实施例不做限定。
41.下面对上述s101~s103加以详细说明。
42.针对上述s101,在获取待部署神经网络时,获取的待部署神经网络的结构例如可以根据实际的应用以及需求确定。
43.示例性的,在实际应用于对图像处理时,选取的待部署神经网络例如可以包括卷积神经网络(convolutional neural network,rnn),或者自注意力神经网络(transformer);在对文字进行处理时,选取的待部署神经网络例如可以包括循环神经网络(recurrent neural network,rnn)。具体可以根据实际情况确定,在此不做出限定。
44.待部署神经网络的具体功能也可以根据实际的需要进行确定,功能例如可以包括下述任一种:人脸识别、动作识别、语音转换、文字识别等。
45.另外,确定待部署神经网络时,例如可以采用样本数据对网络模型进行训练,以得到待部署神经网络。例如,在确定待部署神经网络的网络类型为应用于图像处理的卷积神经网络时,例如可以获取多张样本图像作为样本数据,对卷积神经网络进行训练,并得到训练好的卷积神经网络,作为上述说明的待部署神经网络。也即,确定的待部署神经网络例如可以是能够准确的进行对应任务处理的神经网络。
46.在本公开另一实施例中,还可以获取待部署神经网络对应的标准网络。其中,待部署神经网络为一个神经网络,其具有神经网络的具体结构。为了可以将待部署神经网络实际部署在硬件环境下,可以获取对应的标准网络,以在测试环境下先确定待部署神经网络是否存在设置并不准确的网络层,再通过对待部署神经网络进行调整得到目标神经网络,并将目标神经网络具体部署在硬件环境下。
47.其中,硬件环境指对待部署神经网络进行调整后得到的目标神经网络,在不同应用场景中实现应用时的使用环境。而对于测试环境,其例如可以包括硬件环境的克隆复制环境,也即从对待部署神经网络的开发环境到硬件环境之间的过渡环境,在该测试环境中主要对待部署神经网络中是否存在需要调整的目标网络层进行测试。
48.针对标准网络,此处,以利用特征嵌入的快速卷积结构(convolutional architecture for fast feature embedding,caffe)确定标准网络为例进行说明。其中,caffe是一个深度学习框架,并可以以网络层(layer)的形式对网络层的输入数据进行计算处理,得到可以认为是正确的处理结果。这样,通过caffe可以确定与待部署神经网络中的各个网络层对应的网络层,并利用caffe确定的网络层构建标准网络。
49.也即,确定的标准网络中每层网络层均可以在待部署神经网络中确定对应的网络
层,并且这一对网络层具体可以实现的功能是相同的。这样,利用标准网络和待部署神经网络分别对相同的数据进行处理,并对各个网络层输出的结果数据进行比较时,由于标准网络可以相应的输出正确的结果,因此利用比较结果可以确定出待部署神经网络中可能存在问题的目标网络层。
50.针对上述s102,在获取得到待部署神经网络、以及与待部署神经网络对应的标准网络后,例如可以利用待部署神经网络与标准网络分别对第一验证数据进行处理,得到待部署神经网络的各个网络层分别对应的第一结果数据,以及标准网络中与各个网络层分别对应的第二结果数据。
51.下面,分别对待部署神经网络、以及标准网络对第一验证数据进行数据处理进行说明。此处,第一验证数据例如可以是数据集,其中可以包括一组或多组数据,每组数据中可以包括一个或多个数据。
52.针对待部署神经网络对第一验证数据进行数据处理的情况,具体地,例如可以在待部署神经网络的硬件环境下,利用待部署神经网络对第一验证数据进行处理,得到待部署神经网络的各个网络层分别对应的第一结果数据。
53.其中,第一验证数据例如可以包括随机数据,例如,获取的第一验证数据例如可以包括均值为0,标准差为1的一组随机数据。或者,第一验证数据例如还可以包括硬件环境下实际使用的目标数据,例如硬件环境下的实验数据,或者实际任务中需要处理的数据。具体地确定第一验证数据的方式在此仅列举出部分示例,并不做出限定。
54.在确定第一验证数据后,具体例如可以采用下述方式确定待部署神经网络对第一验证数据进行处理得到的第一结果数据:对所述待部署神经网络进行解析,得到所述待部署神经网络中各个第一算子的算子信息;基于所述硬件环境、以及各个第一算子的算子信息,从所述待部署神经网络的第一算子中,确定所述硬件环境不支持的待替换算子;利用所述硬件环境适配的第二算子,替换所述待替换算子,生成测试神经网络;将所述第一验证数据输入至所述测试神经网络,得到所述第一结果数据。
55.此处,由于上述s101中获取的待部署神经网络仅能在软件上进行数据处理时获得较好的处理结果,并不能保证可以良好的适应待部署的硬件环境,因此,确定的待部署神经网络即使在进行对应任务的处理时有较好的处理结果,也需要根据硬件环境对其中的网络参数进行量化处理,以得到可以实际部署于硬件环境中的神经网络。
56.具体地,在对待部署神经网络中的网络参数,也即第一算子进行量化处理前,例如可以对待部署神经网络进行解析,以确定待部署神经网络中各个第一算子的算子信息。其中,所述算子信息包括:算子类型和/或算子内参。
57.在对待部署的神经网络进行解析时,例如可以对所述待部署神经网络进行解析,得到所述待部署神经网络中各个第一算子的算子信息;;和/或,对所述待部署神经网络对应的模型参数文件进行解析,得到所述待部署神经网络中各个网络层分别对应算子的算子内参。
58.示例性的,结构定义文件例如可以包括“.prototxt”类型的文件。其中,结构定义文件中例如可以包括对待部署神经网络对应结构的定义,例如待部署神经网络的网络层数量,以及各个网络层对应的结构类型,例如卷积层、池化层、以及全连接层等,另外还包括各个网络层分别对应算子的算子类型。针对不同的网络层分别对应的算子,由于部分网络层
对应的算子还可以包括算子内参,例如卷积层对应的卷积核、以及卷积步长等,全连接层对应的全连接权重矩阵,因此还可以对待部署神经网络对应的模型参数文件进行解析,以确定待部署神经网络中的算子内参。其中,模型参数文件例如可以包括用于定义或设置模型中算子的算子类型的文件,例如model.bin文件。通过对模型参数文件进行解析,例如可以算子为卷积算子,对应的算子内参包括卷积核、以及卷积核的卷积步长2;或者包括全连接层的全连接权重矩阵,对应的额外参数例如包括一组权重参数。
59.在一种可能的情况下,待部署神经网络中的各个第一算子的算子类型相同,例如在待部署神经网络的体量较小的情况下,确定出待部署神经网络中的各个第一算子的算子类型均为int4。而实际上,待部署的硬件环境对应的量化比特数为int8或者float16(表示在计算机中占16个比特位的浮点数类型),因此算子类型为int4的待部署神经网络并不能适用于该硬件环境。
60.相应的,由于可以确定硬件环境的量化比特数,因此可以根据各个第一算子的算子类型,从待部署神经网络的第一算子中,确定硬件环境不支持的待替换算子。
61.具体的,可以通过检测的方式,确定在功能库中是否存在与第一算子对应功能的算子。若存在第一算子在功能库中无法找到对应功能的算子,也即待替换算子,例如可以对该待替换算子对应的功能和名称输出,并通过编程等方式重新为该待替换算子确定对应的第二算子,并将与第二算子对应功能的算子加入功能库。这样,将第二算子替换对应的待替换算子后,可以在确定第一算子和第二算子均能在功能库中确定对应算子的情况下,生成测试神经网络。在一种可能的情况下,为了利用第一算子以及第二算子确定测试神经网络,因此还可以对第一算子和第二算子的算子进行量化处理,量化为能使用于硬件环境下的算子。以上述示例为例,若硬件环境下的算子类型为int8,而待部署神经网络中的算子类型为int4,也即第一算子和第二算子的算子类型为int4,则可以对第一算子和第二算子进行量化处理,量化至int8,使量化后的算子可以使用于该硬件环境下。
62.在生成测试神经网络后,由于测试神经网络可以在硬件环境下使用,因此可以利用该测试神经网络在硬件环境下对第一验证数据进行处理。得到的第一结果数据,即可以用于验证在硬件环境下测试神经网络是否能表现出较好的处理能力,也即可以进一步确定待部署神经网络是否能在硬件环境下有较好的数据处理能力。
63.其中,第一结果数据包括与待部署神经网络中的各个网络层分别对应的结果数据。示例性的,若待部署神经网络有n(n为正整数)层网络层,则对于该n层网络层中的各个网络层,均对应有第一结果数据。例如,对应于第i层网络层,该层网络层对应的第一结果数据例如可以表示为s
i
;对应于第i

1层网络层,该层网络层对应的第一结果数据例如可以表示为s
i
‑1。其中,1≤i

1<i≤n。
64.此处,为了通过第一结果数据确定待部署神经网络的是否有较好的数据处理能力,可以通过第一结果数据与标准网络对第一验证数据的处理结果(也即第二结果数据)进行比较确定。其中,为了得到第二结果数据,并使得第一结果数据与第二结果数据可以比较,例如可以采用相同的第一验证数据。利用标准网络对第一验证数据进行处理,相似的,可以得到与标准网络中各个网络层对应的第二结果数据。
65.此处,第二结果数据与第一结果数据相似,包括与标准网络中的各个网络层分别对应的结果数据。以上述说明的待部署神经网络为例,由于待部署神经网络与标准网络的
结构相似,则对于标准网络而言,对应n层网络层中的各个网络层,均对应有第二结果数据。例如,对应与第i层网络层,该层网络层对应的第二结果数据例如可以表示为p
i
;对应于第i

1层网络层,该层网络层对应的第二结果数据例如可以表示为p
i
‑1。
66.这样,通过对待部署神经网络以及标准网络中,相对应的网络层分别对应的第一结果数据和第二结果数据进行比较,即可以确定在待部署神经网络中可能存在不适配硬件的算子的网络层。
67.针对上述s103,在利用第一结果数据以及第二结果数据确定待部署神经网络中的目标网络层时,例如可以采用下述方式:针对所述待部署神经网络的多个网络层中每个网络层,将该网络层对应的第一结果数据反量化至与所述第二结果数据一致的比特数,得到该网络层对应的第三结果数据;确定该网络层对应的第二结果数据和第三结果数据的距离;根据多个所述网络层分别对应的距离,从多个所述网络层中,确定目标网络层。
68.在具体实施中,由于第二结果数据是由标准网络对第一验证数据级进行处理得到的,因此第二结果数据的类型例如是与标准网络对应的,例如float32,而第一结果数据是由待部署网络在硬件环境中对第一验证数据进行处理得到的,因此第一结果数据的类型例如是与硬件环境对应的,例如int8或者float16。
69.示例性的,以第一结果数据的类型为int8,第二结果数据的类型为float32为例进行说明。为了可以将第一结果数据与第二结果数据进行比较,可以先针对待部署神经网络中多个网络层中的每个网络层,将该网络层对应的第一结果数据反量化至与第二结果数据一致的比特数。例如,对于第i层网络层,对应的第一结果数据为s
i
,且第一结果数据s
i
对应的类型为int8;对应的第二结果数据为p
i
,且第二结果数据为float32。通过将第一结果数据反量化至float32的类型,例如可以得到第三结果数据q
i
。这样,利用将第一结果数据反量化至与第二结果数据一致的比特数,得到第三结果数据,由于第三结果数据与第二结果数据的类型一致,因此可以通过第三结果数据与第二结果数据进行比较,以确定待部署神经网络中的第i层网络层是否可以与标准网络相似的完成对应的数据处理任务。
70.此处,选取对第一结果数据反量化至于第二结果数据一致的比特数,得到第三结果数据,并利用第三结果数据与第二结果数据对比的方式,可以实现在高精度的标准下进行比较。较之对第二结果数据量化至于第一结果数据一致的比特数,再进行与第一结果数据比对的方式,本公开实施例所采用的反量化方式,一方面可以满足在更高的精度标准下准确地进行比对,另一方面,可以避免量化的方式下引入量化误差,进而无法有效的通过相同精度下结果数据的比对,确定网络层是否能够与标准网络相似的完成对应的数据处理任务。
71.其中,针对第i层网络层,在对第二结果数据p
i
与第三结果数据q
i
进行比较时,例如可以先确定第二结果数据p
i
与第三结果数据q
i
之间的距离,再利用距离与预设的距离阈值进行比较。其中,在计算第二结果数据p
i
与第三结果数据q
i
之间的距离时,例如可以计算第二结果数据p
i
与第三结果数据q
i
之间的余弦距离、欧式距离等中至少一种,具体地计算方式以及计算过程不做出限定,在此不再赘述。
72.相似地,对于待部署神经网络中的其他网络层,例如可以采用与上述第i层网络层对应的方式,确定各个网络层分别对应的距离。这样,即可以确定待部署神经网络中的多个网络层分别对应的距离。
73.在具体实施中,例如可以根据多个网络层分别对应的距离,从多个网络层中确定目标网络层。具体地,例如可以采用下述方式:将多个网络层分别对应的距离和预设的距离阈值进行比对;将对应距离小于所述预设的距离阈值的网络层确定为备选网络层;基于各个备选网络层在所述待部署神经网络中的位置,从所述备选网络层中,确定目标网络层。
74.示例性的,以第i层网络层对应的距离l
i
为例进行说明。在确定用于比对的预设的距离阈值th时,例如可以根据实际情况或者经验确定预设的距离阈值的具体取值。具体地,以第i层网络层对应的距离l
i
为余弦距离为例,为了保证待部署神经网络中第i层网络层输出的数据与标准网络基本一致,则相应的可以设置预设的距离阈值th为0.99。此处,距离例如可以表征网络层的相似度,若距离对应的数据较大,则可以认为两个网络层更相似。若距离l
i
小于0.99,则可以认为该第i层网络层为可能需要调整的备选网络层;若距离l
i
大于或等于0.99,则可以认为该第i层网络层为不需要调整的网络层,也即认为是在配置上无误的网络层。
75.针对待部署神经网络中的其他网络层,根据上述示例中对第i层网络层是否可以作为备选网络层相似的方式,可以确定其他网络层是否为备选网络层。在一种可能的情况下,由于待部署神经网络中的一层网络层的配置存在问题,则该层输出的第一结果数据与对应的第二结果数据的差异较大(也即该层网络层对应的距离较大),可能会导致后续配置无误的网络在继续对第一结果数据进行处理时也不能获得与第二结果数据差异较小的结果数据,因此,为了更明确的定位到出现配置错误的网络层,可以基于各个备选网络层在待部署神经网络中的位置,从备选网络层中确定目标网络层。
76.具体地,在从备选网络层中确定目标网络层时,例如可以直接将备选网络层中首个网络层作为目标网络层。示例性的,在备选网络层包括第i层至第n层时,例如可以将第i层网络层作为目标网络层。
77.在本公开另一实施例中,在确定目标网络层后,例如还可以对目标网络层进行调整,以得到目标神经网络。
78.在具体实施中,在确定目标神经网络时,例如可以采用下述方式:随机生成输入至所述目标网络层的第一测试数据;以及在所述待部署神经网络的硬件环境下,利用所述待部署神经网络对第二验证数据进行处理,得到所述目标网络层的上一网络层对应的第四结果数据;将所述第四结果数据作为第二测试数据,利用所述第一测试数据以及所述第二测试数据,对所述目标网络层进行测试,得到测试结果;基于所述测试结果,对所述目标网络层进行调整,得到所述目标神经网络。
79.示例性的,在确定测试结果后,例如可以根据测试结果反推出在目标网络层中可能出现异常的算子,并对可能出现异常的算子进行调整,从而达到对目标网络层进行调整的目的。在进行一次调整后,例如还可以重复上述方式,确定新的第一测试数据,以根据新的测试结果确定是否对目标网络层进行了正确的算子调整。
80.其中,在确定输入至目标网络层的第一测试数据时,例如可以根据该目标网络层在实际处理数据时的输入数据确定。示例性的,在目标网络层为待部署神经网络中的第一层网络层时,输入至目标层的第一测试数据例如可以采用与上述s102中确定第一验证数据相似的方式获取。在目标网络层为待部署神经网络中的其他层网络层时,输入至该目标网络层的第一测试数据,例如可以依据该层目标网络层的上一网络层对应的第一结果数据,
随机生成在类型和结构上相似的其他数据作为第一测试数据。
81.另外,还可以在待部署神经网络的硬件环境下,利用待部署神经网络对第二验证数据进行处理,得到目标网络层的上一网络层对应的第四结果数据。此处,第二验证数据例如可以与上述说明的第一验证数据部分相同,或者通过与上述确定第一验证数据相似的方式确定的与第一验证数据完全不同的第二验证数据。相似的,利用待部署神经网络对第二验证数据进行处理,可以得到每层网络层分别对应的处理结果,其中,选取目标网络层的上一网络层对应的第四结果数据,作为第二测试数据。
82.在确定第一测试数据以及第二测试数据后,还可以利用第一测试数据以及第二测试数据,对目标网络层进行测试,得到目标网络层的输出数据,作为测试结果。其中,测试结果例如可以包括与第一测试数据对应的第一测试结果、以及与第二测试数据对应的第二测试结果。
83.此处,对于第一测试数据对应的第一测试结果而言,由于第一测试数据对应的类型与第一结果数据的类型相同。为了通过第一测试数据确定待部署神经网络是否可以对随机生成的测试数据进行较为准确的处理,可以利用第一测试数据对应的测试结果a
i
,与标准网络中目标网络层对第一测试数据进行处理得到的结果b
i
进行比对。此处,具体对a
i
以及b
i
进行比对的方式,例如可以包括上述说明中利用第一结果数据与第二结果数据的距离与预设的距离阈值进行比对的方式,并得到距离l'
i

84.此处,预设的距离阈值th'例如可以与上述说明的距离阈值th相同,或者,也可以根据实际情况将其设置为与距离阈值th不同的数值。
85.在确定距离l'
i
后,若距离l'
i
小于预设的距离阈值,则认为目标网络层并不能较好的对随机生成的测试数据进行处理;若l'
i
大于或者等于预设的距离阈值,则认为目标网络层可以较好的对随机生成的测试数据进行处理。
86.也即,第一测试数据对应的第一测试结果例如可以包括:a1.目标网络层能够较好的对随机生成的测试数据进行处理;以及,a2.目标网络层不能较好的对随机生成的测试数据进行处理。
87.针对第二测试数据而言,可以利用与第一测试数据相同的处理方式,确定对应的第二测试结果。由于第二测试数据包括目标网络层的上一网络层对应的第四结果数据,因此可以确定的第二测试结果例如可以包括:b1.目标网络层能够较好的对上一网络层的输出结果数据进行处理;以及,b2.目标网络层不能较好的对上一网络层的输出结果数据进行处理。
88.这样,通过上述确定目标网络层,以及确定的第一测试结果与第二测试结果的结合,可以得到对目标网络层进行测试的测试结果。具体地,在不同的第一测试结果和第二测试结果下,目标网络层对应的测试结果可以包括:
89.①
第一测试结果为a2,第二测试结果为b2。
90.在该种情况下,反应出目标网络层对随机生成的数据以及上一网络层的数据结果数据的处理均较差,则可以相应的认为该层目标网络层出现问题,需要进行进一步的参数调整。
91.②
第一测试结果为a1,第二测试结果为b2。
92.在该种情况下,反应出目标网络层对随机生成的数据处理较好,但却对上一网络
层的数据结果数据的处理较差,则可以相应的认为是由于为了距离比较而进行的量化过程中,量化的步骤出现问题,例如量化的比特位设置错误,而并非目标网络层自身的参数错误。因此,可以通过回查量化的步骤排除此问题,具体的过程在此不再赘述。
93.③
第一测试结果为a1,第二测试结果为b1。
94.在该种情况下,反应出目标网络层对随机生成的数据以及上一网络层的数据结果数据的处理均较好,则可以相应的认为目标网络层中的参数可以较好的适应硬件环境的需求。此时,例如可以尝试换用更高精度的数据对目标网络层进行进一步的测试,例如float16或者float32类型的数据,以更明确的确定目标网络层中是否存在需要进行调整的参数。
95.这样,根据为目标网络层确定的测试结果,即可以对目标网络层进行调整,以确定在硬件环境下,在进行数据处理时准确性较高的目标神经网络。
96.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
97.基于同一发明构思,本公开实施例中还提供了与神经网络的测试方法对应的神经网络的测试装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述神经网络的测试方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
98.参照图2所示,为本公开实施例提供的一种神经网络的测试装置的示意图,所述测试装置包括:获取模块21、第一处理模块22、确定模块23;其中,
99.获取模块21,用于获取待部署神经网络、以及与所述待部署神经网络对应的标准网络;
100.第一处理模块22,用于在所述待部署神经网络的硬件环境下,利用所述待部署神经网络对第一验证数据进行处理,得到所述待部署神经网络的各个网络层分别对应的第一结果数据;以及在测试环境下,利用所述标准网络对所述第一验证数据进行处理,得到与各个所述网络层分别对应的第二结果数据;
101.确定模块23,用于基于所述第一结果数据和所述第二结果数据,从所述待部署神经网络中确定目标网络层。
102.一种可选的实施方式中,在所述待部署神经网络的硬件环境下,所述第一处理模块22在利用所述待部署神经网络对第一验证数据进行处理,得到所述待部署神经网络的各个网络层分别对应的第一结果数据时,用于:对所述待部署神经网络进行解析,得到所述待部署神经网络中各个第一算子的算子信息;基于所述硬件环境、以及各个第一算子的算子信息,从所述待部署神经网络的第一算子中,确定所述硬件环境不支持的待替换算子;利用所述硬件环境适配的第二算子,替换所述待替换算子,生成测试神经网络;将所述第一验证数据输入至所述测试神经网络,得到所述第一结果数据。
103.一种可选的实施方式中,所述算子信息包括:算子类型和/或算子内参;所述第一处理模块22在对所述待部署神经网络进行解析,得到所述待部署神经网络中各个第一算子的算子信息时,用于:对所述待部署神经网络对应的结构定义文件进行解析,得到所述待部署神经网络的各个网络层分别对应算子的算子类型;和/或,对所述待部署神经网络对应的模型参数文件进行解析,得到所述待部署神经网络中各个网络层分别对应算子的算子内
参。
104.一种可选的实施方式中,所述确定模块23在基于所述第一结果数据和所述第二结果数据,从所述待部署神经网络中确定目标网络层时,用于:针对所述待部署神经网络的多个网络层中每个网络层,将该网络层对应的第一结果数据反量化至与所述第二结果数据一致的比特数,得到该网络层对应的第三结果数据;确定该网络层对应的第二结果数据和第三结果数据的距离;根据多个所述网络层分别对应的距离,从多个所述网络层中,确定目标网络层。
105.一种可选的实施方式中,所述确定模块23在根据多个所述网络层分别对应的距离,从多个所述网络层中,确定目标网络层时,用于:将多个网络层分别对应的距离和预设的距离阈值进行比对;将对应距离大于所述预设的距离阈值的网络层确定为备选网络层;基于各个备选网络层在所述待部署神经网络中的位置,从所述备选网络层中,确定目标网络层。
106.一种可选的实施方式中,所述测试装置还包括,第二处理模块24,用于:对所述目标网络层进行调整,得到目标神经网络。
107.一种可选的实施方式中,所述第二处理模块24在对所述目标网络层进行调整之前还用于:随机生成输入至所述目标网络层的第一测试数据;以及在所述待部署神经网络的硬件环境下,利用所述待部署神经网络对第二验证数据进行处理,得到所述目标网络层的上一网络层对应的第四结果数据;将所述第四结果数据作为第二测试数据,利用所述第一测试数据以及所述第二测试数据,对所述目标网络层进行测试,得到测试结果;所述第二处理模块24在对所述目标网络层进行调整,得到目标神经网络时,用于:基于所述测试结果,对所述目标网络层进行调整,得到所述目标神经网络。
108.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
109.本公开实施例还提供了一种计算机设备,如图3所示,为本公开实施例提供的计算机设备结构示意图,包括:
110.处理器10和存储器20;所述存储器20存储有处理器10可执行的机器可读指令,处理器10用于执行存储器20中存储的机器可读指令,所述机器可读指令被处理器10执行时,处理器10执行下述步骤:
111.获取待部署神经网络、以及与所述待部署神经网络对应的标准网络;在所述待部署神经网络的硬件环境下,利用所述待部署神经网络对第一验证数据进行处理,得到所述待部署神经网络的各个网络层分别对应的第一结果数据;以及在测试环境下,利用所述标准网络对所述第一验证数据进行处理,得到与各个所述网络层分别对应的第二结果数据;基于所述第一结果数据和所述第二结果数据,从所述待部署神经网络中确定目标网络层。
112.上述存储器20包括内存210和外部存储器220;这里的内存210也称内存储器,用于暂时存放处理器10中的运算数据,以及与硬盘等外部存储器220交换的数据,处理器10通过内存210与外部存储器220进行数据交换。
113.上述指令的具体执行过程可以参考本公开实施例中所述的神经网络的测试方法的步骤,此处不再赘述。
114.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有
计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的神经网络的测试方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
115.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的神经网络的测试方法的步骤,具体可参见上述方法实施例,在此不再赘述。
116.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
117.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
118.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
119.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
120.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
121.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
再多了解一些

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

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

相关文献