设备运行方法、装置、存储介质及电子设备与流程

文档序号:20920655发布日期:2020-05-29 14:06阅读:246来源:国知局
设备运行方法、装置、存储介质及电子设备与流程

本申请属于电子设备技术领域,尤其涉及一种设备运行方法、装置、存储介质及电子设备。



背景技术:

人工神经网络(artificialneuralnetwork,ann)以及基于人工神经网络的深度学习方法已经越来越多地应用到诸如图像识别、场景判断、智能推荐等人工智能领域,并且在各方面展现了其优越性。针对人工神经网络的硬件加速也是一个热门的研究领域。然而,相关技术中,在为人工神经网络设计硬件加速时,无法比较人工神经网络在不同的运行环境中的运行效率。



技术实现要素:

本申请实施例提供一种设备运行方法、装置、存储介质及电子设备,可以比较人工神经网络在不同的运行环境中的运行效率。

第一方面,本申请实施例提供一种设备运行方法,包括:

获取神经网络模型,并确定所述神经网络模型中各神经层对应的算子;

配置各所述算子对应的接口;

获取多组不同的运行环境对应的配置参数,所述运行环境对应的配置参数用于指定在电子设备中运行所述神经网络模型时各神经层的运行环境;

按照每一组所述运行环境对应的配置参数,在所述电子设备中运行所述神经网络模型,其中,在不同的运行环境下运行所述神经网络模型时,通过各算子对应的接口调用对应的算子;

基于每一组所述运行环境对应的配置参数,输出所述神经网络模型在对应的运行环境下的运行结果数据,以比较所述神经网络模型在不同运行环境下的运行效率。

第二方面,本申请实施例提供一种设备运行装置,包括:

第一获取模块,用于获取神经网络模型,并确定所述神经网络模型中各神经层对应的算子;

设置模块,用于配置各所述算子对应的接口;

第二获取模块,用于获取多组不同的运行环境对应的配置参数,所述运行环境对应的配置参数用于指定在电子设备中运行所述神经网络模型时各神经层的运行环境;

运行模块,用于按照每一组所述运行环境对应的配置参数,在所述电子设备中运行所述神经网络模型,其中,在不同的运行环境下运行所述神经网络模型时,通过各算子对应的接口调用对应的算子;

输出模块,用于基于每一组所述运行环境对应的配置参数,输出所述神经网络模型在对应的运行环境下的运行结果数据,以比较所述神经网络模型在不同运行环境下的运行效率。

第三方面,本申请实施例提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上执行时,使得所述计算机执行本申请实施例提供的设备运行方法中的流程。

第四方面,本申请实施例还提供一种电子设备,包括存储器,处理器,所述处理器通过调用所述存储器中存储的计算机程序,用于执行本申请实施例提供的设备运行方法中的流程。

本实施例中,电子设备可以为神经网络模型中的算子配置对应的接口,该接口用于调用对应的算子的功能,从而便于电子设备可以在不同的运行环境下运行神经网络模型,并得到不同运行环境下的运行结果数据,以便比较该神经网络模型在不同的运行环境下的运行效率。即,本申请实施例可以实现人工神经网络模型在不同的运行环境中的运行效率。

附图说明

下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其有益效果显而易见。

图1是本申请实施例提供的设备运行方法的流程示意图。

图2是本申请实施例提供的设备运行方法的另一流程示意图。

图3是本申请实施例提供的设备运行装置的结构示意图。

图4是本申请实施例提供的电子设备的结构示意图。

图5是本申请实施例提供的电子设备的另一结构示意图。

具体实施方式

请参照图示,其中相同的组件符号代表相同的组件,本申请的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本申请具体实施例,其不应被视为限制本申请未在此详述的其它具体实施例。

可以理解的是,本申请实施例的执行主体可以是诸如智能手机或平板电脑等的电子设备。

请参阅图1,图1是本申请实施例提供的设备运行方法的流程示意图,流程可以包括:

101、获取神经网络模型,并确定该神经网络模型中各神经层对应的算子。

人工神经网络(artificialneuralnetwork,ann)以及基于人工神经网络的深度学习方法已经越来越多地应用到诸如图像识别、场景判断、智能推荐等人工智能领域,并且在各方面展现了其优越性。针对人工神经网络的硬件加速也是一个热门的研究领域。然而,相关技术中,在为人工神经网络设计硬件加速时,无法比较人工神经网络在不同的运行环境中的运行效率。

在本申请实施例中,比如,电子设备可以先获取神经网络模型。在获取到神经网络模型后,电子设备可以确定该神经网络模型中各神经层对应的算子。其中,该神经层包括神经网络模型的输入层、隐藏层以及输出层等。各神经层对应的算子可以是指神经网络计算图中的计算节点和运算规则,其中上述神经网络计算图中的计算节点可以是诸如卷积(convolution)、池化(pooling)、激活(activation)等的节点,而运算规则可以是指诸如部分卷积、两个向量相加等等的运算。

需要说明的是,神经网络模型即人工神经网络模型(artificialneuralnetwork,ann),人工神经网络模型是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。最近十多年来,人工神经网络的研究工作不断深入,已经取得了很大的进展,其在模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。

102、配置各算子对应的接口。

比如,在确定出神经网络模型中各神经层对应的算子后,电子设备可以为各算子配置对应的接口。

比如,电子设备可以获取用于实现算子的代码,然后将实现代码封装成接口的形式。这样的话,当需要在不同的运行环境中实现该算子时,电子设备只需要调用该算子对应的接口即可实现该算子的功能。

103、获取多组不同的运行环境对应的配置参数,运行环境对应的配置参数用于指定在电子设备中运行神经网络模型时各神经层的运行环境。

比如,电子设备可以获取多组不同的运行环境对应的配置参数,其中,每一组运行环境对应的配置参数可以用于指定在电子设备中运行神经网络模型时各神经层的运行环境。

例如,神经网络模型包括输入层、第一隐藏层、第二隐藏层和输出层。运行环境a对应的配置参数可以指定在电子设备中运行神经网络模型时,该神经网络模型的输入层运行在cpu环境上,该神经网络模型的第一隐藏层运行在fpga环境上,该神经网络模型的第二隐藏层以及输出层运行在模拟器环境上。又如,运行环境b对应的配置参数可以指定在电子设备中运行神经网络模型时,该神经网络模型的输入层运行在cpu上,该神经网络模型的第一隐藏层、第二隐藏层以及输出层均运行在fpga上。需要说明的是,上述cpu指中央处理器。上述fpga指现场可编程逻辑门阵列(fieldprogrammablegatearray),它是一种人工智能ai芯片。上述模拟器可以是指使用systemc编写的模拟器。

104、按照每一组运行环境对应的配置参数,在电子设备中运行神经网络模型,其中,在不同的运行环境下运行该神经网络模型时,通过各算子对应的接口调用对应的算子。

比如,在获取到多组不同的运行环境对应的配置参数后,电子设备可以按照每一组运行环境对应的配置参数依次在该电子设备中运行神经网络模型。其中,在不同的运行环境下运行该神经网络模型时,电子设备可以通过各算子对应的接口调用对应的算子。

比如,电子设备可以先按照运行环境a对应的配置参数运行神经网络模型,例如电子设备可以在cpu环境上运行该神经网络模型的输入层,在fpga环境上运行该神经网络模型的第一隐藏层,在模拟器环境上运行该神经网络模型的第二隐藏层和输出层。

又如,电子设备接着可以按照运行环境b对应的配置参数运行神经网络模型,例如在cpu环境上运行该神经网络模型的输入层,在fpga环境上运行该神经网络模型的第一隐藏层、第二隐藏层以及输出层。

其中,在不同的运行环境下运行该神经网络模型时,电子设备可以通过各算子对应的接口调用对应的算子。例如,神经网络模型的第二隐藏层中包含一卷积算子,其对应的接口为j1。那么,当按照运行环境a对应的配置参数运行该神经网络模型时,电子设备可以在模拟器环境下通过调用卷积算子对应的接口j1来实现卷积算子的功能。当按照运行环境b对应的配置参数运行该神经网络模型时,电子设备可以fpga环境下通过调用卷积算子对应的接口j1来实现卷积算子的功能。即,不同的运行环境下,电子设备可以通过相同的接口来实现对应的算子的功能,从而简化了在不同运行环境下实现算子的功能。

105、基于每一组运行环境对应的配置参数,输出神经网络模型在对应的运行环境下的运行结果数据,以比较该神经网络模型在不同运行环境下的运行效率。

比如,在按照每一组运行环境对应的配置参数在电子设备中运行神经网络模型后,电子设备可以输出与该组运行环境对应的配置参数对应的运行环境下的运行结果数据。基于各组运行环境对应的配置参数,电子设备可以得到多组运行结果数据,从而比较该神经网络模型在不同运行环境下的运行效率。

比如,电子设备得到与运行环境a对应的配置参数对应的运行结果数据d1,并得到与运行环境b对应的配置参数对应的运行结果数据d2,那么电子设备可以根据运行结果数据d1和d2来比较神经网络模型在两个不同的运行环境下的运行效率。

可以理解的是,本申请实施例中,电子设备可以为神经网络模型中的算子配置对应的接口,该接口用于实现对应的算子的功能,从而便于电子设备可以在不同的运行环境下运行神经网络模型,并得到不同运行环境下的运行结果数据,以便比较该神经网络模型在不同的运行环境下的运行效率。即,本申请实施例可以实现人工神经网络模型在不同的运行环境中的运行效率。

请参阅图2,图2为本申请实施例提供的设备运行方法的另一流程示意图,流程可以包括:

201、电子设备获取神经网络模型,并确定该神经网络模型中各神经层对应的算子,以及获取各算子对应的参数。

比如,电子设备可以先获取一神经网络模型。之后,电子设备可以确定该神经网络模型中各神经层对应的算子,进而获取各算子对应的参数。其中,各神经层中的算子可以是指神经网络计算图中的计算节点和运算规则,其中上述神经网络计算图中的计算节点可以是诸如卷积(convolution)、池化(pooling)、激活(activation)等的节点,而运算规则可以是指诸如部分卷积、两个向量相加等等运算。其中,算子对应的参数可以包括输入、输出数据的形状和格式,权重矩阵值、特定算子的特定参数等。其中,特定算子的特定参数例如可以为卷积层的卷积核大小、形状、填充(padding)、步长(stride)等。

202、电子设备配置各算子对应的接口。

比如,在确定出神经网络模型中各神经层对应的算子并获取到各算子对应的参数后,电子设备可以为各算子配置对应的接口。

比如,电子设备可以获取用于实现算子的代码,然后将实现代码封装成接口的形式。这样的话,当需要在不同的运行环境中实现该算子时,电子设备只需要在不同的运行环境中调用该算子对应的接口即可实现该算子的功能。

203、电子设备获取多组不同的运行环境对应的配置参数,运行环境对应的配置参数用于指定在电子设备中运行神经网络模型时各神经层的运行环境,该运行环境至少包括cpu运行环境、fpga运行环境和模拟器运行环境。

比如,电子设备可以获取多组不同的运行环境对应的配置参数,其中,每一组运行环境对应的配置参数可以用于指定在电子设备中运行神经网络模型时各神经层的运行环境。其中,电子设备中的运行环境至少可以包括cpu运行环境、fpga运行环境和模拟器运行环境等。

例如,神经网络模型包括输入层、第一隐藏层、第二隐藏层和输出层。运行环境a对应的配置参数可以指定在电子设备中运行神经网络模型时,该神经网络模型的输入层运行在cpu环境上,该神经网络模型的第一隐藏层运行在fpga环境上,该神经网络模型的第二隐藏层以及输出层运行在模拟器环境上。又如,运行环境b对应的配置参数可以指定在电子设备中运行神经网络模型时,该神经网络模型的输入层运行在cpu上,该神经网络模型的第一隐藏层、第二隐藏层以及输出层均运行在fpga上。当然,在其它实施方式中,神经网络模型可以不局限于仅包括输入层、第一隐藏层、第二隐藏层和输出层,该神经网络模型还可以包括其它神经层,例如还包括第三隐藏层、第四隐藏层等等,本实施例对此不做具体限定。

需要说明的是,上述cpu指中央处理器。上述fpga指现场可编程逻辑门阵列(fieldprogrammablegatearray),它是一种人工智能ai芯片。上述模拟器可以是指使用systemc编写的模拟器。

204、按照每一组运行环境对应的配置参数,电子设备运行神经网络模型,其中,在不同的运行环境下运行该神经网络模型时,获取各算子对应的参数,并根据各算子对应的参数选择对应的目标算子,通过各目标算子对应的接口调用该对应的目标算子。

比如,在获取到多组不同的运行环境对应的配置参数后,电子设备可以按照每一组运行环境对应的配置参数依次在该电子设备中运行神经网络模型。其中,在不同的运行环境下运行该神经网络模型时,电子设备可以先获取各算子对应的参数,再根据各算子对应的参数选择对应的目标算子,然后通过各目标算子对应的接口调用该对应的目标算子。

需要说明的是,在本申请实施例的201流程中,电子设备可以仅获取各神经层对应的算子的参数,而不获取各算子具体是什么算子的信息。而是在运行神经网络模型时,由电子设备根据运行环境以及算子对应的参数来自动选择使用哪一算子。需要说明的是,由于每一个算子对应的参数都有其对应的格式,因此可以根据算子对应的参数及其格式来选择出对应的算子。

也即,当需要实现某一算子时,每一种运行环境都可以继承该算子对应的接口。例如,电子设备可以设置一主函数,并且每一算子对应的接口可以包括第一子接口和第二子接口。通过该主函数,电子设备可以先调用该算子的第一子接口,通过第一子接口将算子对应的参数传递给当前的运行环境。运行环境根据算子对应的参数选择合适的算子。需要说明的是,主函数是指电子设备设置的可执行文件的主函数,也就是入口函数,主函数可以调用其他的函数。换句话说,每一种运行环境都可以实现第一子接口,主函数通过调用第一子接口,将算子对应的参数传递给特定的运行环境,运行环境根据自身特点选择如何处理这些参数。可以是发送给硬件,也可以是暂时保存在软件中。

其中,电子设备选择具体的算子的过程可以有不同的实现方式。

以卷积算子为例,在cpu环境中,我们会使用一个程序实现所有的卷积,这种情况下,我们会将算子的参数转换成卷积实现的参数,并调用函数完成计算。也即,cpu实现的算子将算子的参数做一些简单的转换后,作为函数参数传递给某个函数完成算子的计算。例如,卷积函数一般有以下形式conv(input_data,padding,stride,dilation…),不同input大小、参数都可以使用这个函数计算,所以cpu只需要填充合适的参数再调用这个函数就可以。

而在fpga环境中,我们会用不同的程序实现不同参数的卷积,这种情况下,有两种方法进行选择:

第一,直接为每一层指定好硬件程序,这样只需要检查算子参数与硬件程序的参数格式是否相同即可。例如,假设硬件提供一个硬件程序只能支持3x3,padding=same,stride=1,dilation=1,并且某一神经层指定就使用这个硬件函数,那电子设备需要检查这神经层是否和硬件提供的能力匹配。

第二,为所有硬件程序建立数据库,根据算子的参数从该数据库中选择最合适的算子。也即,fpga实现的算子根据参数从数据库中选择合适的硬件程序,并发送给硬件,等待硬件完成算子的计算。例如,电子设备可以把所有硬件提供的各种硬件程序管理起来,根据算子的参数自动选择使用哪个硬件程序。

在运行环境完成了合适的算子的选择后,主函数就可以调用第二子接口,执行这个算子。其中,不同的运行环境的执行方式可以是不同的。举例来说,cpu环境可以是一个c语言函数经过一些简单的包装,电子设备直接调用包装好的函数就可以执行对应的算子。在模拟器环境中,电子设备需要事先将数据和参数写入某些特定的文件,再调用一个事先准备好的可执行文件,最后解析输出文件,从中提取出特定的数据,从而完成算子的执行。而fpga环境中,电子设备需要动态地将数据通过硬件接口(如usb/pcie)发送给fpga,在计算完成后再通过硬件接口读回,从而完成算子的执行。

也即是说,通过上述实现方式,主函数调用算子,运行环境实现算子,这两者之间的就通过“相同的接口”进行交互,不同的运行环境遵循相同接口实现算子的功能,所以对于主函数来说调用不同环境实现的算子的方法是一样的。

205、基于每一组运行环境对应的配置参数,电子设备输出神经网络模型在对应的运行环境下的运行结果数据,该运行结果数据包括各神经层的运行时间t,其中,当神经层运行在cpu环境时,按照如下公式计算对应的神经层的运行时间t:t=f1/f2×t1,其中f1为预设频率值,f2为cpu实际频率值,t1为实际运行时长;当神经层运行在fpga或者模拟器环境时,按照如下公式计算对应的神经层的运行时间t:t=c×f3+t2,其中,c为实际运行时钟数,f3为预设运行频率,t2为预设运行时长。

比如,在按照每一组运行环境对应的配置参数在电子设备中运行神经网络模型后,电子设备可以输出与该组运行环境对应的配置参数对应的运行环境下的运行结果数据。其中,运行结果数据包括各神经层的运行时间。当神经层运行在cpu环境时,按照如下公式计算对应的神经层的运行时间t:t=f1/f2×t1,其中f1为预设频率值,f2为cpu实际频率值,t1为实际运行时长。当神经层运行在fpga或者模拟器环境时,按照如下公式计算对应的神经层的运行时间t:t=c×f3+t2,其中,c为实际运行时钟数,f3为预设运行频率,t2为预设运行时长。

也即,通过205流程,电子设备可以获取到神经网络模型中各神经层在运行环境对应的配置参数所指定的运行环境下的运行时间。

206、电子设备根据各神经层的运行时间之和比较神经网络模型在不同运行环境下的运行效率,以及根据各神经层在不同运行环境下的运行时间确定各对应的神经层的最优运行环境,并根据各神经层的最优运行环境确定出该神经网络模型的最优运行环境。

比如,电子设备可以根据神经网络模型中各神经层的运行时间之和比较该神经网络模型在不同运行环境下的运行效率。在本申请实施例中,电子设备还可以根据各神经层在不同运行环境下的运行时间来确定各对应的神经层的最优运行环境,并根据各神经层的最优运行环境确定出该神经网络模型的最优运行环境。比如,电子设备可以将运行时间最短的运行环境确定为各对应的神经层的最优运行环境,并根据各神经层的最优运行环境确定出该神经网络模型的最优运行环境。

例如,神经网络模型包括输入层、第一隐藏层、第二隐藏层和输出层。电子设备得到与运行环境a对应的配置参数所对应的运行结果数据d1,并得到与运行环境b对应的配置参数所对应的运行结果数据d2,那么电子设备可以根据运行结果数据d1和d2来神经网络模型在两个不同的运行环境下的运行效率。例如,运行结果数据d1显示,神经网络模型在运行环境a对应的配置参数所对应的运行环境下的总运行时间(即各神经层的运行时间之和)为1秒。运行结果数据d2显示,神经网络模型在运行环境b对应的配置参数所对应的运行环境下的总运行时间(即各神经层的运行时间之和)为1.5秒。那么,由于运行环境a对应的配置参数所对应的运行环境下电子设备运行神经网络模型的时间更短,因此电子设备可以确定出运行环境a对应的配置参数所对应的运行环境优于运行环境b对应的配置参数所对应的运行环境。

在本申请实施例中,电子设备可以将运行时间最短的运行环境确定为对应的神经层的最优运行环境,并根据各神经层的最优运行环境确定出该神经网络模型的最优运行环境。例如,根据各运行环境对应的配置参数所对应的运行环境的运行结果数据,电子设备确定出神经网络模型的输入层在cpu环境中的运行时间最短,神经网络模型的第一隐藏层在fpga环境中的运行时间最短,神经网络模型的第二隐藏层在fpga环境中的运行时间最短,神经网络模型的输出层在模拟器中的运行时间最短,据此电子设备可以确定出该神经网络模型最优的运行环境是:输入层运行在cpu环境中,第一隐藏层和第二隐藏层运行在fpga环境中,输出层运行在模拟器环境中。即,在一种实施方式中,电子设备可以将各神经层的最优运行环境组合得到神经网络模型的最优运行环境。

在一种实施方式中,在按照每一组运行环境对应的配置参数,在电子设备中运行神经网络模型的流程,可以包括:

按照每一组运行环境对应的配置参数,在电子设备中运行神经网络模型,其中,在运行该神经网络模型时获取前一神经层的输出数据格式以及后一神经层的输入数据格式;

若该前一神经层的输出数据格式与该后一神经层的输入数据格式不同,则电子设备将该前一神经层的输出数据格式转换为该后一神经层的输入数据格式后输入至该后一神经层。

比如,由于不同的运行环境对于输入输出的形状要求不尽相同。例如,cpu环境中,一般输入输出都是nhwc或nchw格式的数据。而硬件相关的环境,如模拟器、fpga环境,由于性能和硬件的限制,一般会使用nchwc格式的数据。

在本申请实施例中,电子设备可以获取到算子的输入和输出格式。在主函数中,电子设备可以比较前一神经层的输出格式和后一神经层的输入格式。如果这二者的格式不同,电子设备可以进行自动转换。其中,自动转换有三种形式:

第一,维度变换的转换:如nhwc转换为nchw。

第二,维度拆分的转换:如nhwc转换为nchwc,会将原始的c个通道拆分为输出的c*c个通道。

第三,添加padding的转换,如nhwc(1,224,224,3)转换为nhwc(1,256,256,3),在h和w维度上添加padding。电子设备可以根据输入、输出的格式(如“nhwc”)、形状(如(1,224,224,3))自动判断进行上述何种变换。

在一种实施方式中,在获取到神经网络模型后,电子设备执行确定神经网络模型中各神经层对应的算子时,可以包括:

电子设备将神经网络模型的格式转换为预设格式,并在格式转换时确定该神经网络模型中各神经层对应的算子。

比如,在获取到神经网络模型后,电子设备可以对该神经网络模型进行格式转换,将该神经网络模型的格式转换为预先自定义好的预设格式,并在格式转换时确定该神经网络模型中各神经层对应的算子。

也即,上述格式转换的流程负责解析标准格式的模型,获得整个模型的完成结构,以及每一层算子的参数,并将这些参数保存成预先自定义好的数据格式。在一种实施方式中,电子设备可以使用json的格式来保存算子的参数。

格式转换的目的在于将不同格式的模型统一化为预先自定义的格式,以便后续处理。

模型在格式转换后会生成一个新的模型文件,在转换时可以指定默认的运行环境,如cpu或fpga或模拟器。在一种实施方式中,电子设备可以通过命令行参数来实现在格式转换时指定默认的运行环境。在模型转换后,也可以改变模型文件中单独某一层算子的运行环境。比如,用户或开发人员通过代码可以指定输入层运行在cpu环境上、隐藏层运行在fpga环境上、输出层运行在模拟器环境上。

需要说明的是,对神经网络模型进行格式转换是为了适应不同训练框架训练出来的模型,比如tensorflow、caffe或pytorh训练出来的神经网络模型等等。并且,对神经网络模型进行格式转换也可以把有效的数据提取出来,更方便后续处理。

在一种实施方式中,本实施例提供的设备运行方法还可以用于验证神经网络模型的运行结果的正确性。比如,由于电子设备可以指定神经网络模型中的各神经层的运行环境,因此可以使用多种运行环境来运行同一个算子,并比较结果。

例如,对于某一神经层的输出,若确定该神经层的输出在某种运行环境下的运行结果比较可信,那么电子设备可以使用该运行环境作为参考环境,其它运行环境的运行结果可以与该运行环境的运行结果进行比较,检测它们的运行结果是否一致。若运行结果一致,则表明该神经层的输出或其设计是正确的。若运行结果不一致,则可能表示该神经层在其它运行环境中的运行有误或者说该神经层不适宜在其它运行环境中运行。

又如,在没有参考环境的情况下,可以将神经网络模型或者其中的某一神经层运行在多种(例如大于或等于3种)运行环境中,并获取到各运行环境中的运行结果。然后,电子设备可以按照运行结果一致性的情况来对各运行结果打分。例如,当在cpu环境或者fpga环境下运行该某一神经层时,它们的运行结果都是s1,那么s1的评分可以为2分。而当在模拟器环境下运行该神经层是,它的运行结果是s2,那么s2的评分可以为1分。通过这种评分的方式,电子设备可以得到不同运行环境下的运行结果,据此电子设备可以将评分最高的运行结果确定为该神经层的正确运行结果,并根据该正确运行结果调整神经网络模型或者其中的神经层的运行环境设计。例如,根据不同运行环境的运行结果,电子设备可以确定出神经网络模型或者其中的神经层的最优运行环境。

可以理解的是,本申请实施例提供的设备运行方法,除了可以比较神经网络模型在不同运行环境中的运行效率外,还可以根据运行效率的比较结果验证神经网络模型的运行环境的正确性,对神经网络模型的运行环境进行调优,并有助于加快神经网络模型的运行环境对应的硬件设计。

本申请实施例中,由于电子设备可以指定神经网络模型中的神经层的运行环境,因此本实施例可以非常简单地为神经网络模型添加运行环境。并且,本申请实施例可以快速比较出神经网络模型在不同运行环境下的运行效率和结果,从而快速验证为神经网络模型设计的硬件的正确性和效率,同时也为神经网络模型的验证和调优提供了可靠的指导。

请参阅图3,图3为本申请实施例提供的设备运行装置的结构示意图。设备运行装置300可以包括:第一获取模块301,设置模块302,第二获取模块303,运行模块304,输出模块305。

第一获取模块301,用于获取神经网络模型,并确定所述神经网络模型中各神经层对应的算子。

设置模块302,用于配置各所述算子对应的接口。

第二获取模块303,用于获取多组不同的运行环境对应的配置参数,所述运行环境对应的配置参数用于指定在电子设备中运行所述神经网络模型时各神经层的运行环境。

运行模块304,用于按照每一组所述运行环境对应的配置参数,在所述电子设备中运行所述神经网络模型,其中,在不同的运行环境下运行所述神经网络模型时,通过各算子对应的接口调用对应的算子。

输出模块305,用于基于每一组所述运行环境对应的配置参数,输出所述神经网络模型在对应的运行环境下的运行结果数据,以比较所述神经网络模型在不同运行环境下的运行效率。

在一种实施方式,所述第一获取模块301还可以用于:获取各所述算子对应的参数。

所述运行模块304可以用于:在不同的运行环境下运行所述神经网络模型时,获取各算子对应的参数,并根据各算子对应的参数选择对应的目标算子,通过各所述目标算子对应的接口调用所述对应的目标算子。

在一种实施方式中,所述运行环境至少包括cpu运行环境、fpga运行环境和模拟器运行环境。

所述输出模块305可以用于:基于每一组所述运行环境对应的配置参数,输出所述神经网络模型在对应的运行环境下的运行结果数据,所述运行结果数据包括各神经层的运行时间,以根据各神经层的运行时间之和比较所述神经网络模型在不同运行环境下的运行效率。

在一种实施方式中,所述运行模块304可以用于:

按照每一组所述运行环境对应的配置参数,在所述电子设备中运行所述神经网络模型,其中,在运行所述神经网络模型时获取前一神经层的输出数据格式以及后一神经层的输入数据格式;

若所述前一神经层的输出数据格式与所述后一神经层的输入数据格式不同,则将所述前一神经层的输出数据格式转换为所述后一神经层的输入数据格式后输入至所述后一神经层。

在一种实施方式中,所述第一获取模块301可以用于:

将所述神经网络模型的格式转换为预设格式,并在格式转换时确定所述神经网络模型中各神经层对应的算子。

在一种实施方式中,所述输出模块305还可以用于:

根据各神经层在不同运行环境下的运行时间,确定各对应的神经层的最优运行环境。

在一种实施方式中,所述输出模块305还可以用于:

根据各神经层的最优运行环境确定出所述神经网络模型的最优运行环境。

在一种实施方式中,所述输出模块305可以用于:

将各神经层的最优运行环境组合得到所述神经网络模型的最优运行环境。

本申请实施例提供一种计算机可读的存储介质,其上存储有计算机程序,当所述计算机程序在计算机上执行时,使得所述计算机执行如本实施例提供的设备运行方法中的流程。

本申请实施例还提供一种电子设备,包括存储器,处理器,所述处理器通过调用所述存储器中存储的计算机程序,用于执行本实施例提供的设备运行方法中的流程。

例如,上述电子设备可以是诸如平板电脑或者智能手机等移动终端。请参阅图4,图4为本申请实施例提供的电子设备的结构示意图。

该电子设备400可以包括传感器401、存储器402、处理器403等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

传感器401可以包括陀螺仪传感器(例如三轴陀螺仪传感器)、加速度传感器等传感器。

存储器402可用于存储应用程序和数据。存储器402存储的应用程序中包含有可执行代码。应用程序可以组成各种功能模块。处理器403通过运行存储在存储器402的应用程序,从而执行各种功能应用以及数据处理。

处理器403是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的应用程序,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。

在本实施例中,电子设备中的处理器403会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行代码加载到存储器402中,并由处理器403来运行存储在存储器402中的应用程序,从而执行:

获取神经网络模型,并确定所述神经网络模型中各神经层对应的算子;

配置各所述算子对应的接口;

获取多组不同的运行环境对应的配置参数,所述运行环境对应的配置参数用于指定在电子设备中运行所述神经网络模型时各神经层的运行环境;

按照每一组所述运行环境对应的配置参数,在所述电子设备中运行所述神经网络模型,其中,在不同的运行环境下运行所述神经网络模型时,通过各算子对应的接口调用对应的算子;

基于每一组所述运行环境对应的配置参数,输出所述神经网络模型在对应的运行环境下的运行结果数据,以比较所述神经网络模型在不同运行环境下的运行效率。

请参阅图5,电子设备400可以包括传感器401、存储器402、处理器403、输入单元404、输出单元405、扬声器406等部件。

传感器401可以包括陀螺仪传感器(例如三轴陀螺仪传感器)、加速度传感器等传感器。

存储器402可用于存储应用程序和数据。存储器402存储的应用程序中包含有可执行代码。应用程序可以组成各种功能模块。处理器403通过运行存储在存储器402的应用程序,从而执行各种功能应用以及数据处理。

处理器403是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的应用程序,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。

输入单元404可用于接收输入的数字、字符信息或用户特征信息(比如指纹),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

输出单元405可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。输出单元可包括显示面板。

在本实施例中,电子设备中的处理器403会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行代码加载到存储器402中,并由处理器403来运行存储在存储器402中的应用程序,从而执行:

获取神经网络模型,并确定所述神经网络模型中各神经层对应的算子;

配置各所述算子对应的接口;

获取多组不同的运行环境对应的配置参数,所述运行环境对应的配置参数用于指定在电子设备中运行所述神经网络模型时各神经层的运行环境;

按照每一组所述运行环境对应的配置参数,在所述电子设备中运行所述神经网络模型,其中,在不同的运行环境下运行所述神经网络模型时,通过各算子对应的接口调用对应的算子;

基于每一组所述运行环境对应的配置参数,输出所述神经网络模型在对应的运行环境下的运行结果数据,以比较所述神经网络模型在不同运行环境下的运行效率。

在一种实施方式中,处理器403还可以执行:获取各所述算子对应的参数;

那么,处理器403执行所述在不同的运行环境下运行所述神经网络模型时,通过各算子对应的接口调用对应的算子时,可以执行:在不同的运行环境下运行所述神经网络模型时,获取各算子对应的参数,并根据各算子对应的参数选择对应的目标算子,通过各所述目标算子对应的接口调用所述对应的目标算子。

在一种实施方式中,所述运行环境至少包括cpu运行环境、fpga运行环境和模拟器运行环境。

那么,处理器403执行所述基于每一组所述运行环境对应的配置参数,输出所述神经网络模型在对应的运行环境下的运行结果数据,以比较所述神经网络模型在不同运行环境下的运行效率时,可以执行:

基于每一组所述运行环境对应的配置参数,输出所述神经网络模型在对应的运行环境下的运行结果数据,所述运行结果数据包括各神经层的运行时间,以根据各神经层的运行时间之和比较所述神经网络模型在不同运行环境下的运行效率。

在一种实施方式中,处理器403执行所述按照每一组所述运行环境对应的配置参数,在所述电子设备中运行所述神经网络模型时,可以执行:

按照每一组所述运行环境对应的配置参数,在所述电子设备中运行所述神经网络模型,其中,在运行所述神经网络模型时获取前一神经层的输出数据格式以及后一神经层的输入数据格式;

若所述前一神经层的输出数据格式与所述后一神经层的输入数据格式不同,则将所述前一神经层的输出数据格式转换为所述后一神经层的输入数据格式后输入至所述后一神经层。

在一种实施方式中,处理器403执行所述确定所述神经网络模型中各神经层的算子时,可以执行:

将所述神经网络模型的格式转换为预设格式,并在格式转换时确定所述神经网络模型中各神经层对应的算子。

在一种实施方式中,处理器403还可以执行:

根据各神经层在不同运行环境下的运行时间,确定各对应的神经层的最优运行环境。

在一种实施方式中,处理器403还可以执行:

根据各神经层的最优运行环境确定出所述神经网络模型的最优运行环境。

在一种实施方式中,处理器403执行所述根据各神经层的最优运行环境确定出所述神经网络模型的最优运行环境时,可以执行:将各神经层的最优运行环境组合得到所述神经网络模型的最优运行环境。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对设备运行方法的详细描述,此处不再赘述。

本申请实施例提供的所述设备运行装置与上文实施例中的设备运行方法属于同一构思,在所述设备运行装置上可以运行所述设备运行方法实施例中提供的任一方法,其具体实现过程详见所述设备运行方法实施例,此处不再赘述。

需要说明的是,对本申请实施例所述设备运行方法而言,本领域普通技术人员可以理解实现本申请实施例所述设备运行方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,所述计算机程序可存储于一计算机可读取存储介质中,如存储在存储器中,并被至少一个处理器执行,在执行过程中可包括如所述设备运行方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)等。

对本申请实施例的所述设备运行装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,所述存储介质譬如为只读存储器,磁盘或光盘等。

以上对本申请实施例所提供的一种设备运行方法、装置、存储介质以及电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1