促进神经网络效率的制作方法

文档序号:20957556发布日期:2020-06-02 20:29阅读:358来源:国知局
促进神经网络效率的制作方法

本发明一般涉及促进神经网络内的效率。



背景技术:

神经网络(有时被称为人工神经网络或深度神经网络)通常是试图模仿大脑的计算机系统。神经网络可以以各种方式使用,诸如通过被训练以识别图像中人脸的存在,或者将口语语音从第一语言翻译成第二语言。



技术实现要素:

以下呈现了概述以提供对本发明的一个或多个实施例的基本理解。本概述不是旨在标识关键或重要元素,或描绘特定实施例的任何范围或权利要求的任何范围。其唯一目的是以简化形式呈现概念,作为稍后呈现的更详细描述的序言。在一个或多个实施方式中,系统、计算机实现的方法、装置和/或计算机程序产品促进神经网络效率。

根据实施例,提供了一种系统,所述系统可以包括存储计算机可执行组件的存储器和执行存储在存储器中的计算机可执行组件的处理器。在一个或多个实现方式中,计算机可执行组件包括选择输出限制的初始值的初始化组件,其中输出限制指示神经网络的激活函数的输出的范围。计算机可执行组件还包括训练组件,所述训练组件在训练期间将输出限制的初始值修改为输出限制的第二值,输出限制的第二值被提供为激活函数的参数。计算机可执行组件还包括激活函数组件,所述激活函数组件基于作为输入的输出限制的第二值来确定激活函数的输出。

在另一实施例中,提供了一种计算机实现的方法。在一个示例中,计算机实现的方法包括由能操作地耦合到处理器的系统来初始化输出限制的值,其中输出限制包括神经网络的激活函数的输出的范围,输出限制的值经由训练来确定。计算机实现的方法还可以包括由所述系统在给定输出限制的值作为激活函数的参数的情况下确定激活函数的输出。

在另一实施例中,提供了一种计算机程序产品,所述计算机程序产品促进训练量化激活以高效地实现深度学习,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有体现在其中的程序指令。能由处理器执行的程序指令可以使处理器至少初始化输出限制的值,其中输出限制包括神经网络的激活函数的输出的范围,输出限制的值经由训练来确定。能由处理器执行的程序指令可进一步使处理器在给定输出限制的值作为激活函数的参数的情况下至少确定激活函数的输出。

在另一实施例中,提供了一种系统,所述系统可以包括存储计算机可执行组件的存储器和执行存储在存储器中的计算机可执行组件的处理器。在一个或多个实现方式中,计算机可执行组件包括选择输出限制的值的初始化组件,其中输出限制包括神经网络的激活函数的输出的范围,输出限制的值经由训练来确定。计算机可执行组件还可以包括激活函数组件,所述激活函数组件在给定输出限制值作为激活函数的参数的情况下确定激活函数的输出。

在另一实施例中,提供了一种计算机实现的方法。在一个示例中,计算机实现的方法包括由能操作地耦合到处理器的系统来初始化输出限制的初始值,其中输出限制包括神经网络的激活函数的输出的范围。计算机实现的方法还可以包括由系统在训练期间将输出限制的初始值修改为输出限制的第二值,输出限制的第二值被提供为激活函数的参数。计算机实现的方法还可以包括由系统在给定输出限制的第二值作为参数的情况下确定激活函数的输出。

附图说明

图1图示根据本文中所述的一个或多个实施例的其效率可被促进的示例性、非限制性神经网络系统。

图2a图示根据本文中描述的一个或多个实施例的促进神经网络中的效率的示例性、非限制性系统的框图。

图2b图示根据本文中描述的一个或多个实施例的促进神经网络中的效率的示例性、非限制性系统的另一框图。

图3图示根据本文中描述的一个或多个实施例的激活函数的输出的示例性、非限制性图形。

图4图示根据本文中描述的一个或多个实施例的激活函数的输出的另一示例性、非限制性图形。

图5图示根据本文中描述的一个或多个实施例的绘制激活函数的范围如何通过训练而减小的图形。

图6图示根据本文中描述的一个或多个实施例的绘制激活函数如何被量化的图形。

图7a图示根据本文中描述的一个或多个实施例的示出改变神经网络内的激活函数的范围如何影响神经网络的误差率的图形。

图7b图示根据本文中描述的一个或多个实施例的示出改变神经网络内的激活函数的范围如何影响神经网络的误差率的另一图形。

图8图示根据本文中描述的一个或多个实施例的示出在改变神经网络内的激活函数的范围时使用不同的正则化项(regularizer)如何影响神经网络的误差率的图形。

图9图示根据本文中描述的一个或多个实施例的示出在改变神经网络内的激活函数的范围时使用不同的正则化项如何影响神经网络的误差率的另一图形。

图10图示根据本文中描述的一个或多个实施例的示出改变神经网络内的激活函数的范围如何影响相关联的交叉熵成本函数的图形。

图11图示根据本文中描述的一个或多个实施例的示出改变神经网络内的激活函数的范围如何影响相关联的交叉熵成本函数的图形,其中激活函数的范围和一个或多个输入被量化。

图12图示根据本文中描述的一个或多个实施例的示出在训练期间对神经网络内的激活函数的范围进行正则化如何影响相关联的训练成本函数的图形。

图13图示根据本文中描述的一个或多个实施例的示出神经网络的裁剪(clip)激活函数如何被训练以变成二值化激活函数的三个图形。

图14图示根据本文中描述的一个或多个实施例的示出神经网络的二值化激活函数如何在测试误差方面与激活函数进行比较的图形。

图15图示根据本文中描述的一个或多个实施例的示出神经网络的二值化激活函数如何在测试误差方面与激活函数进行比较的另一图形。

图16图示根据本文中描述的一个或多个实施例的示出激活函数的范围的压缩率如何对应于相关联的测试误差的图形。

图17图示根据本文中描述的一个或多个实施例的促进提高神经网络的效率的示例性、非限制性的计算机实现的方法的流程图。

图18图示根据本文中描述的一个或多个实施例的促进提高神经网络的效率的另一示例性、非限制性计算机实现的方法的流程图。

图19图示可以促进本文中描述的一个或多个实施例的示例性、非限制性操作环境的框图。

具体实施方式

以下详细描述仅是说明性的,并且不是旨在限制实施例和/或实施例的应用或使用。此外,并不旨在受前面的背景技术或发明内容部分或具体实施方式部分中呈现的任何明示或暗示的信息的约束。

神经网络通常包含多个神经元以及这些神经元之间的连接。神经元通常是基于一个或多个输入(可以被加权)来确定输出的神经网络计算机系统的一部分,并且神经元可以基于利用可能加权的输入确定激活函数的输出来确定该输出。激活函数的示例包括修正(rectifier)(relu)激活函数,该relu激活函数产生范围在0和无穷大之间(包括端值)的输出;tanh(双曲正切),该tanh产生范围在-1和1之间(包括端值)的输出;以及s型(sigmoid),该s型产生范围在0和1之间(包括端值)的输出。虽然本文中描述的若干非限制性示例涉及正则化项(regularizer)(relu)激活函数,但是可以理解,这些技术可以应用于其他激活函数。例如,这些技术可以被应用于确定tanh激活函数或s型激活函数的输出的适当分辨率。

神经网络的神经元可以被连接,使得一个神经元的输出可以用作另一神经元的输入。神经网络内的神经元可以被组织成层,如图1中所示。神经网络的第一层可以被称为输入层,神经网络的最后一层可以被称为输出层,并且神经网络的任何中间层可以被称为隐藏层。

结果的精确度在神经网络中可能是重要的,因为神经网络的精确度可能会影响由神经网络产生的结果的准确度(例如,识别图像是否描绘人脸的准确度)。但是精确度可能是昂贵的(例如,在处理资源、确定结果所需的时间、或构建合适的神经网络以实现给定的精确度水平所需的金钱方面)。于是,为了提高神经网络的性能和降低成本,可以并入较低精确度的处理单元(例如,8位、4位或2位处理单元,而不是64位或32位处理单元)。

然而,当神经网络在被量化到低精确度的同时被训练时,由于经由量化引入的噪声,准确度可能丢失。该降低的准确度可能会减少神经网络的性能,因为神经网络的识别它被训练来识别的内容的能力会减少。于是,本主题提供了经由量化来降低神经网络中的精确度以使得可以体验到成本节省,同时减轻神经网络的性能的准确度的损失。

现在参考附图描述一个或多个实施例,其中相同的附图标记始终用于表示相同的元件。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对一个或多个实施例的更透彻理解。然而,在各种情况下,显然可以在没有这些具体细节的情况下实施一个或多个实施例。

图1图示根据本文中描述的一个或多个实施例的其效率可被促进的示例性、非限制性神经网络系统。本公开中所解释的系统(例如,系统100等)、装置或处理的各方面可以构成在(一个或多个)机器内体现的(例如,在与一个或多个机器相关联的一个或多个计算机可读介质(或介质)中体现的)(一个或多个)机器可执行组件。当由一个或多个机器(例如,计算机、计算设备、虚拟机等)执行时,这样的组件可以使一个或多个机器执行所描述的操作。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

系统100和/或系统100的组件可以被用来使用硬件和/或软件来解决本质上是高度技术性的、非抽象的、并且不能作为人类的一组精神动作来执行的问题。例如,系统100和/或系统100的组件可以被用来使用硬件和/或软件来执行包括促进神经网络内的效率的操作。

此外,所执行的一些处理可以由专用计算机来执行,以用于执行与促进神经网络内的效率有关的所定义的任务。系统100和/或系统100的组件可以被用来解决由于技术、计算机网络、因特网等的进步而引起的新问题。系统100还可以通过提高与促进神经网络内的效率相关联的处理组件之间的处理效率,提供对基于因特网和实况的学习系统的技术改进。

如图所示,系统100是包括五个神经元的神经网络—神经元102、神经元104、神经元106、神经元108和神经元110。该神经网络的输入层124包括神经元102和神经元104。该神经网络的隐藏层126包括神经元106和神经元108。该神经网络的输出层128包括神经元110。输入层124的每个神经元连接到隐藏层126的每个神经元。即,输入层124的每个神经元的可能加权的输出被用作对于隐藏层126的每个神经元的输入。然后,隐藏层126的每个神经元连接到输出层128的每个神经元(这里,一个神经元)。

系统100的神经网络呈现了简化的示例,使得为了清楚起见可以强调某些特征。可以理解,本技术可以应用于其他神经网络,包括比系统100的神经网络显著更复杂的神经网络。

给定图1的系统100的神经网络的上下文,图3-图16的图形图示可以促进神经网络(诸如系统100的神经网络)的效率的各种方式;图17-图18的流程图图示可以被实现以增加神经网络(诸如系统100的神经网络)的效率的计算机实现的方法;以及图19的框图图示可以实现神经网络(诸如系统100的神经网络)的操作环境。

图2a图示根据本文中描述的一个或多个实施例的促进神经网络中的效率的示例性、非限制性系统200的框图。系统200可以包括与系统100和250相同或相似的特征和功能,反之亦然。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

如图2a中所示,系统200可包括神经网络组件218。神经网络组件218可以包括各种计算机可执行组件,包括但不限于初始化组件202、训练组件204、激活函数组件206、裁剪组件208、反向传播组件210和激活函数选择组件220。神经网络组件218还可以包括存储计算机可执行组件(例如,初始化组件202、训练组件204、激活函数组件206、裁剪组件208、反向传播组件210和激活函数选择组件220)的至少一个存储器212,或者以其他方式与所述至少一个存储器212相关联。神经网络组件218还可以包括执行存储在存储器212中的计算机可执行指令的至少一个处理器214,或以其他方式与所述至少一个处理器214相关联。神经网络组件218还可以包括系统总线216,系统总线216可以耦合各种组件,包括但不限于初始化组件202、训练组件204、激活函数组件206、裁剪组件208、反向传播组件210、激活函数选择组件220、存储器212和/或处理器214。

为了促进神经网络的效率,神经网络组件218可以包括初始化组件202。在一些实现方式中,初始化组件202可以选择输出限制的初始值,其中输出限制指示神经网络的激活函数的输出的范围。神经网络组件218还可以包括训练组件204。在一些实现方式中,训练组件204可以在训练期间将输出限制的初始值修改为输出限制的第二值,输出限制的第二值被提供为激活函数的参数。神经网络组件218还可以包括激活函数组件206。在一些实现方式中,激活函数组件206可以基于使用输出限制的第二值作为参数来确定激活函数的输出。

神经网络组件218还可以包括裁剪组件208。在一些实现方式中,裁剪组件208可以在利用训练组件进行训练期间执行裁剪,以降低由于量化而导致的准确度劣化。神经网络组件218还可以包括反向传播组件210。在一些实现方式中,反向传播组件210可以在利用训练组件进行训练期间执行反向传播。神经网络组件218还可以包括激活函数选择组件220。在一些实现方式中,激活函数选择组件220可以确定在全精确度的情况下使用修正线性单元作为激活函数,并且其中交叉熵损失随着输出限制增加而收敛;以及确定随着输出限制增加,损失函数也随着量化而增加,并且确定使用除了修正线性单元之外的激活函数类型的激活函数。

应当理解,系统200的体系结构可以改变。例如,尽管系统200的各种组件被描绘为包含在神经网络组件218内,但是可以理解,该布置是逻辑的,而不是指示各种组件包含在一个设备内。也就是说,各种组件可以分布在联网或分布式计算环境中的各种计算设备之间。还可以理解,可以存在采用比系统200中所描绘的更多或更少的组件的其他合适的体系结构。例如,可以存在省略激活函数选择组件220的另一系统。

图2b图示根据本文中描述的一个或多个实施例的促进神经网络中的效率的示例性、非限制性系统250的另一框图。系统250可以包括与系统100和200相同或相似的特征和功能,反之亦然。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

如图2b中所示,系统250可以包括神经网络组件256。神经网络组件256可以包括各种计算机可执行组件,包括但不限于初始化组件252和激活函数组件254。神经网络组件256还可以包括存储计算机可执行组件(例如,初始化组件252和激活函数组件254)的至少一个存储器212,或以其他方式与所述至少一个存储器212相关联。神经网络组件256还可以包括执行存储在存储器212中的计算机可执行指令的至少一个处理器214,或者以其他方式与所述至少一个处理器214相关联。神经网络组件256还可以包括系统总线216,系统总线216可以耦合各种组件,包括但不限于初始化组件252、激活函数组件254、存储器212和/或处理器214。

为了促进神经网络的效率,神经网络组件256可以包括初始化组件252。在一些实现方式中,初始化组件252可以选择输出限制的值,其中输出限制包括神经网络的激活函数的输出的范围,输出限制的值经由训练来确定。神经网络组件256还可以包括激活函数组件254。在一些实现方式中,激活函数组件254可以在给定输出限制的值作为激活函数的参数的情况下确定激活函数的输出。

应当理解,系统250的体系结构可以改变。例如,尽管系统250的各种组件被描绘为包含在神经网络组件256内,但是可以理解,该布置是逻辑的,而不是指示各种组件包含在一个设备内。也就是说,各种组件可以分布在联网或分布式计算环境中的各种计算设备之间。还可以理解,可以存在采用比系统250中所描绘的更多或更少的组件的其他合适的体系结构。

图3图示根据本文中描述的一个或多个实施例的激活函数的输出的示例性、非限制性图形300。在一些示例中,图3中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形300相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

可以存在与一些神经网络相关联的两个数据结构-网络的权重(神经网络的一个激活函数的输出对神经网络的另一个激活函数的输出的影响量)和神经网络的特征(神经网络的每个激活函数的输出)。

在表示神经网络的数据结构时,可以利用量化。量化通常是将一组数字约束为较小的离散的一组数字的处理,例如将所有实数约束为整数。在量化时,可以进行两个考虑:(a)要表示的数字的范围(例如,从0到100,包括端值);以及(b)所表示的数字的分辨率(例如,在0和100之间,以0.1的增量来表示数字,因此下面的数字将表示为:0.0、0.1、0.2、…100.0、100.0)。在范围和分辨率中的每个可以单独用多个二进制位来表示的情况下,则在给定特定范围和特定分辨率的情况下用来表示一组数字的位的总数量可以是用来表示范围的位的数量和用来表示分辨率的位的数量之和。

激活函数通常计算神经网络的神经元内的点积。诸如relu之类的激活函数可以具有无限的范围和无限的分辨率。可以努力量化激活函数的范围和/或分辨率,以便例如通过更快地计算激活函数的输出、或者允许在更便宜或不太强大的硬件上计算激活函数来提高效率。

可以实现训练处理以确定用于激活函数的输出的量化的量。通过训练,可以将两个新参数引入到神经网络(或神经网络的子部分,诸如神经网络的层或神经元)。这两个新参数可以被表示为α和β(β),α定义激活函数的输出的范围,β定义激活函数的输出的分辨率。考虑将范围和分辨率从无限大减小到可以用四个位来共同表示的范围和分辨率的示例。在将两个位分配给范围的情况下,该范围可以覆盖例如0至3,包括端值。然后,当将四个位中的其它两个位分配给分辨率时,分辨率可以为0.25(例如,所组合的范围和分辨率可以覆盖0.0、0.25、0.50、…3.0、3.0这些数字)。在训练时,起始点可以是relu,其中α和β是无穷大。然后,训练处理可用来将α和β减小到有限的数量。

于是,图形300显示激活函数的输出的图形,其中α和β两者被示出用于输出。还示出了两个附加参数-亚分辨率(γ)和分辨率斜率(1/m)。亚分辨率和分辨率斜率可以是在一些类型的训练α和β中使用的附加参数。在图形300中示出了α302、β304、亚分辨率306和分辨率斜率308。在一些示例中,分辨率斜率308被定义为1/m,其中m是使用随机梯度下降处理来训练以接近或达到零的参数。由于分辨率斜率在这里被定义为1/m,因此当m趋于零时,分辨率斜率于是接近无穷大(其是二值化激活函数中的斜率)。

例如,在训练硬件提供比神经网络将最终在其上操作的硬件更多的处理资源的情况下(例如,训练硬件采用64位处理器,而神经网络将最终在2位处理器上运行),这些亚分辨率和分辨率斜率参数可以用来确定比不采用亚分辨率和分辨率斜率参数的情况更准确的量化激活函数。

图4图示根据本文中描述的一个或多个实施例的激活函数的输出的另一示例性、非限制性图形400。在一些示例中,图4中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形400相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

如所描绘的,激活函数用该方程来表示:

在上述方程中,x和y分别表示图形400的水平轴402和垂直轴404。α表示激活函数的输出的范围。注意,如所描绘的,在图形400的水平轴和垂直轴两者上标记α。在上述方程中,并且如图形400中所示,激活函数y的输出406在x小于零时取0的值,在x在零以上且小于α时取x的值,并且在x至少为α时取α的值。

然后,可以根据以下方程通过训练来确定α:

在该方程中,y相对于α的导数等于1,其中x至少为α;否则为0。在用该方程训练α的处理中,可以使用随机梯度下降法。随着使用随机梯度下降的每次迭代,可以将反向传播应用于激活函数,可以计算上述导数,并且可以相应地更新α以用于随机梯度下降的下一次迭代。

在随机梯度下降法中,与激活的输出相比,α可以被初始化为较大的值。例如,α可以被初始化为浮点数据类型可以表示的最大值。在32位浮点数据类型的情况下,该最大值可以是3.4*1038。在64位浮点数据类型的情况下,该最大值可以是1.7*10308。然后,使用随机梯度下降发法,α的这个值通常将随着迭代而减小。

在训练α的处理中,可以采用正则化项。在一些示例中,可以采用l2正则化项,其中如果损失更高,则参数改变更多。也可以在训练处理中采用任何其它合适的正则化项。另外,作为在训练期间应用l2正则化项的结果,可以对α采用裁剪,其中α的值被限制为不大于预定阈值。

图5图示根据本文中描述的一个或多个实施例的绘制激活函数的范围如何通过训练而减小的图形500。在一些示例中,图5中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形500相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在上述图形中,λ(λα)表示对α执行的正则化的量。在所描绘的图形500中,λ等于0.01。通常,较大的λ值指示执行更多的正则化,而λ值为0指示不执行正则化。沿着图形500的x轴绘制了许多训练时期(epoch)504,并且沿着图形500的y轴绘制了相应的α值502。

图形500示出使用所公开的技术在加拿大高级研究院(cifar)resnet神经网络中α如何随着训练时期而减小。α最初被设置为较大值以模拟正则化项(relu)激活函数,然后cifarresnet神经网络的不同层的α值在训练时期期间收敛。通过训练来实现使成本函数最小化的最优α。

由于正则化,α在稍后的时期变得更小,因此执行裁剪以减少可能由于量化而引起的准确度劣化。

图6图示根据本文中描述的一个或多个实施例的绘制激活函数如何被量化的图形600。在一些示例中,图6中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形600相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

如由图形600所表示的,所采用的相关联的量化方程被表示为xq=round(x/α·(2b-1))·α·1/(2b-1)。在该方程中,xq表示所计算的量化的量,b表示用于给定的量化的量的位的数量(在图形600的示例中,b=2),并且round()表示将其输入舍入到最接近的整数的函数。在经过参数化裁剪之后,值被约束在0和α之间。在图形600上绘制了相关联的量化方程的输出值,其中沿着y轴绘制发生率(occurrence)602,并且沿着x轴绘制裁剪的激活604。

图7a图示根据本文中描述的一个或多个实施例的示出改变神经网络内的激活函数的范围如何影响神经网络的误差率的图形700。在一些示例中,图7a中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形700相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在图形700中,沿着y轴绘制训练误差702,并且沿着x轴绘制时期704。图形700基于cifarresnet神经网络。对于四种不同类型的α共享-relu(其完全省略了α)、每个神经元的参数裁剪(例如,神经网络的每个神经元具有其自己的α值)、每个层的参数裁剪和每个通道的参数裁剪中的每个,用图形示出每个训练时期中的训练误差的量。将α初始化为1.0,并且在该示例中不执行对于α的正则化。如可以在图形700中看到的,在该研究中,使用每个层的参数裁剪产生最低训练误差。

图7b图示根据本文中描述的一个或多个实施例的示出改变神经网络内的激活函数的范围如何影响神经网络的误差率的另一图形750。在一些示例中,图7b中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形750相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在图形750中,沿着y轴绘制验证误差752,并且沿着x轴绘制时期754。与图7a的图形700一样,图形750基于cifarresnet神经网络。鉴于图形700示出在每个训练时期中的训练误差的量,图形750对于四种不同类型的α共享-relu(其完全省略了α)、每个神经元的参数裁剪(例如,神经网络的每个神经元具有其自己的α值)、每个层的参数裁剪和每个通道的参数裁剪中的每个,示出在每个训练时期的验证误差的量。如同图形700一样,将α初始化为1.0,并且在该示例中不执行对于α的正则化。如可以在图形750中看到的,对于该研究,relu产生最低验证误差,其次是使用每个层的参数裁剪。

图8图示根据本文中描述的一个或多个实施例的示出在改变神经网络内的激活函数的范围时使用不同正则化项如何影响神经网络的误差率的图形800。在一些示例中,图8中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形800相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在图形800中,沿着y轴绘制训练误差802,并且沿着x轴绘制时期804。在图形800中,λα表示在每个训练时期中使用的正则化的量,其中λα被设置为0指示没有使用正则化。如可以在图形800中看到的,用于确定适当α的本技术在宽范围的λ值上健壮地工作。如图所示,对于给定的训练时期,在0.00001和0.1之间的λα值产生大致类似的训练误差。图形800示出使用cifarresnet激活函数的对于各种训练时期的训练误差。

图9图示根据本文中描述的一个或多个实施例的示出在改变神经网络内的激活函数的范围时使用不同正则化项如何影响神经网络的误差率的另一图形900。在一些示例中,图9中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形900相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在图形900中,沿着y轴绘制验证误差902,并且沿着x轴绘制时期904。另外,在图形900中,各种正则化值被应用于激活函数,以及利用relu的全精确度的图形。通常,较大的α给出较低的验证误差。

图10图示根据本文中描述的一个或多个实施例的示出改变神经网络内的激活函数的范围如何影响相关联的交叉熵成本函数的图形1000。在一些示例中,图10中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形1000相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

图10(以及图11和图12)可以用来说明当训练α时发生的情况。为了说明所公开的增加神经网络的效率的主题可以如何操作,可以针对街景门牌号码(svhn)数据集绘制相对于α的训练损失(交叉熵损失和包含正则化的总损失的组合)。对于图形1000(以及图形1100和图形1200),具有给定量化方案的训练模型,然后是神经网络的一个特定层的有效(sweet)α,同时固定其它变量(例如权重、所使用的位的数量和β)以计算损失函数。这里,在图形1000中,针对全精确度与α来计算损失函数。

在图形1000中,沿着y轴绘制交叉熵成本函数1002,而沿着x轴绘制α1004。如图形1000中所示,在全精确度的情况下,交叉熵损失随着α增加而收敛到相对小的值。交叉熵损失随着α增加而收敛到相对小的值指示在不采用量化的情况下,可以以相对小量的交叉熵损失来采用relu。另外,在使用全精确度的情况下,训练裁剪比例α可以帮助降低神经网络的一些层的训练成本(这里,在图形1000中示出为激活0和激活6)。

图11图示根据本文中描述的一个或多个实施例的示出改变神经网络内的激活函数的范围如何影响相关联的交叉熵成本函数的图形1100,其中激活函数的范围和一个或多个输入被量化。在一些示例中,图11中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形1100相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在图形1100中,沿着y轴绘制交叉熵成本函数1102,而沿着x轴绘制α1104。图形1100示出当权重和α两者被量化时计算的交叉熵损失。如可以在图形1100中看到的,利用量化,随着α增加,损失函数也增加,这可以指示要在相关联的神经网络中使用除relu之外的方法。如还可以在图形1100中看到的,对于不同层,提供最小化的交叉熵成本函数的α值不同。因此,可以采用训练来识别对于不同层的这些不同α值。

另外,对于某些范围的α(例如,对于激活2层,大约8.75以上的α值,在该α值以上,相关联的交叉熵损失函数大致是静态的)存在平稳段。对于某些范围的α的这些平稳段可能会阻碍梯度下降学习的使用。与图形1100中所示的其他层相比,图形1100中所示的激活6层的图形可能呈现更多的对于利用梯度下降学习的挑战。

图12图示根据本文中描述的一个或多个实施例的示出在训练期间对神经网络内的激活函数的范围进行正则化如何影响相关联的训练成本函数的图形1200。在一些示例中,图12中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形1200相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

与图11的图形1100相比,在图形1200中指示如何利用正则化来最小化(当权重和激活被量化时计算的)总损失函数。在图形1200中,沿着y轴绘制训练成本函数1202,而沿着x轴绘制α。如可以在图形1200中看到的,正则化降低了平稳段效应,这在更快和更准确地收敛于值方面促进了梯度下降学习的使用。如图形1200中所示,可以选择正则化项来减轻平稳段效应,同时还不显著地扰动全局最小点。

与图形1200的每条线相关联的实心圆指示从训练模型中提取的α的值,这指示训练在这些情况下是有效的。换句话说,比较图形1200和图形1100的曲线,可以看到随机梯度下降法可以如何在图形1200上使用,因为存在梯度。也就是说,在图形1200中用图形示出的每条线可以被认为具有独特的点,该点的值易于用随机梯度下降法来确定。值易于用随机梯度下降法来确定可能意味着,可以利用比以其他方式将利用的处理资源更少的处理资源来确定该独特的点。

图10-图12的三个图形-图形1000、图形1100和图形1200分别可以如下进行比较和对比。图形1000一般地示出,在没有完全精确度的情况下,较大的α给出较低的损失。然后,图形1100引入量化,并且示出,随着应用量化,用图形示出的曲线的形状改变。在图形1100中,较大的α给出较高的损失,因此选择使损失最小化的α值可以在曲线的中间找到,而不是在极端情况下找到。然后,图形1200引入正则化,并且用图形示出的曲线的形状再次改变。每条曲线通常具有单个最小值。通过正则化,当利用随机梯度下降法时,可以更容易地确定α值。

图13图示根据本文中描述的一个或多个实施例的示出神经网络的裁剪激活函数可以如何被训练以变成二值化激活函数的三个图形1300。在一些示例中,图13中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形1300相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

如图13中所示,除了α和β参数之外,还采用了亚分辨率和亚分辨率斜率参数(如上文参考图2所述)。通常,激活函数的输出的斜率从较平坦的斜率改变为较垂直的斜率,再改变为更垂直的斜率。随着斜率变得更垂直,相关联的激活函数的输出接近二值化激活函数(即,具有其可以输出的两个可能值的激活函数)的输出。当相关联的激活函数的输出充分地接近二值化激活函数的输出时,激活函数可以用相应的二值化激活函数来代替,以在激活函数准确度的损失相对较小的情况下对输出进行量化。

如所描绘的,激活函数可以被表达为:actfn(x)=clip(x/m+α/2,0,α),其中actfn()表示激活函数,clip()表示裁剪函数,并且m是激活的斜率(其中m值越小指示斜率越陡)。经过重复的训练时期,裁剪激活函数接近二值化。也就是说,随着m经过重复的训练时期而减小,斜率变得更陡,并且激活函数接近二值化函数。

三个图形1300由图形1302、图形1304和图形1304组成。这三个图形1300示出训练处理中的三个点,按照时间顺序发生为图形1302,然后是图形1304,然后是图形1306。在图形1302中,示出训练激活函数1308和二值化激活函数1310。在图形1304中,示出训练激活函数1312,训练激活函数1312是训练中的比训练激活函数1308更晚的点。在图形1306中,示出训练激活函数1314,训练激活函数1314是训练中的比训练激活函数1312更晚的点。注意,随着这些用图形示出的函数的斜率变陡并且接近如利用二值化激活函数1310所示的垂直斜率,m的值从训练激活函数1308减小到训练激活函数1312,再减小到训练激活函数1314。

图14图示根据本文中描述的一个或多个实施例的示出神经网络的二值化激活函数如何在测试误差方面与激活函数进行比较的图形1400。在一些示例中,图14中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形1400相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在图形1400中,沿着y轴绘制测试误差1402,而沿着x轴绘制时期。在图14中,针对两种类型的神经网络绘制了对于训练时期的测试误差—(a)采用全分辨率激活函数的混合国家标准与技术研究所深度神经网络(mnist-dnn)神经网络;以及(2)采用二值化激活函数的mnist-dnn神经网络。图形1400示出,在足够数量的训练时期(即,大约250个训练时期)之后,对于采用全分辨率激活函数的mnist-dnn神经网络和采用二值化激活函数的mnist-dnn神经网络,测试误差几乎相同。

具体地,这两种类型的神经网络被实现为多层感知(mlp)mnist神经网络,其具有784-2048-2048-2048-10个神经元的架构。对于所有三个层使用l2正则化,其中λ=1。第一层被训练200个时期,接下来的两个层被训练100个时期,然后外层被训练100个时期。

图15图示根据本文中描述的一个或多个实施例的示出神经网络的二值化激活函数如何在测试误差方面与激活函数进行比较的另一图形1500。在一些示例中,图15中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形1500相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在图形1500中,沿着y轴绘制测试误差1502,而沿着x轴绘制时期1504。与图14中类似,在图15中,针对两种类型的神经网络绘制了对于训练时期的测试误差—(a)采用全分辨率激活函数的mnist-dnn神经网络;以及(2)采用二值化激活函数的mnist-dnn神经网络。图形1500示出,在足够数量的训练时期(即,大约300个训练时期)之后,对于采用全分辨率激活函数的mnist-dnn神经网络和采用二值化激活函数的mnist-dnn神经网络,测试误差几乎相同。

具体地,这两种类型的神经网络被实现为cifar视觉几何组(vgg)神经网络,其具有128c3-128c3-mp2-256c3-256c3-mp2-512c3-512c3-mp2-1024fc-1024fc-10个神经元的架构。对于各个层使用l2和l1正则化两者,其中λtype1=0.1;λtype2=0.01;并且λtype3=0.001。每个层被训练50个时期。

图16图示根据本文中描述的一个或多个实施例的示出激活函数的范围的压缩率如何对应于相关联的测试误差的图形。在一些示例中,图16中描述的激活函数可以是图1的系统100的神经网络的激活函数。在一些示例中,与图形1600相关联的动作可以由系统100、系统200的训练组件204、或系统250的初始化组件252执行。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在图形1600中,沿着y轴绘制测试误差1602(对应于用图形示出的线1610)和压缩比1604(对应于用图形示出的线1608),并且沿着x轴绘制压缩的层的数量1606。粗略地说,随着神经网络的更多个层被二值化,存在更高的压缩率和更高的准确度损失两者。如所描绘的,将4个层二值化可以用作压缩率与测试误差之间的平衡,其中压缩率为大约77.2%,而测试误差为大约9.28%。

每个神经网络的个体特性可以影响在哪里找到层的二值化的适当数量。通常,可以选择层的二值化的数量,其中压缩率相对较高,而测试误差相对较低。

图17图示根据本文中描述的一个或多个实施例的促进提高神经网络的效率的示例性、非限制性的计算机实现的方法的流程图。为了简洁,省略了在本文中描述的其它实施例中采用的相同元件的重复描述。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在1702,可操作地耦合至处理器的设备(例如,系统100的神经网络或初始化组件202)可以选择输出限制的初始值,其中,输出限制指示神经网络的激活函数的输出的范围。例如,该设备可以确定输出限制的初始值,该输出限制可以是如在别处所描述的α,该α将被训练以确定要用于神经网络的激活函数的α的值。在一些实施例中,α的初始值可以被选择为相对较大的值,诸如32位或64位浮点数据类型的最大值。

在1704,设备(例如,系统100的神经网络或训练组件)可以在训练期间将输出限制的初始值修改为输出限制的第二值,输出限制的第二值被提供为激活函数的参数。例如,可以利用随机梯度下降法来运行多个训练时期,以确定要使用的α的值,该α的值在降低精确度与减轻由降低的精确度导致的误差率之间进行平衡。

在一些实施例中,操作1704可由训练组件实现。训练组件可以采用比激活函数组件的精确度更大的精确度。例如,训练神经网络可以在具有32位处理器的硬件上进行,并且然后经训练的神经网络可以在具有2位处理器的硬件上操作。在一些实施例中,训练组件可以采用具有比精确度组件更高的精确度的分辨率参数,并且其中训练组件采用指示亚分辨率范围内的斜率的分辨率斜率参数。在图3的图形300的描述中更详细地描述了该亚分辨率参数和分辨率斜率参数(其中它们分别被称为亚分辨率和分辨率斜率)。

在一些实施例中,训练组件在训练期间朝向无穷大增加分辨率斜率参数的值。在训练期间朝向无穷大增加分辨率斜率参数的值可以以与由图3的图形300所示的类似方式来执行。

在一些实施例中,在利用训练组件进行训练期间执行裁剪以减少由于量化而导致的准确度劣化。在训练期间执行裁剪的示例至少在图4的图形400、图5的图形500和图13的图形1300中找到。

在一些实施例中,在利用训练组件进行训练期间执行反向传播。反向传播通常用来在执行训练时期之后计算神经网络中的一个或多个神经元的误差贡献。基于反向传播,可以对于下一个训练时期调整一个或多个神经元的权重。反向传播可以与梯度下降法结合使用,其中反向传播可以用来确定损失函数的梯度。

在一些实施例中,训练组件可以包括激活函数选择组件,激活函数选择组件确定在全精确度的情况下使用修正线性单元作为激活函数,其中交叉熵损失随着输出限制增加而收敛。参考图10的图形1000,在采用全精确度的一些情况下,交叉熵损失可以随着α增加而收敛到较小值。该交叉熵损失收敛到较小值可以指示,relu可以被用作激活函数以增加不采用量化的神经网络中的效率。

在一些实施例中,训练组件可以包括激活函数选择组件,激活函数选择组件确定随着输出限制增加,损失函数也随着量化而增加,并且确定使用除了修正线性单元之外的激活函数类型的激活函数。参考图11的图形1100,利用量化,随着α增加,相应的损失函数也可以增加,这指示可采用除了relu之外的激活函数来增加神经网络中的效率。

在1706,设备(例如,系统100的神经网络或激活函数组件206)可以基于使用输出限制的第二值作为参数来确定激活函数的输出。例如,一旦神经网络已经被训练以确定将要与一个或多个激活函数一起使用的一个或多个α值,则该经训练的神经网络然后就可以利用这些(一个或多个)α值来操作,使得神经网络可以以较低的精确度操作,并且因此更高效地操作。

图18图示根据本文中描述的一个或多个实施例的促进提高神经网络的效率的另一示例性、非限制性计算机实现的方法的流程图。为了简洁,省略了在本文中描述的其它实施例中采用的相同元件的重复描述。为了简洁,省略了在各个实施例中采用的相同元件的重复描述。

在1802,可操作地耦合到处理器的设备(例如,系统100的神经网络或初始化组件252)可以初始化输出限制的值,其中,输出限制包括神经网络的激活函数的输出的范围,输出限制的值经由训练来确定。例如,可以训练神经网络以确定神经网络的至少一个激活函数的输出限制的值,该输出限制可以是如在别处描述的α,该输出限制的值在(如由该α值所指示的)降低的精确度与最小化神经网络的误差率之间进行平衡。可以通过以下步骤来训练神经网络:利用相对较大的值(例如由32位或64位数据类型表示的最大值)来初始化α,然后实施随机梯度下降法以确定在操作神经网络时要使用的α的值。

在一些示例中,系统可以在训练期间应用随机梯度下降法。至少参考图10的图形1000、图11的图形1100和图12的图形1200来描述用于确定α的值的随机梯度下降法。

在一些示例中,系统可以基于利用输出限制的初始值执行训练来确定输出限制的值。例如,系统可以将α的值初始化为由32位或64位浮点数据类型表示的最大值,然后在训练期间(例如经由随机梯度下降法)减小该值以确定要用于相应激活函数的α的值。

在一些示例中,系统可以在训练期间将输出限制正则化。至少参考图11的图形1100和图12的图形1200来描述该正则化。

在一些示例中,系统可以在训练期间执行裁剪以减少由于量化而导致的准确度劣化。在训练期间执行裁剪的示例至少在图3的图形300、图4的图形400和图13的图形1300中找到。

在一些示例中,系统可以在训练期间采用反向传播。在一些示例中,在训练过程中,系统可以确定在全精确度的情况下使用修正线性单元作为激活函数,并且其中交叉熵损失随着输出限制增加而收敛。在一些示例中,在训练过程中,系统可以确定随着输出限制增加,损失函数也随着量化而增加,并且确定使用除了修正线性单元之外的激活函数类型的激活函数。在一些示例中,系统可以在训练期间将输出限制正则化。

在一些示例中,输出限制的值大于输出限制的第二值,并且训练包括将输出限制设置为小于输出限制的初始值并且大于输出限制的第二值的多个连续值。在这样的示例中,可以在训练中采用随机梯度下降法。在输出限制的值和输出限制的第二值之间可以存在一些中间值,并且这些中间值在训练期间从输出限制减小到第二输出限制。例如,在输出限制为10并且第二输出限制为2的情况下,可以存在中间值9、6和4。在一些示例中,还可以存在大于先前中间值的中间值,尽管中间值的趋势是通过训练而减小。

在一些示例中,系统可以确定随着输出限制增加,损失函数也随着量化而增加,并且确定使用除了修正线性单元之外的激活函数类型的激活函数。在一些示例中,系统可以在训练期间执行裁剪以减少由于量化而导致的准确度劣化。

在1804,设备(例如,系统100的神经网络或激活函数组件254)可以在给定输出限制的值作为激活函数的参数的情况下确定激活函数的输出。例如,输出限制的值可以指示相应的激活函数被限制为输出在0和1之间(包括端值)变化的结果。因此,当运行激活函数以确定激活函数的输出时,该激活函数的输出可以被限制在0和1之间,包括端值,如由输出限制所指示的。

在一些示例中,激活函数利用包括以下各项的方程来表达:

在上述方程中,x和y分别表示相关联的图形的水平轴和垂直轴。α变量表示激活函数的输出的范围。对于第二图形,y相对于α的导数等于1,其中x至少为α;否则为0。

在一些示例中,激活函数的输出的范围在零与输出限制之间(包括零与输出限制),并且激活函数的输出是基于激活函数的输出在零与输出限制之间的线性函数。至少关于图3的图形300和图13的图形1300示出了这样的示例。

为了提供所公开的主题的各个方面的上下文,图19以及以下讨论旨在提供对可以实现所公开的主题的各个方面的合适环境的一般描述。图19示出可以促进本文中描述的一个或多个实施例的示例性、非限制性操作环境的框图。为了简洁,省略了在本文中描述的其它实施例中采用的相同元件的重复描述。

参考图19,用于实现本公开的各个方面的合适的操作环境1901还可包括计算机1912。在各种实施例中,系统100和神经元102-110中的每个可以是或包括计算机1912的一个或多个组件、特征和功能。计算机1912还可以包括处理单元1914、系统存储器1916和系统总线1918。系统总线1918将包括但不限于系统存储器1916的系统组件耦合到处理单元1914。处理单元1914可以是各种可用处理器中的任一种。双微处理器和其它多处理器体系结构也可用作处理单元1914。系统总线1918可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各类可用总线体系结构中的任一种的局部总线,这些总线体系结构包括但不限于工业标准体系结构(isa)、微通道体系结构(msa)、扩展isa(eisa)、智能驱动电子设备(ide)、vesa局部总线(vlb)、外围部件互连(pci)、卡总线、通用串行总线(usb)、高级图形端口(agp)、火线(ieee1094)、以及小型计算机系统接口(scsi)。系统存储器1916还可以包括易失性存储器1920和非易失性存储器1922。基本输入/输出系统(bios)包含诸如在启动期间在计算机1912内的各元件之间传输信息的基本例程,它被存储在非易失性存储器1922中。作为说明而非限制,非易失性存储器1922可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存或非易失性随机存取存储器(ram)(例如,铁电ram(feram))。易失性存储器1920还可以包括用作外部高速缓存存储器的随机存取存储器(ram)。作为说明而非限制,ram可以以许多形式获得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路dram(sldram)、直接rambusram(drram)、直接rambus动态ram(drdram)和rambus动态ram。

计算机1912还可以包括可移动/不可移动、易失性/非易失性计算机存储介质。例如,图19图示盘存储设备1924。盘存储设备1924还可包括但不限于,诸如磁盘驱动器、软盘驱动器、磁带驱动器、jaz驱动器、zip驱动器、ls-100驱动器、闪存卡、或记忆棒之类的设备。盘存储设备1924还可包括单独的或与其它存储介质组合的存储介质,包括但不限于,诸如紧致盘rom设备(cd-rom)、cd可记录驱动器(cd-r驱动器)、cd可重写驱动器(cd-rw驱动器)或数字多功能盘rom驱动器(dvd-rom)之类的光盘驱动器。为了便于盘存储设备1924连接到系统总线1918,通常使用可移动或不可移动的接口,诸如接口1926。图19还绘制了用作用户和在合适的操作环境1901中描述的基本计算机资源之间的中介的软件。这样的软件还可以包括例如操作系统1928。可被存储在盘存储设备1924上的操作系统1928用于控制和分配计算机1912的资源。系统应用1930通过例如存储在系统存储器1916或盘存储设备1924上的程序模块1932和程序数据1934,利用操作系统1928对资源进行管理。应当理解,本公开可以利用各种操作系统或操作系统的组合来实现。用户通过输入设备1936将命令或信息输入到计算机1912中。输入设备1936包括但不限于,诸如鼠标、跟踪球、指示笔、触摸垫之类的指点设备、键盘、麦克风、操纵杆、游戏垫、圆盘式卫星天线接受器、扫描仪、tv调谐卡、数码相机、数码摄像机、网络相机等等。这些和其它输入设备经由接口端口1938、通过系统总线1918连接到处理单元1914。接口端口1938包括,例如,串行端口、并行端口、游戏端口和通用串行总线(usb)。输出设备1940使用与输入设备1936相同类型的端口中的一些。因此,例如,usb端口可用来向计算机1912提供输入,并且从计算机1912向输出设备1940输出信息。提供输出适配器1942以说明除了其它输出设备1940之外,还存在一些需要特殊适配器的输出设备1940,如监视器、扬声器和打印机。作为说明而非限制,输出适配器1942包括提供输出设备1940和系统总线1918之间的连接手段的视频卡和声卡。应当注意,其它设备和/或设备的系统提供输入能力和输出能力两者,诸如远程计算机1944。

计算机1912可以使用与诸如远程计算机1944之类的一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机1944可以是计算机、服务器、路由器、网络pc、工作站、基于微处理器的电器、对等设备或其它常见的网络神经元等,并且通常还可包括针对计算机1912所描述的许多或所有元件。为了简洁起见,仅将存储器存储设备1946与远程计算机1944一起示出。远程计算机1944通过网络接口1948逻辑地连接到计算机1912,然后经由通信连接1950物理地连接。网络接口1948包括有线和/或无线通信网络,例如局域网(lan)、广域网(wan)、蜂窝网络等。lan技术包括光纤分布式数据接口(fddi)、铜线分布式数据接口(cddi)、以太网、令牌环等。wan技术包括,但不限于,点对点链路、像综合业务数字网(isdn)及其变体那样的电路交换网络、分组交换网络、以及数字用户线(dsl)。通信连接1950是指用于将网络接口1948连接到系统总线1918的硬件/软件。虽然为了清楚说明,通信连接1950被示为在计算机1912内部,但是它也可以在计算机1912外部。仅出于示例性目的,用于连接到网络接口1948的硬件/软件还可以包括内部技术和外部技术,诸如包括常规电话级调制解调器、电缆调制解调器和dsl调制解调器的调制解调器、isdn适配器和以太网卡。

本发明的实施例可以是处于任何可能的技术细节集成水平的系统、方法、装置和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。计算机可读存储介质可以是可以保持和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表还可以包括以下:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构之类的机械编码装置,以及前述的任何适当组合。如本文中所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆传递的光脉冲)、或通过导线传输的电信号。

本文中描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。用于执行本发明的各个方面的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者是以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括诸如smalltalk、c++等面向对象的编程语言以及诸如"c"编程语言或类似编程语言之类的过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,通过使用因特网服务提供商的因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令,以定制电子电路。

在本文中参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的各框的组合可以由计算机可读程序指令来实现。这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作动作,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。

附图中的流程图和框图图示根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、分段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所注明的功能可不按图中所注明的次序进行。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图的每个框以及框图和/或流程图中的各框的组合可以由执行指定功能或动作、或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。

尽管以上在运行在一个和/或多个计算机上的计算机程序产品的计算机可执行指令的一般上下文中描述了本主题,但是本领域的技术人员将认识到,本公开也可以利用其它程序模块来实现或可以结合其它程序模块来实现。通常,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域的技术人员可以理解,本发明的计算机实现的方法可以利用其它计算机系统配置来实施,包括单处理器或多处理器计算机系统、小型计算设备、大型计算机、以及计算机、手持计算设备(例如,pda、电话)、基于微处理器的或可编程的消费或工业电子产品等。所示的各方面也可以在分布式计算环境中实施,在分布式计算环境中,任务由通过通信网络链接的远程处理设备来执行。然而,本公开的一些方面,如果不是所有方面,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。

如本申请中所使用的,术语"组件"、"系统"、"平台"、"接口"等可以指代和/或可以包括计算机相关的实体或与具有一个或多个特定功能的操作机器相关的实体。本文中公开的实体可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是,但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在服务器上运行的应用和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一个计算机上和/或分布在两个或多个计算机之间。在另一示例中,相应组件可从其上存储有各种数据结构的各种计算机可读介质执行。这些组件可以经由本地和/或远程进程、例如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据,该组件经由该信号与本地系统、分布式系统中的另一个组件进行交互和/或通过诸如因特网之类的网络与其它系统进行交互)进行通信。作为另一个示例,组件可以是具有由电气或电子电路操作的机械部件提供的特定功能的装置,该电气或电子电路由处理器执行的软件或固件应用来操作。在这种情况下,处理器可以在装置的内部或外部,并且可以执行软件或固件应用的至少一部分。作为又一示例,组件可以是通过电子组件而没有机械部件来提供特定功能的装置,其中电子组件可以包括处理器或其他装置以执行至少部分地赋予电子组件的功能的软件或固件。在一方面,组件可经由例如云计算系统内的虚拟机来仿真电子组件。

此外,术语"或"旨在表示包含性的"或"而不是排他性的"或"。也就是说,除非另外指定,或者从上下文中清楚,否则"x采用a或b"旨在表示任何自然的包含性排列。也就是说,如果x采用a;x采用b;或者x采用a和b两者,则在任何前述实例下都满足"x采用a或b"。此外,除非另外指定或从上下文中清楚是指单数形式,否则如在本说明书和附图中使用的冠词"一"和"一个"一般应被解释为表示"一个或多个"。如本文中所使用的,术语"示例"和/或"示例性的"用来表示用作示例、实例或说明。为了避免疑惑,本文中公开的主题不受这些示例限制。此外,本文中被描述为"示例"和/或"示例性"的任何方面或设计不一定被解释为比其它方面或设计优选或有利,也不意味着排除本领域普通技术人员已知的等效示例性结构和技术。

如在本说明书中所采用的,术语"处理器"可以指基本上任何计算处理单元或设备,包括但不限于单核处理器;具有软件多线程执行能力的单处理器;多核处理器;具有软件多线程执行能力的多核处理器;具有硬件多线程技术的多核处理器;平行平台;以及具有分布式共享存储器的并行平台。另外,处理器可以指被设计为执行本文中描述的功能的集成电路、专用集成电路(asic)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑控制器(plc)、复杂可编程逻辑器件(cpld)、分立门或晶体管逻辑、分立硬件组件或其任意组合。此外,处理器可以采用纳米级架构,例如但不限于基于分子和量子点的晶体管、开关和门,以便优化空间使用或增强用户设备的性能。处理器也可以被实现为计算处理单元的组合。在本公开中,诸如"存储"、"存储设备"、"数据存储库"、"数据存储设备"、"数据库"以及与组件的操作和功能有关的基本上任何其他信息存储组件之类的术语被用来指代"存储器组件"、在"存储器"中体现的实体或包括存储器的组件。应了解,本文中描述的存储器和/或存储器组件可为易失性存储器或非易失性存储器,或可包括易失性存储器和非易失性存储器两者。作为说明而非限制,非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除rom(eeprom)、闪存或非易失性随机存取存储器(ram)(例如,铁电ram(feram))。例如,易失性存储器可包括ram,ram可用作外部高速缓存存储器。作为说明而非限制,ram可以以许多形式获得,诸如同步ram(sram)、动态ram(dram)、同步dram(sdram)、双倍数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路dram(sldram)、直接rambusram(drram)、直接rambus动态ram(drdram)和rambus动态ram(rdram)。

以上描述的内容仅包括系统和计算机实现的方法的示例。当然,不可能为了描述本公开而描述组件或计算机实现的方法的每个可想到的组合,但是本领域的普通技术人员可以认识到,本公开的许多其他组合和排列是可能的。此外,就术语"包括"、"具有"、"拥有"等在说明书、权利要求书、附录和附图中使用来说,这样的术语以与术语"包含"在权利要求书中用作过渡词时被解释的类似的方式旨在是包含性的。已经出于说明的目的呈现了对各种实施例的描述,但是不是旨在是穷举的或限于所公开的实施例。在不偏离权利要求的范围的情况下,许多修改和变型对于本领域的普通技术人员来说是明显的。选择本文中所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术的技术改进,或使本领域的其他普通技术人员能够理解本文中所公开的实施例。

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