本发明涉及深度学习领域,更具体地说是指深度学习框架测试方法、装置、计算机设备及存储介质。
背景技术:
1、随着web应用的普及,javascript已成为前端开发的主要语言。这一趋势使得将深度学习模型集成到web应用中的需求不断增加。然而,这也带来了测试深度学习模型的挑战,特别是在输入张量生成和模型生成方面。
2、在测试输入张量生成中,目前深度学习框架的测试方法往往依赖固定的张量形状和数据类型,这限制了对缓存复用机制的全面测试。例如,现有方法可能无法有效检测处理不同张量形状的模块。此外,javascript深度学习框架在判断两个张量是否完全相同时可能出现误判,即两个形状相同但数据不同的张量被错误地认为是相同的。这种误判导致缓存复用错误,现有测试方法却未能有效识别这一问题。
3、在测试输入模型生成方面,现有深度学习框架的测试方法往往无法生成能够触发推理加速机制的模型。这些方法主要针对tensorflow、pytorch等主流框架,而未能考虑javascript环境中的深度学习框架。因此,这些测试方法难以检测因推理加速机制(如节点优化、算子重排、算子融合)引发的框架缺陷。
4、因此,有必要设计一种新的方法,实现专注于边端环境中的javascript深度学习框架,更全面地检测与推理优化机制相关的框架缺陷,以解决现有深度学习框架测试方法在javascript环境下存在的技术瓶颈。
技术实现思路
1、本发明的目的在于克服现有技术的缺陷,提供深度学习框架测试方法、装置、计算机设备及存储介质。
2、为实现上述目的,本发明采用以下技术方案:深度学习框架测试方法,包括:
3、创建种子张量,并进行突变,以得到测试输入张量;
4、创建种子模型,并进行突变,以得到测试输入模型;
5、在不同浏览器下,根据所述测试输入张量以及所述测试输入模型对待测试深度学习框架进行差分测试,以得到测试结果;
6、根据所述测试结果进行种子张量以及种子模型所对应的突变规则调整。
7、其进一步技术方案为:所述创建种子张量,并进行突变,以得到测试输入张量,包括:
8、按照(n,c,h,w)格式创建种子张量,其中,n是批次数,c是通道数,h是高度,w是宽度;
9、使用张量的突变规则对所述种子张量进行突变,以得到测试输入张量,其中,张量的突变规则包括张量复制、填充、转置、裁剪、数据类型转换中至少一种。
10、其进一步技术方案为:所述创建种子模型,并进行突变,以得到测试输入模型,包括:
11、创建种子模型,其中,所述种子模型的结构为由identity算子组成的无环链;
12、使用模型的突变规则对所述种子模型进行突变,以得到测试输入模型,其中,突变规则包括零维张量化、不移位转置、高度-宽度维度的降维求平均、基于转置的算子重排、基于最大池化的算子重排、等价可分离卷积、等价卷积-归一化-激活块、随机算子中至少一种。
13、其进一步技术方案为:所述在不同浏览器下,根据所述测试输入张量以及所述测试输入模型对待测试深度学习框架进行差分测试,以得到测试结果,包括:
14、在不同浏览器下,将所述测试输入张量以及所述测试输入模型作为输入,待测试深度学习框架作为测试对象,进行差分测试,以得到测试结果。
15、其进一步技术方案为:所述根据所述测试结果进行种子张量以及种子模型所对应的突变规则调整,包括:
16、计算所述测试结果对应的效果指标,并指导测试输入张量和测试输入模型所对应的突变规则选择;
17、记录每个突变规则对待测试深度学习框架的测试结果的贡献,并调整突变规则的选择概率。
18、其进一步技术方案为:所述计算所述测试结果对应的效果指标,并指导测试输入张量和测试输入模型所对应的突变规则选择,包括:
19、当待测试检测框架崩溃或待测试检测框架存在非数缺陷时,测试结果表示测试输入模型未能触发对应缺陷,设置所述测试结果对应的效果指标为0;测试结果表示测试输入模型成功触发对应缺陷,设置所述测试结果对应的效果指标为测试输入张量值的平均值;当测试结果表示检测不一致缺陷时,设置所述测试结果对应的效果指标为不同浏览器下测试结果的输出张量差异的最大值;
20、根据效果指标指导测试输入张量和测试输入模型所对应的突变规则选择。
21、其进一步技术方案为:所述记录每个突变规则对待测试深度学习框架的测试结果的贡献,并调整突变规则的选择概率,包括:
22、采用c1=c0+δfitness计算每个突变规则对待测试深度学习框架的测试结果的贡献,其中,c1和c0是突变前后突变规则对测试结果的整体贡献,δfitness=fitnessnew-fitnessold;其中,fitnessnew表示突变后新产生的测试输入模型的效果指标;fitnessold表示突变前测试输入模型的效果指标;
23、根据所述贡献采用控制所述突变规则再次被选择到的概率,其中,n表示突变规则的总数目,p为突变规则再次被选择到的概率。
24、本发明还提供了深度学习框架测试装置,包括:
25、测试输入张量生成单元,用于创建种子张量,并进行突变,以得到测试输入张量;
26、测试输入模型生成单元,用于创建种子模型,并进行突变,以得到测试输入模型;
27、缺陷检测单元,用于在不同浏览器下,根据所述测试输入张量以及所述测试输入模型对待测试深度学习框架进行差分测试,以得到测试结果;
28、启发式引导单元,用于根据所述测试结果进行种子张量以及种子模型所对应的突变规则调整。
29、本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
30、本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
31、本发明与现有技术相比的有益效果是:本发明通过创建种子张量和模型,应用突变规则生成测试输入和模型;在不同环境中对深度学习框架进行差分测试以评估效果;根据测试结果调整突变规则以优化测试过程;实现专注于边端环境中的javascript深度学习框架,更全面地检测与推理优化机制相关的框架缺陷,以解决现有深度学习框架测试方法在javascript环境下存在的技术瓶颈。
32、下面结合附图和具体实施例对本发明作进一步描述。
1.深度学习框架测试方法,其特征在于,包括:
2.根据权利要求1所述的深度学习框架测试方法,其特征在于,所述创建种子张量,并进行突变,以得到测试输入张量,包括:
3.根据权利要求1所述的深度学习框架测试方法,其特征在于,所述创建种子模型,并进行突变,以得到测试输入模型,包括:
4.根据权利要求1所述的深度学习框架测试方法,其特征在于,所述在不同浏览器下,根据所述测试输入张量以及所述测试输入模型对待测试深度学习框架进行差分测试,以得到测试结果,包括:
5.根据权利要求1所述的深度学习框架测试方法,其特征在于,所述根据所述测试结果进行种子张量以及种子模型所对应的突变规则调整,包括:
6.根据权利要求5所述的深度学习框架测试方法,其特征在于,所述计算所述测试结果对应的效果指标,并指导测试输入张量和测试输入模型所对应的突变规则选择,包括:
7.根据权利要求5所述的深度学习框架测试方法,其特征在于,所述记录每个突变规则对待测试深度学习框架的测试结果的贡献,并调整突变规则的选择概率,包括:
8.深度学习框架测试装置,其特征在于,包括:
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
