CN105183646B - Rnn代码测试方法及装置 - Google Patents

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

Info

Publication number
CN105183646B
CN105183646B CN201510542399.0A CN201510542399A CN105183646B CN 105183646 B CN105183646 B CN 105183646B CN 201510542399 A CN201510542399 A CN 201510542399A CN 105183646 B CN105183646 B CN 105183646B
Authority
CN
China
Prior art keywords
matrix
layer
rnn
initial
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.)
Active
Application number
CN201510542399.0A
Other languages
English (en)
Other versions
CN105183646A (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.)
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 CN201510542399.0A priority Critical patent/CN105183646B/zh
Publication of CN105183646A publication Critical patent/CN105183646A/zh
Application granted granted Critical
Publication of CN105183646B publication Critical patent/CN105183646B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供一种RNN代码测试方法及装置。方法包括:控制RNN代码实现的RNN中的隐藏层和输出层分别作为待测试层;以初始矩阵作为RNN代码中实现待测试层功能的代码段的输入,控制代码段运行,以获取代码段输出的初始结果矩阵;按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以参考矩阵作为代码段的输入,重新控制代码段运行,以获取代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否均发生变化;若每次的判断结果均为是,判定代码段的逻辑正确。本发明实现了对RNN代码的测试,填补了现有技术在RNN代码测试方面存在的空白。

Description

RNN代码测试方法及装置
【技术领域】
本发明涉及软件技术领域,尤其涉及一种RNN代码测试方法及装置。
【背景技术】
深度学习是大数据分析领域的热门技术,被广泛用于图像识别、语音识别、自然语言理解等人工智能领域。深度学习算法的核心是其预测模块,实现该预测模块的一个经典模型是循环神经网络(Recurrent Neural Network,RNN)。
从代码角度来说,在基于深度学习的应用的代码实现中,实现RNN功能的代码(简称RNN代码)是整个代码中的核心部分,因此对RNN代码进行测试以保证其正确性,对整个代码质量起着关键性作用。但是,由于深度学习算法输出的是概率值,因此传统的黑盒测试方法等并不适合RNN代码。另外,由于RNN属于非线性模型,因此针对线性模型的蜕变测试方法也不适合RNN代码。因此,如何对RNN代码进行功能测试以确保其能做出正确的预测,是目前亟需解决的问题。
【发明内容】
本发明的多个方面提供一种RNN代码测试方法及装置,用以实现对RNN代码的功能测试。
本发明的一方面,提供一种RNN代码测试方法,包括:
控制RNN代码实现的RNN中的隐藏层和输出层分别作为待测试层;
以初始矩阵作为所述RNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否均发生变化;
若每次的判断结果均为是,判定所述代码段的逻辑正确。
作为本发明的进一步改进,所述初始矩阵包括输入矩阵和权重矩阵中的至少一个。
作为本发明的进一步改进,若所述待测试层为隐藏层,则所述输入矩阵包括:输入层提供的t时刻的信号矩阵以及隐藏层在t-1时刻输出的结果矩阵中的至少一个,所述权重矩阵包括:输入层与隐藏层之间的权重矩阵以及上下文层与隐藏层之间的权重矩阵中的至少一个,t大于等于1;
若所述待测试层为输出层,则所述输入矩阵包括隐藏层在t时刻输出的结果矩阵;所述权重矩阵包括:隐藏层与输出层之间的权重矩阵。
作为本发明的进一步改进,所述每次改变所述初始矩阵中的元素值,以获得参考矩阵,包括:
每次改变所述初始矩阵中至少两个元素值,以获得所述参考矩阵。
作为本发明的进一步改进,所述每次改变所述初始矩阵中至少两个元素值,以获得所述参考矩阵,包括:
每次改变所述初始矩阵中对应于所述待测试层中至少两个神经元的元素值,以获得所述参考矩阵。
本发明的另一方面,提供一种RNN代码测试装置,包括:
预处理模块,用于控制RNN代码实现的RNN中的隐藏层和输出层分别作为待测试层;
第一控制模块,用于以初始矩阵作为所述RNN代码中实现所述待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
第二控制模块,用于按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵;
验证模块,用于判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否均发生变化,若每次的判断结果均为是,判定所述代码段的逻辑正确。
作为本发明的进一步改进,所述初始矩阵包括输入矩阵和权重矩阵中的至少一个。
作为本发明的进一步改进,若所述待测试层为隐藏层,则所述输入矩阵包括:输入层提供的t时刻的信号矩阵以及隐藏层在t-1时刻输出的结果矩阵中的至少一个,所述权重矩阵包括:输入层与隐藏层之间的权重矩阵以及上下文层与隐藏层之间的权重矩阵中的至少一个,t大于等于1;
若所述待测试层为输出层,则所述输入矩阵包括隐藏层在t时刻输出的结果矩阵;所述权重矩阵包括:隐藏层与输出层之间的权重矩阵。
作为本发明的进一步改进,所述第二控制模块具体用于:
每次改变所述初始矩阵中至少两个元素值,以获得所述参考矩阵。
作为本发明的进一步改进,所述第二控制模块具体用于:
每次改变所述初始矩阵中对应于所述待测试层中至少两个神经元的元素值,以获得所述参考矩阵。
在本发明中,分别将RNN中的隐藏层和输出层作为待测试层,以初始矩阵作为RNN代码中实现待测试层的代码段的输入,控制该代码段运行以获取代码段输出的初始结果矩阵,按照预设的测试次数,每次改变初始矩阵中的元素值,获得参考矩阵,重新以参考矩阵作为代码段的输入,重新控制代码段运行,以获得参考结果矩阵,通过比较参考结果矩阵和初始结果矩阵中对应于被改变的元素值的位置上的元素值是否均发生变化,来判断该代码段的逻辑是否正确,若每次的判断结果均为发生变化,则判定代码段的逻辑是正确的,进而实现对RNN代码的功能测试。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的RNN代码测试方法的流程示意图;
图2为本发明一实施例提供的传统前馈神经网络的结构示意图;
图3为本发明一实施例提供的RNN的结构示意图;
图4为本发明一实施例提供的RNN代码测试装置的结构示意图。
【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的RNN代码测试方法的流程示意图。如图1所示,该方法包括:
101、控制RNN代码实现的RNN中的隐藏层和输出层分别作为待测试层。
102、以初始矩阵作为RNN代码中实现待测试层功能的代码段的输入,控制代码段运行,以获取代码段输出的初始结果矩阵。
103、按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以参考矩阵作为代码段的输入,重新控制代码段运行,以获取代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否均发生变化;若每次的判断结果均为是,判定代码段的逻辑正确。
由于RNN算法输出的结果是概率值,无法采用现有测试方法进行测试。针对该问题,本实施例提供一种RNN代码测试方法,可由RNN代码测试装置来完成,用以实现对RNN代码的测试,填补现有技术在RNN代码测试方面存在的空白。
图2是传统的前馈神经网络(feedforward neural network,FFNN)的结构示意图。图3是本发明一实施例提供的一种简单的RNN的结构示意图。结合图2和图3可知,该RNN包括输入层,上下文层,隐藏层以及输出层。其中,RNN与FFNN最为不同的地方在于:RNN是一反馈网络,在RNN中,其隐藏层的有两部分输入,一部分是输入层提供输入,即t时刻的信号矩阵,另一部分是由上下文层提供的输入,即隐藏层在t-1时刻输出的结果矩阵。相应的,RNN中包括三种权重矩阵,记为权重矩阵U,权重矩阵V和权重矩阵W。其中,权重矩阵U是指上下文层与隐藏层之间的权重矩阵;权重矩阵V是输入层与隐藏层之间的权重矩阵;权重矩阵W是隐藏层与输出层之间的权重矩阵。
在实际应用中,对RNN的训练过程,实际上就是确定权重矩阵U,V和W的过程。本实施例不关注RNN的训练过程,假设权重矩阵U,V和W均已训练完毕,即是已知的。则RNN的使用过程是指:给定一时间序列X(t)={x(1),x(2),......x(t)},要求通过RNN来预测其在t+1时刻的输出。由此可见,作为用于实现RNN的RNN代码,其需要预测该时间序列X(t)在t+1时刻的输出,主要是实现RNN中的隐藏层和输出层的功能。
基于上述分析,可以对RNN代码的运行过程进行中断控制,以实现对RNN代码实现的RNN中的隐藏层和输出层分别进行测试,进而实现对RNN代码的功能测试。因此,如何对RNN代码实现的RNN中的隐藏层和输出层进行测试成为测试的关键。
于是,本发明发明人从不同于本领域的常规角度出发,开始对RNN中的隐藏层和输出层做进一步研究,发现:隐藏层和输出层具有以下特征,并基于对这些特征的提炼和综合处理提出了本发明技术方案。为便于理解本发明技术方案,下面对发明人的分析研究过程以及发现的特征进行说明:
对于隐藏层:在t=1时,netj(1)=∑ivjixi(1),yj(1)=f(netj(1))。在t=2时,netj(2)=∑ivjixi(2)+∑hvjhyj(1)+θj,其中θj为偏置,yj(2)=f(netj(2))。以此类推,netj(t)=∑ivjixi(t)+∑hujhyj(t-1)+θj,yj(t)=f(netj(t))。
在上述公式中,yj(t)表示t时刻隐藏层第j个神经元的输出;xi(t)表示t时刻输入层第i个神经元的输入,t时刻输入层所有神经元的输入构成t时刻的信号矩阵;yj(t-1)表示上下文层提供给隐藏层的输入,即隐藏层在t-1时刻第j个神经元的输出;vji表示权重矩阵V中第j行第i列的元素,对应于隐藏层第j个神经元;ujh表示权重矩阵U中第j行第h列的元素,对应于隐藏层第j个神经元。
发明人在研究过程中发现:v1i只在计算y1(t)时用到,在计算y2(t)和y3(t)等其它时刻的值时并没有使用。若改变v1i中各元素的值(假设将v11修改为0),则应该只有y1(t)发生改变,而y2(t)和y3(t)不应发生变化。由此可见,通过改变输入层与隐藏层之间的权重矩阵V中的元素值,判断该隐藏层输出的结果矩阵中相应位置的元素值是否均发生变化,可以达到判断实现该隐藏层功能的代码段的逻辑是否正确。
另外,u1h只在计算y1(t)时用到,在计算y2(t)和y3(t)等其它时刻的值时并没有使用。若改变u1h中的一个元素的值(假设将u11修改为0),则应该只有y1(1)发生改变,而y2(1)和y3(1)不应发生变化。由此可见,通过改变作为该隐藏层的输入的权重矩阵U中的元素值,判断该隐藏层输出的结果矩阵中相应位置的元素值是否均发生变化,可以达到判断实现该隐藏层功能的代码段的逻辑是否正确。
再者,x1(t)虽然在计算各yj(t)时都会用到,但是若改变x1(t)的元素值(假设将x1(t)修改为0),则用到x1(t)的各yj(t)都会发生改变。由此可见,通过改变输入层提供的t时刻的信号,判断该隐藏层t时刻输出的结果矩阵中相应位置的元素值是否均发生变化,可以达到判断实现该隐藏层功能的代码段的逻辑是否正确。
再者,y1(t-1)虽然在计算各yj(t)时都会用到,但是若改变y1(t-1)的元素值(假设将y1(t-1)修改为0),则用到y1(t-1)的各yj(t)都会发生改变。由此可见,通过改变隐藏层在t-1时刻输出的结果矩阵中的元素值,判断该隐藏层t时刻输出的结果矩阵中相应位置的元素值是否均发生变化,可以达到判断实现该隐藏层功能的代码段的逻辑是否正确。
对于输出层:在t=1时,netk(1)=∑jwkjyj(1),zk(1)=g(netk(1))。在t=2时,netk(2)=∑jwkjyj(2),zk(2)=g(netk(2))。以此类推,netk(t)=∑jwkjyj(t),zk(t)=g(netk(t))。
在上述公式中,zk(t)表示第t时刻输出层第k个神经元的输出;yj(t)表示隐藏层提供的t时刻第j个神经元的输出;wkj表示权重矩阵W中第k行第j列的元素,对应于输出层第k个神经元;g()表示一函数。
发明人在研究过程中发现:w1j只在计算z1(t)时用到,在计算z2(t)和z3(t)等其它时刻的值时并没有使用。若改变w1j中的一个元素的值(假设将w11修改为0),则应该只有z1(t)发生改变,而z2(t)和z3(t)不应发生变化。由此可见,通过改变隐藏层与输出层之间的权重矩阵W中的元素值,判断该输出层输出的结果矩阵中相应位置的元素值是否均发生变化,可以达到判断实现该输出层功能的代码段的逻辑是否正确。
另外,y1(t)虽然在计算各zk(t)时都会用到,但是若改变y1(t)的元素值(假设将y1(t)修改为0),则用到y1(t)的各zk(t)都会发生改变。由此可见,通过改变隐藏层输出的t时刻的结果矩阵中的元素值,判断输出层t时刻输出的结果矩阵中相应位置的元素值是否均发生变化,可以达到判断实现该隐藏层功能的代码段的逻辑是否正确。
值得说明的是,结合RNN各层包含的神经元个数以及输入的时间序列的维度,可以很容易确定矩阵元素之间的对应关系,也就是说,一旦信号矩阵、权重矩阵中某个或某几个元素值发生变化,很容易判断对应于隐藏层输出的结果矩阵中的哪个或哪几个元素。
结合上述,本发明提出对RNN代码进行测试的方法,具体如下:
控制RNN代码实现的RNN中的隐藏层和输出层分别作为待测试层,则通过对待测试层进行测试就可以实现对RNN代码的测试。可选的,可以按照RNN中隐藏层和输出层之间的连接顺序,依次控制RNN中的隐藏层和输出层作为待测试层。
进一步考虑到RNN代码会包括用于实现不同层功能的代码段,这里实现某一层功能的代码段是以实现该层功能的主要代码为核心,也包括为实现该层功能提供辅助作用的代码,例如一些进行初始化的代码等。因此,对待测试层的测试也就是对实现待测试层功能的代码段的测试。具体测试原理如下:
首先,以初始矩阵作为RNN代码中实现待测试层功能的代码段的输入,控制该代码段运行,以获取代码段输出的初始结果矩阵。
在上述步骤中,控制代码段运行,可以是单独运行该代码段,或者也可以是控制RNN代码从头运行直到该代码段,具体视RNN代码实现结构而定。
在上述步骤中,初始矩阵是代码段的输入,初始结果矩阵是代码段的输出。其中,初始矩阵可以是为测试而预先设定的符合代码段输入要求的矩阵,例如可以包括RNN的输入矩阵和权重矩阵中的至少一个。
进一步,根据RNN结构的特殊性,若待测试层是隐藏层,则上述输入矩阵包括:输入层提供的t时刻的信号矩阵以及隐藏层在t-1时刻输出的结果矩阵(即上下文层提供的输入)中的至少一个;相应的,上述权重矩阵包括:输入层与隐藏层之间的权重矩阵以及上下文层与隐藏层之间的权重矩阵中的至少一个,t大于等于1。若待测试层是输出层,则上述输入矩阵包括隐藏层在t时刻输出的结果矩阵;相应的,上述权重矩阵包括:隐藏层与输出层之间的权重矩阵。
接下来,按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以参考矩阵作为代码段的输入,重新控制代码段运行,以获取代码段输出的参考结果矩阵,判断参考结果矩阵中和初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否均发生变化;若每次的判断结果均为是,判定该代码段的逻辑正确。
值得说明的是,一次测试成功并不能说明一定是正确的,因此本实施例中设定测试次数,对待测试层进行多次测试,如果每次测试都是成功的,那么就可以判定实现待测试层的代码逻辑是正确的。本实施例并不限定测试次数的具体数值,例如可以是3次,5次,10次,甚至更多次,可视具体情况而定。另外,对于待测试层为RNN中不同层时,也可以设置不同的取值。例如对于待测试层为隐藏层时可以设置测试次数为15次,对于待测试层为输出层时可以设置测试次数为8次。
若实现各层功能的代码段的逻辑都正确,则可以判定整个RNN代码的逻辑是正确的;反之,若实现某层功能的代码段的逻辑错误,则可以判定该RNN代码的逻辑是错误的,而且还可以确定该RNN代码中可能发生错误的代码位置。
在改变初始矩阵中的元素值过程中,对被改变的元素值的个数不做限定,可视具体情况而定。
例如,可以每次改变初始矩阵中的一个元素值,以获得参考矩阵,这样处理起来相对简单,成本较低。如果每次改变初始矩阵中的一个元素值,则可以通过设置较大的测试次数,进行更多次测试,以保证测试准确性。
另外,可以每次改变初始矩阵中至少两个元素值,以获得参考矩阵。其中,每次改变多个元素值,相当于测试多次,这样可以减少测试次数,同时也可以保证测试精度。值得说明的是,若初始矩阵包括输入矩阵和权重矩阵,则可以改变输入矩阵中至少一个元素值,改变权重矩阵中至少一个元素值。
进一步,考虑到改变的至少两个元素值有可能对应于代码段输出的参考结果矩阵中相同的元素值,在这种情况下,由于同时改变至少两个元素值进行测试的复杂度相对较大,而无法带来相当于多次测试的效果。针对该问题,可以每次改变初始矩阵中对应于待测试层中至少两个神经元的元素值,以获得参考矩阵。通过这种方式,可以保证被改变的初始举证中的至少两个元素值不会对应于实现待测试层功能的代码段输出的参考结果矩阵中的同一元素,可以达到多次测试的效果,有利于减少测试次数,又可以保证测试精度。
上述对应于待测试层中至少两个神经元的至少两个元素值可以都是同一初始矩阵中的至少两个元素值,例如均是输入矩阵中的值,或者均是权重矩阵中的值,也可以是不同初始矩阵中的至少两个元素值,例如部分是输入矩阵中的值,部分是权重矩阵中的值。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图4为本发明一实施例提供的RNN代码测试装置的结构示意图。如图4所示,该装置包括:预处理模块41、第一控制模块42、第二控制模块43和验证模块44。
预处理模块41,用于控制RNN代码实现的RNN中的隐藏层和输出层分别作为待测试层。
第一控制模块42,用于以初始矩阵作为RNN代码中实现预处理模块41所确定的待测试层功能的代码段的输入,控制该代码段运行,以获取该代码段输出的初始结果矩阵。
第二控制模块43,用于按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以该参考矩阵作为所述代码段的输入,重新控制上述代码段运行,以获取代码段输出的参考结果矩阵。
验证模块44,用于判断第二控制模块43获取的参考结果矩阵中和第一控制模块42获取的初始结果矩阵中对应于初始矩阵中被改变的元素值的位置上的元素值是否均发生变化,若每次的判断结果均为是,判定上述代码段的逻辑正确。
在一可选实施方式中,预处理模块41具体可用于:可以按照RNN中隐藏层和输出层之间的连接顺序,依次控制RNN中的隐藏层和输出层作为待测试层。
在一可选实施方式中,上述初始矩阵包括输入矩阵和权重矩阵中的至少一个。
进一步,若上述待测试层为RNN中的隐藏层,则上述输入矩阵包括:输入层提供的t时刻的信号矩阵以及隐藏层在t-1时刻输出的结果矩阵(即上下文层提供的输入)中的至少一个;相应的,上述权重矩阵包括:输入层与隐藏层之间的权重矩阵以及上下文层与隐藏层之间的权重矩阵中的至少一个,t大于等于1。
若上述待测试层为RNN中的输出层,则上述输入矩阵包括隐藏层在t时刻输出的结果矩阵;相应的,上述权重矩阵包括:隐藏层与输出层之间的权重矩阵。
在一可选实施方式中,第二控制模块43在每次改变所述初始矩阵中的元素值,以获得参考矩阵时,具体用于:
每次改变初始矩阵中至少两个元素值,以获得参考矩阵。
进一步,第二控制模块43在每次改变初始矩阵中至少两个元素值,以获得参考矩阵时,具体用于:
每次改变初始矩阵中对应于待测试层中至少两个神经元的元素值,以获得参考矩阵。
本实施例提供的RNN代码测试装置,分别将RNN中的隐藏层和输出层作为待测试层,以初始矩阵作为RNN代码中实现待测试层的代码段的输入,控制该代码段运行以获取代码段输出的初始结果矩阵,按照预设的测试次数,每次改变初始矩阵中的元素值,获得参考矩阵,重新以参考矩阵作为代码段的输入,重新控制代码段运行,以获得参考结果矩阵,通过比较参考结果矩阵和初始结果矩阵中对应于被改变的元素值的位置上的元素值是否均发生变化,来判断该代码段的逻辑是否正确,若每次的判断结果均为发生变化,则判定代码段的逻辑是正确的,进而实现对RNN代码的功能测试,填补现有技术在RNN代码测试方面存在的空白。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种循环神经网络RNN代码测试方法,其特征在于,包括:
控制RNN代码实现的RNN中的隐藏层和输出层分别作为待测试层;
以初始矩阵作为所述RNN代码中实现待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵,其中初始矩阵是为测试而预先设定的符合代码段输入要求的矩阵;
按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否均发生变化;
若每次的判断结果均为是,判定所述代码段的逻辑正确。
2.根据权利要求1所述的方法,其特征在于,所述初始矩阵包括输入矩阵和权重矩阵中的至少一个。
3.根据权利要求2所述的方法,其特征在于,
若所述待测试层为隐藏层,则所述输入矩阵包括:输入层提供的t时刻的信号矩阵以及隐藏层在t-1时刻输出的结果矩阵中的至少一个,所述权重矩阵包括:输入层与隐藏层之间的权重矩阵以及上下文层与隐藏层之间的权重矩阵中的至少一个,t大于等于1;
若所述待测试层为输出层,则所述输入矩阵包括隐藏层在t时刻输出的结果矩阵;所述权重矩阵包括:隐藏层与输出层之间的权重矩阵。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述每次改变所述初始矩阵中的元素值,以获得参考矩阵,包括:
每次改变所述初始矩阵中至少两个元素值,以获得所述参考矩阵。
5.根据权利要求4所述的方法,其特征在于,所述每次改变所述初始矩阵中至少两个元素值,以获得所述参考矩阵,包括:
每次改变所述初始矩阵中对应于所述待测试层中至少两个神经元的元素值,以获得所述参考矩阵。
6.一种循环神经网络RNN代码测试装置,其特征在于,包括:
预处理模块,用于控制RNN代码实现的RNN中的隐藏层和输出层分别作为待测试层;
第一控制模块,用于以初始矩阵作为所述RNN代码中实现待测试层功能的代码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵,其中初始矩阵是为测试而预先设定的符合代码段输入要求的矩阵;
第二控制模块,用于按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵;
验证模块,用于判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否均发生变化,若每次的判断结果均为是,判定所述代码段的逻辑正确。
7.根据权利要求6所述的装置,其特征在于,所述初始矩阵包括输入矩阵和权重矩阵中的至少一个。
8.根据权利要求7所述的装置,其特征在于,
若所述待测试层为隐藏层,则所述输入矩阵包括:输入层提供的t时刻的信号矩阵以及隐藏层在t-1时刻输出的结果矩阵中的至少一个,所述权重矩阵包括:输入层与隐藏层之间的权重矩阵以及上下文层与隐藏层之间的权重矩阵中的至少一个,t大于等于1;
若所述待测试层为输出层,则所述输入矩阵包括隐藏层在t时刻输出的结果矩阵;所述权重矩阵包括:隐藏层与输出层之间的权重矩阵。
9.根据权利要求6-8任一项所述的装置,其特征在于,所述第二控制模块具体用于:
每次改变所述初始矩阵中至少两个元素值,以获得所述参考矩阵。
10.根据权利要求9所述的装置,其特征在于,所述第二控制模块具体用于:
每次改变所述初始矩阵中对应于所述待测试层中至少两个神经元的元素值,以获得所述参考矩阵。
CN201510542399.0A 2015-08-28 2015-08-28 Rnn代码测试方法及装置 Active CN105183646B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510542399.0A CN105183646B (zh) 2015-08-28 2015-08-28 Rnn代码测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510542399.0A CN105183646B (zh) 2015-08-28 2015-08-28 Rnn代码测试方法及装置

Publications (2)

Publication Number Publication Date
CN105183646A CN105183646A (zh) 2015-12-23
CN105183646B true CN105183646B (zh) 2017-12-26

Family

ID=54905738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510542399.0A Active CN105183646B (zh) 2015-08-28 2015-08-28 Rnn代码测试方法及装置

Country Status (1)

Country Link
CN (1) CN105183646B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11790239B2 (en) 2018-12-29 2023-10-17 International Business Machines Corporation Deep learning testing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572892A (zh) * 2014-12-24 2015-04-29 中国科学院自动化研究所 一种基于循环卷积网络的文本分类方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100041447A (ko) * 2008-10-14 2010-04-22 삼성전자주식회사 테스트 자동화 장치 및 테스트 자동화 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572892A (zh) * 2014-12-24 2015-04-29 中国科学院自动化研究所 一种基于循环卷积网络的文本分类方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于循环神经网络的汉语语言模型并行优化算法;王龙等;《应用科学学报》;20150531;第33卷(第3期);第253-261页 *

Also Published As

Publication number Publication date
CN105183646A (zh) 2015-12-23

Similar Documents

Publication Publication Date Title
CN103399487B (zh) 一种基于非线性多入多出mimo系统的解耦控制方法及其装置
Karsoliya Approximating number of hidden layer neurons in multiple hidden layer BPNN architecture
CN104751842B (zh) 深度神经网络的优化方法及系统
CN107729999A (zh) 考虑矩阵相关性的深度神经网络压缩方法
CN106326984A (zh) 用户意图识别方法和装置、自动应答系统
CN110046710A (zh) 一种神经网络的非线性函数极值优化方法及系统
CN106875002A (zh) 基于梯度下降法与广义逆的复值神经网络训练方法
CN106527757A (zh) 一种输入纠错方法及装置
US20220036231A1 (en) Method and device for processing quantum data
CN105701120A (zh) 确定语义匹配度的方法和装置
CN103927550B (zh) 一种手写体数字识别方法及系统
CN103473598A (zh) 基于变长度粒子群优化算法的极限学习机
CN105678381A (zh) 一种性别分类网络训练方法、性别分类方法及相关装置
CN106570516A (zh) 一种利用卷积神经网络cnn的障碍物识别方法
CN112686056B (zh) 一种情感分类方法
CN107798385A (zh) 基于块张量分解的循环神经网络稀疏连接方法
CN104573142A (zh) 基于神经网络的口令属性分析方法
Golovko et al. A new technique for restricted Boltzmann machine learning
CN112884059A (zh) 一种融合先验知识的小样本雷达工作模式分类方法
CN109583594A (zh) 深度学习训练方法、装置、设备及可读存储介质
CN109344751B (zh) 一种车内噪声信号的重构方法
CN107862329A (zh) 一种基于深度置信网络的雷达一维距离像真假目标识别方法
CN106096723A (zh) 一种基于混合神经网络算法的用于复杂工业产品性能评估方法
CN105550747A (zh) 一种新型卷积神经网络的样本训练方法
CN105183646B (zh) Rnn代码测试方法及装置

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