首页> 中国专利> 模型训练方法、装置、电子设备、存储介质和开发系统

模型训练方法、装置、电子设备、存储介质和开发系统

摘要

本公开的实施例涉及一种模型训练方法、装置、电子设备、存储介质和开发系统,涉及深度学习领域。该方法可以包括根据确定接收到训练准备指令,调用训练准备组件来至少设置用于训练模型的损失函数和优化函数。该方法进一步包括根据确定接收到训练指令,调用训练组件来设置第一数据读取组件,第一数据读取组件被配置为载入用于训练模型的训练数据集。此外,该方法可以进一步包括通过训练组件利用损失函数和优化函数,基于来自第一数据读取组件的训练数据集,训练模型。本公开的技术方案可以实现输入代码的减少,显著节约了开发者的研发资源和时间成本。

著录项

说明书

技术领域

本公开的实施例主要涉及深度学习领域,并且更具体地,涉及模型训练方法、装置、电子设备、计算机可读存储介质和用于训练模型的开发系统。

背景技术

随着人工智能技术的迅猛发展,深度学习技术已经成为人工智能领域的关键技术。深度学习框架开发系统使开发者可以利用系统内提供的功能组件搭建、训练或者评估定制的神经网络,以应用于自然语言处理、图像识别、语音识别等方面。为了便于开发,深度学习框架开发系统设计了大量应用程序编程接口(API)。例如,针对资深开发者,深度学习框架开发系统通常具有在实现复杂场景模型时可以灵活应用的底层API;而针对初级开发者,深度学习框架开发系统通常具有遵循固定模式的高层API。然而,高层API的模型构建与底层API的模型构建不完全一致。这就造成了在对高层API进行应用和改造时,如果需要应用底层API,则需要较大的代码量,提升了系统开发的门槛。

发明内容

根据本公开的示例实施例,提供了一种用于模型训练的方案。

在本公开的第一方面中,提供了一种模型训练方法。该方法可以包括根据确定接收到训练准备指令,调用训练准备组件来至少设置用于训练所述模型的损失函数和优化函数。该方法进一步包括根据确定接收到训练指令,调用训练组件来设置第一数据读取组件,所述第一数据读取组件被配置为载入用于训练所述模型的训练数据集。此外,该方法可以进一步包括通过所述训练组件利用所述损失函数和所述优化函数,基于来自所述第一数据读取组件的所述训练数据集,训练所述模型。

在本公开的第二方面中,提供了一种模型训练装置,包括:训练准备组件调用模块,被配置为根据确定接收到训练准备指令,调用训练准备组件来至少设置用于训练所述模型的损失函数和优化函数;以及训练组件调用模块,被配置为根据确定接收到训练指令,调用训练组件来设置第一数据读取组件,所述第一数据读取组件被配置为载入用于训练所述模型的训练数据集;以及训练执行模块,被配置为通过所述训练组件利用所述损失函数和所述优化函数,基于来自所述第一数据读取组件的所述训练数据集,训练所述模型。

在本公开的第三方面中,提供了一种用于训练模型的开发系统,包括:训练准备组件,被配置为响应于训练准备指令以至少设置用于训练所述模型的损失函数和优化函数;以及训练组件,被配置为响应于训练指令以设置第一数据读取组件,所述第一数据读取组件被配置为载入用于训练所述模型的训练数据集,其中所述训练组件被配置为利用经设置的所述损失函数和所述优化函数,基于来自所述第一数据读取组件的所述训练数据集来训练所述模型。

在本公开的第四方面中,提供了一种电子设备,包括一个或多个处理器;以及存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现根据本公开的第一方面的方法。

在本公开的第五方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。

在本公开的第六方面中,提供了一种计算机程序产品,包括计算机程序指令,该计算机程序指令被处理器实现根据本公开的第一方面的方法。

应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。

附图说明

结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:

图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图;

图2示出了根据本公开的实施例的用于训练模型的开发系统架构的示意图;

图3示出了根据本公开的实施例的模型训练过程的流程图;

图4示出了根据本公开的实施例的多计算设备并行训练的数据分布的示意图;

图5示出了根据本公开的实施例的模型训练装置的框图;以及

图6示出了能够实施本公开的多个实施例的计算设备的框图。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。

如以上提及的,为了提升高层API的易用性,减少使用高层API实现的算法的代码量,需要一种优化的用于训练模型的开发系统以及基于该系统的模型训练方法和装置。此外,目前主流的模型训练方式通常需要通过多个计算设备(即,专用于模型训练的计算节点,例如,CPU或GPU等)来并行处理训练数据,以实现并行训练。然而,传统的高层API在设定用于处理数据的单个计算设备或者多个计算设备时,需要分别输入不同的代码,这进一步增加了代码量。因此,在设计高层API时还需要虑及此方面,从而减少代码量。

根据本公开的实施例,提出了一种模型训练方案。例如,在设计高层API时,可以创建高层API中的相关组件与底层API的调用路径,由此可以完全复用诸如损失函数、度量函数、优化函数等的底层API代码。当接收到开发者或其他用户键入的相关指令之后,开发系统可以直接调用对应于该指令的高层API组件,并由该高层API组件自动调用用于完成该指令的底层API。以此方式,相比于传统高层API,开发者需要输入的代码量显著降低,并且由于高层API支持用户自定义或选择损失函数、度量函数等底层API,故本公开的高层API相比于传统高层API更为灵活和实用。

此外,本公开的模型训练方法还可以通过自动地进行数据补齐并且可选地设置相应掩码的方式来解决由于个别计算设备上没有要处理的数据而导致的多计算设备并行失败的问题,以及通过对并行处理后的数据先进行汇聚、再计算评估结果来解决评估结果的自动汇聚问题。

以下将参照附图来具体描述本公开的实施例。图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。如图1所示,示例环境100中包含用于模型训练的用户指令110、开发系统120和模型130。

如图1所示,开发系统120等待用户输入的用户指令110。在某些实施例中,用户指令110是开发者键入的代码。备选地或附加地,用户指令110还可以是面向初级开发者甚至初学者的指令按键。例如,当初学者希望选择模型训练所需的特定函数(例如,优化函数)时,初学者可以在初始开发界面上选择训练准备组件,并在训练准备组件的下一级中选择一种优化函数,例如,Adam优化器。在一些实施列中,开发系统120可以位于包括但不限于个人计算机、服务器计算机、手持或膝上型设备、移动设备(诸如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费电子产品、小型计算机、大型计算机、包括上述系统或设备中的任意一个的分布式计算环境等。

当开发系统120接收到来自开发者的用户指令110后,开发系统120可以自动调用与用户指令110相关联的组件。作为示例,开发系统120可以调用训练准备组件来定义训练模型130所需的相关函数。作为另一示例,开发系统120可以调用训练组件来定义读取训练数据所需的数据读取组件。由此,模型可以基于选定的训练数据基于相关函数而被自动训练。

图2示出了根据本公开的实施例的用于训练模型130的开发系统200的示意图。如图2所示,该开发系统200包含高层API 210。高层API 210中至少具有训练准备组件211和训练组件212。训练准备组件211在接收到来自开发者的训练准备指令后,可以设置用于训练模型130的损失函数201和优化函数203。应理解,训练准备组件211可以用于定义训练模型130所需的优化函数、损失函数、度量函数、训练数据集等。训练组件212在接收到来自开发者的训练指令后,可以设置数据读取组件207,以便在于用于训练模型130的训练数据209,即,训练数据集。也就是说,训练组件212可以用于设置训练模型130所需的循环迭代过程、训练的轮数和训练数据读取的过程等。在用于训练的相关参数被设置之后,训练组件212被配置为利用经设置的损失函数201和优化函数205,基于来自数据读取组件207的训练数据209来训练模型130。

在某些实施例中,训练准备组件211还可以设置度量函数203,并且高层API 210还可以具有评估组件。评估组件(未示出)可以基于评估指令设置数据读取组件207,数据读取组件207被配置为载入不同于训练数据209的评估数据,即,评估数据集。也就是说,评估组件可以基于模型130的输出(即,预测结果)与评估数据集中的被标记的结果之间的差异来评估模型130。例如,评估组件可以利用经训练的模型130以及损失函数201和度量函数203,基于来自数据读取组件207的评估数据集来评估模型130。

在某些实施例中,高层API 210还可以具有预测组件,用于设置数据读取组件207,以便载入不同于训练数据209的预测数据集。例如,预测组件可以利用经训练的模型130来确定来自数据读取组件207的预测数据集的预测结果。

如图2所示,该开发系统200可以包含若干底层API,例如,损失函数201、度量函数203、优化函数205、数据读取组件207以及训练数据209。作为示例,损失函数201、度量函数203、优化函数205、数据读取组件207均是模型训练开发系统中的底层API。例如,数据读取组件207可用于读取训练数据209并将训练数据209中的输入部分输入至模型103,模型103的输出为预测结果。损失函数201可用于将该预测结果与训练数据209中的被标记的结果进行比较,以得到差异。优化函数205可用于优化模型103的参数,以减小差异,循环进行上述过程,直至模型103的参数收敛。

应理解,上文各组件所调用的数据读取组件207可以是在不同时间用于执行不同任务的相同的数据读取组件,也可以是不同的数据读取组件。例如,当接收到关于训练的用户指令时,数据读取组件207可调取训练数据209;当接收到关于评估的用户指令时,数据读取组件207可调取评估数据;以及当接收到关于预测的用户指令时,数据读取组件207可调取预测数据。

上文描述的技术方案仅用于示例,而非限制本发明。应理解,还可以按照其他方式和连接关系来布置整个开发系统200。为了更清楚地解释上述方案的原理,下文将参考图3来更详细描述模型训练的过程。

图3示出了根据本公开的实施例的模型训练过程的流程图。在某些实施例中,方法300可以在图1示出的开发系统120中实现。现参照图3描述根据本公开实施例的用于模型训练的过程300。为了便于理解,在下文描述中提及的具体数据均是示例性的,并不用于限定本公开的保护范围。

为了更为清晰明确地介绍本公开的方案,本公开以基于数据集的模型训练为例参照图3描述模型训练的具体过程。应理解,本公开的模型训练开发方案同样适用于其他开发系统框架。在由开发者设定输入的训练数据的格式以及要训练的模型的网络结构之后,开始进入用于模型训练的过程300。

在302,开发系统120可以实时地检测是否有用户指令输入。当确定接收到诸如训练准备指令的用户指令110时,开发系统120自动调用训练准备组件211来至少设置用于训练模型130的损失函数201和优化函数205。应理解,本文提及的“组件”、“函数”实际上均是上文提及的应用程序编程接口API。

在304,开发系统120可以继续检测是否有用户指令输入。当确定接收到诸如训练指令的用户指令110时,开发系统120自动调用训练组件212来设置数据读取组件207。这里,数据读取组件207被配置为载入用于训练模型130的训练数据209,即训练数据集。在某些实施例中,训练组件212可以具有分别针对损失函数201、优化函数205和数据读取组件207的调用路径。

应理解,在基于训练数据209对模型130进行训练时,由于训练数据209的数据庞大,通常会采用多个计算设备并行处理的方式来完成训练,以便减少训练时间。然而,在将训练数据209逐一分配到各个计算设备上时,可能出现某个计算设备上没有要处理的数据的情况,例如,训练数据集中包含10个数据,如果用4个计算设备并行处理,则会出现2个计算设备存在数据缺失的问题,从而导致多个计算设备并行训练失败。

为此,可以通过如下过程来自动解决数据缺失的问题。为了清楚地描述此过程,本公开参照图4进行描述。图4示出了根据本公开的实施例的多计算设备并行训练的数据分布的数据读取组件400内部的示意图。如图4所示,数据读取组件400内载入有大量训练数据209。训练数据209中至少包含首批次410和末批次420(中间批次未示出)。每个批次的训练数据209均被分为多个组,以载入至多个计算设备用于并行执行例如如下训练流程。

首先,开发系统120可以获取并行处理训练数据209的计算设备的数目,即,4。应理解,计算设备的种类以及数目均可以在训练准备组件211中设置,或者,开发者可以直接输入代码简单设置。因此,开发系统120可以随后基于该设置确定计算设备的数目。之后,开发系统120可以基于该数目对训练数据集进行如图4所示的分组,以便将训练数据集中的数据布置在数据读取组件207中,并且可以确定数据读取组件207中缺少训练数据的位置,即,空位421、422。最后,开发系统120可以以预定数据填充这些位置。作为示例,开发系统120可以以该训练数据集中的任意数据填充空位421、422。例如,可以将数据集中的第一个数据复制并填充至空位421,并且将数据集中的第二个数据复制并填充至空位422。通过类似处理,训练数据209可以被输入计算设备,以在后续过程中训练模型130。

在306,开发系统120可以通过训练组件212利用损失函数201和优化函数205,基于来自数据读取组件207的训练数据209,训练模型130。应理解,由于训练组件212具有分别针对损失函数201、优化函数205和数据读取组件207的调用路径,故训练组件212可以自动调用数据读取组件207,以读取训练数据209。此外,训练数据209中的输入部分被输入至模型103,模型103的输出为预测结果。由此,训练组件212可以自动调用损失函数201,以将该预测结果与训练数据209中的被标记的结果进行比较,从而得到差异。此外,基于该差异,训练组件212可以自动调用优化函数205,以优化模型103的参数。训练组件212中已经构建了双层循环程序用以循环执行上述过程,直至模型103的参数收敛,或者达到预定的迭代次数。以此方式,本公开可以使开发者仅输入几行代码即可对模型进行较为灵活的训练,极大的节约了开发者的研发成本。

下文将详细描述用于评估模型130的过程。

与上述过程302类似地,开发系统120还可以基于开发者的用户指令110自动调用训练准备组件211来设置用于评估模型130的度量函数203,即,开发者输入的代码中关于“评估”的字符段。以此方式,开发者仅通过输入几行代码就可以对评估模型130所需的函数进行选择和设置。

与上述过程304类似地,开发系统120还可以基于开发者的用户指令110(这里是评估指令)自动调用评估组件以设置数据读取组件207。这里,数据读取组件207被配置为载入不同于训练数据209的评估数据,即评估数据集。评估数据集用于输入模型130以对模型130进行评估。在某些实施例中,评估组件可以具有分别针对损失函数201、度量函数203和数据读取组件207的调用路径。

与上述过程306类似地,开发系统120可以通过评估组件利用经训练的模型130以及损失函数201和度量函数203、基于来自数据读取组件207的评估数据集,评估模型130,例如,可以计算模型130的召回率和准确率等。以此方式,本公开可以使开发者仅输入几行代码即可对模型进行较为灵活的评估。

上文参照图4描述了自动解决数据缺失问题的过程。应理解,该过程仅针对模型的训练。由于训练数据集通常包含海量数据,故模型的训练过程不会对训练数据有过高要求,因而填充到空位421、422中的训练数据也可以用于训练模型130。然而,在对模型130进行评估时,如果也采用多个计算设备并行执行训练的方式,填充到空位421、422中的训练数据就可能会影响评估结果。因此,可以通过如下方式来自动处理此情形。

首先,开发系统120可以获取并行处理评估数据的计算设备的数目,例如,4。之后,开发系统120可以基于该数目对评估数据进行如图4所示的分组,以将评估数据中的数据布置在数据读取组件207中,并且可以确定数据读取组件207中缺少评估数据的位置,即,空位421、422。之后,开发系统120可以以预定数据填充这些位置。作为示例,开发系统120可以以该评估数据集中的任意数据填充空位421、422。例如,可以将数据集中的第一个数据复制并填充至空位421,并且将数据集中的第二个数据复制并填充至空位422。由此,与上述方式类似地,被填充的数据集中的各批次均可用于多个计算设备的并行处理。也就是说,可以利用经训练的模型130以及经设置的损失函数201和度量函数203,基于经填充的评估数据集确定模型130的评估结果。

对于确定的评估结果,填充到空位421、422中的评估数据的评估结果是不期望得到的,因此,开发系统120可以最小化评估结果中与缺少评估数据的位置相对应的无效评估结果的权重,以去除无效评估结果。例如,可以将缺少评估数据的位置相对应的评估结果的权重设置为零,并且将其他位置的权重设置为一,从而掩蔽该结果。此外,开发系统120还可以被配置为自动汇聚评估结果。例如,开发系统120可以调用训练组件先对模型输出的预测结果进行汇聚,再通过度量函数203计算评估结果。由此,开发者无需输入额外的代码即可汇聚评估结果。以此方式,无论是单个计算设备处理的方式还是多个计算设备并行处理的方式,均可以在本公开的开发系统120中实现,且输入的代码量显著减少。

此外,在某些实施例中,除了上述训练和评估的功能,开发系统120还可以被配置为基于用户指令110预测模型130的输出。例如,开发系统120可以在接收到预测指令后,调用预测组件来设置数据读取组件207。该数据读取组件207被配置为载入不同于训练数据209的预测数据。这里的预测数据与训练数据209和上述评估数据的区别在于,训练数据209和评估数据均是含标记的数据,即这两种数据均包含进入模型130的输入数据以及经过标记的结果,而预测数据是未标记的数据,即预测数据仅包含进入模型130的输入数据。之后,开发系统120通过预测组件利用经训练的模型130来确定数据读取组件207的预测数据集的预测结果。当开发者需要查看特定数据或一组数据的预测结果时,即可以输入几行代码方便地实现预测功能,显著节约了研发资源。

通过上述各实施例,本公开的模型训练方案、模型评估方案以及模型预测方案均可以实现输入代码的减少。基于传统的高层API的模型训练所需的代码量通常要几十行甚至更多,与此相比,本公开的模型训练方案、模型评估方案以及模型预测方案所需的代码量的总和仅需要几行,显著节约了开发者的研发资源和时间成本。此外,针对多个计算设备并行执行训练的情况,本公开的各个实施例的方案均无需输入额外代码或者输入的代码显著减少。

图5示出了根据本公开的实施例的模型训练装置500的框图。如图5所示,装置500可以包括:训练准备组件调用模块502,被配置为根据确定接收到训练准备指令,调用训练准备组件来至少设置用于训练所述模型的损失函数和优化函数;训练组件调用模块504,被配置为根据确定接收到训练指令,调用训练组件来设置第一数据读取组件,所述第一数据读取组件被配置为载入用于训练所述模型的训练数据集;以及训练执行模块506,被配置为通过所述训练组件利用所述损失函数和所述优化函数,基于来自所述第一数据读取组件的所述训练数据集,训练所述模型。

在某些实施例中,训练准备组件调用模块502可以进一步被配置为调用所述训练准备组件来设置度量函数,该装置500可以进一步包括:评估组件调用模块,被配置为根据确定接收到评估指令,调用评估组件以设置第二数据读取组件,所述第二数据读取组件被配置为载入不同于所述训练数据集的评估数据集;以及评估执行模块,被配置为通过所述评估组件利用经训练的所述模型以及所述损失函数和所述度量函数,基于来自所述第二数据读取组件的所述评估数据集,评估所述模型。

在某些实施例中,该装置500可以进一步包括:预测组件调用模块,被配置为根据确定接收到预测指令,调用预测组件来设置第三数据读取组件,所述第三数据读取组件被配置为载入不同于所述训练数据集的预测数据集;以及预测结果确定模块,被配置为通过所述预测组件利用经训练的所述模型,确定来自所述第三数据读取组件的所述预测数据集的预测结果。

在某些实施例中,该装置500还可以包括:数目获取模块,被配置为获取并行处理所述训练数据集的计算设备的数目;训练数据布置模块,被配置为基于所述数目对所述训练数据集进行分组,以将所述训练数据集中的训练数据布置在所述第一数据读取组件中;位置确定模块,被配置为确定所述第一数据读取组件中缺少训练数据的位置;以及填充模块,被配置为以预定数据填充所述位置。

在某些实施例中,该装置500还可以包括:数目获取模块,被配置为获取并行处理所述评估数据集的计算设备的数目;训练数据布置模块,被配置为基于所述数目对所述评估数据集进行分组,以将所述评估数据集中的评估数据布置在所述第二数据读取组件中;位置确定模块,被配置为确定所述第二数据读取组件中缺少评估数据的位置;以及填充模块,被配置为以预定数据填充所述位置,以形成经填充的所述评估数据集。

在某些实施例中,该装置500还可以包括:预测结果确定模块,被配置为利用经训练的所述模型以及经设置的所述损失函数和所述度量函数,基于经填充的所述评估数据集确定所述模型的评估结果;权重最小化模块,被配置为最小化所述评估结果中与缺少评估数据的所述位置相对应的无效评估结果的权重,以去除所述无效评估结果。

在某些实施例中,训练组件具有分别针对所述损失函数、所述优化函数和所述第一数据读取组件的调用路径,

在某些实施例中,评估组件具有分别针对所述损失函数、所述度量函数和所述第二数据读取组件的调用路径。

图6示出了能够实施本公开的多个实施例的计算设备600的框图。设备600可以用于实现图1的开发系统120。如图所示,设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。CPU601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

处理单元601执行上文所描述的各个方法和处理,例如过程300。例如,在一些实施例中,过程300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由CPU 601执行时,可以执行上文描述的过程300的一个或多个步骤。备选地,在其他实施例中,CPU 601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程300。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号