技术领域
[0001] 本发明涉及深度学习模型目录创建。
相关背景技术
[0002] 深度学习模型是一种机器学习模型,其训练基于学习数据表示,而不是特定任务的学习。换句话说,深度学习或机器学习是计算机在没有被明确编程来执行一些功能的情况下进行学习的能力。因此,因此,机器学习允许程序员最初对可用于预测数据响应的算法进行编程,而不必明确地对计算机可能遇到的每种可能情况的每种响应进行编程。换句话说,机器学习使用计算机用来学习和针对数据进行预测的算法。机器学习提供了一种机制,允许程序员对计算机编程,用于在难以或不可能设计和实现性能良好的特定算法的情况下计算任务。
具体实施方式
[0011] 容易理解的是,除了所描述的示例性实施例之外,如本文的附图中一般描述和示出的,本发明的实施例的组件可以以各种不同的配置来布置和设计。因此,附图中所示的本发明实施例的以下更详细的描述并不旨在限制所要求保护的本发明实施例的范围,而仅仅是本发明示例性实施例的表示。
[0012] 在整个说明书中,对“一个实施例”或“实施例”(等)的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在本说明书中各处出现的短语“在一个实施例中”或“在实施例中”等不一定都指相同实施例。
[0013] 此外,在至少一个实施例中,所描述的特征、结构或特性可以以任何合适的方式组合。在下面的描述中,提供了许多具体细节,以给出对本发明实施例的透彻理解。然而,相关领域的技术人员可以很好地认识到,本发明的实施例可以在没有其至少一个具体细节的情况下实施,或者可以用其他方法、组件、材料等来实施。在其他情况下,没有详细示出或描述众所周知的结构、材料或操作,以避免模糊本发明的各方面。
[0014] 通过参考附图,将最好地理解本发明的图示实施例。以下描述仅旨在通过示例的方式,并且简单地示出了如本文所要求保护的本发明的某些选择的示例性实施例。应当注意,附图中的流程图和框图说明了根据本发明各种实施例的系统、装置、方法和计算机程序产品的可能实现的体系结构、功能和操作。在这点上,流程图或框图中的每个方框可以表示模块、代码的段或部分,其包括至少一个用于实现(多个)指定逻辑功能的可执行指令。
[0015] 还应该注意的是,在一些替代实现中,在方框中标注的功能可能以不同于图中标注的顺序出现。例如,根据所涉及的功能,连续示出的两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行。还将注意到,框图和/或流程图说明的每个方框,以及框图和/或流程图说明中的方框的组合,可以由执行指定功能或动作的基于专用硬件的系统,或者专用硬件和计算机指令的组合来实现。
[0016] 下面将具体参考图1-图3。应当理解,在此广泛示出的过程、布置和产品可以在基本上任何合适的计算机系统或计算机系统组上执行,或者根据该计算机系统或计算机系统组执行,作为说明性而非限制性的示例,该计算机系统或计算机系统组可以包括诸如图3中12'所示的系统或服务器。根据示例实施例,关于图1-图2讨论的大多数(如果不是全部的话)过程步骤、组件和输出可以通过处理单元或多个单元和系统存储器来执行或利用,诸如分别在图3中的16'和28'处指示的那些,无论是在服务器计算机上、客户端计算机上、分布式网络中的节点计算机上,还是它们的任意组合上。
[0017] 深度学习模型通常由一个或多个开发人员手动创建。因此,生成深度学习模型非常耗时,并且不仅需要编写深度学习模型的大量专业知识,还需要开发深度学习模型的领域的大量专业知识。许多模型非常复杂,并且可能基于不同模型和/或层/功能模块的组合,每个不同模型和/或层/功能模块执行特定的功能。例如,可以从执行嵌入功能的层/功能模块、执行解码功能的层/功能模块和执行池化功能(pooling function)的层/功能模块创建更大的深度学习模型。这些层/功能模块然后可以被集成到执行更复杂功能的更大深度学习模型中。然而,除非开发人员已经拥有更小的层/功能模块,否则开发人员必须手动创建所有这些层/功能模块,然后将它们集成到更大的深度学习模型中。如果开发人员能够访问其他开发人员已经创建的模型和/或层/功能模块,深度学习模型的开发将会更快。
[0018] 虽然有一些存储库,开发人员可以在其中存储深度学习模型,并允许其他开发人员访问存储的模型,但是没有从深度学习模型中提取什么信息的标准,因此,没有关于深度学习模型提供什么信息的标准。因此,使用这些存储库,对于寻找特定深度学习模型的开发人员来说,很难识别这样的模型是否存在。开发人员不仅不能识别是否存在符合所有需求的模型,而且开发人员也不能确定是否存在符合需求子集的模型,因此,对于开发人员来说,这可能是一个用于开始的很好的模型。此外,如果开发人员能够识别一个或多个可能满足需求的模型,那么开发人员就无法比较这些模型来确定一个模型是否比另一个模型更合适。
[0019] 因此,实施例提供了一种系统和方法,用于通过从深度学习模型中的每一个产生深度学习模型本体,根据从输入源挖掘的深度学习模型来生成深度学习模型目录。然后,深度学习模型开发人员可以访问该目录,以识别能够满足开发人员需求的深度学习模型,该模型可以用作开发人员的起点,或者可以用作更大深度学习模型的组件。此外,该目录为开发人员提供了比较模型的机会,以识别最适合开发人员需要的模型。
[0020] 该系统从不同的输入源挖掘多个深度学习模型。这些输入源可以包括存储模型的基于互联网的源(例如,深度学习模型的存储库、软件开发平台等)、讨论模型的源(例如,博客、PDF、论文等)、数据库等。对于这些模型中的每一个,该系统创建模型本体。为了维护对于模型中的每一个的一致信息,该系统使用对于本体的预定义格式,然后识别并填补(fill in)被识别并包括在预定义格式中的信息。为了填补信息,该系统通过解析对应于模型的代码和对应于模型的文本(例如,自述文件、模型的描述、与模型一起提供的文本等)中的一个或两个来从模型中的每一个提取信息。该系统还识别用于在深度学习模型内执行操作的深度学习模型的操作器(operator)。这些操作器可以包括粒度操作器,因此,该系统可以将粒度操作器分组为对应于更大功能的组,并识别深度学习模型的子任务或层。一旦对于深度学习模型填充(populate)了本体,模型和对应的本体就被添加到深度学习模型目录中,模型开发人员可以访问该目录。在该目录内,深度学习模型被索引化(indexed),以方便开发人员搜索。
[0021] 这种系统提供了对当前存储深度学习模型的系统的技术改进。虽然一些深度学习模型的存储库确实存在,但是存储库中提供的关于深度学习模型的信息跨不同模型是不一致的。因此,如果开发人员正在访问存储库,通常很难确定是否存在满足开发人员部分或全部需求的一个或多个模型。此外,即使开发人员能够找到一个或多个可以工作的模型,开发人员也不能比较模型来确定一个模型是否比另一个更适合。由于所描述的系统和方法为挖掘的深度学习模型中的每一个填充了预定义的本体,所以对于每个模型存储和可用的信息是一致的,从而允许开发人员确定一个或多个模型是否可以满足开发人员的需求。此外,由于识别的信息跨目录内的所有模型是一致的,所以开发人员可以比较模型以确定一个模型是否比另一个模型更适合。因此,所描述的系统提供了存储和索引化深度学习模型的系统,并提供了关于这些模型的全面见解。因此,深度学习模型的开发时间可以大大减少,因为开发人员能够找到先前创建的、不必由该开发人员创建的模型,从而允许开发人员有更多的时间专注于开发先前没有创建的模型组件。此外,不通晓编码模型的人能够找到可以服务于期望目的的模型,而无需该人必须学习生成模型所需的编程。
[0022] 图1示出了通过从深度学习模型中的每一个产生深度学习模型本体,根据从输入源挖掘的深度学习模型来生成深度学习模型目录的方法。在101,该系统从多个输入源挖掘多个深度学习模型。输入源可以包括存储模型的基于互联网的源(例如,深度学习模型的存储库、软件开发平台等)、讨论模型的源(例如,博客、PDF、论文等)、数据库等。该系统可以访问用于深度学习模型的单个输入源并挖掘多个模型,可以访问多个输入源并仅从这些源中的每一个或其任意组合挖掘单个模型。换句话说,该系统不必从输入源中的每一个挖掘多个模型和/或不必访问多个输入源。
[0023] 该系统可以访问输入源,并从该源挖掘任何深度学习模型。此外,该系统可以挖掘模型中可能包括的任何附加信息。例如,如果输入源包括深度学习模型的描述,则该系统也可以挖掘和捕获该信息。作为另一个示例,如果输入源包括对应于深度学习模型的代码,则该系统也可以挖掘和捕获该信息。该代码可以包括伪代码、用于编程模型的部分代码或用于编程模型的全部代码。因此,系统试图从输入源挖掘和捕获尽可能多的关于模型的信息。该系统还可以访问其他输入源以捕获与模型相关的信息。例如,如果输入源是讨论深度学习模型的博客,并且还包括到模型本身的链接,则系统可以通过链接从博客和模型本身两者访问和挖掘信息。
[0024] 一旦该系统已经挖掘了模型和任何对应的信息,在102,该系统从模型中的每一个提取信息。该系统试图为深度学习模型中的每一个填补对于本体的信息。本体具有预定义格式,该格式识别对于深度学习模型需要识别和包括什么信息。这提供了跨所有挖掘的模型的一致信息。因此,提取的信息可以对应于预定义的本体格式中识别的信息。提取信息可以包括从对应于深度学习模型的代码(例如,伪代码、代码部分、模型代码的整体等)和对应于深度学习模型的任何文本(例如,模型的描述、自述文件、与模型一起提供的文本等)中的一个或两个中解析信息。换句话说,该系统能够解析在101挖掘的任何信息。提取的信息有助于从语义上理解模型,以便填补本体。
[0025] 在解析文本时,该系统可以利用特定于深度学习模型领域的文本解析器或文本注释器。传统的文本注释器,例如那些基于名词短语、单词短语、词类(parts-of-speech)标记符等的文本注释器,对于注释深度学习模型文本是无效的。这是因为需要提取的信息是深度学习模型领域特有的。因此,所描述的系统使用专门为深度学习模型领域构建的文本注释器。这些深度学习模型领域特定的文本注释器能够提取深度学习模型参数(例如,准确性、层、预处理、操作器、体系结构等),而不是传统的自然语言处理参数。因此,这些注释器是基于深度学习模型词汇和深度学习模型解析规则构建的。
[0026] 另外,在从挖掘的信息的非代码部分(例如,基于文本的部分)提取信息时,该系统可以从包括在非代码部分中的图像、表格等中提取信息。该系统能够使用基于规则的分类器和/或图像提取技术来捕获包括在文本源中的图像/表格。在执行图像和/或表格提取时,该系统通过利用图像/表格对本体进行编码来将图像/表格与代码相关联。因此,该系统能够创建对应于图像/表格的伪代码或完整代码。关于非代码部分的真实文本部分,该系统可以利用文本分析技术,例如,信息提取技术、深度学习模型领域特有的文本分析器、深度学习模型领域特有的文本注释器、自然语言处理技术等。文本分析技术可以包括首先执行对语言进行分类并预处理文本的步骤。该系统然后可以执行词汇分析来识别文本中包括的单词和短语。该系统然后可以利用用深度学习模型解析规则编程的解析器来解析文本。可以执行深度学习模型方面或特征提取的最后一步,从而允许从基于非代码的源的文本部分提取信息。从图像/表格部分和非代码部分的基于文本的部分两者提取的信息然后可以在本体中使用。
[0027] 在解析挖掘的信息的代码部分时,该系统还可以利用深度学习模型注释器和/或解析器。解析代码可以首先包括识别代码的深度学习代码框架。代码框架识别深度学习模型代码编程所用的代码语言。由于不同的编程代码使用不同的框架,该系统首先识别框架,使得可以利用框架特有的代码解析,这允许从代码中更准确地提取信息。然后,该系统采用所识别的框架特有的代码解析器。例如,该系统可以采用特定于所识别的代码框架或所识别的代码框架特有的语义代码解析器来识别包含在代码内的概念或参数(例如,体系结构、层等)。利用知识库,该知识库包括由该系统定义的代码本体,并且包括基于框架的组件到基于语义的组件的映射,该系统可以使用深度学习模型标识符来标记代码内的不同概念。这种标记提供了代码的特定行或部分与语义概念之间的映射。例如,该标记可以识别深度学习模型的特定子任务或功能(例如,编码器、解码器、嵌入器、池化器等)被编程在代码的特定行或部分内。
[0028] 在103,该系统识别对于深度学习模型中的每一个的操作器。操作器在深度学习模式内执行操作。可以从挖掘的信息的非代码和代码部分中的一个或两个中提取操作器。在解析代码以识别操作器的情况下,该系统可以首先获取代码并使用抽象语法树构建器对其进行解析以生成抽象语法树(abstract syntax tree,AST)。AST是代码抽象语法结构的树形表示。树的每个节点表示代码中出现的构造。因此,使用AST构建器,该系统可以遍历代码并生成表示代码的AST。
[0029] 该系统可以根据AST执行数据流分析和控制流分析,分别识别代码的数据流和控制流。根据这些分析的输出的组合,该系统可以执行语义代码分析和平台或代码、特定应用程序编程接口(API)调用分析。API调用是那些用于在代码的不同部分之间进行通信的函数。换句话说,API调用是到不同代码部分的链接,因此可以执行与其他代码部分相关联的一些功能。语义代码分析和API调用分析导致代码内包含的不同操作的识别。例如,该分析识别层参数、深度学习代码内使用的度量以及所执行的转换和预处理步骤。这种类型的分析也可以在自定义代码上执行。因此,所描述的系统和方法支持所有代码的本体创建,即使代码是由开发人员定制创建的。
[0030] 提取的操作器通常是粒度操作器。换句话说,提取的操作器是那些执行非常小的特定操作的操作器。虽然这些操作器为填补本体提供了有用的信息,但是这些操作器通常在执行深度学习模型的更大子任务或功能的集合或系列内使用。因此,该系统通过将粒度操作器系列或序列分组到对应于深度学习模型的子任务或功能的组中来识别更大的子任务。一旦粒度操作器被分组,该系统可以将操作器组或系列映射到更大的子任务、功能或层。例如,操作器组可以对应于编码器子任务或功能。作为另一个示例,操作器组可以对应于深度学习模型的解码器层。这个子任务、功能或层可以在本体中列出。
[0031] 图2示出了用于深度学习模型的信息提取和操作识别的总体示例。在201获得深度学习模型和其他挖掘的信息。该系统可以解析202处的自述文件和/或对应于模型的其他文本,以用于提取本体的信息。从对应于深度学习模型的代码203,该系统可以执行框架提取204来识别代码的代码框架。该系统然后可以利用代码解析来识别模型的操作器205。利用知识库206,该系统可以在207标记代码的不同部分或概念。该信息然后可用于填充深度学习模型本体212。所识别的模型的操作器205可以与从自述文件和/或其他文本202中提取的信息相结合,以识别数据信息208、体系结构信息209、层参数210、度量信息211等,然后可以使用这些信息来填充深度学习模型本体212。
[0032] 在104,该系统可以确定是否可以生成对于深度学习模型的完整本体。该本体包括深度学习模型的术语和特征或属性。一旦从文本和/或代码中提取了信息,系统可以使用该信息来填充预定义的本体格式。该系统还利用所识别的操作器来填充预定义的本体格式。一旦该信息被填充,该系统可以识别在该格式中识别的任何信息是否没有被填充。在信息缺少的情况下,在106,该系统试图填补缺少的本体信息。
[0033] 填补信息的一种技术是使用引导(bootstrapping)方法。例如,如果缺少通常从文本部分识别的信息,则该系统可以利用来自代码部分的信息。换句话说,该系统可以从代码中引导信息来填补文本信息。另一方面,如果缺少通常从代码部分识别的信息,则该系统可以利用来自文本部分的信息。换句话说,该系统可以从代码中引导信息来填补文本信息。如果本体中仍然缺少信息,该系统可以利用训练和测试技术。例如,该系统可以使用一个或多个样本数据集来评估深度学习模型。换句话说,该系统可以获取一个或多个样本数据集,并在该数据集上运行模型。通过这些评估,该系统可以填补缺少的信息。例如,该系统可以通过针对一个或多个样本数据集评估模型来对模型的鲁棒性进行评分。作为另一个示例,该系统可以识别深度学习模型在特定类型的数据集上的有效性。
[0034] 如果在104本体是完整的,或者在106缺少的信息已经被填补之后,系统可以将深度学习模型和对应的本体添加到深度学习模型目录中。因此,通过对于多个深度学习模型执行本体生成,该系统可以生成模型目录。这个模型目录可以被索引化,以方便搜索。此外,由于对于模型中的每一个的本体都基于预定义格式,因此跨所有模型的可用信息都是一致的。因此,该目录为比较不同的模型提供了简单的技术。
[0035] 这种系统和方法提供了对当前深度学习模型创建的技术的技术改进。模型开发人员能够访问存储深度学习模型的单个数据存储位置,并识别关于存储的模型的不同信息。根据这些信息,开发人员可以确定一个或多个存储的模型是否可以满足开发人员的部分或全部需求。因此,开发人员不必在深度学习模型的所有方面都具有专业知识,而是可以专注于开发人员试图开发的模型所特有的深度学习模型的组件。此外,因为深度学习模型都在一个位置被索引化,并且每个模型具有提供跨所有模型的一致信息的本体,所以开发人员或其他可以访问目录的人不仅能够搜索特定类型的模型,而且能够比较多个模型以确定哪一个可能最适合期望的目的。因此,与提供不一致信息的传统存储库相反,所描述的系统和方法提供了深度学习模型存储位置,该位置提供了跨存储的模型的一致信息。与传统技术相比,该系统和方法还提供了减少创建深度学习模型所需的时间和专业知识的存储位置。
[0036] 如图3所示,计算节点10'中的计算机系统/服务器12'以通用计算设备的形式示出。计算机系统/服务器12'的组件可以包括但不限于至少一个处理器或处理单元16'、系统存储器28'和将包括系统存储器28'的各种系统组件耦合到处理器16'的总线18'。总线18'表示几类总线结构中的至少一种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0037] 计算机系统/服务器12'典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12'访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0038] 系统存储器28'可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30'和/或高速缓存存储器32'。计算机系统/服务器12'可以进一步包括其他可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34'可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18'相连。存储器28'可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0039] 具有一组(至少一个)程序模块42'的程序/实用工具40',可以存储在例如存储器28'中,这样的程序模块42'包括——但不限于——操作系统、至少一个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42'通常执行本发明所描述的实施例中的功能和/或方法。
[0040] 计算机系统/服务器12'也可以与一个或多个外部设备14'(例如键盘、指向设备、显示器24'等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12'交互的设备通信,和/或与使得该计算机系统/服务器12'能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22'进行。并且,计算机系统/服务器12'还可以通过网络适配器20'与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20'通过总线18'与计算机系统/服务器12'的其他模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12'使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0041] 已经出于说明和描述的目的呈现了本公开,但是并旨在穷举的或限制性的。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了解释原理和实际应用,并使本领域普通技术人员能够理解本公开。
[0042] 尽管本文已经参考附图描述了本发明的说明性实施例,但是应当理解,本发明的实施例不限于那些精确的实施例,并且在不脱离本公开的范围或精神的情况下,本领域技术人员可以对其进行各种其他改变和修改。
[0043] 本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0044] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0045] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0046] 用于执行本发明操作的计算机程序指令可以是汇编指令、指令集体系结构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0047] 这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0048] 也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0049] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系结构、功能和操作。在这点上,流程图或框图中的每个方框可以表示一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。