CN105117330A - Cnn代码测试方法及装置 - Google Patents

Cnn代码测试方法及装置 Download PDF

Info

Publication number
CN105117330A
CN105117330A CN201510484601.9A CN201510484601A CN105117330A CN 105117330 A CN105117330 A CN 105117330A CN 201510484601 A CN201510484601 A CN 201510484601A CN 105117330 A CN105117330 A CN 105117330A
Authority
CN
China
Prior art keywords
matrix
layer
cnn
tested
code segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510484601.9A
Other languages
English (en)
Other versions
CN105117330B (zh
Inventor
韩峥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu Online Network Technology Beijing Co Ltd
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201510484601.9A priority Critical patent/CN105117330B/zh
Publication of CN105117330A publication Critical patent/CN105117330A/zh
Application granted granted Critical
Publication of CN105117330B publication Critical patent/CN105117330B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Analysis (AREA)

Abstract

本发明提供一种CNN代码测试方法及装置。一种测试方法包括:控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;通过改变作为CNN代码中实现该待测试层功能的代码段输入的矩阵中的元素值,然后判断作为该代码段输出的矩阵中相应位置的元素值是否发生变化的测试逻辑实现对代码段的测试,进而实现对CNN代码的功能测试。本发明实现了对CNN代码的测试,填补了现有技术在CNN代码测试方面存在的空白。

Description

CNN代码测试方法及装置
【技术领域】
本发明涉及软件技术领域,尤其涉及一种CNN代码测试方法及装置。
【背景技术】
深度学习是大数据分析领域的热门技术,被广泛用于图像识别、语音识别、自然语言理解等人工智能领域。深度学习算法的核心是其预测模块,实现该预测模块的一个经典模型是卷积神经网络(ConvolutionalNeuralNetwork,CNN)。
从代码角度来说,在基于深度学习的应用的代码实现中,实现CNN功能的代码(简称CNN代码)是整个代码中的核心部分,因此对CNN代码进行测试以保证其正确性,对整个代码质量起着关键性作用。但是,由于深度学习算法输出的是概率值,因此传统的黑盒测试方法等并不适合CNN代码。因此,如何对CNN代码进行功能测试以确保其能做出正确的预测,是目前亟需解决的问题。
【发明内容】
本发明的多个方面提供一种CNN代码测试方法及装置,用以实现对CNN代码的功能测试。
本发明的一方面,提供一种CNN代码测试方法,包括:
控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
若每次的判断结果均为是,判定所述代码段的逻辑正确。
作为本发明的进一步改进,若所述待测试层为下采样层,则在判定所述代码段的逻辑正确之前,所述方法还包括:
根据所述下采样层使用的下采样方法,确定所述参考矩阵中与所述参考结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系;和/或
根据所述下采样层使用的下采样方法,确定所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系。
作为本发明的进一步改进,所述控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层,包括:
按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测试层;或者
控制随机确定的所述CNN中的部分卷积层、部分下采样层和部分全连接层分别作为所述待测试层。
作为本发明的进一步改进,在按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次将所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测试层时:
若所述待测试层是非首个卷积层,所述初始矩阵为与所述待测试层连接的上一下采样层输出的参考结果矩阵;
若所述待测试层是下采样层,所述初始矩阵为与所述待测试层连接的上一卷积层输出的参考结果矩阵。
作为本发明的进一步改进,若所述待测试层是全连接层,所述初始矩阵为权重矩阵。
本发明的另一方面,提供一种CNN代码测试方法,包括:
控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
当所述待测试层为卷积层或全连接层时,按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定所述代码段的逻辑正确;
当所述待测试层为下采样层时,根据所述下采样层使用的下采样方法,验证所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系;若验证结果为满足,则判定所述代码段的逻辑正确。
本发明的又一方面,提供一种CNN代码测试装置,包括:
预处理模块,用于控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
初始控制模块,用于以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
参考控制模块,用于按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
判定模块,用于在每次的判断结果均为是时,判定所述代码段的逻辑正确。
作为本发明的进一步改进,所述装置还包括:
确定模块,用于在所述待测试层为下采样层时,在所述判定模块判定所述代码段的逻辑正确之前,根据所述下采样层使用的下采样方法,确定所述参考矩阵中与所述参考结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系;和/或,根据所述下采样层使用的下采样方法,确定所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系。
作为本发明的进一步改进,所述预处理模块具体用于:
按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测试层;或者
控制随机确定的所述CNN中的部分卷积层、部分下采样层和部分全连接层分别作为所述待测试层。
作为本发明的进一步改进,在按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测试层时:
若所述待测试层是非首个卷积层,所述初始矩阵为与所述待测试层连接的上一下采样层输出的参考结果矩阵;
若所述待测试层是下采样层,所述初始矩阵为与所述待测试层连接的上一卷积层输出的参考结果矩阵。
作为本发明的进一步改进,若所述待测试层是全连接层,所述初始矩阵为权重矩阵。
本发明的又一方面,提供一种CNN代码测试装置,包括:
预处理模块,用于控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
初始控制模块,用于以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
参考控制模块,用于在所述待测试层为卷积层或全连接层时,按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
验证模块,用于在所述待测试层为下采样层时,根据所述下采样层使用的下采样方法,验证所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系;
判定模块,用于在所述参考控制模块每次的判断结果均为是时,判定所述代码段的逻辑正确,或者在所述验证模块的验证结果为满足时,判定所述代码段的逻辑正确。
在本发明中,将CNN代码所实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层,以初始矩阵作为CNN代码中实现待测试层功能的代码段的输入,控制代码段运行以获取代码段输出的初始结果矩阵,按照预设的测试次数,每次改变初始矩阵中的元素值,获得参考矩阵,重新以参考矩阵作为代码段的输入,重新控制代码段运行,以获得参考结果矩阵,通过比较参考结果矩阵和初始结果矩阵中对应于被改变的元素值的位置上的元素值是否发生变化,来判断该代码段的逻辑是否正确,若每次的判断结果均为发生变化,则判定代码段的逻辑是正确的,进而实现对CNN代码的功能测试。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的CNN代码测试方法的流程示意图;
图2为本发明一实施例提供的CNN模型中卷积过程以及输入输出中元素值变化对应关系的一种示意图;
图3为本发明一实施例提供的卷积过程中输入输出中元素值变化对应关系的另一种示意图;
图4为本发明一实施例提供的CNN模型中下采样过程以及输入输出中元素值变化对应关系的示意图;
图5为本发明一实施例提供的CNN模型中全连接层的结构示意图;
图6为本发明另一实施例提供的CNN代码测试方法的流程示意图;
图7为本发明一实施例提供的CNN代码测试装置的结构示意图;
图8为本发明另一实施例提供的CNN代码测试装置的结构示意图;
图9为本发明又一实施例提供的CNN代码测试装置的结构示意图。
【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的CNN代码测试方法的流程示意图。如图1所示,该方法包括:
101、控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层。
102、以初始矩阵作为CNN代码中实现该待测试层功能的代码段的输入,控制该代码段运行,以获取该代码段输出的初始结果矩阵。
103、按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以参考矩阵作为上述代码段的输入,重新控制上述代码段运行,以获取上述代码段输出的参考结果矩阵,判断参考结果矩阵中和上述初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定上述代码段的逻辑正确。
由于CNN算法输出的结果是概率值,无法采用现有测试方法进行测试。针对该问题,本实施例提供一种CNN代码测试方法,可由CNN代码测试装置来完成,用以实现对CNN代码的测试,填补现有技术在CNN代码测试方面存在的空白。
CNN除了输入层与输出层以外,内部一般包括卷积层(Convolutions)、下采样层(Subsampling)和全连接层(FullConnection)。卷积层的功能是将多个特征映射(featureMap)矩阵与多个卷积核(kernel)矩阵进行卷积,得到新的featureMap矩阵,实现特征增强。下采样层是对卷积层产生的featureMap矩阵进行采样,得到低分辨率的featureMap矩阵。其中,卷积层和下采样层间隔出现,CNN模型的最后几层是全连接层,卷积层是局部连接,下采样层是一一对应连接。
作为用于实现CNN的CNN代码,其需要实现CNN中的卷积层、下采样层和全连接层。基于此,可以对CNN代码的运行过程进行中断控制,以实现对CNN代码实现的CNN中的卷积层、下采样层和全连接层分别进行测试,进而实现对CNN代码的功能测试。因此,如何对CNN代码实现的CNN中的卷积层、下采样层和全连接层进行测试成为测试的关键。
于是,本发明发明人从不同于本领域的常规角度出发,开始对CNN中的卷积层、下采样层和全连接层做进一步研究,发现:卷积层、下采样层和连接层具有以下特征,并基于对这些特征的提炼和综合处理提出了本发明技术方案。为便于理解本发明技术方案,下面对发明人的分析研究过程以及发现的特征进行说明:
对于卷积层:卷积层是由多个featureMap矩阵和多个kernel矩阵构成的,一个featureMap矩阵可以和多个kernel矩阵进行卷积,得到多个结果(result)矩阵,也就是下一层的featureMap矩阵。同时一个kernel矩阵也可以和多个featureMap矩阵卷积,得到一个result矩阵。本发明以最简单的情况为例进行说明,就是一个featureMap矩阵和一个kernel矩阵进行卷积的情况。如图2所示,为一个5*5的featureMap矩阵与一个3*3的kernel矩阵进行卷积的过程示意图。该过程就是将这个3*3的kernel矩阵覆盖在5*5的featureMap矩阵上,对应位置相乘最后相加得到一个标量,写到result矩阵的第一位上;然后kernel矩阵向右移动一格,继续如上的过程,直到最后,kernel矩阵停留在featureMap矩阵的右下方,最终得到大小为(5-3+1)*(5-3+1)=3*3的result矩阵。
发明人在研究过程中发现,若改变featureMap矩阵中的某一个值,如图2中标记为X的格子,那么result矩阵中的第一位置和第二位置(如2中标记为X的格子)的值都会发生相应变化,其他位置的值不变。进一步,如图3所示,若改变featureMap矩阵中第二行第二列的值(如图3中标记为X的格子),则result矩阵中左上角2*2的小矩阵(如图3中标记为X的格子)会全部发生变化,其余位置的值不变。由此可见,通过改变作为卷积层的输入的featureMap矩阵中的元素值,判断作为卷积层的输出的result矩阵中相应位置的元素值是否发生变化,可以达到判断实现卷积层功能的代码段的逻辑是否正确。
结合图2和3可知,在一次卷积过程中,若featureMap矩阵中参与卷积的元素值被改变,则该次卷积结果应该发生变化。按照上面描述的卷积过程可以很容易的确定featureMap矩阵中的元素值,与result矩阵中的卷积结果之间的对应关系。
对于下采样层:下采样层就是将卷积以后得到的新的featureMap矩阵进行采样,得到新的featureMap矩阵。采样方法有很多种,常用的方法有两种,一种是meanpooling,一种是maxpooling。假设featureMap矩阵的大小为5*5,pooling矩阵的大小是2*2,则下采样过程如图4所示。该过程就是将这个2*2的pooling矩阵覆盖在5*5的featureMap矩阵上,对应位置按照下采样方法要求的数值关系进行计算得到一个标量,写到result矩阵的第一位置上,然后移动pooling矩阵,并去除边缘,那么采样之后的featureMap矩阵的大小为2*2。其中,Mean-pooling的数值关系是E=(A+B+C+D)/4,而maxpooling要求的数值关系是E=max{A,B,C,D}。E是计算得到的标量;A、B、C、D是featureMap矩阵中被2*2的pooling矩阵覆盖位置的元素值。
发明人在研究过程中发现,若改变featureMap矩阵中的某一个值,如图4中标记为A、B、C或D的格子,那么result矩阵中的第一位置的值会发生相应变化,其他位置的值不变。由此可见,通过改变作为下采样层的输入的featureMap矩阵中的元素值,判断作为下采样层的输出的result矩阵中相应位置的元素值是否发生变化,可以达到判断实现下采样层功能的代码段的逻辑是否正确。
对于下采样层,发明人进一步发现:还可以验证作为输入的featureMap矩阵中被2*2的pooling矩阵覆盖位置的元素值,与作为输出的result矩阵的相应位置上的元素值之间是否满足下采样方法要求的数值关系,即还可以判断E是否等于(A+B+C+D)/4或者E是否等于max{A,B,C,D}。
对于下采样过程,假设采样后result矩阵中的元素位置为(I,j),则对应于featureMap矩阵中的元素位置为(2i,2j)。基于此,当改变featureMap矩阵中的元素值时,可以很容易的算出该被改变的元素值对应于result矩阵中的元素位置。
对于全连接层:图5所示为全连接层的一种结构示意图。在图5所示全连接层中,包括一个输入层、两个隐含层和一个输出层。结合图5可知,权重矩阵W中,类似的,其中,表示输出的result矩阵;xi表示该全连接层的输入矩阵X中的第i个元素,x0=0,一般为前一全连接层的输出,或最后一个下采样层的输出;wi1、wi2和wi3权重矩阵W中的元素;为激活函数。
发明人在研究过程中发现:wi1只在计算时用到,在计算时并没有使用。若改变wi1中的一个元素的值(假设将w21修改为0),则应该只有发生改变,而不应发生变化。由此可见,通过改变作为全连接层的输入的权重矩阵中的元素值,判断作为全连接层的输出的result矩阵中相应位置的元素值是否发生变化,可以达到判断实现全连接层功能的代码段的逻辑是否正确。
进一步结合图5可知,输入矩阵X=[x0,x1,x2,x3]是一1行4列的矩阵,作为初始矩阵的权值矩阵W是4行3列的矩阵,作为输出的结果矩阵A=X*W是1行3列的矩阵。其中,W中第几列的元素值发生变化,那么结果矩阵A中第几列的元素值就会发生改变。由此可见,根据W中发生改变的元素值,很容易确定结果矩阵A中哪个或哪些位置上的元素值会发生变化。
综上可知,虽然作为输入的矩阵可能不同,但总的判断思路是相同的,即均可以通过改变作为输入的矩阵中的元素值,然后判断作为输出的矩阵中相应位置的元素值是否发生变化,从而达到判断某层功能是否正确的目的。
结合上述,本发明提出对CNN代码进行测试的方法,具体如下:
控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层,则通过对待测试层进行测试就可以实现对CNN代码的测试。
进一步考虑到CNN代码会包括用于实现不同层功能的代码段,这里实现某一层功能的代码段是以实现该层功能的主要代码为核心,也包括为实现该层功能提供辅助作用的代码,例如一些进行初始化的代码等。因此,对待测试层的测试也就是对实现待测试层功能的代码段的测试。具体测试原理如下:
首先,以初始矩阵作为CNN代码中实现待测试层功能的代码段的输入,控制该代码段运行,以获取代码段输出的初始结果矩阵。
在上述步骤中,控制代码段运行,可以是单独运行该代码段,或者也可以是控制CNN代码从头运行直到该代码段,具体是CNN代码实现结构而定。
在上述步骤中,初始矩阵是代码段的输入,初始结果矩阵是代码段的输出。其中,初始矩阵可以是为测试而预先设定的符合代码段输入要求的矩阵,也可以是CNN代码运行过程中待测试层的上一层的输出。
接下来,按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以参考矩阵作为代码段的输入,重新控制代码段运行,以获取代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定该代码段的逻辑正确。
值得说明的是,在改变初始矩阵中的元素值过程中,对被改变的元素值的个数不做限定,可视具体情况而定。一般来说,优选改变一个元素值,这样处理起来相对简单,效率较高,成本较低。
值得说明的是,一次测试成功并不能说明一定是正确的,因此本实施例中设定测试次数,对待测试层进行多次测试,如果每次测试都是成功的,那么就可以判定实现待测试层的代码逻辑是正确的。本实施例并不限定测试次数的具体数值,例如可以是3次,5次,10次,甚至更多次,可视具体情况而定。另外,对于待测试层为CNN中不同层时,也可以设置不同的取值。例如对于待测试层为卷积层时可以设置测试次数为10次,对于待测试层为下采样层时可以设置测试次数为5次。
若实现各层功能的代码段的逻辑都正确,则可以判定整个CNN代码的逻辑是正确的;反之,若实现某层功能的代码段的逻辑错误,则可以判定该CNN代码的逻辑是错误的,而且还可以确定该CNN代码中可能发生错误的代码位置。
进一步,对于待测试层为下采样层的情况,在上述每次测试都成功的情况下,在判定代码段的逻辑正确之前,还可以根据下采样层使用的下采样方法,确定参考矩阵中与参考结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系,若确定参考矩阵中与参考结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系,则可以判定代码段的逻辑正确。或者
对于待测试层为下采样层的情况,在上述每次测试都成功的情况下,在判定代码段的逻辑正确之前,还可以根据下采样层使用的下采样方法,确定初始矩阵中与初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系,若确定初始矩阵中与初始结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系,则可以判定代码段的逻辑正确。
进一步,也可以根据下采样层使用的下采样方法,确定初始矩阵中与初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系,并确定参考矩阵中与参考结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系,若确定初始矩阵中与初始结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系,且确定参考矩阵中与参考结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系,则可以判定代码段的逻辑正确。
上述将通过改变作为上述代码段输入的矩阵中的元素值,然后判断作为上述代码段输出的矩阵中相应位置的元素值是否发生变化的测试逻辑,与判断作为上述代码段输入的初始矩阵或参考矩阵中和作为上述代码段输出的初始结果矩阵或参考结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系的测试逻辑相结合的测试方法,测试思路更为缜密,测试结果更为精确。
在一可选实施方式中,考虑到CNN模型一般包括多个卷积层、多个下采样层以及多个全连接层,为了更加全面的测试CNN代码的逻辑是否正确,可以按照CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制CNN中的所有卷积层、下采样层和全连接层分别作为待测试层。举例说明,假设CNN包括三个卷积层、三个下采样层和三个全连接层,即可以依次将卷积层、下采样层、卷积层、下采样层、卷积层、下采样层、全连接层、全连接层、全连接层作为待测试层进行测试。
在另一可选实施方式中,为了减少测试成本,提高测试效率,可以只对部分卷积层进行测试,例如对一个卷积层进行测试,对部分下采样层进行测试,例如对一个下采样层进行测试,并对部分全连接层进行测试,例如对一个全连接层进行测试。例如,可以控制随机确定的CNN中的部分卷积层、部分下采样层和部分全连接层分别作为待测试层。较为优选的,可以确定最后一个卷积层、最后一个下采样层以及连接于最后一个下采样层的全连接层分别作为待测试层进行测试。
在上述测试过程中,针对待测试层的不同,初始矩阵的实现会有所不同。在按照CNN中卷积层、下采样层和全连接层之间的连接顺序,依次将CNN中的所有卷积层、下采样层和全连接层分别作为待测试层的情况下:
若待测试层是CNN中的首个卷积层,则初始矩阵具体是由图像的原始特征构成的featureMap矩阵。
若待测试层是CNN中非首个卷积层,则初始矩阵是与该卷积层连接的上一下采样层输出的featureMap矩阵,该featureMap矩阵优选为上一下采样层输出的参考结果矩阵;这样在确定实现上一下采样层功能的代码的逻辑正确后,可以控制CNN代码继续运行实现卷积层功能的代码,有利于提高测试效率。
若待测试层是下采样层,则初始矩阵是与该下采样层连接的上一卷积层输出的featureMap矩阵,该featureMap矩阵优选为上一卷积层输出的参考结果矩阵;这样在确定实现上一卷积层功能的代码的逻辑正确后,可以控制CNN代码继续运行实现下采样层功能的代码,有利于提高测试效率。
其中,若待测试层是全连接层,则初始矩阵为权重矩阵。
图6为本发明一实施例提供的CNN代码测试方法的流程示意图。如图6所示,该方法包括:
601、控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层。
602、以初始矩阵作为CNN代码中实现待测试层功能的代码段的输入,控制代码段运行,以获取代码段输出的初始结果矩阵。
603a、当待测试层为卷积层或全连接层时,按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以参考矩阵作为代码段的输入,重新控制代码段运行,以获取代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定代码段的逻辑正确。
603b、当待测试层为下采样层时,根据下采样层使用的下采样方法,验证初始矩阵中与初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系;若验证结果为满足,则判定代码段的逻辑正确。
本实施例与上述实施例的区别在于:当待测试层为下采样层时的测试方式不同。本实施例直接判断作为输入的初始矩阵中与作为输出的初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系,基于该测试逻辑对CNN代码中实现下采样层的代码段的测试。
关于本实施例的其它描述可参见上述实施例,在此不再赘述。
在本实施例中,将CNN代码所实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层,对于待测试层为卷积层或全连接层时,通过改变作为CNN代码中实现该待测试层功能的代码段输入的矩阵中的元素值,然后判断作为该代码段输出的矩阵中相应位置的元素值是否发生变化的测试逻辑对其进行测试;对于待测试层为下采样层时,通过判断作为CNN代码中实现该待测试层功能的代码段输入的初始矩阵中与作为该代码段输出的初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系的测试逻辑对其进行测试,实现对CNN代码中实现卷积层、下采样层和全连接层的代码段的测试,进而实现对CNN代码的功能测试。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图7为本发明一实施例提供的CNN代码测试装置的结构示意图。如图7所示,该装置包括:预处理模块71、初始控制模块72、参考控制模块73和判定模块74。
预处理模块71,用于控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层。
初始控制模块72,用于以初始矩阵作为CNN代码中实现预处理模块71确定的待测试层功能的代码段的输入,控制代码段运行,以获取代码段输出的初始结果矩阵。
参考控制模块73,用于按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以参考矩阵作为代码段的输入,重新控制代码段运行,以获取代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化。
判定模块74,用于在参考控制模块73每次的判断结果均为是时,判定代码段的逻辑正确。
在一可选实施方式中,如图8所示,该测试装置还包括:确定模块75。
确定模块75,用于在待测试层为下采样层时,在判定模块74判定代码段的逻辑正确之前,根据下采样层使用的下采样方法,确定参考矩阵中与参考结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系;和/或,根据下采样层使用的下采样方法,确定初始矩阵中与初始结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系。
在一可选实施方式中,预处理模块71具体用于:
按照CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制CNN中的所有卷积层、下采样层和全连接层分别作为待测试层;或者
控制随机确定的CNN中的部分卷积层、部分下采样层和部分全连接层分别作为待测试层。
在一可选实施方式中,在按照CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制CNN中的所有卷积层、下采样层和全连接层分别作为待测试层时:
若待测试层是非首个卷积层,初始矩阵为与待测试层连接的上一下采样层输出的参考结果矩阵;
若待测试层是下采样层,初始矩阵为与待测试层连接的上一卷积层输出的参考结果矩阵。
在一可选实施方式中,若待测试层是全连接层,初始矩阵为权重矩阵。
本实施例提供的CNN代码测试装置,将CNN代码所实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层,以初始矩阵作为CNN代码中实现待测试层功能的代码段的输入,控制代码段运行以获取代码段输出的初始结果矩阵,按照预设的测试次数,每次改变初始矩阵中的元素值,获得参考矩阵,重新以参考矩阵作为代码段的输入,重新控制代码段运行,以获得参考结果矩阵,通过比较参考结果矩阵和初始结果矩阵中对应于被改变的元素值的位置上的元素值是否发生变化,来判断该代码段的逻辑是否正确,若每次的判断结果均为发生变化,则判定代码段的逻辑是正确的,进而实现对CNN代码的功能测试。
图9为本发明又一实施例提供的CNN代码测试装置的结构示意图。如图9所示,该装置包括:预处理模块91、初始控制模块92、参考控制模块93、验证模块94和判定模块95。
预处理模块91,用于控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层。
初始控制模块92,用于以初始矩阵作为CNN代码中实现待测试层功能的代码段的输入,控制代码段运行,以获取代码段输出的初始结果矩阵。
参考控制模块93,用于在待测试层为卷积层或全连接层时,按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以参考矩阵作为代码段的输入,重新控制代码段运行,以获取代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化。
验证模块94,用于在待测试层为下采样层时,根据下采样层使用的下采样方法,验证初始矩阵中与初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系。
判定模块95,用于在参考控制模块93每次的判断结果均为是时,判定代码段的逻辑正确,或者在验证模块94的验证结果为满足时,判定代码段的逻辑正确。
在一可选实施方式中,预处理模块91具体用于:
按照CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制CNN中的所有卷积层、下采样层和全连接层分别作为待测试层;或者
控制随机确定的CNN中的部分卷积层、部分下采样层和部分全连接层分别作为待测试层。
在一可选实施方式中,在按照CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制CNN中的所有卷积层、下采样层和全连接层分别作为待测试层时:
若待测试层是非首个卷积层,初始矩阵为与待测试层连接的上一下采样层输出的参考结果矩阵;
若待测试层是下采样层,初始矩阵为与待测试层连接的上一卷积层输出的参考结果矩阵。
在一可选实施方式中,若待测试层是全连接层,初始矩阵为权重矩阵。
本实施例提供的CNN代码测试装置,将CNN代码所实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层,对于待测试层为卷积层或全连接层时,通过改变作为CNN代码中实现该待测试层功能的代码段输入的矩阵中的元素值,然后判断作为该代码段输出的矩阵中相应位置的元素值是否发生变化的测试逻辑对其进行测试;对于待测试层为下采样层时,通过判断作为CNN代码中实现该待测试层功能的代码段输入的初始矩阵中与作为该代码段输出的初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系的测试逻辑对其进行测试,实现对CNN代码中年实现卷积层、下采样层和全连接层的代码段的测试,进而实现对CNN代码的功能测试。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (12)

1.一种卷积神经网络CNN代码测试方法,其特征在于,包括:
控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
若每次的判断结果均为是,判定所述代码段的逻辑正确。
2.根据权利要求1所述的方法,其特征在于,若所述待测试层为下采样层,则在判定所述代码段的逻辑正确之前,所述方法还包括:
根据所述下采样层使用的下采样方法,确定所述参考矩阵中与所述参考结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系;和/或
根据所述下采样层使用的下采样方法,确定所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系。
3.根据权利要求1所述的方法,其特征在于,所述控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层,包括:
按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测试层;或者
控制随机确定的所述CNN中的部分卷积层、部分下采样层和部分全连接层分别作为所述待测试层。
4.根据权利要求3所述的方法,其特征在于,在按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次将所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测试层时:
若所述待测试层是非首个卷积层,所述初始矩阵为与所述待测试层连接的上一下采样层输出的参考结果矩阵;
若所述待测试层是下采样层,所述初始矩阵为与所述待测试层连接的上一卷积层输出的参考结果矩阵。
5.根据权利要求1-4任一项所述的方法,其特征在于,
若所述待测试层是全连接层,所述初始矩阵为权重矩阵。
6.一种卷积神经网络CNN代码测试方法,其特征在于,包括:
控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
当所述待测试层为卷积层或全连接层时,按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定所述代码段的逻辑正确;
当所述待测试层为下采样层时,根据所述下采样层使用的下采样方法,验证所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系;若验证结果为满足,则判定所述代码段的逻辑正确。
7.一种卷积神经网络CNN代码测试装置,其特征在于,包括:
预处理模块,用于控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
初始控制模块,用于以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
参考控制模块,用于按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
判定模块,用于在每次的判断结果均为是时,判定所述代码段的逻辑正确。
8.根据权利要求7所述的装置,其特征在于,还包括:
确定模块,用于在所述待测试层为下采样层时,在所述判定模块判定所述代码段的逻辑正确之前,根据所述下采样层使用的下采样方法,确定所述参考矩阵中与所述参考结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系;和/或,根据所述下采样层使用的下采样方法,确定所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系。
9.根据权利要求7所述的装置,其特征在于,所述预处理模块具体用于:
按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测试层;或者
控制随机确定的所述CNN中的部分卷积层、部分下采样层和部分全连接层分别作为所述待测试层。
10.根据权利要求9所述的装置,其特征在于,在按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测试层时:
若所述待测试层是非首个卷积层,所述初始矩阵为与所述待测试层连接的上一下采样层输出的参考结果矩阵;
若所述待测试层是下采样层,所述初始矩阵为与所述待测试层连接的上一卷积层输出的参考结果矩阵。
11.根据权利要求7-10任一项所述的装置,其特征在于,
若所述待测试层是全连接层,所述初始矩阵为权重矩阵。
12.一种卷积神经网络CNN代码测试装置,其特征在于,包括:
预处理模块,用于控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
初始控制模块,用于以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
参考控制模块,用于在所述待测试层为卷积层或全连接层时,按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
验证模块,用于在所述待测试层为下采样层时,根据所述下采样层使用的下采样方法,验证所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值关系;
判定模块,用于在所述参考控制模块每次的判断结果均为是时,判定所述代码段的逻辑正确,或者在所述验证模块的验证结果为满足时,判定所述代码段的逻辑正确。
CN201510484601.9A 2015-08-07 2015-08-07 Cnn代码测试方法及装置 Active CN105117330B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510484601.9A CN105117330B (zh) 2015-08-07 2015-08-07 Cnn代码测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510484601.9A CN105117330B (zh) 2015-08-07 2015-08-07 Cnn代码测试方法及装置

Publications (2)

Publication Number Publication Date
CN105117330A true CN105117330A (zh) 2015-12-02
CN105117330B CN105117330B (zh) 2018-04-03

Family

ID=54665328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510484601.9A Active CN105117330B (zh) 2015-08-07 2015-08-07 Cnn代码测试方法及装置

Country Status (1)

Country Link
CN (1) CN105117330B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107292384A (zh) * 2017-06-08 2017-10-24 北京深瞐科技有限公司 测试仿真装置及系统
CN107301864A (zh) * 2017-08-16 2017-10-27 重庆邮电大学 一种基于Maxout神经元的深度双向LSTM声学模型
WO2020119188A1 (zh) * 2018-12-10 2020-06-18 广东浪潮大数据研究有限公司 一种程序检测方法、装置、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216803A (zh) * 2008-01-09 2008-07-09 四川大学 基于基路径的测试程序控制流路径集生成方法
US20090210218A1 (en) * 2008-02-07 2009-08-20 Nec Laboratories America, Inc. Deep Neural Networks and Methods for Using Same
CN104102919A (zh) * 2014-07-14 2014-10-15 同济大学 一种有效防止卷积神经网络过拟合的图像分类方法
JP2015052832A (ja) * 2013-09-05 2015-03-19 国立大学法人 東京大学 重み設定装置および方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216803A (zh) * 2008-01-09 2008-07-09 四川大学 基于基路径的测试程序控制流路径集生成方法
US20090210218A1 (en) * 2008-02-07 2009-08-20 Nec Laboratories America, Inc. Deep Neural Networks and Methods for Using Same
JP2015052832A (ja) * 2013-09-05 2015-03-19 国立大学法人 東京大学 重み設定装置および方法
CN104102919A (zh) * 2014-07-14 2014-10-15 同济大学 一种有效防止卷积神经网络过拟合的图像分类方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
吕国豪 等: "基于卷积神经网络的正则化方法", 《计算机研究与发展》 *
孙志军 等: "深度学习研究综述", 《计算机应用研究》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107292384A (zh) * 2017-06-08 2017-10-24 北京深瞐科技有限公司 测试仿真装置及系统
CN107301864A (zh) * 2017-08-16 2017-10-27 重庆邮电大学 一种基于Maxout神经元的深度双向LSTM声学模型
CN107301864B (zh) * 2017-08-16 2020-12-22 重庆邮电大学 一种基于Maxout神经元的深度双向LSTM声学模型
WO2020119188A1 (zh) * 2018-12-10 2020-06-18 广东浪潮大数据研究有限公司 一种程序检测方法、装置、设备及可读存储介质

Also Published As

Publication number Publication date
CN105117330B (zh) 2018-04-03

Similar Documents

Publication Publication Date Title
CN110366734B (zh) 优化神经网络架构
KR20200014510A (ko) 기계 학습 기반의 예측 서비스 제공 방법 및 그 장치
WO2019151506A1 (ja) 学習装置、学習方法及び学習プログラム
US20070233435A1 (en) Boosted linear modeling of non-linear time series
US11501153B2 (en) Methods and apparatus for training a neural network
CN109409504A (zh) 一种数据处理方法、装置、计算机及存储介质
KR102147097B1 (ko) 머신러닝을 위한 학습데이터 세트의 구성 방법 및 장치
CN110704597B (zh) 对话系统可靠性校验方法、模型生成方法及装置
KR102167011B1 (ko) 샘플링 및 적응적으로 변경되는 임계치에 기초하여 뉴럴 네트워크를 학습하는데 이용되는 하드 네거티브 샘플을 추출하는 영상 학습 장치 및 상기 장치가 수행하는 방법
US11899744B2 (en) Apparatus and method of performing matrix multiplication operation of neural network
Windeatt et al. Embedded feature ranking for ensemble MLP classifiers
WO2019151503A1 (ja) 判定装置、判定方法及び判定プログラム
EP3649582A1 (en) System and method for automatic building of learning machines using learning machines
KR102500782B1 (ko) 학생의 학습 수준에 기반한 난이도 별 맞춤형 문항을 추출하는 방법, 장치 및 컴퓨터-판독 가능 기록 매체
CN111883122A (zh) 语音识别方法及装置、存储介质、电子设备
CN105117330A (zh) Cnn代码测试方法及装置
KR20190136578A (ko) 음성 인식 방법 및 장치
CN109273039A (zh) 一种闪存器的擦除验证设备和方法
CN114239589A (zh) 语义理解模型的鲁棒性评估方法、装置及计算机设备
CN112860587A (zh) Ui自动测试方法和装置
CN111814414A (zh) 一种基于遗传算法的覆盖率收敛方法及系统
KR20210044003A (ko) 단어 임베딩 방법 및 장치와 단어 검색 방법
CN113821975B (zh) 一种燃料电池性能衰减预测方法及系统
CN115543762A (zh) 一种磁盘smart数据扩充方法、系统及电子设备
CN114496068A (zh) 蛋白质二级结构预测方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant