一种程序检测方法、装置、设备及可读存储介质制造方法及图纸

技术编号:20763809 阅读:20 留言:0更新日期:2019-04-03 14:17
本发明专利技术公开了一种程序检测方法,该方法包括:在接收到Winograd程序检测指令时,获取测试数据;利用卷积神经网络的目标算法程序,对测试数据进行卷积计算,获得卷积结果;将测试数据发送给FPGA,以便FPGA利用Winograd程序对测试数据进行快速卷积计算;接收FPGA发送的快速卷积结果,并计算快速卷积结果与卷积结果的相似度;当相似度大于阈值时,确定Winograd程序正确。该方法,可对FPGA中的Winograd程序进行检测。本发明专利技术还公开了一种程序检测装置、设备及可读存储介质,具有相应的技术效果。

【技术实现步骤摘要】
一种程序检测方法、装置、设备及可读存储介质
本专利技术涉及计算机应用
,特别是涉及一种程序检测方法、装置、设备及可读存储介质。
技术介绍
近年来,卷积神经网络(CNN)越来越广泛地应用于计算机视觉任务。CNN通常包含多个层,每一层的输出特征图是下一层的输入特征图。当前最优CNN的计算主要由卷积层主导。FPGA(Field-ProgrammableGateArray,现场可编程门阵列),因其具有高性能、低能耗和可重配置性的优点,并成为CNN的有效硬件加速器而备受关注。如若使用目标的卷积算法,输出特征图中的每个元素要经多步乘积累加运算进行单独计算,这需要耗费FPGA中大量的DSP(乘法器)资源来进行乘法运算,然而FPGA板卡中的DSP资源有限且十分珍贵,不能满足目标卷积算法需要的乘法数量。Winograd算法是一种卷积神经网络快速算法,它利用元素之间的结构相似性生成输出特征图中的一列元素。可减少乘法运算的数量,从而大幅度降低了算法复杂度,可改善了FPGA上的CNN性能。然而,Winograd算法在FPGA上的代码实现,程序复杂度增加,在代码开发过程中,极易出错。一旦Winograd算法部分计算出错,将会影响整个CNN算法的准确度。为了使得程序校验结果更为准确,往往需要输入不同的测试数据对Winograd程序进行检验。但是,又因,在开发阶段,由于Winograd算法复杂,难以找出不同测试数据对应的卷积结果。即便是预先存储不同测试数据与测试结果的对应表,用于程序校验,也存在测试数据量少、具有偶然性和测试过程复杂,难以实现的问题。综上所述,如何有效地检验Winograd程序是否正确等问题,是目前本领域技术人员急需解决的技术问题。
技术实现思路
本专利技术的目的是提供一种程序检测方法、装置、设备及可读存储介质,以对FPGA上的Winograd程序的进行检测,以保障整个CNN算法的准确度。为解决上述技术问题,本专利技术提供如下技术方案:一种程序检测方法,包括:在接收到Winograd程序检测指令时,获取测试数据;利用所述卷积神经网络的目标算法程序,对所述测试数据进行卷积计算,获得卷积结果;所述目标算法程序为以滑窗方式实现所述卷积神经网络的算法程序;将所述测试数据发送给FPGA,以便所述FPGA利用所述Winograd程序对所述测试数据进行快速卷积计算;接收所述FPGA发送的快速卷积结果,并计算所述快速卷积结果与所述卷积结果的相似度;当所述相似度大于阈值时,确定所述Winograd程序正确。优选地,利用所述卷积神经网络的目标算法程序,对所述测试数据进行卷积计算,获得卷积结果,包括:利用所述目标算法程序,对所述测试数据进行卷积计算,将所述卷积神经网络的第一层结果作为所述卷积结果;相应地,所述FPGA利用所述Winograd程序对所述测试数据进行快速卷积计算,包括:所述FPGA利用所述Winograd程序对所述测试数据进行快速卷积计算,并将快速计算得到所述卷积神经网络的第一层结果作为所述快速卷积结果。优选地,还包括:获取所述卷积神经网络的滤波器参数;将所述滤波器参数分别设置在所述目标卷积算法程序和Winograd程序中。优选地,将所述测试数据发送给所述FPGA,包括:创建所述PFGA板卡运行环境,并初始化板卡参数;将所述测试数据发送给所述FPGA。优选地,所述FPGA利用所述Winograd程序对所述测试数据进行快速卷积计算,包括:所述FPGA启动kernel,并利用所述Winograd程序对所述测试数据进行快速卷积计算。优选地,计算所述快速卷积结果与所述卷积结果的相似度,包括:计算所述快速卷积结果与所述卷积结果的比值,利用所述比值确定所述相似度;或,计算所述快速卷积结果与所述卷积结果的差值,利用所述差值确定所述相似度。优选地,当所述相似度小于或等于所述阈值时,还包括:确定所述Winograd程序错误。一种程序检测装置,包括:测试数据获取模块,用于在接收到Winograd程序检测指令时,获取测试数据;卷积计算模块,用于利用所述卷积神经网络的目标算法程序,对所述测试数据进行卷积计算,获得卷积结果;所述目标算法程序为以滑窗方式实现所述卷积神经网络的算法程序;测试数据发送模块,用于将所述测试数据发送给FPGA,以便所述FPGA利用所述Winograd程序对所述测试数据进行快速卷积计算;相似度计算模块,用于接收所述FPGA发送的快速卷积结果,并计算所述快速卷积结果与所述卷积结果的相似度;检测结果确定模块,用于当所述相似度大于阈值时,确定所述Winograd程序正确。一种程序检测设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述程序检测方法的步骤。一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述程序检测方法的步骤。应用本专利技术实施例所提供的方法,在接收到Winograd程序检测指令时,获取测试数据;利用卷积神经网络的目标算法程序,对测试数据进行卷积计算,获得卷积结果;目标算法程序为以滑窗方式实现卷积神经网络的算法程序;将测试数据发送给FPGA,以便FPGA利用Winograd程序对测试数据进行快速卷积计算;接收FPGA发送的快速卷积结果,并计算快速卷积结果与卷积结果的相似度;当相似度大于阈值时,确定Winograd程序正确。由于深度神经卷积网络的目标算法程序,即实现滑窗算法的实现流程,只需要使用循环嵌套便可将卷积算法准确表达出,且具有代码简单,出错概率小的优点。又因Winograd程序为实现卷积神经网络的快速算法程序,也就是说,正确表达的Winograd程序与目标算法程序在计算同一个输入数据的卷积计算结果时,所得到的两个卷积结果应当一致或保持在一定差异范围内,即具有相似性。基于此,在将Winograd程序写入FPGA之后,当接收到Winograd程序检测指令时,首先获取用于检验的测试数据。然后在CPU中利用卷积神经网络的目标算法程序对测试数据进行卷积计算,获得卷积结果。与此同时,可将测试数据发送给FPGA。FPGA得到测试数据之后,利用Winograd程序对测试数据进行快速卷积计算,然后将快速卷积计算结果发送给CPU。CPU接收FPGA发送的快速卷积结果之后,计算快速卷积结果与卷积结果的相似度;当相似度大于阈值时,确定Winograd程序正确。如此,便可通过运行在CPU中的目标算法程序,对FPGA中的Winograd程序进行检测,保障了Winograd算法部分的准确率,可提升FPGA内的CNN算法的准确度,进一步提高在FPGA上所进行计算机视觉任务的准确率。相应地,本专利技术实施例还提供了与上述程序检测方法相对应的程序检测装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例中一种程序检测方法的实施流程图;图2为创建板卡运行环境函数示意图;图3为初始化板卡参数函数示意图;图4为本发本文档来自技高网
...

【技术保护点】
1.一种程序检测方法,其特征在于,包括:在接收到Winograd程序检测指令时,获取测试数据;利用所述卷积神经网络的目标算法程序,对所述测试数据进行卷积计算,获得卷积结果;所述目标算法程序为以滑窗方式实现所述卷积神经网络的算法程序;将所述测试数据发送给FPGA,以便所述FPGA利用所述Winograd程序对所述测试数据进行快速卷积计算;接收所述FPGA发送的快速卷积结果,并计算所述快速卷积结果与所述卷积结果的相似度;当所述相似度大于阈值时,确定所述Winograd程序正确。

【技术特征摘要】
1.一种程序检测方法,其特征在于,包括:在接收到Winograd程序检测指令时,获取测试数据;利用所述卷积神经网络的目标算法程序,对所述测试数据进行卷积计算,获得卷积结果;所述目标算法程序为以滑窗方式实现所述卷积神经网络的算法程序;将所述测试数据发送给FPGA,以便所述FPGA利用所述Winograd程序对所述测试数据进行快速卷积计算;接收所述FPGA发送的快速卷积结果,并计算所述快速卷积结果与所述卷积结果的相似度;当所述相似度大于阈值时,确定所述Winograd程序正确。2.根据权利要求1所述的程序检测方法,其特征在于,利用所述卷积神经网络的目标算法程序,对所述测试数据进行卷积计算,获得卷积结果,包括:利用所述目标算法程序,对所述测试数据进行卷积计算,将所述卷积神经网络的第一层结果作为所述卷积结果;相应地,所述FPGA利用所述Winograd程序对所述测试数据进行快速卷积计算,包括:所述FPGA利用所述Winograd程序对所述测试数据进行快速卷积计算,并将快速计算得到所述卷积神经网络的第一层结果作为所述快速卷积结果。3.根据权利要求1所述的程序检测方法,其特征在于,还包括:获取所述卷积神经网络的滤波器参数;将所述滤波器参数分别设置在所述目标卷积算法程序和Winograd程序中。4.根据权利要求1所述的程序检测方法,其特征在于,将所述测试数据发送给所述FPGA,包括:创建所述PFGA板卡运行环境,并初始化板卡参数;将所述测试数据发送给所述FPGA。5.根据权利要求1所述的程序检测方法,其特征在于,所述FPGA利用所述Winograd程序对所述测试数据进...

【专利技术属性】
技术研发人员:曹芳赵雅倩郭振华
申请(专利权)人:广东浪潮大数据研究有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1