样本生成方法、装置及设备
文献发布时间:2023-06-19 11:39:06
技术领域
本申请涉及计算机技术领域,尤其涉及一种样本生成方法、装置及设备。
背景技术
目前,通常采用算子(还可以称为算法)对浮点数进行运算,例如,可以采用算子对浮点数进行加法运算、减法运算、卷积运算等。
在实际应用过程中,需要对算子进行测试,以确定算子的运算精度,并选择精确度较高的算子对浮点数进行运算。通常先生成测试样本,并通过测试样本对算子进行测试。在相关技术中,通常由人工根据经验构造测试样本。然而,根据人工构造的测试样本通常不全面,或者出现冗余,导致根据测试样本无法对算子进行精确的测试。
发明内容
本申请提供一种样本生成方法、装置及设备,提高了生成的测试样本的质量。
第一方面,本申请实施例提供一种样本生成方法,该方法包括:获取多个变异方法的第一概率,根据多个变异方法的第一概率,在多个变异方法中确定目标变异方法;根据目标变异方法对预设测试样本进行变异处理,生成新的测试样本,新的测试样本用于对待测试算子进行测试,第一概率用于指示变异算法生成增量样本的概率,增量样本为满足预设条件的样本。
在上述过程中,根据变异方法的第一概率,在多个变异方法中选择目标变异方法,并通过目标变异方法生成新的测试样本。由于变异方法的第一概率与变异方法生成增量样本的概率相关,因此,根据第一概率选择得到的目标变异方法,可以以较大的概率生成增量样本,使得样本库中包括更为全面、且不冗余的测试样本,提高了生成的测试样本的质量。
在一种可能的实施方式中,可以通过如下方式根据多个变异方法的第一概率,在多个变异方法中确定目标变异方法:根据多个变异方法的第一概率,确定多个变异方法之间的状态转移概率;生成随机数,并根据随机数和多个变异方法之间的状态转移概率,确定目标变异方法。
在上述过程中,根据随机数和多个变异方法之间的状态转移概率选择目标变异方法,可以使得多个变异方法均可以被选做目标变异方法,以使多个变异方法均有机会生成样本库中的测试样本,使得样本库中的测试样本更为全面。
在一种可能的实施方式中,可以通过如下方式根据多个变异方法的第一概率,确定多个变异方法之间的状态转移概率:按照第一概率从高到低的顺序,对多个变异方法进行排序;根据多个变异方法之间的前后顺序和预设概率,确定多个变异方法之间的状态转移概率。可选的,预设概率用于使得多个变异方法中第一概率最低的变异方法可被确定为目标变异方法。
在上述过程中,在确定得到变异方法之间的状态转移概率之后,可以得到马尔科夫链。由于预设概率使得多个变异方法中第一概率最低的变异方法可被确定为目标变异方法,因此,在上述马尔科夫链中,可以使得目标转移至第一概率最低的变异方法,进而使得第一概率最低的变异方法也有机会生成测试样本,进而使得样本库中的测试样本更为全面。
在一种可能的实施方式中,若随机数大于或等于第一变异方法与第二变异方法之间的状态转移概率,则将第一变异方法确定为目标变异方法;若随机数小于第一变异方法与第二变异方法之间的状态转移概率,则将第二变异方法确定为目标变异方法。其中,第一变异方法为多个变异方法中最后一次生成测试样本的变异方法,第二变异方法为第一变异方法的下一个变异方法。
在上述过程中,由于随机数的生成是随机的,因此,根据随机数与状态转移概率之间的大小关系确定目标变异方法,可以使得多个变异方法均有机会生成样本库中的测试样本,使得样本库中的测试样本更为全面。
在一种可能的实施方式中,第三变异方法与第四变异方法之间的状态转移概率为1与
其中,p为预设概率,k
在一种可能的实施方式中,预设概率满足如下公式:
σ<(1-p)
其中,w为多个变异方法中的变异方法的个数,σ为预设参数。
在一种可能的实施方式中,针对多个变异方法中的任意一个变异方法,可以通过如下方式获取变异方法的第一概率:根据变异方法对预设测试样本进行变异,得到M个测试样本,在M个测试样本中确定增量样本的数量N,根据M和N,确定变异方法的第一概率。M为大于或等于1的整数;N为整数。
在上述过程中,预设测试样本为样本库中的测试样本,因此,通过上述方法确定得到的第一概率不但与该变异方法本身相关,还与样本库中的测试样本相关。
在一种可能的实施方式中,预设条件包括如下条件中的一个或多个:
待测试算子对增量样本的执行结果与预设执行结果的之间的差值大于或等于第一阈值,预设执行结果为待测试算子对应的参照算子执行增量样本得到的结果;
增量样本的输入区间与样本库中的测试样本的输入区间存在不重叠部分;
增量样本的输出区间与样本库中的测试样本的输出区间存在不重叠部分;
增量样本的输出区间位于样本库中的测试样本降维处理后的输出区间中。
在一种可能的实施方式中,根据目标变异方法对预设测试样本进行变异处理,生成新的测试样本之后,还根据新的测试样本,更新目标变异方法的第一概率。
在上述过程中,在通过目标变异方法生成新的测试样本之后,可以根据新的测试样本更新目标变异方法的第一概率,进而实现更新多个变异方法之间的状态转移概率,以实现生成多个变异方法形成的马尔科夫链。重复多次该过程,且每次迭代均将形成的新的测试样本中的增量样本添加至样本库,直至马尔科夫链收敛,这样,可以使得得到的样本库中包括全面且无冗余的测试样本。
第二方面,本申请实施例提供一种样本生成装置,包括:获取模块、确定模块和生成模块,其中,
所述获取模块用于,获取多个变异方法的第一概率,所述第一概率用于指示所述变异算法生成增量样本的概率,所述增量样本为满足预设条件的样本;
所述确定模块用于,根据所述多个变异方法的第一概率,在所述多个变异方法中确定目标变异方法;
所述生成模块用于,根据所述目标变异方法对预设测试样本进行变异处理,生成新的测试样本,所述新的测试样本用于对待测试算子进行测试。
在一种可能的实施方式中,所述确定模块具体用于:
根据所述多个变异方法的第一概率,确定所述多个变异方法之间的状态转移概率;
生成随机数,并根据所述随机数和所述多个变异方法之间的状态转移概率,确定所述目标变异方法。
在一种可能的实施方式中,所述确定模块具体用于:
按照第一概率从高到低的顺序,对所述多个变异方法进行排序;
根据所述多个变异方法之间的前后顺序和预设概率,确定所述多个变异方法之间的状态转移概率。
在一种可能的实施方式中,所述预设概率用于使得所述多个变异方法中第一概率最低的变异方法可被确定为所述目标变异方法。
在一种可能的实施方式中,所述确定模块具体用于:
若所述随机数大于或等于第一变异方法与第二变异方法之间的状态转移概率,则将所述第一变异方法确定为所述目标变异方法,所述第一变异方法为所述多个变异方法中最后一次生成测试样本的变异方法,所述第二变异方法为所述第一变异方法的下一个变异方法;
若所述随机数小于所述第一变异方法与所述第二变异方法之间的状态转移概率,则将所述第二变异方法确定为所述目标变异方法。
在一种可能的实施方式中,第三变异方法与第四变异方法之间的状态转移概率为1与
其中,所述p为所述预设概率,所述k
在一种可能的实施方式中,所述预设概率满足如下公式:
σ<(1-p)
其中,所述w为所述多个变异方法中的变异方法的个数,所述σ为预设参数。
在一种可能的实施方式中,所述获取模块具体用于:
针对所述多个变异方法中的任意一个变异方法,根据所述变异方法对预设测试样本进行变异,得到M个测试样本,所述M为大于或等于1的整数;
在所述M个测试样本中确定增量样本的数量N,所述N为整数;
根据所述M和所述N,确定所述变异方法的第一概率。
在一种可能的实施方式中,所述预设条件包括如下条件中的一个或多个:
所述待测试算子对所述增量样本的执行结果与预设执行结果的之间的差值大于或等于第一阈值,所述预设执行结果为所述待测试算子对应的参照算子执行所述增量样本得到的结果;
所述增量样本的输入区间与所述样本库中的测试样本的输入区间存在不重叠部分;
所述增量样本的输出区间与所述样本库中的测试样本的输出区间存在不重叠部分;
所述增量样本的输出区间位于所述样本库中的测试样本降维处理后的输出区间中。
在一种可能的实施方式中,所述装置还包括更新模块,其中,
所述更新模块用于,在所述生成模块根据所述目标变异方法对预设测试样本进行变异处理,生成新的测试样本之后,根据所述新的测试样本,更新所述目标变异方法的第一概率。
第三方面,本申请实施例提供一种样本生成装置,包括存储器和处理器,所述处理器执行所述存储器中的程序指令,用于实现第一方面任一项所述的样本生成方法。
第四方面,本申请实施例提供一种可读存储介质,所述存储介质用于存储计算机程序,所述计算机程序用于实现第一方面任一项所述的样本生成方法。
第五方面,本申请实施例提供一种芯片上系统或系统芯片,所述芯片上系统或系统芯片包括:至少一个处理器,至少一个存储器,存储器和处理器通过总线互联,所述处理器通过执行所述存储器中存储的指令,使得所述基站可执行如本申请第一方面任一所述样本生成方法。
本申请实施例提供一种样本生成方法、装置及设备,根据变异方法的第一概率,在多个变异方法中选择目标变异方法,并通过目标变异方法生成新的测试样本。由于变异方法的第一概率与变异方法生成增量样本的概率相关,因此,根据第一概率选择得到的目标变异方法,可以以较大的概率生成增量样本,使得样本库中包括更为全面且不冗余的测试样本,提高了生成的测试样本的质量。
附图说明
图1为本申请实施例提供的浮点数的示意图;
图2A为本申请实施例提供的一种遗传变异方法的示意图;
图2B为本申请实施例提供的另一种遗传变异方法的示意图;
图2C为本申请实施例提供的又一种遗传变异方法的示意图;
图3为本申请实施例提供的应用场景示意图;
图4为本申请实施例提供的样本测试方法的流程示意图;
图5为本申请实施例提供的马尔科夫链的示意图;
图6为本申请实施例提供的一种算子测试的系统架构图;
图7为本申请实施例提供的另一种算子测试的系统结构图;
图8为本申请实施例提供的样本生成方法的流程示意图;
图9为本申请实施例提供的一种样本生成装置的结构示意图;
图10为本申请实施例提供的另一种样本生成装置的结构示意图;
图11为本申请提供的一种样本生成装置的硬件结构示意图。
具体实施方式
为了便于理解,首先对本申请涉及的概念进行说明。
浮点数:是一种按照预设表示法表示的数值。该预设表示法为一个有效数值(尾数)乘以某个基数的整数次指数。例如,浮点数的表示法可以为m×b
二进制浮点数:以二进制表示的浮点数。二进制浮点数可以包括三个部分,分别为符号位(sign bit)、指数偏移值(exponent bias)和分数值(fraction)。符号位用于标识浮点数的正负,符号为位可以为0或1,用于表示浮点数为正数或者负数。一个浮点数的实际值等于:符号位、指数偏移值和分数值的乘积。下面,结合图1,对电气和电子工程师协会(institute of electrical and electronics engineers,IEEE)IEEE754(IEEE二进制浮点数算数标准)浮点数进行说明。
图1为本申请实施例提供的浮点数的示意图。请参见图1,IEEE754浮点数包括符号位、指数偏移值(还可以称为指数位)和分数值(还可以称为分数位)。例如,对于单精度浮点数,IEEE754浮点数一共占32位,其中,符号位占1位,指数偏移值占8位,分数值占23位。对于半精度浮点数,IEEE754浮点数一共占16位,其中,符号位占1位,指数偏移值占5位,分数值占10位。需要说明的是,关于浮点数的说明可以参见IEEE标准754,此处不再进行赘述。
算子:还可以称为算法,是指从一个向量空间(或模)到另一个向量空间(或模)的映射。算子可以对数据(例如浮点数)进行运算,例如,运算可以包括:加法运算、减法运算、卷积运算等。不同的算子可以执行的运算不同,例如,有的算子可以执行加法运算,有的算子可以执行卷积运算。例如,算子可以包括Conv算子、FC算子、Softmax算子、Relu算子等。多个算子的集合还可以称为加速库。
算子测试:是指对算子进行测试,以检测算子的精确度。算子的精确度是指该算子进行运算的精确度,或者,该算子进行运算后得到的执行结果的精确度。对算子进行测试通常依赖测试样本,即,采用算子对测试样本进行运算,得到执行结果,根据该执行结果判断该算子的精确度。
变异方法:是指对已有测试样本(浮点数)进行变异得到新的测试样本的方法。可选的,对已有测试样本进行变异的方法可以至少包括如下三类:数值区间变异、数据尺寸变异、对已有测试样本的输入参数进行变异。
数值区间变异可以包括高斯白噪声变异、字节变异、指定长度比特变异、区间抽样变异、遗传变异等。高斯白噪声变异是指,在已有测试样本中叠加高斯白噪声。字节变异是指,在已有测试样本中随机删除、赋值、替换或者插入一定长度的字节。指定长度比特变异是指,针对已有测试样本(浮点数)的各个域,随机删除、赋值、替换或者插入一定长度的比特。区间抽样变异是指,自动划分输入数据类型的表示区间,使用加权随机采样算法选择有限个区间,生成区间内的随机数,依据预设算法(例如洗牌算法)或者拟合指定分布替换。遗传变异是指,针对浮点数中的三个域,对已有测试样本(浮点数)中的指定域中的比特进行替换。下面,结合图2A-图2C,对遗传变异进行说明。
图2A为本申请实施例提供的一种遗传变异方法的示意图。请参见图2A,假设浮点数1和浮点数2为已有测试样本。对于浮点数1,符号位记为S1,指数位记为E1,精度位记为F1。对于浮点数2,符号位记为S2,指数位记为E2,精度位记为F2。在进行遗传变异时,可以将浮点数2的符号位S2替换为浮点数1的符号位S1,将浮点数2的精度位F2替换为浮点数1的精度位F1,得到新的浮点数。对于新的浮点数,符号位为S1,指数位为E2,精度位为F1。
图2B为本申请实施例提供的另一种遗传变异方法的示意图。请参见图2B,假设浮点数1和浮点数2为已有测试样本。对于浮点数1,符号位记为S1,指数位记为E1,精度位记为F1。对于浮点数2,符号位记为S2,指数位记为E2,精度位记为F2。在进行遗传变异时,可以将浮点数2的指数位E2替换为浮点数1的指数位E1,得到新的浮点数。对于新的浮点数,符号位为S2,指数位为E1,精度位为F2。
图2C为本申请实施例提供的又一种遗传变异方法的示意图。请参见图2C,假设浮点数1、浮点数2和浮点数3为已有测试样本。对于浮点数1,符号位记为S1,指数位记为E1,精度位记为F1。对于浮点数2,符号位记为S2,指数位记为E2,精度位记为F2。对于浮点数3,符号位记为S3,指数位记为E3,精度位记为F3。在进行遗传变异时,可以将浮点数3的指数位E3替换为浮点数1的指数位E1,将浮点数3的精度位F3替换为浮点数2的精度位F2,得到新的浮点数。对于新的浮点数,符号位为S3,指数位为E1,精度位为F2。
需要说明的是,上述图2A-图2C只是以示例的形式示意遗传变异,并非对遗传变异的过程进行限定,当然,遗传变异的过程还可以为其它,本申请实施例对此不作具体限定。例如,遗传变异的过程还可以为指定长度比特的遗传变异,指定长度比特的遗传变异是指,针对浮点数中的三个域,对已有测试样本(浮点数)中的指定域中的指定长度的比特进行替换。
数据尺寸变异可以包括随机尺寸变异和随机缩放变异等。其中,随机尺寸变异是指随机变换已有测试样本的尺寸。随机缩放变异是指随机缩放已有测试样本的尺寸。
输入参数变异可以包括边界值、等价划分变异和参数变步长变异等。其中,参数变步长变异可以为对已有测试样本的激活函数的阈值进行变异。
需要说明的是,上述只是以示例的形式示意多种变异方法,当然,变异方法还可以为其它,本申请实施例对此不作具体限定。
测试样本:测试样本用于对算子进行测试。不同算子对应的测试样本不同,下面,以算子为FP16向前卷积算子为例,对该算子的测试样本进行说明。例如,FP16向前卷积算子的测试样本可以如表1所示:
表1
请参见表1,输入(input)和滤波器(filter)分别为矩阵。ni为并行处理的矩阵的数量,ci为输入矩阵的通道数,hi为输入矩阵的长度,wi为输入矩阵的宽度。nk为并行处理的矩阵的数量,ck为滤波器的通道数,hi为滤波器的长度,wi为滤波器的宽度。补0是指在滤波器对输入矩阵进行处理时,在输入矩阵的周围补0。NA用于指示是否在输入矩阵的周围补0。padh_h为在长度方向一侧补0的个数,padh_t为在长度方向另一侧补0的个数。padw_h为在宽度方向一侧补0的个数,padw_t为在宽度方向另一侧补0的个数。no为并行输出的矩阵的个数,co为输出矩阵的通道数,ho为输出矩阵的长度,wo为输出矩阵的宽度。在表1中,S(small)、M(middle)、L(big)用于指示相应的数值的大小。
还可以设置测试样本中各浮点数(例如矩阵中的元素)的取值范围(下限和上限之间的范围)。例如,浮点数的取值范围可以如表2所示:
表2
需要说明的是,表1-表2只是以示例的形式示意测试样本,并非对测试样本进行的限定。
下面,结合图3,对本申请实施例的应用场景进行说明。
图3为本申请实施例提供的应用场景示意图。请参见图3,样本库中包括X(X为大于或等于1的整数)个测试样本,可以通过变异方法对样本库中的测试样本进行变异处理,得到更新后的样本库,更新后的样本库中包括Y个测试样本,Y为大于X的整数。更新后的样本库中的测试样本用于对待测试的算子进行测试。
在本申请中,通过对样本库中的测试样本进行变异,实现构造更为全面的测试样本,这样,可以对被测算子进行测试的精确度。
下面,通过具体实施例,对本申请所示的技术方案进行详细说明。需要说明的是,下面几个实施例可以独立存在,也可以相互结合,对于相同或相似的内容,在不同的实施例中不再重复说明。
图4为本申请实施例提供的样本测试方法的流程示意图。请参见图4,该方法可以包括:
S401、获取多个变异方法的第一概率。
其中,第一概率可以用于指示变异算法生成增量样本的概率。话句话说,第一概率是指,变异方法对样本库中的测试样本进行变异后得到的测试样本为增量样本的概率。
可选的,获取每个变异方法的第一概率的方式相同,下面,以获取多个变异方法中任意一个变异方法的第一概率为例进行说明。
针对多个变异方法中的任意一个,可以通过如下方式获取变异方法的第一概率:根据变异方法对预设测试样本进行变异,得到M个测试样本,在M个测试样本中确定增量样本的数量N,根据M和N,确定变异方法的第一概率。M为大于或等于1的整数;N为整数。例如,可以将N与M的比值确定为变异方法的第一概率。
可选的,预设测试样本可以为样本库中的测试样本。该预设测试样本还可以为称为种子,或者种子样本等。
其中,增量样本可以为满足预设条件的样本。即,若M个测试样本中的某样本满足预设条件,则可以将该样本确定为增量样本。
预设条件包括如下条件中的一个或多个:
条件1、待测试算子对增量样本的执行结果与预设执行结果的之间的差值大于或等于第一阈值。
其中,预设执行结果为待测试算子对应的参照算子执行增量样本得到的结果。
待测试算子与参照算子具有相同的运算功能。例如,待测试算子和参照算子都是进行卷积运算的算子。或者,待测试算子和参照算子都是进行模乘运算的算子。
待测试算子对应的参照算子为已验证的具有高精确度的算子。
例如,待测试算子对增量样本的执行结果为执行结果1,参照算子对增量样本的执行结果为执行结果2,执行结果1和执行结果2之间的差值大于或等于第一阈值。
条件2、增量样本的输入区间与样本库中的测试样本的输入区间存在不重叠部分。
增量样本的输入区间是指增量样本中的浮点数所在的区间。相对于样本库中的测试样本的输入区间,增量样本对应了新的输入区间。
条件3、增量样本的输出区间与样本库中的测试样本的输出区间存在不重叠部分。
增量样本的输出区间是指,待测试算子执行增量样本后得到的执行结果中的浮点数所在的区间。
样本库中的测试样本的输出区间是指,待测试算子执行测试样本后得到的执行结果中的浮点数所在的区间。
相对于样本库中的测试样本的输出区间,增量样本对应了新的输出区间。
条件4、增量样本的输出区间位于样本库中的测试样本降维处理后的输出区间中。
降维处理可以包括求平均值、加权平均等。例如,对一个矩阵中每行中的元素进行加权平均,可以得到一个列向量,或者,对一个列向量中的元素进行求平均值,可以得到一个数值。
S402、按照第一概率从高到低的顺序,对多个变异方法进行排序。
S403、根据多个变异方法之间的前后顺序和预设概率,确定多个变异方法之间的状态转移概率,得到多个变异方法形成的马尔科夫链。
针对多个变异方法中任意两个变异方法mu
其中,Pr(mu
可选的,由于在多个变异方法中随机选择变异方法,因此,Pr(mu
可选的,由于在多个变异方法中随机选择变异方法,因此,g(mu
其中,k
通过S402-S403,即可确定得到马尔科夫链。
下面,结合图5,对马尔科夫链进行说明。
图5为本申请实施例提供的马尔科夫链的示意图。请参见图5,假设多个变异方法包括变异方法mu1、变异方法mu2和变异方法mu3,变异方法mu1的第一概率大于变异方法mu2的第一概率,变异方法mu2的第一概率大于变异方法mu3的第一概率。计算变异方法mu1分别转移至变异方法mu2和变异方法mu3的状态转移概率,变异方法mu2分别转移至变异方法mu1和变异方法mu3的状态转移概率,以及变异方法mu3分别转移至变异方法mu1和变异方法mu2的状态转移概率,得到图5所示的马尔科夫链。
当然,图5只是以示意的形式示马尔科夫链,并非对马尔科夫链的限定。
S404、生成随机数,并根据随机数和多个变异方法之间的状态转移概率,确定目标变异方法。
可选的,可以通过如下方法确定目标变异方法:若随机数大于或等于第一变异方法与第二变异方法之间的状态转移概率,则将第一变异方法确定为目标变异方法。若随机数小于第一变异方法与第二变异方法之间的状态转移概率,则将第二变异方法确定为目标变异方法。
其中,第一变异方法为多个变异方法中最后一次生成测试样本的变异方法。例如,若当前迭代过程为第一次迭代过程,则第一变异方法为在S401中最后一个确定第一概率的变异方法。若当前迭代过程为第一次之后的迭代过程,则第一变异方法为在上一次迭代过程中的目标变异方法。
其中,第二变异方法为第一变异方法的下一个变异方法。即,按照第一概率从高到低的顺序后,第二变异方法为第一变异方法的下一个变异方法。
S405、根据目标变异方法对预设测试样本进行变异处理,生成新的测试样本。
可选的,可以先确定目标变异方法对应的测量样本数量Z,再根据目标变异方法对预设测试样本进行变异处理,生成Z个新的测试样本。
目标变异方法对应的测试样本数量Z可以为预设值。或者,可以通过目标变异方法对应的能量函数计算目标变异方法对应的测试样本数量Z。
预设测试样本为样本库中的测试样本。
S406、判断多个变异方法形成的马尔科夫链是否收敛。
若是,则执行S408。
若否,则执行S407。
需要说明的是,马尔科夫链的收敛条件可以参见现有技术,此处不再进行赘述。
S407、更新目标变异方法的第一概率。
在S407之后,执行S402。
可选的,可以根据目标变异方法生成的新的测试样本,确定目标变异方法的第一概率。该过程可以参见S401,此处不再进行赘述。
S408、得到更新后的样本库。
更新后的样本库中包括每次迭代过程中生成的增量样本。例如,在每次迭代过程中,在目标变异方法生成多个测试样本之后,在该多个测试样本中确定增量样本,并将增量样本添加至样本库中,这样,可以避免样本库中包括冗余的测试样本。在上述过程中,通过多次迭代对样本库进行更新,可以使得样本库中包括全面的测试样本,全面的测试样本是指,测试样本的输入区间、输出区间覆盖全面。由于样本库中包括全面的测试样本,进而可以提高对算子进行测试的精确度,由于样本库中不包括冗余的测试样本,提高了生成的测试样本的质量,进而提高了对算子进行测试的效率。
可选的,在得到更新后的样本库之后,可以根据更新后的样本库对待测试算子进行测试。
下面,结合图6-图7,对待测试算子的测试过程进行说明。图6为本申请实施例提供的一种算子测试的系统架构图。图7为本申请实施例提供的另一种算子测试的系统结构图。
请参见图6,可以通过算子精度检测引擎构造样本库以及对待测试算子进行测试。算子精确度检测引擎包括输入构造模块、样本库、覆盖判定模块和精度对比模块。
待测试算子为需要进行测试的算子,参照算子为已确认为高精度的算子,每个待测试算子有其对应的参照算子。
初始化时,可以对样本库中包括的样本进行初始化。初始化后,输入构造模块可以在样本库中进行样本选择,得到预设样本(还可以称为种子)。输入构造模块可以选择变异方法,通过变异方法对预设样本进行变异,得到新的测试样本。通过预算平台采用待测试算子和参照算子分别对测试样本进行运算,得到第一执行结果和第二执行结果。覆盖判定模块通过覆盖判定算法对第一执行结果和第二执行结果进行覆盖判定,以及精度对比模块通过精度对比算法对第一执行结果和第二执行结果进行精度对比,以判断是否将该新的测试样本添加至样本库。需要说明的是,该过程可以参见S408,此处不再进行赘述。
在对待测试算子进行测试时,可以使用待测试算子执行样本库中的测试样本,得到第一执行结果,使用待测试算子对应的参照算子执行该测试样本,得到第二执行结果。通过精度对比模块对第一执行结果和第二执行结果进行对比,以确定待测试算子的精度检测结果。可选的,精度对比方法可以为确定第一执行结果和第二执行结果的相对误差、绝对误差、平均值误差、均方根误差等。在一个测试过程中,可以同时测试一个或多个待测试算子。
可选的,在图6所示的系统架构中,还可以包括网络装置和数据存储单元等。网络装置可以支持各模块之间的通信,各模块之间的组网可以包括单套网元、集群、分布式系统等。数据存储单元用于存储上述过程中所涉及的数据。
下面,结合图8,介绍一种样本生成方法。
图8为本申请实施例提供的样本生成方法的流程示意图。请参见图8,该方法可以包括:
S801、获取多个变异方法的第一概率。
其中,第一概率可以用于指示变异算法生成增量样本的概率。
需要说明的是,S801的执行过程可以参见S401的执行过程,此处不再进行赘述。
S802、根据多个变异方法的第一概率,在多个变异方法中确定目标变异方法。
需要说明的是,S802的执行过程可以参见S402-S404的执行过程,此处不再进行赘述。
S803、根据目标变异方法对预设测试样本进行变异处理,生成新的测试样本,新的测试样本用于对待测试算子进行测试。
需要说明的是,S803的执行过程可以参见S404的执行过程,此处不再进行赘述。
在图8所示的实施例中,根据变异方法的第一概率,在多个变异方法中选择目标变异方法,并通过目标变异方法生成新的测试样本。由于变异方法的第一概率与变异方法生成增量样本的概率相关,因此,根据第一概率选择得到的目标变异方法可以以较大的概率生成增量样本,使得样本库中包括更为全面且不冗余的测试样本,提高了生成的测试样本的质量。
图9为本申请实施例提供的一种样本生成装置的结构示意图。请参见图9,该样本生成装置10可以包括,获取模块11、确定模块12和生成模块13,其中,
所述获取模块11用于,获取多个变异方法的第一概率,所述第一概率用于指示所述变异算法生成增量样本的概率,所述增量样本为满足预设条件的样本;
所述确定模块12用于,根据所述多个变异方法的第一概率,在所述多个变异方法中确定目标变异方法;
所述生成模块13用于,根据所述目标变异方法对预设测试样本进行变异处理,生成新的测试样本,所述新的测试样本用于对待测试算子进行测试。
可选的,获取模块11可以执行图4实施例中的S401、以及图8实施例中的S801。
可选的,确定模块12可以执行图4实施例中的S402-S404、以及图8实施例中的S802。
可选的,获取模块13可以执行图4实施例中的S405-S408、以及图8实施例中的S803。
需要说明的是,本申请实施例所示的样本生成装置10可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述确定模块具体12用于:
根据所述多个变异方法的第一概率,确定所述多个变异方法之间的状态转移概率;
生成随机数,并根据所述随机数和所述多个变异方法之间的状态转移概率,确定所述目标变异方法。
在一种可能的实施方式中,所述确定模块12具体用于:
按照第一概率从高到低的顺序,对所述多个变异方法进行排序;
根据所述多个变异方法之间的前后顺序和预设概率,确定所述多个变异方法之间的状态转移概率。
在一种可能的实施方式中,所述预设概率用于使得所述多个变异方法中第一概率最低的变异方法可被确定为所述目标变异方法。
在一种可能的实施方式中,所述确定模块12具体用于:
若所述随机数大于或等于第一变异方法与第二变异方法之间的状态转移概率,则将所述第一变异方法确定为所述目标变异方法,所述第一变异方法为所述多个变异方法中最后一次生成测试样本的变异方法,所述第二变异方法为所述第一变异方法的下一个变异方法;
若所述随机数小于所述第一变异方法与所述第二变异方法之间的状态转移概率,则将所述第二变异方法确定为所述目标变异方法。
在一种可能的实施方式中,第三变异方法与第四变异方法之间的状态转移概率为1与
其中,所述p为所述预设概率,所述k
在一种可能的实施方式中,所述预设概率满足如下公式:
σ<(1-p)
其中,所述w为所述多个变异方法中的变异方法的个数,所述σ为预设参数。
在一种可能的实施方式中,所述获取模块11具体用于:
针对所述多个变异方法中的任意一个变异方法,根据所述变异方法对预设测试样本进行变异,得到M个测试样本,所述M为大于或等于1的整数;
在所述M个测试样本中确定增量样本的数量N,所述N为整数;
根据所述M和所述N,确定所述变异方法的第一概率。
在一种可能的实施方式中,所述预设条件包括如下条件中的一个或多个:
所述待测试算子对所述增量样本的执行结果与预设执行结果的之间的差值大于或等于第一阈值,所述预设执行结果为所述待测试算子对应的参照算子执行所述增量样本得到的结果;
所述增量样本的输入区间与所述样本库中的测试样本的输入区间存在不重叠部分;
所述增量样本的输出区间与所述样本库中的测试样本的输出区间存在不重叠部分;
所述增量样本的输出区间位于所述样本库中的测试样本降维处理后的输出区间中。
图10为本申请实施例提供的另一种样本生成装置的结构示意图。在图9所示实施例的基础上,请参见图10,样本生成装置10还包括更新模块14,其中,
所述更新模14块用于,在所述生成模块13根据所述目标变异方法对预设测试样本进行变异处理,生成新的测试样本之后,根据所述新的测试样本,更新所述目标变异方法的第一概率。
需要说明的是,本申请实施例所示的样本生成装置10可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
图11为本申请提供的一种样本生成装置的硬件结构示意图。请参见图11,该样本生成装置20包括:存储器21和处理器22,其中,存储器31和处理器32通信;示例性的,存储器21和处理器22通过通信总线23通信,所述存储器21用于存储计算机程序,所述处理器22执行所述计算机程序实现上述实施例所示的方法。
可选的,处理器22可以实现图9-图10实施例中的获取模块11、确定模块12、生成模块13和更新模块14的功能。
可选的,上述处理器可以是中央处理单元(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本申请提供一种计算机可读存储介质,包括指令,当指令在计算机上运行时使得所述计算机执行上述任意方法实施例提供的样本生成方法。
本申请提供一种芯片,该芯片用于支持设备(例如终端设备)实现本申请实施例所示的功能,该芯片具体用于芯片系统,该芯片系统可以由芯片构成,也可以包括芯片和其他分立器件。当实现上述方法的为设备内的芯片时,芯片包括处理单元,进一步的,芯片还可以包括通信单元,所述处理单元例如可以是处理器,当芯片包括通信单元时,所述通信单元例如可以是输入/输出接口、管脚或电路等。处理单元执行本申请实施例中各个处理模块所执行的全部或部分动作,通信单元可执行相应的接收或发送动作。在另一具体的实施例中,本申请中的设备的处理模块可以是芯片的处理单元,接收模块或发送模块是芯片的通信单元。
本申请实施例提供一种芯片上系统或系统芯片,所述芯片上系统或系统芯片包括:至少一个处理器,至少一个存储器,存储器和处理器通过总线互联,所述处理器通过执行所述存储器中存储的指令,使得所述网络设备可执行上述样本生成方法。
实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppydisk)、光盘(英文:optical disc)及其任意组合。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
在本申请中,术语“包括”及其变形可以指非限制性的包括;术语“或”及其变形可以指“和/或”。本本申请中术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。本申请中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
- 一种样本生成方法、样本生成装置及电子设备
- 样本生成方法、支付方法、样本生成系统及相关设备