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

算子生成测试用例的生成器、生成方法及系统与流程

2022-08-17 07:57:18 来源:中国专利 TAG:


1.本发明一般地涉及深度学习领域。更具体地,本发明涉及一种针对深度学习中的算子生成测试用例的生成器、生成方法及自动测试系统。


背景技术:

2.算子运算的高准确度是整个深度学习模型高准确率的基础。因此对深度学习算子的测试也是关键且不可或缺的。目前对于算子测试,一般采用人工编写的方式,对于每个场景都需要编写一段相应的代码进行测试,这种方式成本高,效率低,且测试场景往往覆盖不够全面。
3.随着测试技术的不断发展和应用场景的不断丰富,目前已经出现了成对独立组合测试(pairwise independent combinatorial testing,pict)和allpairs。其中,pict是一种基于正交法的软件测试用例生成工具,它要求任意两个因素(输入条件)的所有水平组合至少要被覆盖一次;allpairs是一个测试用例设计工具,用于windows,但移植到了多种平台,以适应该脚本文件的一些小改动。它自动对所有实验技术进行设计,通过这个工具的方法可以在海量的数据组合中选择少量的数据生成测试用例。这些生成工具可以组合出多种较优的组合。但是这些工具只能满足最基本的测试用例场景组合构建,无法针对深度学习中的算子生成有针对性的测试用例,且无法生成对比数据。
4.由此可见,无论是哪种现行方案都不理想。为了解决上述问题,本发明提出了一种针对深度学习的算子生成测试用例的方案。


技术实现要素:

5.为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种针对深度学习中的算子生成测试用例的生成器、方法和生成系统。
6.在一个方面中,本发明揭露一种针对深度学习中的算子生成测试用例的生成器,包括:配置文件单元,用于根据所述算子的数据信息生成所述测试用例所需的配置文件;场景生成单元,用于按照预设组合规则将所述配置文件中的所述数据信息随机组合,以生成多个测试场景;以及用例生成单元,用于根据所述多个测试场景生成多个测试用例。
7.在另一个方面,本发明揭露一种针对深度学习中的算子生成测试用例的方法,所述方法包括:根据所述算子的数据信息生成所述测试用例所需的配置文件;按照预设组合规则将所述配置文件中的所述数据信息随机组合,以生成多个测试场景;以及根据所述多个测试场景生成多个测试用例。
8.在另一个方面,本发明揭露一种自动测试系统,包括:处理器,其配置成基于测试用例执行深度学习中的算子;以及根据上述的生成器。
9.利用本发明的生成测试用例的方案,通过将生成测试场景所需的数据信息进行随机组合,基于该测试场景生成测试用例,使得生成的多个测试用例可以覆盖到大量的测试场景,再者,本发明能针对深度学习中的算子生成覆盖面广且有针对性的测试用例。
附图说明
10.通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
11.图1是本发明实施例卷积神经网络的示意图;
12.图2是示出本发明实施例的测试用例的生成器的装置图;
13.图3是本发明实施例集成电路装置的结构图;
14.图4是本发明实施例板卡的结构图;
15.图5是示出本发明实施例的测试用例生成方法的流程图;以及
16.图6是示出本发明实施例的又一测试用例生成的方法流程图。
具体实施方式
17.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
19.还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
20.如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
21.下面结合附图来详细描述本发明的具体实施方式。
22.深度学习是机器学习的一种,而机器学习是实现人工智能的必经路径。深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。研究深度学习的动机在于建立模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像、声音和文本等。“深度学习”是一个多层网络结构,和人脑的认知结构类似,可以进行计算和学习。
23.卷积神经网络是典型的深度学习模型,卷积神经网络通常由以下四种层结构组成:输入层、卷积层(convo l ut i on l ayer)、池化层(poo l i ng l ayer)、全连接层(fu l l y connected l ayer)。图1是示出卷积神经网络100的四层结构示意图。
24.输入层102是自输入图像中截取部分信息,转化成特征矩阵方式呈现,其中载有对应该部分信息的特征。
25.卷积层104配置成接收来自输入层102的特征矩阵,通过卷积操作对输入图像进行特征抽取。虽然图1的卷积层104仅显示一层结构,但实际运用时可以建制多层卷积层,前半部的卷积层用以捕捉图像局部、细节信息,即输出图像的每个像素只是感受到输入图像很小范围数值进行计算的结果,后面卷积层的感受范围逐层加大,用于捕获图像更复杂、更抽象的信息。经过多个卷积层的运算,最后得到图像在各个不同尺度的抽象表示。通过卷积操作,完成了对输入图像的特征抽取。
26.池化层106配置成对图像的某一个区域用一个值代替,这值通常是该区域所有数值里的最大值或平均值。如果采用最大值,称为最大池化;如果采用平均值,称为均值池化。通过池化,在不至于损失过多信息的前提下,可以缩减模型大小、提高计算速度。
27.全连接层108在整个卷积神经网络100中起到分类器的作用,相当于特征空间变换,把前面所有有用的信息提取整合,再加上激活函数的非线性映射,多层全连接层理论上可以模拟任何非线性变换,以基于不同的分类,做信息比对,借以判断输入图像是否相似于比对的标的。
28.深度学习模型中的至少一层获取输入数据,输入数据可以是图像、声音、文本等,对输入数据进行处理,在处理过程中运行深度学习算子,例如卷积算子、池化算子、激活算子等。算子的高准确度是整个深度学习模型高准确率的基础。
29.测试用例是指为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。在算子测试过程中,不同的测试输入和执行条件对应于不同测试场景的测试用例。测试场景包括功能测试、性能测试、压力测试、带宽测试、i/o测试等等。
30.图2所示为本发明的实施例的一种自动测试系统20,该自动测试系统20配置成测试深度学习中的算子,包括生成测试用例的生成器200和测试器205。生成器200配置成生成针对神经网络中算子的测试用例,包括配置文件单元201、场景生成单元202、用例生成单元203和数据管理单元204。其中,用例生成单元203包括计算单元213和存储单元223。测试器205配置成基于生成器200生成的测试用例对神经网络中算子进行测试,以判断神经网络中算子的准确性,包括解析单元215、执行单元225以及比较单元235。
31.配置文件单元201用于根据算子的数据信息生成测试用例所需的配置文件,并将该配置文件发送给场景生成单元202,由场景生成单元202生成多个测试场景。
32.详细来说,算子的数据信息包括算子的输入/输出个数、输入/输出维度、输入/输出数据类型、数据分布以及参数信息至少其中之一。输入/输出个数或输入/输出维度用于确定算子需要数据的总数;数据分布用于确定输入数据的生成规则,包括正态分布、二项分布、均匀分布等;输入/输出数据类型用于确定算子输入/输出数据的保存类型,以便于该输入/输出数据参与后续的运算及访存。在此实施例中,配置文件使用json文件作为载体,由用户设定待测算子的输入/输出个数、输入/输出维度、输入/输出数据类型、数据分布、参数个数、参数类型等必要的数据信息。其中,json文件是一种简单的数据交换格式,能够在服务器之间交换数据。json文件采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得json成为理想的数据交换语言。
33.场景生成单元202用于按照预设组合规则将配置文件中的数据信息随机组合,以生成多个测试场景。基于响应来自配置文件单元201生成的配置文件,场景生成单元202解
析该配置文件的数据信息,并按照预设组合规则将数据信息进行随机组合。其中,预设组合规则包括选取所述输入/输出个数、所述输入/输出维度、所述输入/输出数据类型、所述数据分布以及所述参数信息至少其中之一。该组合规则可以实现遍历大量测试场景以及边缘测试场景甚至所有的测试场景所需的测试用例,能够全面覆盖深度学习算子的测试场景,提高算子测试的准确率。
34.用例生成单元203用于根据场景生成单元202生成的多个测试场景生成多个测试用例。
35.计算单元213用于基于多个测试场景运行深度学习算子,以得到多个计算结果。每个计算结果包括对应的测试场景所产生的真值,该真值为测试用例在执行深度学习算子时实际得到的结果。每个测试用例为相对应的测试场景、相对应的真值和标准输出值的集合。除了运行深度学习算子,计算单元213还能执行其他简单的任务,比如对执行深度学习算子过程中得到的中间结果进行处理,包括累加、量化、转置、转换数据类型进行精度提升等其他操作。
36.存储单元223配置成与计算单元213协作,用于保存多个计算结果。存储单元223还用于按照约束规则保存所述测试用例。存储单元223可以是缓冲区、专用存储器、通用存储器等多种类型存储结构。所述约束规则包括所述测试用例的命名规范和所述测试用例的结构规范,其中所述结构规范包括所述数据信息的标准名称。可选地,使用protobuf、xml、json文件设定测试用例的约束规则,它们是具有高效的协议数据交换格式工具库。xml和json文件直接使用字段名称来维护序列化后实例中字段与数据之间的映射关系,一般以字符串的形式保存在序列化后的字节流中。在这两种文件中,消息和消息的定义相对独立,可读性较好。protobuf和xml、json序列化的方式不同,采用了二进制字节的序列化方式,用字段索引和字段类型通过算法计算得到字段之前的关系映射,从而达到更高的时间效率和空间效率,特别适合对数据大小和传输速率比较敏感的场合使用。
37.数据管理单元204用于按照预设管理规则对所述多个测试用例进行分类。数据管理单元204接收存储单元223存储的测试用例,并对测试用例按照不同的标准进行分类,以便测试用例生成后可以进行统一管理和调用,并支持测试用例上传、测试用例查询、版本管理等功能。进一步,预设管理规则包括所述测试用例的版本信息。在研发过程中,根据需求对保存的测试用例进行不断更新,根据测试用例版本的不同进行分类,方便用户快捷的查询不同版本对应的不同的测试用例。预设管理规则还包括运行所述深度学习模型的硬件信息。测试的硬件信息包括不同板卡型号、操作系统、host端系统内存、cpu或gpu的型号等,在不同的硬件环境执行测试用例,所需的测试用例可能存在差异。区分不同的硬件信息目的是在可靠的硬件平台上生成标准的对标数据,以用来进行精度和性能的对比。
38.解析单元215用于解析由生成器200生成的测试用例,得到该测试用例相对应的测试场景、相对应的真值和标准输出值,并将解析的结果发送给执行单元225,根据解析的结果在测试代码上执行测试,得到该测试用例的测试结果。比较单元235将测试结果与解析单元215获得的标准输出值进行比较,得到最终的测试结果。具体来说,当测试结果与标准输出值在误差允许的范围内,则测试通过,当测试结果与标准输出值超出误差允许的阈值时,则测试不通过。
39.图3是示出根据本发明实施例的集成电路装置300的结构图。如图所示,集成电路
装置300包括系统302,系统302可以是图2系统20。另外,集成电路装置300还包括通用互联接口304和其他处理装置306。
40.在此实施例中,其他处理装置306可以是中央处理器、图形处理器、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目不做限制而是依实际需要来确定。在特定的情况下,其他处理装置306可以作为系统302与外部数据和控制的接口,执行包括但不限于数据搬运,完成对机器学习运算装置的开启、停止等的基本控制。
41.根据此实施例的技术方案,通用互联接口304可以用于在系统302与其他处理装置306间传输数据和控制指令。例如,系统302可以经由通用互联接口304从其他处理装置306中获取所需的输入数据,写入系统302片上的存储装置。进一步,系统302可以经由通用互联接口304从其他处理装置306中获取控制指令,写入系统302片上的控制缓存。替代地或可选地,通用互联接口304也可以读取系统302的存储模块中的数据并传输给其他处理装置306。
42.可选地,集成电路装置300还可以包括存储装置308,其可以分别与系统302和其他处理装置306连接。在一个或多个实施例中,存储装置308可以用于保存系统302和其他处理装置306的数据,尤其适用于所需要运算的数据在系统302或其他处理装置306的内部存储中无法全部保存的数据。
43.根据应用场景的不同,本发明的集成电路装置300可以作为手机、机器人、无人机、视频采集设备等设备的soc片上系统,从而有效地降低核心面积,提高处理速度并降低整体的功耗。在此情况下,集成电路装置300的通用互联接口304与设备的某些部件相连接。此处所指的某些部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。
44.在一些实施例里,本发明还公开了一种芯片或集成电路芯片,其包括了集成电路装置300。在另一些实施例里,本发明还公开了一种芯片封装结构,其包括了上述芯片。
45.在一些实施例里,本发明还公开了一种板卡,其包括了上述芯片封装结构。参阅图4,其提供了前述的示例性板卡400,板卡400除了包括上述芯片402以外,还可以包括其他的配套部件,该配套部件可以包括但不限于:存储器件404、接口装置406和控制器件408。
46.存储器件404与芯片封装结构内的芯片402通过总线连接,用于存储数据。存储器件404可以包括多组存储器410。每一组存储器410与芯片402通过总线连接。每一组存储器410可以是ddr sdram(“double data rate sdram”,双倍速率同步动态随机存储器)。
47.在一个实施例中,存储器件404可以包括4组存储器410。每一组存储器410可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述芯片402内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中的64比特用于传输数据,8比特用于ecc校验。
48.在一个实施例中,每一组存储器410可以包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在芯片402中设置控制ddr的控制器,用于对每个存储器410的数据传输与数据存储的控制。
49.接口装置406与所述芯片封装结构内的芯片402电连接。接口装置406用于实现芯片402与外部设备412(例如服务器或计算机)之间的数据传输。在一个实施例中,接口装置406可以为标准pcie接口。例如,待处理的数据由服务器通过标准pcie接口传递至芯片402,实现数据转移。在另一个实施例中,接口装置406还可以是其他的接口,本发明并不限制上述其他的接口的具体表现形式,能够实现转接功能即可。另外,芯片402的计算结果仍由接口装置406传送回外部设备412。
50.控制器件408与芯片402电连接,以便对芯片402的状态进行监控。具体地,芯片402与控制器件408可以通过spi接口电连接。控制器件408可以包括单片机(“mcu”,micro controller unit)。芯片402可以包括多个处理芯片、多个处理核或多个处理电路,并且可以带动多个负载。由此,芯片402可以处于多负载和轻负载等不同的工作状态。通过控制器件408可以实现对芯片402中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
51.在一些实施例里,本发明还公开了一种电子设备或装置,其包括了上述板卡400。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。
52.图5示出本发明的另一个实施例,是一种针对深度学习中的算子生成测试用例的方法,该方法应用在上述测试系统20、组合装置300或板卡400中。图5示出此方法的流程图。
53.步骤510:根据所述算子的数据信息生成所述测试用例所需的配置文件。详细来说,算子的数据信息包括算子的输入/输出个数、输入/输出维度、输入/输出数据类型、数据分布以及参数信息至少其中之一。其中,输入/输出个数或输入/输出维度用于确定算子需要数据的总数;数据分布用于确定输入数据的生成规则,包括正态分布、二项分布、均匀分布等;输入/输出数据类型用于确定算子输入/输出数据的保存类型,以便于该输入/输出数据参与后续的运算及访存。在此实施例中,该配置文件使用json文件作为载体,由用户设定待测算子的输入/输出个数、输入/输出维度、输入/输出数据类型、数据分布、参数个数、参数类型等必要的数据信息。
54.步骤520:按照预设组合规则将所述配置文件中的所述数据信息随机组合,以生成多个测试场景。此步骤进一步解析该配置文件的数据信息,并按照预设组合规则将数据信息进行随机组合。其中,预设组合规则包括选取所述输入/输出个数、所述输入/输出维度、所述输入/输出数据类型、所述数据分布以及所述参数信息至少其中之一。该组合规则可以实现遍历大量甚至所有的测试场景所需的测试用例,能够全面覆盖深度学习算子的测试场景,提高算子测试的准确率。
55.步骤530:根据所述多个测试场景生成多个测试用例。详细来说,此步骤可以展开成如图6所示的流程图。
56.步骤610:基于多个测试场景运行深度学习算子,以得到多个计算结果。每个计算结果包括对应的测试场景所产生的真值,该真值为测试用例在执行深度学习算子时实际得到的结果。每个测试用例为相对应的测试场景、相对应的真值和标准输出值的集合。
57.步骤620:保存多个计算结果。按照约束规则保存所述测试用例。所述约束规则包括所述测试用例的命名规范和所述测试用例的结构规范,其中所述结构规范包括所述数据信息的标准名称。可选地,使用protobuf、xml、json文件设定测试用例的约束规则,它们是具有高效的协议数据交换格式工具库。xml和json文件直接使用字段名称来维护序列化后实例中字段与数据之间的映射关系,一般以字符串的形式保存在序列化后的字节流中。在
这两种文件中,消息和消息的定义相对独立,可读性较好。protobuf和xml、json序列化的方式不同,采用了二进制字节的序列化方式,用字段索引和字段类型通过算法计算得到字段之前的关系映射,从而达到更高的时间效率和空间效率,特别适合对数据大小和传输速率比较敏感的场合使用。
58.可选地,此实施例的方法还包括按照预设管理规则对所述多个测试用例进行分类。详细来说,是对测试用例按照不同的标准进行分类,以便测试用例生成后可以进行统一管理和调用,并支持测试用例上传、测试用例查询、版本管理等功能。进一步,预设管理规则包括所述测试用例的版本信息。在研发过程中,根据需求对保存的测试用例进行不断更新,根据测试用例版本的不同进行分类,方便用户快捷的查询不同版本需求对应的不同版本的测试用例。预设管理规则还包括运行所述深度学习模型的硬件信息。测试的硬件信息包括不同板卡型号、操作系统、host端系统内存、cpu或gpu的型号,在不同的硬件环境执行测试用例,所需的测试用例可能存在差异。区分不同的硬件信息目的是在可靠的硬件平台上生成标准的对标数据,以用来进行精度和性能的对比。
59.基于前述各实施例的说明,本发明通过将生成测试场景所需的数据信息进行随机组合,基于该测试场景生成测试用例,使得生成的多个测试用例可以覆盖到大量的测试场景,再者,本发明能针对深度学习中的算子生成覆盖面广且有针对性的测试用例。
60.依据以下条款可更好地理解前述内容:
61.条款a1、一种针对神经网络中的算子生成测试用例的生成器,其包括:配置文件单元,用于根据所述算子的数据信息生成所述测试用例所需的配置文件;场景生成单元,用于按照预设组合规则将所述配置文件中的所述数据信息随机组合,以生成多个测试场景;以及用例生成单元,用于根据所述多个测试场景生成多个测试用例。
62.条款a2、根据条款a1所述的生成器,所述数据信息包括所述算子的输入/输出个数、输入/输出维度、输入/输出数据类型、数据分布以及参数信息至少其中之一。
63.条款a3、根据条款a2所述的生成器,所述预设组合规则包括选取所述输入/输出个数、所述输入/输出维度、所述输入/输出数据类型、所述数据分布以及所述参数信息至少其中之一。
64.条款a4、根据条款a1所述的生成器,所述用例生成单元包括:计算单元,用于基于所述多个测试场景运行所述算子,以得到多个计算结果;存储单元,用于保存所述多个计算结果。
65.条款a5、根据条款a4所述的生成器,每个计算结果包括对应的测试场景所产生的真值,其中,每个测试用例为相对应的测试场景、相对应的真值和标准输出值的集合。
66.条款a6、根据条款a5所述的生成器,所述存储单元还用于按照约束规则保存所述测试用例。
67.条款a7、根据条款a6所述的生成器,所述约束规则包括所述测试用例的命名规范和所述测试用例的结构规范,其中所述结构规范包括所述数据信息的标准名称。
68.条款a8、根据条款a1所述的生成器,还包括数据管理单元,用于按照预设管理规则对所述多个测试用例进行分类。
69.条款a9、根据条款a8所述的生成器,所述预设管理规则包括所述测试用例的版本信息。
70.条款a10、根据条款a8所述的生成器,所述预设管理规则包括运行所述神经网络的硬件信息。
71.条款a11、一种针对深度学习中的算子生成测试用例的方法,所述方法包括:根据所述算子的数据信息生成所述测试用例所需的配置文件;按照预设组合规则将所述配置文件中的所述数据信息随机组合,以生成多个测试场景;以及根据所述多个测试场景生成多个测试用例。
72.条款a12、一种自动测试系统,包括:处理器,其配置成基于测试用例执行深度学习中的算子;以及条款a1至a10中任意一项所述的生成器。
73.以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

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

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

相关文献