CN105117328B - Dnn代码测试方法及装置 - Google Patents
Dnn代码测试方法及装置 Download PDFInfo
- Publication number
- CN105117328B CN105117328B CN201510483918.0A CN201510483918A CN105117328B CN 105117328 B CN105117328 B CN 105117328B CN 201510483918 A CN201510483918 A CN 201510483918A CN 105117328 B CN105117328 B CN 105117328B
- Authority
- CN
- China
- Prior art keywords
- matrix
- initial
- code segment
- code
- dnn
- 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.)
- Active
Links
- 238000010998 test method Methods 0.000 title abstract description 4
- 239000011159 matrix material Substances 0.000 claims abstract description 193
- 238000012360 testing method Methods 0.000 claims abstract description 76
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000004364 calculation method Methods 0.000 claims abstract description 18
- 230000008859 change Effects 0.000 claims abstract description 10
- 239000013643 reference control Substances 0.000 claims description 14
- 238000013528 artificial neural network Methods 0.000 claims description 3
- 238000011990 functional testing Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 31
- 230000006870 function Effects 0.000 description 22
- 230000006872 improvement Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012956 testing procedure Methods 0.000 description 1
Landscapes
- Tests Of Electronic Circuits (AREA)
Abstract
本发明提供一种DNN代码测试方法及装置。方法包括:以初始矩阵作为DNN代码中实现DNN中前向计算功能的第一代码段的输入,控制第一代码段运行,以获取第一代码段输出的初始结果矩阵;按照预设的第一测试次数,每次改变初始矩阵中的元素值,以获得第一参考矩阵,并以第一参考矩阵作为第一代码段的输入,重新控制第一代码段运行,以获取第一代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定第一代码段的逻辑正确。本发明可以实现对DNN代码的功能测试,填补现有技术在DNN代码测试方面的空白。
Description
【技术领域】
本发明涉及软件技术领域,尤其涉及一种DNN代码测试方法及装置。
【背景技术】
深度学习是大数据分析领域的热门技术,被广泛用于图像识别、语音识别、自然语言理解等人工智能领域。深度学习算法的核心是其预测模块,实现该预测模块的一个经典模型是深度神经网络(Deep Neural Network,DNN)。
从代码角度来说,在基于深度学习的应用的代码实现中,实现DNN功能的代码(简称DNN代码)是整个代码中的核心部分,因此对DNN代码进行测试以保证其正确性,对整个代码质量起着关键性作用。但是,由于深度学习算法输出的是概率值,因此传统的黑盒测试方法等并不适合DNN代码。因此,如何对DNN代码进行功能测试以确保其能做出正确的预测,是目前亟需解决的问题。
【发明内容】
本发明的多个方面提供一种DNN代码测试方法及装置,用以实现对DNN代码的功能测试。
本发明的一方面,提供一种DNN代码测试方法,包括:
以初始矩阵作为DNN代码中实现DNN中前向计算功能的第一代码段的输入,控制所述第一代码段运行,以获取所述第一代码段输出的初始结果矩阵;
按照预设的第一测试次数,每次改变所述初始矩阵中的元素值,以获得第一参考矩阵,并以所述第一参考矩阵作为所述第一代码段的输入,重新控制所述第一代码段运行,以获取所述第一代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
若每次的判断结果均为是,判定所述第一代码段的逻辑正确。
作为本发明的进一步改进,所述方法还包括:
以所述初始矩阵作为DNN代码中实现DNN中反向传播功能的第二代码段的输入,控制所述第二代码段运行,以获取所述第二代码段输出的初始局域梯度矩阵;
按照预设的第二测试次数,每次改变所述初始矩阵中的元素值,以获得第二参考矩阵,并以所述第二参考矩阵作为所述第二代码段的输入,重新控制所述第二代码段运行,以获取所述第二代码段输出的参考局域梯度矩阵,判断所述参考局域梯度矩阵中和所述初始局域梯度矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
若每次的判断结果均为是,判定所述第二代码段的逻辑正确。
作为本发明的进一步改进,所述初始矩阵为初始代码矩阵。
作为本发明的进一步改进,所述第一测试次数与所述初始矩阵中的元素个数成正比。
作为本发明的进一步改进,所述第二测试次数与所述初始矩阵中的元素个数成正比。
本发明的另一方面,提供一种DNN代码测试装置,包括:
初始控制模块,用于以初始矩阵作为DNN代码中实现DNN中前向计算功能的第一代码段的输入,控制所述第一代码段运行,以获取所述第一代码段输出的初始结果矩阵;
参考控制模块,用于按照预设的第一测试次数,每次改变所述初始矩阵中的元素值,以获得第一参考矩阵,并以所述第一参考矩阵作为所述第一代码段的输入,重新控制所述第一代码段运行,以获取所述第一代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
判定模块,用于在所述参考控制模块每次的判断结果均为是时,判定所述第一代码段的逻辑正确。
作为本发明的进一步改进,所述初始控制模块还用于:以所述初始矩阵作为DNN代码中实现DNN中反向传播功能的第二代码段的输入,控制所述第二代码段运行,以获取所述第二代码段输出的初始局域梯度矩阵;
所述参考控制模块还用于:按照预设的第二测试次数,每次改变所述初始矩阵中的元素值,以获得第二参考矩阵,并以所述第二参考矩阵作为所述第二代码段的输入,重新控制所述第二代码段运行,以获取所述第二代码段输出的参考局域梯度矩阵,判断所述参考局域梯度矩阵中和所述初始局域梯度矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
所述判定模块还用于:在所述参考控制模块每次的判断结果均为是时,判定所述第二代码段的逻辑正确。
作为本发明的进一步改进,所述初始矩阵为权重矩阵。
作为本发明的进一步改进,所述第一测试次数与所述初始矩阵中的元素个数成正比。
作为本发明的进一步改进,所述第二测试次数与所述初始矩阵中的元素个数成正比。
在本发明中,以初始矩阵作为DNN代码中实现前向计算功能的第一代码段的输入,控制第一代码段运行以获取代码段输出的初始结果矩阵,按照预设的第一测试次数,每次改变初始矩阵中的元素值,获得参考矩阵,重新以参考矩阵作为第一代码段的输入,重新控制第一代码段运行,以获得参考结果矩阵,通过比较参考结果矩阵和初始结果矩阵中对应于被改变的元素值的位置上的元素值是否发生变化,来判断该第一代码段的逻辑是否正确,若每次的判断结果均为发生变化,则判定第一代码段的逻辑是正确的,进而实现对DNN代码的功能测试。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的DNN代码测试方法的流程示意图;
图2为本发明一实施例提供的前向计算过程的一种结构示意图;
图3为本发明一实施例提供的对反向传播过程的分析示意图;
图4为本发明一实施例提供的DNN代码测试装置的结构示意图。
【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的DNN代码测试方法的流程示意图。如图1所示,该方法包括:
101、以初始矩阵作为DNN代码中实现DNN中前向计算功能的第一代码段的输入,控制第一代码段运行,以获取第一代码段输出的初始结果矩阵。
102、按照预设的第一测试次数,每次改变初始矩阵中的元素值,以获得第一参考矩阵,并以第一参考矩阵作为第一代码段的输入,重新控制第一代码段运行,以获取第一代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定第一代码段的逻辑正确。
由于DNN算法输出的结果是概率值,无法采用现有测试方法进行测试。针对该问题,本实施例提供一种DNN代码测试方法,可由DNN代码测试装置来完成,用以实现对DNN代码的测试,填补现有技术在DNN代码测试方面存在的空白。
在实际应用中,DNN包括训练过程和预测过程。在训练过程中,包括前向计算过程和反向传播过程。在预测过程中,只包括前向计算过程。由此可见,前向计算过程是DNN的核心。作为用于实现DNN的DNN代码,其需要实现DNN中的前向计算功能。基于此,可以对DNN代码的运行过程进行中断控制,以实现对DNN代码实现的DNN中前向计算功能的代码段进行测试,进而实现对DNN代码的功能测试。DNN代码可以只包括实现前向计算功能的代码段,还可以包括实现反向传播过程的代码段。为便于区分,将DNN代码中实现前向计算功能的代码段称为第一代码段,并将实现反向传播过程的代码段称为第二代码段。由于第二代码段是可选的,所以如何对DNN代码中的第一代码段进行验证是测试的关键。
于是,本发明发明人从不同于本领域的常规角度出发,开始对DNN中的前向计算过程做进一步研究,发现:前向计算过程具有以下特征,并基于对这些特征的提炼和综合处理提出了本发明技术方案。为便于理解本发明技术方案,下面对发明人的分析研究过程以及发现的特征进行说明:
图2所示为前向计算过程的一种结构示意图。在图2所示全连接层中,包括一个输入层、两个隐含层和一个输出层。结合图2可知,权重矩阵W中,类似的, 其中, 和表示输出的结果(result)矩阵;xi表示输入矩阵X中的第i个元素,x0=0,一般为训练数据;wi1、wi2和wi3是权重矩阵W中的元素;为激活函数。
发明人在研究过程中发现:wi1只在计算时用到,在计算和时并没有使用。若改变wi1中的一个元素的值(假设将w21修改为0),则应该只有发生改变,而和不应发生变化。由此可见,通过改变作为该前向计算过程的输入的权重矩阵中的元素值,判断作为该前向计算过程的输出的result矩阵中相应位置的元素值是否发生变化,可以达到判断实现该前向计算功能的第一代码段的逻辑是否正确。
进一步结合图2可知,输入矩阵X=[x0,x1,x2,x3]是一1行4列的矩阵,作为初始矩阵的权值矩阵W是4行3列的矩阵,作为输出的结果矩阵A=X*W是1行3列的矩阵。其中,W中第几列的元素值发生变化,那么结果矩阵A中第几列的元素值就会发生改变。由此可见,根据W中发生改变的元素值,很容易确定结果矩阵A中哪个或哪些位置上的元素值会发生变化。
结合上述,本发明提出对DNN代码进行测试的方法,具体如下:
首先,以初始矩阵作为DNN代码中实现前向计算功能的第一代码段的输入,控制该第一代码段运行,以获取第一代码段输出的初始结果矩阵。
在上述步骤中,控制第一代码段运行,可以是单独运行该第一代码段,或者也可以是控制DNN代码从头运行直到该第一代码段,具体是DNN代码实现结构而定。
在上述步骤中,初始矩阵是第一代码段的输入,初始结果矩阵是第一代码段的输出。其中,初始矩阵可以是为测试而预先设定的符合第一代码段输入要求的矩阵,例如可以是权重矩阵。
接下来,按照预设的测试次数,每次改变初始矩阵中的元素值,以获得第一参考矩阵,并以第一参考矩阵作为第一代码段的输入,重新控制第一代码段运行,以获取第一代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定该第一代码段的逻辑正确。
值得说明的是,在改变初始矩阵中的元素值过程中,对被改变的元素值的个数不做限定,可视具体情况而定。一般来说,优选改变一个元素值,这样处理起来相对简单,效率较高,成本较低。
值得说明的是,一次测试成功并不能说明一定是正确的,因此本实施例中设定测试次数,记为第一测试次数,对第一代码段进行多次测试,如果每次测试都是成功的,那么就可以判定第一代码逻辑是正确的。本实施例并不限定第一测试次数的具体数值,例如可以是3次,5次,10次,甚至更多次,可视具体情况而定。
若第一代码段的逻辑正确,则可以判定整个DNN代码的逻辑是正确的;反之,若第一代码段的逻辑错误,则可以判定该DNN代码的逻辑是错误的。
可选的,预设的第一测试次数与初始矩阵中的元素个数成正比。初始矩阵中的元素个数越多,则随机测试的次数可以越多,这样进行多次测试,可以保证测试精度。
在一可选实施方式中,实现DNN的DNN代码除了包括实现前向计算功能的第一代码段之外,还包括实现反向传播功能的第二代码段。在该实施方式中,要实现对DNN代码的测试除了要对第一代码段进行测试外,还需要对第二代码段进行测试。
为了对第二代码段进行测试,本发明发明人同样对反向传播功能进行了研究。图3所示为对反向传播过程的分析示意图。反向传播的主要目的是为了通过与期望输出相比较,调整权重矩阵。在本实施例中,反向传播的主要目的可以视为调整初始矩阵。在该反向传播过程中,主要是计算局域梯度δ。结合图2所示前向计算过程,对于输出层和隐藏层,局域梯度的计算并不相同,公式如下:
在上述公式中,为误差,是DNN中第l层第j个神经元期望的输出结果,是第l层第j个神经元实际的输出结果;对于输出层来说,只有一层,记为L,则l的取值为L。n为输入的个数,表示第l层的第i个输入,表示第l层第j个神经元与第i个输入之间的权重,是需要调整的对象。为第l层第j个神经元的局域梯度,第l层可以是隐藏层或输出层。结合图2所示前向计算过程,则为输出层的局域梯度,j=1,2,3。在由计算的过程中,发现:只在计算时用到,在计算和时并没有使用。若改变的值(假设将修改为0),则应该只有发生改变,而和不应发生变化。由此可见,通过改变作为该反向传播过程的输入的权重矩阵中的元素值,判断作为该反向传播过程的输出的局部梯度矩阵中相应位置的元素值是否发生变化,可以达到判断实现该反向传播功能的第二代码段的逻辑是否正确。
基于上述,对第二代码段的测试过程如下:
首先,以初始矩阵作为DNN代码中实现DNN中反向传播功能的第二代码段的输入,控制第二代码段运行,以获取第二代码段输出的初始局域梯度矩阵。
在上述步骤中,控制第二代码段运行,可以是单独运行该第二代码段,或者也可以是控制DNN代码从头运行直到该第二代码段,具体是DNN代码实现结构而定。
在上述步骤中,初始矩阵是第二代码段的输入,初始局域梯度矩阵是第二代码段的输出。其中,初始矩阵可以是为测试而预先设定的符合第二代码段输入要求的矩阵,例如可以是权重矩阵。
接下来,按照预设的第二测试次数,每次改变初始矩阵中的元素值,以获得第二参考矩阵,并以第二参考矩阵作为第二代码段的输入,重新控制第二代码段运行,以获取第二代码段输出的参考局域梯度矩阵,判断参考局域梯度矩阵中和初始局域梯度矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定第二代码段的逻辑正确。
值得说明的是,在改变初始矩阵中的元素值过程中,对被改变的元素值的个数不做限定,可视具体情况而定。一般来说,优选改变一个元素值,这样处理起来相对简单,效率较高,成本较低。
值得说明的是,一次测试成功并不能说明一定是正确的,因此本实施例中设定测试次数,记为第二测试次数,对第二代码段进行多次测试,如果每次测试都是成功的,那么就可以判定第二代码逻辑是正确的。本实施例并不限定第二测试次数的具体数值,例如可以是3次,5次,10次,甚至更多次,可视具体情况而定。
若第一代码段的逻辑正确,且第二代码段的逻辑也正确,则可以判定整个DNN代码的逻辑是正确的;反之,若第一代码段或第二代码段的逻辑错误,则可以判定该DNN代码的逻辑是错误的。
可选的,预设的第二测试次数与初始矩阵中的元素个数成正比。初始矩阵中的元素个数越多,则随机测试的次数可以越多,这样进行多次测试,可以保证测试精度。
由上述可见,本实施例通过改变作为第一代码段和第二代码段输入的矩阵中的元素值,然后判断作为该第一代码段或第二代码段输出的矩阵中相应位置的元素值是否发生变化的测试逻辑,实现对各代码段的测试,进而实现对DNN代码的功能测试。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图4为本发明一实施例提供的DNN代码测试装置的结构示意图。如图4所示,该装置包括:初始控制模块41、参考控制模块42和判定模块43。
初始控制模块41,用于以初始矩阵作为DNN代码中实现DNN中前向计算功能的第一代码段的输入,控制第一代码段运行,以获取第一代码段输出的初始结果矩阵。
参考控制模块42,用于按照预设的第一测试次数,每次改变初始矩阵中的元素值,以获得第一参考矩阵,并以第一参考矩阵作为第一代码段的输入,重新控制第一代码段运行,以获取第一代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化。
判定模块43,用于在参考控制模块每次的判断结果均为是时,判定第一代码段的逻辑正确。
在一可选实施方式中,初始控制模块41、参考控制模块42和判定模块43相互配合还可以实现对DNN代码中实现反向传播功能的第二代码段的测试。具体如下:
初始控制模块41还用于:以初始矩阵作为DNN代码中实现DNN中反向传播功能的第二代码段的输入,控制第二代码段运行,以获取第二代码段输出的初始局域梯度矩阵。
参考控制模块42还用于:按照预设的第二测试次数,每次改变初始矩阵中的元素值,以获得第二参考矩阵,并以第二参考矩阵作为第二代码段的输入,重新控制第二代码段运行,以获取第二代码段输出的参考局域梯度矩阵,判断参考局域梯度矩阵中和初始局域梯度矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否发生变化。
判定模块43还用于:在参考控制模块每次的判断结果均为是时,判定第二代码段的逻辑正确。
在一可选实施方式中,上述初始矩阵为权重矩阵。
在一可选实施方式中,上述第一测试次数与初始矩阵中的元素个数成正比。
在一可选实施方式中,上述第二测试次数与初始矩阵中的元素个数成正比。
本实施例提供的DNN代码测试装置,通过改变作为第一代码段和第二代码段输入的矩阵中的元素值,然后判断作为该第一代码段或第二代码段输出的矩阵中相应位置的元素值是否发生变化的测试逻辑,实现对各代码段的测试,进而实现对DNN代码的功能测试。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种深度神经网络DNN代码测试方法,其特征在于,包括:
以初始矩阵作为DNN代码中实现DNN中前向计算功能的第一代码段的输入,控制所述第一代码段运行,以获取所述第一代码段输出的初始结果矩阵,其中初始矩阵是为测试而预先设定的符合代码段输入要求的矩阵;
按照预设的第一测试次数,每次改变所述初始矩阵中的元素值,以获得第一参考矩阵,并以所述第一参考矩阵作为所述第一代码段的输入,重新控制所述第一代码段运行,以获取所述第一代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
若每次的判断结果均为是,判定所述第一代码段的逻辑正确。
2.根据权利要求1所述的方法,其特征在于,还包括:
以所述初始矩阵作为DNN代码中实现DNN中反向传播功能的第二代码段的输入,控制所述第二代码段运行,以获取所述第二代码段输出的初始局域梯度矩阵;
按照预设的第二测试次数,每次改变所述初始矩阵中的元素值,以获得第二参考矩阵,并以所述第二参考矩阵作为所述第二代码段的输入,重新控制所述第二代码段运行,以获取所述第二代码段输出的参考局域梯度矩阵,判断所述参考局域梯度矩阵中和所述初始局域梯度矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
若每次的判断结果均为是,判定所述第二代码段的逻辑正确。
3.根据权利要求1或2所述的方法,其特征在于,所述第一测试次数与所述初始矩阵中的元素个数成正比。
4.根据权利要求2所述的方法,其特征在于,所述第二测试次数与所述初始矩阵中的元素个数成正比。
5.一种深度神经网络DNN代码测试装置,其特征在于,包括:
初始控制模块,用于以初始矩阵作为DNN代码中实现DNN中前向计算功能的第一代码段的输入,控制所述第一代码段运行,以获取所述第一代码段输出的初始结果矩阵,其中初始矩阵是为测试而预先设定的符合代码段输入要求的矩阵;
参考控制模块,用于按照预设的第一测试次数,每次改变所述初始矩阵中的元素值,以获得第一参考矩阵,并以所述第一参考矩阵作为所述第一代码段的输入,重新控制所述第一代码段运行,以获取所述第一代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
判定模块,用于在所述参考控制模块每次的判断结果均为是时,判定所述第一代码段的逻辑正确。
6.根据权利要求5所述的装置,其特征在于,
所述初始控制模块还用于:以所述初始矩阵作为DNN代码中实现DNN中反向传播功能的第二代码段的输入,控制所述第二代码段运行,以获取所述第二代码段输出的初始局域梯度矩阵;
所述参考控制模块还用于:按照预设的第二测试次数,每次改变所述初始矩阵中的元素值,以获得第二参考矩阵,并以所述第二参考矩阵作为所述第二代码段的输入,重新控制所述第二代码段运行,以获取所述第二代码段输出的参考局域梯度矩阵,判断所述参考局域梯度矩阵中和所述初始局域梯度矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
所述判定模块还用于:在所述参考控制模块每次的判断结果均为是时,判定所述第二代码段的逻辑正确。
7.根据权利要求5或6所述的装置,其特征在于,所述第一测试次数与所述初始矩阵中的元素个数成正比。
8.根据权利要求6所述的装置,其特征在于,所述第二测试次数与所述初始矩阵中的元素个数成正比。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510483918.0A CN105117328B (zh) | 2015-08-07 | 2015-08-07 | Dnn代码测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510483918.0A CN105117328B (zh) | 2015-08-07 | 2015-08-07 | Dnn代码测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105117328A CN105117328A (zh) | 2015-12-02 |
CN105117328B true CN105117328B (zh) | 2018-01-05 |
Family
ID=54665326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510483918.0A Active CN105117328B (zh) | 2015-08-07 | 2015-08-07 | Dnn代码测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105117328B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150596A (zh) * | 2013-02-22 | 2013-06-12 | 百度在线网络技术(北京)有限公司 | 一种反向传播神经网络dnn的训练系统 |
CN104346278A (zh) * | 2014-09-28 | 2015-02-11 | 上海新炬网络技术有限公司 | 一种基于矩阵模型的软件测试方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090299929A1 (en) * | 2008-05-30 | 2009-12-03 | Robert Kozma | Methods of improved learning in simultaneous recurrent neural networks |
US7996723B2 (en) * | 2009-12-22 | 2011-08-09 | Xerox Corporation | Continuous, automated discovery of bugs in released software |
-
2015
- 2015-08-07 CN CN201510483918.0A patent/CN105117328B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150596A (zh) * | 2013-02-22 | 2013-06-12 | 百度在线网络技术(北京)有限公司 | 一种反向传播神经网络dnn的训练系统 |
CN104346278A (zh) * | 2014-09-28 | 2015-02-11 | 上海新炬网络技术有限公司 | 一种基于矩阵模型的软件测试方法 |
Non-Patent Citations (2)
Title |
---|
一种基于特征矩阵的软件脆弱性代码克隆检测方法;甘水滔 等;《软件学报》;20150228;第26卷(第2期);全文 * |
基于多尺度梯度及深度神经网络的汉字识别;潘炜深 等;《北京航空航天大学学报》;20150430;第41卷(第4期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105117328A (zh) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230252327A1 (en) | Neural architecture search for convolutional neural networks | |
US11829874B2 (en) | Neural architecture search | |
US10984319B2 (en) | Neural architecture search | |
JP6755849B2 (ja) | 人工ニューラルネットワークのクラスに基づく枝刈り | |
US20170004399A1 (en) | Learning method and apparatus, and recording medium | |
JP6182242B1 (ja) | データのラベリングモデルに係る機械学習方法、コンピュータおよびプログラム | |
US20190378017A1 (en) | System and method for implementing a neural network | |
US20170147921A1 (en) | Learning apparatus, recording medium, and learning method | |
CN107526709A (zh) | 使用低精度格式的张量处理 | |
US20220147877A1 (en) | System and method for automatic building of learning machines using learning machines | |
KR20210032140A (ko) | 뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치 | |
CN104750731A (zh) | 一种获取完整用户画像的方法及装置 | |
US20190129918A1 (en) | Method and apparatus for automatically determining optimal statistical model | |
CN114358274A (zh) | 训练用于图像识别的神经网络的方法和设备 | |
CN112819151A (zh) | 用于识别图像的方法和设备以及训练方法 | |
CN105117330B (zh) | Cnn代码测试方法及装置 | |
JP2020155010A (ja) | ニューラルネットワークのモデル縮約装置 | |
CN105117328B (zh) | Dnn代码测试方法及装置 | |
US9349106B2 (en) | Boundary graph machine learning algorithm for regression and classification | |
EP4198831A1 (en) | Automated feature engineering for predictive modeling using deep reinforcement learning | |
CN116187155A (zh) | 生成最佳输入数据的计算设备和方法 | |
CN114595630A (zh) | 活动效应评估模型训练方法、装置、计算机设备和介质 | |
CN115222037A (zh) | 模型压缩策略的确定方法、装置、存储介质及电子设备 | |
CN116384225A (zh) | 电路直流仿真步长确定方法及装置 | |
CN117436484A (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 |