本申请涉及人工智能技术领域,具体涉及一种引擎测试方法及相关产品。
背景技术:
目前,一些公司自主研发神经网络引擎,例如,mace移动ai计算引擎是小米开发的一款针对移动异构计算平台优化的深度学习推理框架,又例如,tflite是谷歌开发的神经网络引擎。其中,神经网络引擎可实现神经网络所需要的很多算子,例如深度卷积、逐点卷积、平均池化、非线性激活函数等,但是,用户不能了解神经网络引擎中算子的正确性。
技术实现要素:
本申请实施例提供了一种引擎测试方法及相关产品,针对神经网络引擎中的算子测试该算子的运算结果是否正确。
第一方面,本申请实施例提供了一种引擎测试方法,所述方法包括:
将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型;
调用预设的神经网络框架的应用程序接口api,通过所述api运行所述第一目标神经网络模型,得到运算结果;
根据所述运算结果和预设的检查数据测试所述第一算子的正确性。
第二方面,本申请实施例提供了一种引擎测试装置,所述引擎测试装置包括:
编译单元,将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型;
运行单元,用于调用预设的神经网络框架的应用程序接口api,通过所述api运行所述第一目标神经网络模型,得到运算结果;
测试单元,用于根据所述运算结果和预设的检查数据测试所述第一算子的正确性。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储器和通信接口;以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置成由所述处理器执行,所述程序包括用于如本申请实施例第一方面中所描述的部分或全部步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,所述计算机可读存储介质用于存储计算机程序,其中,所述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤的指令。
第五方面,本申请实施例提供了一种计算机程序产品,其中,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
实施本申请实施例,具有如下有益效果:
可以看出,本申请实施例中所描述的引擎测试方法及相关产品,通过将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型,调用预设的神经网络框架的应用程序接口api,通过api运行所述第一目标神经网络模型,得到运算结果,根据运算结果和预设的检查数据测试所述第一算子的正确性,如此,可通过在第一神经网络引擎中集成预设的神经网络框架,针对第一神经网络引擎中的单个算子验证运算结果是否正确。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种电子设备的结构示意图;
图1b是本申请实施例提供的一种引擎测试方法的流程示意图;
图1c是本申请实施例提供的一种第一神经网络引擎调用安卓神经网络框架的演示示意图;
图2是本申请实施例提供的另一种引擎测试方法的流程示意图;
图3是本申请实施例提供的另一种引擎测试方法的流程示意图;
图4是本申请实施例提供的另一种电子设备的结构示意图;
图5a是本申请实施例提供的一种引擎测试装置的结构示意图;
图5b是本申请实施例提供的如图5a所示的引擎测试装置的变型结构;
图5c是本申请实施例提供的如图5b所示的引擎测试装置的变型结构;
图6是本申请实施例提供的电子设备的另一种结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
首先,对本申请实施例涉及到的一些概念作简单介绍。
安卓神经网络框架(androidneuralnetworks,androidnn)是安卓平台8.1版本引入的用于支持人工智能神经网络计算的一套接口框架。它能根据上层使用者构建的神经网络中需要使用的算子,寻找已经在系统中注册的算子实现,然后将具体的运算任务交付给该算子实现。
本申请实施例所涉及到的电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(userequipment,ue),移动台(mobilestation,ms),终端设备(terminaldevice)等等。为方便描述,上面提到的设备统称为电子设备。
下面对本申请实施例进行详细介绍。
请参阅图1a,图1a是本申请实施例提供的一种电子设备100的结构示意图,上述电子设备100包括:壳体110、设置于所述壳体110内的电路板120,所述电路板120上设置有处理器、和存储器122。
其中,处理器可包括以下指示一种:中央处理器(centerprocessingunit,cpu)、图形处理器(graphicsprocessingunit,gpu)、数字信号处理器(digitalsignalprocessor,dsp)等。存储器中可包括指令集,处理器可通过指令集实现神经网络模型中的算子。使用这种方法实现的算子最终运行在上述处理器上。
请参阅图1b,图1b是本申请实施例提供的一种引擎测试方法的流程示意图,本实施例中所描述的引擎测试方法,该引擎测试方法包括:
101、将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型。
其中,第一算子可包括以下任一种:卷积算子(例如深度卷积和逐点卷积等)、池化算子(例如平均池化)、激活函数(例如非线性激活函数等)。
运算对象可包括:操作数、输入数据、权值等,其中,操作数、输入数据、权值均可包括张量或标量。
本申请实施例中,第一神经网络引擎可运行多个算子,第一算子可以是该多个算子中的任一算子,为了测试第一算子的运行的正确性,可将第一算子和第一运算对象添加至预设神经网络模型,并进行编译,得到编译后的第一目标神经网络模型。
可选地,本申请实施例中,预设神经网络模型可以是预先创建的神经网络模型,或者,可在进行测试时,直接建立该神经网络模型。
102、调用预设的神经网络框架的应用程序接口api,通过所述api运行所述第一目标神经网络模型,得到运算结果。
其中,预设的神经网络框架可以是安卓神经网络框架,当然,也可以是其他可以实现同类功能的其他神经网络框架,此处不作限定。
以androidnn框架为例,如图1c所示,为本申请实施例提供的一种第一神经网络引擎调用安卓神经网络框架的演示示意图,本申请实施例中,神经网络引擎可在androidnn框架中注册,从而,可通过androidnn框架调用androidnn框架中的应用程序接口(applicationprogramminginterface,api)运行第一目标神经网络模型。
可选地,上述步骤102中,通过所述api运行所述第一目标神经网络模型,可包括以下步骤:
21、通过所述api将所述第一算子和所述第一运算对象进行格式转换,得到转换后的第一算子与第一运算对象;
22、运行包含所述转换后的第一算子与第一运算对象的所述第一目标神经网络模型。
本申请实施例中,考虑到第一神经网络引擎中实现第一算子的方式为自定义的实现方式,在第一神经网络引擎中,第一运算对象中的操作数、权值、输入数据的数据组织结构或者数据格式也为自定义的数据组织结构或者数据格式,androidnn神经网络框架可能不支持第一神经网络引擎中的第一算子和第一运算对象的格式,因此,可将第一算子和第一运算对象进行格式转换,得到转换后的第一算子与第一运算对象,其中,androidnn神经网络框架可支持转换后的第一算子与第一运算对象,进而,可通过androidnn神经网络框架的api运行包含转换后的第一算子与第一运算对象的第一目标神经网络模型。
103、根据所述运算结果和预设的检查数据测试所述第一算子的正确性。
本申请实施例中,可预先设置检查数据,在运行第一目标神经网络模型,得到运算结果后,可将运算结果和预设的检查数据进行比较,根据检查数据检验运算结果是否正确,进而确定第一算子的正确性。
在具体实现中,第一神经网络引擎中可运行多个算子,从而,可针对多个算子中的任一算子,通过调用androidnn神经网络框架的api单独运行将该任一算子,从而,可逐个验证多个算子中每一算子的运算结果是否正确,防止包含多个算子的预设神经网络模型在运算结果出错情况下,难以排查问题原因。
可选地,上述步骤103中,根据所述运算结果和预设的检查数据测试所述第一算子的正确性,可包括以下步骤:
31、根据所述检查数据和所述运算结果确定所述第一算子的第一精度误差;
32、若所述第一精度误差小于预设精度误差,确定所述第一算子运行正确。
其中,可根据检查数据和运算结果确定第一算子的第一精度误差,具体地,确定第一精度误差,可通过检查数据和运算结果计算均方误差(mean-squareerror,mse),或者,还可以其他方式确定第一精度误差,此处不做限制。
若第一精度误差小于预设精度误差,表明第一精度误差在可控范围内,因此,可确定第一算子运行正确。
可选地,本申请实施例中,还可包括以下步骤:
a1、在通过所述api运行所述第一目标神经网络模型时,记录所述第一目标神经网络模型对应的第一运行时间;
a2、将所述第一算子和至少一个其他算子添加至所述预设神经网络模型,并进行编译,得到编译后的第二目标神经网络模型,通过所述api运行所述第二目标神经网络模型,并记录所述第二目标神经网络模型对应的第二运行时间;
a3、根据所述第一运行时间和所述第二运行时间确定所述第一算子的第一运算效率。
其中,第一算子和至少一个其他算子为使神经网络模型实现对应运算功能所需的所有算子。
本申请实施例中,在通过api运行第一目标神经网络模型时,还可记录第一目标神经网络模型对应的第一运行时间。以及,可将第一算子和至少一个其他算子添加至预设神经网络模型,并进行编译,得到编译后的第二目标神经网络模型,并记录第二目标神经网络模型对应的第二运行时间。进而,可根据第一运行时间和第二运行时间确定第一算子的第一运算效率,具体地,可确定第一运行时间与第二运行时间之间的比值,得到第一运算效率。以此类推,可针对第一目标神经网络模型中的多个算子中每一算子,确定在androidnn神经网络框架上的运算效率,可了解整个预设神经网络模型的运算效率的短板出现在哪一算子,从而,能更有针对性地优化神经网络模型。
可选地,本申请实施例中,还可包括以下步骤:
b1、将第二神经网络引擎中的所述第一算子与所述第一运算对象添加至所述预设神经网络模型,并进行编译,得到编译后的第三目标神经网络模型;
b2、通过所述api运行所述第三目标神经网络模型,并记录所述第三目标神经网络模型对应的第三运行时间;
b3、根据所述第三运行时间确定所述第一算子在所述第二神经网络引擎中的第二运算效率;
b4、若所述第一运算效率低于所述第二运算效率,发出提示消息,所述提示消息用于指示对所述第一算子进行优化。
本申请实施例中,还可将第一神经网络引擎与第二神经网络引擎进行比较,具体地,可将第二神经网络引擎中的第一算子与所述第一运算对象添加至所述预设神经网络模型,并进行编译,得到编译后的第三目标神经网络模型,其中,第一神经网络引擎实现第一算子的方式与第二神经网络引擎实现第一算子的方式不同,第一神经网络引擎的第一运算对象中的权值、输入数据、操作数的组织结构或数据格式与第二神经网络引擎的第一运算对象中的权值、输入数据、操作数的组织结构或数据格式也不一样,因此,将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型,与将第二神经网络引擎中的第一算子与所述第一运算对象添加至预设神经网络模型,并进行编译,得到编译后的第三目标神经网络模型存在差异。
其中,可通过api运行所述第三目标神经网络模型,并记录第三目标神经网络模型对应的第三运行时间,以及,确定第一算子在第二神经网络引擎中的第二运算效率,进而,可将第一运算效率与第二运算效率进行比较,若第一运算效率低于所述第二运算效率,可发出提示消息,提示测试人员对第一算子进行优化。
举例说明,在开发过程中,可选择调用第一神经网络引擎或者第二神经网络引擎实现的第一算子,并比较不同第一神经网络引擎和第二神经网络引擎分别调用第一算子的第一运算效率,从而,可快速调优第一神经网络引擎中第一算子的实现方法。
可以看出,本申请实施例中所描述的引擎测试方法,通过将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型,调用预设的神经网络框架的应用程序接口api,通过api运行第一目标神经网络模型,得到运算结果,根据运算结果和预设的检查数据测试第一算子的正确性,如此,可通过在第一神经网络引擎中集成预设的神经网络框架,针对第一神经网络引擎中的单个算子验证运算结果是否正确,防止包含多个算子的神经网络模型在运算结果出错情况下,难以排查问题原因。
请参阅图2,图2是本申请实施例提供的另一种引擎测试方法的流程示意图,本实施例中所描述的引擎测试方法,该方法可包括以下步骤:
201、将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型。
202、调用预设的神经网络框架的应用程序接口api,通过所述api将所述第一算子和所述第一运算对象进行格式转换,得到转换后的第一算子与第一运算对象。
203、运行包含所述转换后的第一算子与第一运算对象的所述第一目标神经网络模型。
204、根据所述运算结果和预设的检查数据测试所述第一算子的正确性。
其中,上述步骤201-204的具体实现过程可参照步骤101-103中相应的描述,在此不再赘述。
可以看出,本申请实施例中所描述的引擎测试方法,通过将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型,调用预设的神经网络框架的应用程序api,通过api将第一算子和所述第一运算对象进行格式转换,得到转换后的第一算子与第一运算对象,运行包含转换后的第一算子与第一运算对象的第一目标神经网络模型,根据运算结果和预设的检查数据测试第一算子的正确性,如此,可通过在第一神经网络引擎中集成预设的神经网络框架,针对第一神经网络引擎中的单个算子验证运算结果是否正确,防止包含多个算子的神经网络模型在运算结果出错情况下,难以排查问题原因。
与上述一致地,请参阅图3,为本申请实施例提供的另一种引擎测试方法的流程示意图,本实施例中所描述的引擎测试方法,该方法可包括以下步骤:
301、将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型。
302、调用预设的神经网络框架的应用程序接口api,通过所述api将所述第一算子和所述第一运算对象进行格式转换,得到转换后的第一算子与第一运算对象。
303、运行包含所述转换后的第一算子与第一运算对象的所述第一目标神经网络模型。
304、根据所述运算结果和预设的检查数据测试所述第一算子的正确性。
305、在通过所述api运行所述第一目标神经网络模型时,记录所述第一目标神经网络模型对应的第一运行时间。
306、将所述第一算子和至少一个其他算子添加至所述预设神经网络模型,并进行编译,得到编译后的第二目标神经网络模型,通过所述api运行所述第二目标神经网络模型,并记录所述第二目标神经网络模型对应的第二运行时间。
307、根据所述第一运行时间和所述第二运行时间确定所述第一算子的第一运算效率。
其中,步骤301-307的具体实现过程可参见步骤101-103中相应的描述,在此不再赘述。
可以看出,本申请实施例中所描述的引擎测试方法,通过将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型,调用预设的神经网络框架的应用程序接口api,通过api将第一算子和所述第一运算对象进行格式转换,得到转换后的第一算子与第一运算对象,运行包含转换后的第一算子与第一运算对象的第一目标神经网络模型,根据运算结果和预设的检查数据测试第一算子的正确性,记录第一目标神经网络模型对应的第一运行时间,将第一算子和至少一个其他算子添加至预设神经网络模型,并进行编译,得到编译后的第二目标神经网络模型,通过api运行第二目标神经网络模型,并记录第二目标神经网络模型对应的第二运行时间,根据第一运行时间和第二运行时间确定第一算子的第一运算效率,如此,可通过在第一神经网络引擎中集成预设的神经网络框架,可针对第一目标神经网络模型中的多个算子中每一算子,确定在预设的神经网络框架上的运算效率,可了解整个预设神经网络模型的运算效率的短板出现在哪一算子,从而,能更有针对性地优化神经网络模型。
以下是实施上述引擎测试方法的装置,具体如下:
与上述一致地,请参阅图4,图4是本申请实施例提供的一种电子设备的结构示意图,该电子设备包括:处理器410、通信接口430和存储器420;以及一个或多个程序421,所述一个或多个程序421被存储在所述存储器420中,并且被配置成由所述处理器执行,所述程序421包括用于执行以下步骤的指令:
将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型;
调用预设的神经网络框架的应用程序接口api,通过所述api运行所述第一目标神经网络模型,得到运算结果;
根据所述运算结果和预设的检查数据测试所述第一算子的正确性。
在一个可能的示例中,在所述通过所述api运行所述第一目标神经网络模型方面,所述程序421包括用于执行以下步骤的指令:
通过所述api将所述第一算子和所述第一运算对象进行格式转换,得到转换后的第一算子与第一运算对象;
运行包含所述转换后的第一算子与第一运算对象的所述第一目标神经网络模型。
在一个可能的示例中,在所述根据所述运算结果和预设的检查数据测试所述第一算子的正确性方面,所述程序421包括用于执行以下步骤的指令:
根据所述检查数据和所述运算结果确定所述第一算子的第一精度误差;
若所述第一精度误差小于预设精度误差,确定所述第一算子运行正确。
在一个可能的示例中,所述程序421还包括用于执行以下步骤的指令:
在通过所述api运行所述第一目标神经网络模型时,记录所述第一目标神经网络模型对应的第一运行时间;
将所述第一算子和至少一个其他算子添加至所述预设神经网络模型,并进行编译,得到编译后的第二目标神经网络模型,通过所述api运行所述第二目标神经网络模型,并记录所述第二目标神经网络模型对应的第二运行时间;
根据所述第一运行时间和所述第二运行时间确定所述第一算子的第一运算效率。
在一个可能的示例中,所述程序421还包括用于执行以下步骤的指令:
将第二神经网络引擎中的所述第一算子与所述第一运算对象添加至所述预设神经网络模型,并进行编译,得到编译后的第三目标神经网络模型;
通过所述api运行所述第三目标神经网络模型,并记录所述第三目标神经网络模型对应的第三运行时间;
根据所述第三运行时间确定所述第一算子在所述第二神经网络引擎中的第二运算效率;
若所述第一运算效率低于所述第二运算效率,发出提示消息,所述提示消息用于指示对所述第一算子进行优化。
请参阅图5a,图5a是本实施例提供的一种引擎测试装置的结构示意图,所述引擎测试装置包括编译单元501、运行单元502和测试单元503,其中,
所述编译单元501,将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型;
所述运行单元502,用于调用预设的神经网络框架的api,通过所述api运行所述第一目标神经网络模型,得到运算结果;
所述测试单元503,用于根据所述运算结果和预设的检查数据测试所述第一算子的正确性。
可选地,在所述通过所述api运行所述第一目标神经网络模型方面,所述运行单元502具体用于:
通过所述api将所述第一算子和所述第一运算对象进行格式转换,得到转换后的第一算子与第一运算对象;
运行包含所述转换后的第一算子与第一运算对象的所述第一目标神经网络模型。
可选地,在所述根据所述运算结果和预设的检查数据测试所述第一算子的正确性方面,所述测试单元503具体用于:
根据所述检查数据和所述运算结果确定所述第一算子的第一精度误差;
若所述第一精度误差小于预设精度误差,确定所述第一算子运行正确。
可选地,如图5b所示,图5b为图5a所示的引擎测试装置的变型结构,其与图5a相比较,还可以包括:记录单元504,其中,
所述记录单元504,用于在通过所述api运行所述第一目标神经网络模型时,记录所述第一目标神经网络模型对应的第一运行时间;
所述编译单元501,还用于将所述第一算子和至少一个其他算子添加至所述预设神经网络模型,并进行编译,得到编译后的第二目标神经网络模型;
所述运行单元502,还用于通过所述api运行所述第二目标神经网络模型;
所述记录单元504,还用于记录所述第二目标神经网络模型对应的第二运行时间;
所述测试单元503,还用于根据所述第一运行时间和所述第二运行时间确定所述第一算子的第一运算效率。
可选地,如图5c所示,图5c为图5a或图5b所示的引擎测试装置的变型结构,其与图5b相比较,还可以包括:提示单元505,其中,
所述编译单元,还用于将第二神经网络引擎中的所述第一算子与所述第一运算对象添加至所述预设神经网络模型,并进行编译,得到编译后的第三目标神经网络模型;
所述运行单元502,还用于通过所述api运行所述第三目标神经网络模型;
所述记录单元504,还用于记录所述第三目标神经网络模型对应的第三运行时间;
所述测试单元503,还用于根据所述第三运行时间确定所述第一算子在所述第二神经网络引擎中的第二运算效率;
所述提示单元505,用于在所述第一运算效率低于所述第二运算效率时,发出提示消息,所述提示消息用于指示对所述第一算子进行优化。
可以看出,本申请实施例中所描述的引擎测试装置,通过将第一神经网络引擎中待测试的第一算子和第一运算对象添加至预设神经网络模型进行编译,得到编译后的第一目标神经网络模型,调用预设的神经网络框架的应用程序api,通过api运行所述第一目标神经网络模型,得到运算结果,根据运算结果和预设的检查数据测试所述第一算子的正确性,如此,可通过在第一神经网络引擎中集成预设的神经网络框架,针对第一神经网络引擎中的单个算子验证运算结果是否正确,防止包含多个算子的神经网络模型在运算结果出错情况下,难以排查问题原因。
可以理解的是,本实施例的引擎测试装置的各程序模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
本申请实施例还提供了另一种电子设备,如图6所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该电子设备可以为包括手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、pos(pointofsales,销售终端)、车载电脑等任意终端设备,以电子设备为手机为例:
图6示出的是与本申请实施例提供的电子设备相关的手机的部分结构的框图。参考图6,手机包括:射频(radiofrequency,rf)电路910、存储器920、输入单元930、显示单元940、传感器950、音频电路960、无线保真(wirelessfidelity,wi-fi)模块970、处理器980以及电源990等部件。本领域技术人员可以理解,图6中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对手机的各个构成部件进行具体的介绍:
rf电路910可用于信息的接收和发送。通常,rf电路910包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoiseamplifier,lna)、双工器等。此外,rf电路910还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystemofmobilecommunication,gsm)、通用分组无线服务(generalpacketradioservice,gprs)、码分多址(codedivisionmultipleaccess,cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,wcdma)、长期演进(longtermevolution,lte)、电子邮件、短消息服务(shortmessagingservice,sms)等。
存储器920可用于存储软件程序以及模块,处理器980通过运行存储在存储器920的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元930可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元930可包括指纹识别模组931以及其他输入设备932。指纹识别模组931,可采集用户在其上的指纹数据。除了指纹识别模组931,输入单元930还可以包括其他输入设备932。具体地,其他输入设备932可以包括但不限于触控屏、物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元940可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元940可包括显示屏941,可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机或无机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示屏941。
手机还可包括至少一种传感器950,其中,传感器包括环境传感器,环境传感器可包括温度传感器、湿度传感器和环境光传感器。除了环境传感器951,传感器950还可以包括其他传感器952,比如运动传感器、压力传感器等等。其中,环境光传感器还可根据环境光线的明暗来调节手机的背光亮度,进而调节显示屏941的亮度,接近传感器可在手机移动到耳边时,关闭显示屏941和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路960、扬声器961,传声器962可提供用户与手机之间的音频接口。音频电路960可将接收到的音频数据转换后的电信号,传输到扬声器961,由扬声器961转换为声音信号播放;另一方面,传声器962将收集的声音信号转换为电信号,由音频电路960接收后转换为音频数据,再将音频数据播放处理器980处理后,经rf电路910以发送给比如另一手机,或者将音频数据播放至存储器920以便进一步处理。
wi-fi属于短距离无线传输技术,手机通过wi-fi模块970可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了wi-fi模块970,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器980是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器920内的软件程序和/或模块,以及调用存储在存储器920内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器980可包括一个或多个处理单元;优选的,处理器980可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器980中。
手机还包括给各个部件供电的电源990(比如电池),优选的,电源可以通过电源管理系统与处理器980逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
手机还可以包括摄像头,摄像头用于拍摄图像与视频,并将拍摄的图像和视频传输到处理器980进行处理。
手机还可以包括蓝牙模块等,在此不再赘述。
前述图1b、图2和图3所示的实施例中,各步骤方法流程可以基于该手机的结构实现。
本申请实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述引擎测试方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一引擎测试方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。