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

文档序号:9396796阅读:来源:国知局
,若每次的判断结果均为发生变化,则 判定代码段的逻辑是正确的,进而实现对CNN代码的功能测试。 【【附图说明】】
[0046] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述 中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附 图获得其他的附图。
[0047] 图1为本发明一实施例提供的CNN代码测试方法的流程示意图;
[0048] 图2为本发明一实施例提供的CNN模型中卷积过程以及输入输出中元素值变化对 应关系的一种不意图;
[0049] 图3为本发明一实施例提供的卷积过程中输入输出中元素值变化对应关系的另 一种不意图;
[0050] 图4为本发明一实施例提供的CNN模型中下采样过程以及输入输出中元素值变化 对应关系的不意图;
[0051] 图5为本发明一实施例提供的CNN模型中全连接层的结构示意图;
[0052] 图6为本发明另一实施例提供的CNN代码测试方法的流程示意图;
[0053] 图7为本发明一实施例提供的CNN代码测试装置的结构示意图;
[0054] 图8为本发明另一实施例提供的CNN代码测试装置的结构示意图;
[0055] 图9为本发明又一实施例提供的CNN代码测试装置的结构示意图。 【【具体实施方式】】
[0056] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0057] 图1为本发明一实施例提供的CNN代码测试方法的流程示意图。如图1所示,该 方法包括:
[0058] 101、控制CNN代码实现的CNN中的卷积层、下采样层和全连接层分别作为待测试 层。
[0059] 102、以初始矩阵作为CNN代码中实现该待测试层功能的代码段的输入,控制该代 码段运行,以获取该代码段输出的初始结果矩阵。
[0060] 103、按照预设的测试次数,每次改变初始矩阵中的元素值,以获得参考矩阵,并以 参考矩阵作为上述代码段的输入,重新控制上述代码段运行,以获取上述代码段输出的参 考结果矩阵,判断参考结果矩阵中和上述初始结果矩阵中对应于初始矩阵中被改变的元素 值的位置上的元素值是否发生变化;若每次的判断结果均为是,判定上述代码段的逻辑正 确。
[0061] 由于CNN算法输出的结果是概率值,无法采用现有测试方法进行测试。针对该问 题,本实施例提供一种CNN代码测试方法,可由CNN代码测试装置来完成,用以实现对CNN 代码的测试,填补现有技术在CNN代码测试方面存在的空白。
[0062] CNN除了输入层与输出层以外,内部一般包括卷积层(Convolutions)、下采样层 (Subsampling)和全连接层(Full Connection)。卷积层的功能是将多个特征映射(feature Map)矩阵与多个卷积核(kernel)矩阵进行卷积,得到新的feature Map矩阵,实现特征增 强。下采样层是对卷积层产生的feature Map矩阵进行采样,得到低分辨率的feature Map 矩阵。其中,卷积层和下采样层间隔出现,CNN模型的最后几层是全连接层,卷积层是局部 连接,下采样层是一一对应连接。
[0063] 作为用于实现CNN的CNN代码,其需要实现CNN中的卷积层、下采样层和全连接 层。基于此,可以对CNN代码的运行过程进行中断控制,以实现对CNN代码实现的CNN中的 卷积层、下采样层和全连接层分别进行测试,进而实现对CNN代码的功能测试。因此,如何 对CNN代码实现的CNN中的卷积层、下采样层和全连接层进行测试成为测试的关键。
[0064] 于是,本发明发明人从不同于本领域的常规角度出发,开始对CNN中的卷积层、下 采样层和全连接层做进一步研究,发现:卷积层、下采样层和连接层具有以下特征,并基于 对这些特征的提炼和综合处理提出了本发明技术方案。为便于理解本发明技术方案,下面 对发明人的分析研究过程以及发现的特征进行说明:
[0065] 对于卷积层:卷积层是由多个feature Map矩阵和多个kernel矩阵构成的,一个 feature Map矩阵可以和多个kernel矩阵进行卷积,得到多个结果(result)矩阵,也就是 下一层的feature Map矩阵。同时一个kernel矩阵也可以和多个feature Map矩阵卷积, 得到一个result矩阵。本发明以最简单的情况为例进行说明,就是一个feature Map矩阵 和一个kernel矩阵进行卷积的情况。如图2所示,为一个5*5的feature Map矩阵与一 个3*3的kernel矩阵进行卷积的过程示意图。该过程就是将这个3*3的kernel矩阵覆盖 在5*5的feature Map矩阵上,对应位置相乘最后相加得到一个标量,写到result矩阵的 第一位上;然后kernel矩阵向右移动一格,继续如上的过程,直到最后,kernel矩阵停留在 feature Map矩阵的右下方,最终得到大小为(5_3+1)*(5_3+1) =3*3的result矩阵。
[0066] 发明人在研究过程中发现,若改变feature Map矩阵中的某一个值,如图2中标记 为X的格子,那么result矩阵中的第一位置和第二位置(如2中标记为X的格子)的值都 会发生相应变化,其他位置的值不变。进一步,如图3所示,若改变feature Map矩阵中第 二行第二列的值(如图3中标记为X的格子),则result矩阵中左上角2*2的小矩阵(如 图3中标记为X的格子)会全部发生变化,其余位置的值不变。由此可见,通过改变作为卷 积层的输入的f eature Map矩阵中的元素值,判断作为卷积层的输出的resu11矩阵中相应 位置的元素值是否发生变化,可以达到判断实现卷积层功能的代码段的逻辑是否正确。
[0067] 结合图2和3可知,在一次卷积过程中,若feature Map矩阵中参与卷积的元素 值被改变,则该次卷积结果应该发生变化。按照上面描述的卷积过程可以很容易的确定 feature Map矩阵中的元素值,与result矩阵中的卷积结果之间的对应关系。
[0068] 对于下采样层:下采样层就是将卷积以后得到的新的feature Map矩阵进行采 样,得到新的feature Map矩阵。采样方法有很多种,常用的方法有两种,一种是mean pooling,一种是max pooling。假设feature Map矩阵的大小为5*5,pooling矩阵的大 小是2*2,则下采样过程如图4所示。该过程就是将这个2*2的pooling矩阵覆盖在5*5 的feature Map矩阵上,对应位置按照下采样方法要求的数值关系进行计算得到一个标 量,写到result矩阵的第一位置上,然后移动pooling矩阵,并去除边缘,那么采样之后的 feature Map矩阵的大小为2*2。其中,Mean-pooling的数值关系是E= (A+B+C+D)/4, 而max pooling要求的数值关系是E = max {A, B, C, D}。E是计算得到的标量;A、B、C、D是 feature Map矩阵中被2*2的pooling矩阵覆盖位置的元素值。
[0069] 发明人在研究过程中发现,若改变feature Map矩阵中的某一个值,如图4中标记 为A、B、C或D的格子,那么result矩阵中的第一位置的值会发生相应变化,其他位置的值 不变。由此可见,通过改变作为下采样层的输入的featureMap矩阵中的元素值,判断作为 下采样层的输出的result矩阵中相应位置的元素值是否发生变化,可以达到判断实现下 采样层功能的代码段的逻辑是否正确。
[0070] 对于下采样层,发明人进一步发现:还可以验证作为输入的feature Map矩阵中 被2*2的pooling矩阵覆盖位置的元素值,与作为输出的result矩阵的相应位置上的元素 值之间是否满足下采样方法要求的数值关系,即还可以判断E是否等于(A+B+C+D)/4或者 E 是否等于 max {A, B, C, D} 〇
[0071] 对于下采样过程,假设采样后result矩阵中的元素位置为(I,j),则对应于 feature Map矩阵中的元素位置为(2i,2j)。基于此,当改变feature Map矩阵中的元素值 时,可以很容易的算出该被改变的元素值对应于result矩阵中的元素位置。
[0072] 对于全连接层:图5所示为全连接层的一种结构示意图。在图5所示全连 接层中,包括一个输入层、两个隐含层和一个输出层。结合图5可知,
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1