Cnn代码测试方法及装置的制造方法

文档序号:9396796阅读:384来源:国知局
Cnn代码测试方法及装置的制造方法
【专利说明】CNN代码测试方法及装置 【技术领域】
[0001] 本发明涉及软件技术领域,尤其涉及一种CNN代码测试方法及装置。 【【背景技术】】
[0002] 深度学习是大数据分析领域的热门技术,被广泛用于图像识别、语音识别、自然语 言理解等人工智能领域。深度学习算法的核心是其预测模块,实现该预测模块的一个经典 模型是卷积神经网络(Convolutional Neural Network,CNN) 〇
[0003] 从代码角度来说,在基于深度学习的应用的代码实现中,实现CNN功能的代码(简 称CNN代码)是整个代码中的核心部分,因此对CNN代码进行测试以保证其正确性,对整个 代码质量起着关键性作用。但是,由于深度学习算法输出的是概率值,因此传统的黑盒测试 方法等并不适合CNN代码。因此,如何对CNN代码进行功能测试以确保其能做出正确的预 测,是目前亟需解决的问题。 【
【发明内容】

[0004] 本发明的多个方面提供一种CNN代码测试方法及装置,用以实现对CNN代码的功 能测试。
[0005] 本发明的一方面,提供一种CNN代码测试方法,包括:
[0006] 控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
[0007] 以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所 述代码段运行,以获取所述代码段输出的初始结果矩阵;
[0008] 按照预设的测试次数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以 所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获取所述代码段输出 的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中 被改变的元素值的位置上的元素值是否发生变化;
[0009] 若每次的判断结果均为是,判定所述代码段的逻辑正确。
[0010] 作为本发明的进一步改进,若所述待测试层为下采样层,则在判定所述代码段的 逻辑正确之前,所述方法还包括:
[0011] 根据所述下采样层使用的下采样方法,确定所述参考矩阵中与所述参考结果矩阵 中对应位置上的元素值满足下采样方法要求的数值关系;和/或
[0012] 根据所述下采样层使用的下采样方法,确定所述初始矩阵中与所述初始结果矩阵 中对应位置上的元素值满足下采样方法要求的数值关系。
[0013] 作为本发明的进一步改进,所述控制CNN代码实现的CNN中的卷积层、下采样层和 全连接层分别作为待测试层,包括:
[0014] 按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制所述CNN 中的所有卷积层、下采样层和全连接层分别作为所述待测试层;或者
[0015] 控制随机确定的所述CNN中的部分卷积层、部分下采样层和部分全连接层分别作 为所述待测试层。
[0016] 作为本发明的进一步改进,在按照所述CNN中卷积层、下采样层和全连接层之间 的连接顺序,依次将所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测试 层时:
[0017] 若所述待测试层是非首个卷积层,所述初始矩阵为与所述待测试层连接的上一下 采样层输出的参考结果矩阵;
[0018] 若所述待测试层是下采样层,所述初始矩阵为与所述待测试层连接的上一卷积层 输出的参考结果矩阵。
[0019] 作为本发明的进一步改进,若所述待测试层是全连接层,所述初始矩阵为权重矩 阵。
[0020] 本发明的另一方面,提供一种CNN代码测试方法,包括:
[0021] 控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试层;
[0022] 以初始矩阵作为所述CNN代码中实现所述待测试层功能的代码段的输入,控制所 述代码段运行,以获取所述代码段输出的初始结果矩阵;
[0023] 当所述待测试层为卷积层或全连接层时,按照预设的测试次数,每次改变所述初 始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制 所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所 述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变 化;若每次的判断结果均为是,判定所述代码段的逻辑正确;
[0024] 当所述待测试层为下采样层时,根据所述下采样层使用的下采样方法,验证所述 初始矩阵中与所述初始结果矩阵中对应位置上的元素值是否满足下采样方法要求的数值 关系;若验证结果为满足,则判定所述代码段的逻辑正确。
[0025] 本发明的又一方面,提供一种CNN代码测试装置,包括:
[0026] 预处理模块,用于控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别 作为待测试层;
[0027] 初始控制模块,用于以初始矩阵作为所述CNN代码中实现所述待测试层功能的代 码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
[0028] 参考控制模块,用于按照预设的测试次数,每次改变所述初始矩阵中的元素值,以 获得参考矩阵,并以所述参考矩阵作为所述代码段的输入,重新控制所述代码段运行,以获 取所述代码段输出的参考结果矩阵,判断所述参考结果矩阵中和所述初始结果矩阵中对应 于所述初始矩阵中被改变的元素值的位置上的元素值是否发生变化;
[0029] 判定模块,用于在每次的判断结果均为是时,判定所述代码段的逻辑正确。
[0030] 作为本发明的进一步改进,所述装置还包括:
[0031] 确定模块,用于在所述待测试层为下采样层时,在所述判定模块判定所述代码段 的逻辑正确之前,根据所述下采样层使用的下采样方法,确定所述参考矩阵中与所述参考 结果矩阵中对应位置上的元素值满足下采样方法要求的数值关系;和/或,根据所述下采 样层使用的下采样方法,确定所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值 满足下采样方法要求的数值关系。
[0032] 作为本发明的进一步改进,所述预处理模块具体用于:
[0033] 按照所述CNN中卷积层、下采样层和全连接层之间的连接顺序,依次控制所述CNN 中的所有卷积层、下采样层和全连接层分别作为所述待测试层;或者
[0034] 控制随机确定的所述CNN中的部分卷积层、部分下采样层和部分全连接层分别作 为所述待测试层。
[0035] 作为本发明的进一步改进,在按照所述CNN中卷积层、下采样层和全连接层之间 的连接顺序,依次控制所述CNN中的所有卷积层、下采样层和全连接层分别作为所述待测 试层时:
[0036] 若所述待测试层是非首个卷积层,所述初始矩阵为与所述待测试层连接的上一下 采样层输出的参考结果矩阵;
[0037] 若所述待测试层是下采样层,所述初始矩阵为与所述待测试层连接的上一卷积层 输出的参考结果矩阵。
[0038] 作为本发明的进一步改进,若所述待测试层是全连接层,所述初始矩阵为权重矩 阵。
[0039] 本发明的又一方面,提供一种CNN代码测试装置,包括:
[0040] 预处理模块,用于控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别 作为待测试层;
[0041] 初始控制模块,用于以初始矩阵作为所述CNN代码中实现所述待测试层功能的代 码段的输入,控制所述代码段运行,以获取所述代码段输出的初始结果矩阵;
[0042] 参考控制模块,用于在所述待测试层为卷积层或全连接层时,按照预设的测试次 数,每次改变所述初始矩阵中的元素值,以获得参考矩阵,并以所述参考矩阵作为所述代码 段的输入,重新控制所述代码段运行,以获取所述代码段输出的参考结果矩阵,判断所述参 考结果矩阵中和所述初始结果矩阵中对应于所述初始矩阵中被改变的元素值的位置上的 元素值是否发生变化;
[0043] 验证模块,用于在所述待测试层为下采样层时,根据所述下采样层使用的下采样 方法,验证所述初始矩阵中与所述初始结果矩阵中对应位置上的元素值是否满足下采样方 法要求的数值关系;
[0044] 判定模块,用于在所述参考控制模块每次的判断结果均为是时,判定所述代码段 的逻辑正确,或者在所述验证模块的验证结果为满足时,判定所述代码段的逻辑正确。
[0045] 在本发明中,将CNN代码所实现的CNN中的卷积层、下采样层和全连接层分别作为 待测试层,以初始矩阵作为CNN代码中实现待测试层功能的代码段的输入,控制代码段运 行以获取代码段输出的初始结果矩阵,按照预设的测试次数,每次改变初始矩阵中的元素 值,获得参考矩阵,重新以参考矩阵作为代码段的输入,重新控制代码段运行,以获得参考 结果矩阵,通过比较参考结果矩阵和初始结果矩阵中对应于被改变的元素值的位置上的元 素值是否发生变化,来判断该代码段的逻辑是否正确
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1