卷积神经网络 背景技术 [0001] 人工神经网络包括以人脑和神经系统为模型的计算机系统。这样的网络可以使得计算机能够从观测数据和训练集学习,从而使得计算机能够以有效的方式执行期望的任务。 附图说明 [0002] 图1示出了根据一个或多个示例实施例的计算系统的示意图。 [0003] 图2示出了根据一个或多个示例实施例的包括输入设备的计算系统的示意图。 [0004] 图3示出了根据一个或多个示例实施例的包括多个输入设备的计算系统的示意图。 [0005] 图4示出了根据一个或多个示例实施例的具有划分的第一部件处理的计算系统的示意图。 [0006] 图5示出了根据一个或多个示例实施例的用于使用卷积神经网络来处理数据的方法的框图。 [0007] 图6示出了根据一个或多个示例实施例的用于优化卷积神经网络的方法的框图。 [0008] 图7示出了根据一个或多个示例实施例的可以使用的通用计算系统的示意图。 具体实施方式 [0009] 参考附图详细描述了一个或多个示例实施例。为了一致性,各个附图中的相似的元件由相似的附图标记来表示。在下面的详细描述中,阐述了具体细节以便提供对以下所要求保护的主题的透彻理解。在其他情况下,没有描述对于得益于本公开的本领域普通技术人员而言众所周知的特征,以避免使得对所要求保护的主题的描述不清楚。 [0010] 卷积神经网络包括但不限于用于图像和视频识别、波形分析、人类行为分析、网络安全中的恶意模式检测、传感器异常检测、网络业务、机器学习和各种其他功能的计算范例等。这样的网络可用于处理可以以一维、二维或三维输出的数据。卷积神经网络需要每秒数万亿次的数量级的乘法和累加操作的大型计算能力。这样的网络是数据处理的强大工具,但是,从每瓦特操作的角度来看,这样的网络相对昂贵。因此,减少卷积神经网络的每瓦特操作的装置、系统和方法可以提供通过卷积神经网络进行的对数据集合的更有效处理。 [0011] 可以使用各种加速器来加速神经网络干扰和训练,各种加速器包括图形处理单元、现场可编程门阵列、单指令多数据计算、张量处理单元等。使用卷积神经网络的这样的加速器的性能可能受到调度开销和以高速移动来自片上(on-die)缓存和片外(off-die)存储器的数据的需求的阻碍。因此,本公开的实施例可以划分卷积神经网络,使得权重因子本地存储在网络的第一部件中,从而不需要从连续输入数据集合之间的缓存或外部存储器进行更新。因此,对权重因子的划分和这样的权重因子集合的本地存储可以提高处理速度和/或减少计算过程的操作费用。 [0012] 转到图1,示出了计算系统的示意图。在该实施例中,示出了具有卷积神经网络的第一部件105的卷积神经网络系统100,该第一部件具有初始处理器115。卷积神经网络系统 100还包括卷积神经网络的第二部件110,该第二部件包括主计算系统120。初始处理器115经由连接125可操作地连接到主计算系统120,这部分内容将在下文进行详细讨论。初始处理器115可以包括各种类型的加速器,而主计算系统120可以包括各种类型的中央处理单元、图形处理单元、加速器等。 [0013] 在一个实施例中,初始处理器115例如可以包括介质上的存储器侧加速器、节点控制器专用集成电路(“ASIC”)、或通过存储器结构(fabric)(未示出)连接125到主计算系统 120的其他处理器。在第二实施例中,初始处理器115例如可以包括集成在芯片或ASIC上的可以在各种边缘设备例如网络接入点/网关、成像设备、制造控制设备等)中使用的加速器宏块。在第二实施例中,初始处理器115可以与主计算系统120位于同一硅片上。在第三实施例中,初始处理器115可以位于通过有线或无线局域网连接到数据网关、聚合的物联网系统接入点或云数据中心的边缘设备上。在这样的实施例中,网关或数据中心包括主计算系统 120。 [0014] 卷积神经网络包括多个卷积层和少量全连接层,以从输入数据集合提取期望的特征并生成输出分类标签上的分布。每个网络层的输出组成由d2个通道构成的特征图,其中,每个通道尝试从来自前一层的d1个输入通道提取某些原始特征。在模型训练期间学习到的由前一层提取的多个特征加权构成的组合帮助识别后一层中的更高级的特征。在许多层上重复此操作使得网络能够识别来自数据集合的复杂特征。 [0015] 在每个卷积层中,通过利用滤波器对输入特征图进行卷积来执行映射,该滤波器以沿x维度为sx的步长和沿y维度为sy的步长在输入域上步进。滤波器大小沿每个通道维度相对较小。在使用图像和视频识别的一个示例中,输入量可以由x*y像素图像域的3个通道(RGB)构成,其中,第一层滤波器可以处理xf*yf=7*7像素的接受域,并通过以sx=sy=2像素的步长在输入域上步进来将输入量映射到64个通道。通常,每层中的权重因子的数量多达d1*xf*yf*d2(如果滤波器在所有d1个输入通道上操作),假设未对输入数据执行填充,数据输出大小为(x-xf)*(y-yf)/((sx+1)*(sy+1))*d2,并且乘法累加操作的数量约为d1*xf*yf*(x-xf)*(y-yf)/((sx+1)*(sy+1))*d2,其中,这些操作占神经网络计算时间中的大部分。随着网络深度从前一层到后一层推进,输入域x和y随着层数而减少,并且通道数d1增加。然而,xf*yf的接受域相对恒定,或者可以从7*7或11*11减少到3*3或5*5。因此,每层的计算操作的数量通常随着层数在减少,并且权重因子的数量随着层数在增加。 [0016] 本公开的实施例将卷积神经网络系统100划分为两个部分105和110,从而允许使用对权重因子的划分通过不同的部分105和110来处理输入数据。网络系统100被划分为两个部分105和110,并且每个部分105和110映射到不同的硬件上,其中,第一部件105包括前几个网络层。得益于本公开的本领域普通技术人员将理解,映射到第一部件105的层的数量可以根据对特定系统100的需求而变化。例如,在一个实施例中,可以将一层映射到第一部件105,而在另一个示例中,可以将两层、三层、四层、五层或更多层映射到第一部件105。在某些实施例中,可以将多于五层、诸如十层或更多层映射到第一部件105。 [0017] 因此,在第一部件110中进行处理之后,主计算系统120可以负责评估第二部件110中的数据。因此,第二部件110可以包括计算神经网络的分类层,并且可以根据网络的参数提供分类的数据集合作为输出。通过在第一部件105和第二部件110之间划分处理,可以减少由主计算系统120所需的处理能力,同时提高效率。 [0018] 为了确定对权重因子的优化的划分,即划分点,考虑实施方式的类型以及可用的硬件。例如,对于成本敏感的边缘或存储器侧加速器硬件,可以选择划分点使得加速器处理超过50%的计算工作,但使用所有权重因子中的少于10%的权重因子。在这样的系统100中,计算的第一部件105可以由媒体控制器ASIC来执行或者在优化用于本地存储权重因子的计算块中的边缘设备中执行。因此,在该系统100中,主计算系统120将负责较少的计算工作,从而提高系统100的计算性能。 [0019] 在另一个实施例中,当高性能存储器侧加速器硬件或边缘设备可用时,可以选择不同的划分点,其中,第一部件105处理更多的计算工作但使用较少的权重因子。例如,在这样的系统中,第一部件105可以使用超过50%的权重因子,但是处理超过90%的计算工作。 [0020] 对优化的划分点的选择可以取决于各种划分点参数,例如可以包括可用于权重因子的本地存储量、期望的性能速度、期望的性能速度增加、权重因子准确度以及对于得益于本公开的本领域普通技术人员而言已知的其他这样的参数。 [0021] 示例性划分点可以包括使用10%、20%、30%、40%、50%、60%、70%、80%或90%的权重因子的第一部件105和使用剩余的权重因子的第二部件110。在其他实施例中,划分点可以落入范围内,其中,第一部件105使用5-25%、25-40%、40-65%、65-85%或85-95%的权重因子,并且第二部件110使用剩余的权重因子。通过改变划分点,可以优化由初始处理器115和主计算系统120所需的计算能力,从而为系统100提供增强的处理。 [0022] 参考图2,示出了计算系统的示意图。在该实施例中,卷积神经网络系统100包括连接到主计算系统120的能够捕获数据的设备130。设备130的示例可以包括相机、电话、麦克风、制造自动化系统以及其他捕获数据用于处理的设备。在该实施例中,设备130包括初始处理器115,例如以上关于图1所描述的那些。设备130还包括可操作地连接到初始处理器 115的至少一个存储器135。存储器135的示例可以包括SDRAM、DDR、Rambus DRAM、ReRAM或可与本文所公开的设备和系统一起使用的任何其他类型的存储器。存储器135用于将权重因子集合本地存储在设备130上,从而使初始处理器115能够访问权重因子集合,而不必访问其他设备、外部存储器存储或下载外部存储的数据。 [0023] 设备130也可操作地连接125到主计算系统120。主计算系统120可以包括具有通用计算机处理或图形处理单元以及张量处理单元或现场可编程门阵列加速器的工作站。连接 125可以通过诸如以太网的有线连接,或者可以是无线的。 [0024] 在操作期间,设备130可以收集来自外部源的数据,例如,可以拍摄原始图像数据格式的照片。从而,原始图像数据可以传输到位于设备130上或紧邻设备130的初始处理单元115。然后,可以使用存储于存储器135上的权重因子集合来处理原始图像数据,以产生经处理的数据集合。然后,经处理的数据集合可以从用作系统100的第一部件105的设备130输出到包括主计算系统120的第二部件110。然后,第二部件110使用权重因子集合的第二部分,并且处理经处理的输出数据以产生最终产品。 [0025] 在该实施例中,系统100的第一部件105全部在设备130上处理。因此,如上所述,设备130负责对前几层的处理。第一部件105和第二部件110之间的划分点可以按照在单个设备130和/或主计算系统120中可用的硬件的需求和如以上所详细讨论的方式来划分。在这样的实施例中,第一部件105处理前几层可以是有益的,前几层在计算上更加密集,从而降低了第二部件110的计算功率。另外地,由于第一部件105处理在计算上密集的部分,因此可以需要较少的带宽来将经处理的数据从第一部件105传输到第二部件110。 [0026] 参考图3,示出了计算机系统的示意图。在该实施例中,卷积神经网络系统100包括第一部件105和第二部件110。第一部件105可以包括多个设备130,例如以上关于图2所描述的那些。在该实施例中,数据由每个设备130捕获。每个设备130包括加速器或其他初始处理器(图1和图2的115),该加速器或其他初始处理器可以访问本地存储的权重因子集合,例如可以是存储于存储器(图2的135)上的权重因子集合。如上所述,当每个设备130正在捕获数据时,可以由每个设备130单独处理数据以求解神经网络的前几层。在由设备130处理数据之后,来自每个设备130的经处理的数据可以经由连接125传输到主计算系统120。因此,来自多个设备130的经处理的数据可以由卷积神经网络的第二部件110中的主计算系统120共同地处理。 [0027] 这样的系统100的示例可以包括围绕车辆的外围布置的多个相机。每个相机可以捕获图像数据并处理数据的前几层,以形成卷积神经网络的第一部件105。在相机处理前几层之后,经处理的数据单独地或作为合并的分组流发送到主计算系统120。此后,主计算机系统120可以处理数据以完成卷积神经网络的第二部件110,从而提供经处理的数据作为输出数据。 [0028] 图3中公开的系统100的变型可以包括以上关于图1和图2所讨论的那些系统中的任何系统。 [0029] 参考图4,示出了计算系统的示意图。在该实施例中,卷积神经网络系统100包括第一部件105和第二部件110,其中,数据集合首先输入到第一部件105中。第一部件105可以包括中央处理单元140,该中央处理单元140在接收到数据集合后将数据传播到诸如远侧存储器控制器的存储器控制器145。在该实施例中,示出了两个远侧存储器控制器145。然而,在其他实施例中,可以使用一个、三个、四个或多于四个远侧存储器控制器145。 [0030] 远侧存储器控制器145中的每一个远侧存储器控制器可以包括加速器,例如以上所讨论的那些,以及用于存储权重因子集合的图2的存储器135。权重因子集合对于每个单独的远侧存储器控制器145而言可以是唯一的,或者权重因子集合可以实质上相同。另外地,每个远侧存储器控制器145可以具有用于存储权重因子集合的唯一的存储器,或者两个或更多个远侧存储器控制器可以共享一个或多个存储器模块。在这样的实施例中,可以相对于将访问单独的存储器模块的远侧存储器控制器145,将存储器模块放置在位。 [0031] 在该实施例中,可以将输入数据发送到第一部件105并由中央处理单元140处理。 如本文所使用的,中央处理单元140可以包括任何类型的处理器,包括任何上述的这样的处理器。然后,处理器将图像数据分配到单独的远侧存储器控制器145。然后,远侧存储器控制器145可以使用权重因子集合来处理图像数据,该权重因子集合存储于由远侧存储器控制器145可访问的存储器中。在这样的实施例中,如以上所详细讨论的那些,权重因子集合存储于本地可访问的存储模块中,从而允许每个远侧存储器控制器145访问权重因子集合而不必访问外部数据。在该实施例中,可以将输入数据中的所有输入数据以批的形式提供给远侧存储器控制器145中的每个远侧存储器控制器,从而允许每个远侧存储器控制器145处理全部数据集合。然后可以将针对每个远侧存储器控制器145的经处理的数据发送到主计算系统120以执行计算的最后一层或多层,从而输出对由远侧存储器控制器145提供的数据集合中的每个数据集合的分类。 [0032] 在某些实施例中,可以将输入数据划分成多个数据子集,其在本文中可以称为裁剪。数据子集中的一个数据子集可以发送到单个远侧存储器控制器145,而其他数据子集可以发送到其他远侧存储器控制器145。这样,可以有效地在远侧存储器控制器145之间划分输入数据,使得每个远侧存储器控制器145处理输入数据的不同部分。 [0033] 在由远侧存储器控制器145处理输入数据之后,将经处理的数据输出到主计算机系统120以用于第二部件的处理。在某些实施例中,经处理的数据直接从远侧存储器控制器 145发送到主计算系统120,而在其他实施例中,经处理的数据从远侧存储器控制器145发送到诸如中央处理器处理单元140的间歇处理器。然后,来自每个远侧存储器控制器145的数据子集可以由主计算系统重组和处理,以用于卷积神经网络的最后一层或多层,从而允许主计算系统120对数据进行分类。 [0034] 在不同的实施例中,如上所述,可以将输入数据发送到中央处理单元140。然而,作为将输入数据划分为单独的数据子集的代替,可以将输入数据有效地裁剪为子组件,也称为划分的裁剪。然后,每个子组件可以被发送到不同的远侧存储器控制器145以进行处理。 这样的实施例的示例可以包括使用单个图像作为输入数据。然后,中央处理单元140可以将图像切成多个垂直和水平限定的子组件,并且每个远侧存储器控制器可以负责处理这些子组件中的一个。 [0035] 在远侧存储器控制器145处理每个子组件之后,可以将子组件发送到主计算系统 120,并且主计算系统120可以对每个子组件单独地分类。主计算系统120可以单独地保留每个子组件的分类,或者可以随后将子组件重组为包含来自每个子组件的分类数据的输出数据作为单个数据集合,或者在以上提供的示例中作为单个分类的图像。 [0036] 参考图5,示出了处理数据的方法的框图。本公开的实施例可以通过在卷积神经网络的硬件部分之间拆分权重因子集合来允许更有效地处理数据。初始地,该方法可以包括将数据集合输入到卷积神经网络的第一部件中(150)。权重因子集合的第一部分存储于卷积神经网络的第一部件中。在输入之后,可以使用权重因子集合的第一部分在卷积神经网络的第一部件中处理数据集合(155)。 [0037] 在处理(155)之后,经处理的数据可以从卷积神经网络的第一部件输出到卷积神经网络的第二部件(160)。在输出(160)之后,可以利用权重因子集合的第二部分在卷积神经网络的第二部件中对经处理的数据重新处理(165)。因此,前几层由第一部件处理,而其余由第二部件处理。 [0038] 在某些实施例中,在卷积神经网络的第一部件中处理数据集合可以包括将数据集合分发到布置在卷积神经网络的第一部件中的多个模块。可以将分发的数据分配到一个或多个加速器,该一个或多个加速器具有存储于其上的权重因子中的全部或部分权重因子。 因此,第一部件可以利用一个或多个加速器来处理数据集合。 [0039] 在其他实施例中,在卷积神经网络的第一部件中处理数据集合可以包括将数据集合裁剪为多个数据集合,并对多个数据集合中的每个数据集合分类。在该实施例中,可以将数据集合裁剪为多个较小的输入域,从而允许对每个裁剪分别地分类。在数据集合的分类特征占据输入域的很大部分并且单独的裁剪不包含足够的信息以提供有用的输出的场景下,这样的实施例可以是有用的。 [0040] 在另一个实施例中,在卷积神经网络的第一部件中处理数据集合可以包括将数据集合裁剪为多个数据集合,处理多个数据集合中的每个数据集合,并且在将经处理的数据输出到卷积神经网络的第二部件之前,至少部分地组合经处理的多个数据集合。在该实施例中,来自多个裁剪的经处理的数据可以有部分重叠,使得完整的接受域被包括在裁剪中。 [0041] 用于处理数据的方法还可以包括:为权重因子集合限定划分点,其中,划分点限定权重因子集合的第一部分中的权重因子的数量和权重因子集合的第二部分中的权重因子的数量。划分可以使用表示第一部分中的权重因子的数量相对于第二部分中的权重因子的数量的相对百分比,或者可以使用实际数量。 [0042] 如以上所详细讨论的,相对权重因子划分的各种排列都可以是适用的,诸如例如,卷积神经网络的第一部件包含不超过10%的权重因子。在这样的实施例中,卷积神经网络的第一部件可以包括至少50%的计算工作。在其他实施例中,划分点将权重因子集合划分为在卷积神经网络的第一部件中包括50%或更少的权重因子。在该实施例中,卷积神经网络的第一部件可以包括至少90%的计算工作。得益于本公开的本领域普通技术人员将理解,基于系统的操作参数,各种其他划分可以是有用的。 [0043] 参考图6,示出了优化卷积神经网络的方法的框图。优化卷积神经网络通常是指确定处理操作的需求并调整网络内的参数,以便在正在使用的硬件的限制内实现期望的功能。如以上关于计算系统所描述的,为了优化卷积神经网络,将网络分为第一部件和第二部件(170)。网络的第一部件包括初始数据处理,并且网络的第二部件包括最终数据处理。如前所述,初始数据处理可以包括运行对前几层的处理,而最终数据处理可以包括将最终数据分类为期望的数据集合。 [0044] 在分开网络之后,权重因子集合存储于卷积神经网络的第一部件上(175)。例如,权重因子集合可以存储于用于特定设备的存储器模块上,或者作为存储器模块的部分存储在远侧存储器控制器或其他类型的存储器控制器上。由于权重因子集合存储在位,额外的处理可以相对于网络的第二部件移动到网络的第一部件。 [0045] 权重因子集合可以基于一个或多个划分参数来划分(180)。划分参数的示例可以包括初始处理能力,该初始处理能力是指网络的第一部件中的一个或多个处理器/加速器的处理能力。另一划分参数可以是最终处理能力,该最终处理能力是指主计算系统中的一个或多个处理器的处理能力。其他划分参数可以包括网络内的层的数量、网络的第一部件中的存储器模块的存储容量、权重因子集合的数量以及期望的处理速度。另外地,划分点可以通过确定可用的最大计算能力与期望的处理速度的比率来确定。在这样的实施例中,可以通过确定以下各项中的一个或多个来选择可用的最大计算机能力:初始处理能力、最终处理能力、层的数量、存储容量、权重因子集合的数量或任何其他划分参数。比率可以通过确定期望的处理速度来完成,该期望的处理速度通过评估卷积神经网络的第一部件的处理速度、卷积神经网络的第二部件的处理速度、总系统处理速度和任何其他划分参数来确定。 因此,可以基于期望的速度来调整该比率以优化在卷积神经网络系统中可用的计算能力,以实现期望的效率。该相同的方法学还可以用于优化卷积神经网络系统,以优化其他期望的最终结果,例如计算能力、处理速度、每瓦特性能、处理时间或其他基于应用的期望的最终结果。 [0046] 在某些实施例中,相对于第二部件,更高百分比的权重因子集合可以放置在卷积神经网络的第一部件上(190)。在一个示例中,系统可以包括网络的第一部件中的相对较低的处理能力,而网络的第二部件具有相对鲁棒的处理速度。在这样的实施例中,相对较少数量的权重因子集合可以移动到网络的第一部件并存储于网络的第一部件上。例如,通过将 10%或更少的权重因子集合移动到网络的第一部件,50%或更多的计算工作仍可以由网络的第一部件来实现,同时允许网络的相对鲁棒的第二部件利用减少的计算工作来处理更多的权重集。类似地,第一部件的高处理能力可以允许在第一部件上处理更多的权重因子,同时减少网络的第二部件的计算工作。 [0047] 在类似的优化中,用户可以限定用于期望的计算能力的第一阈值和用于权重因子的第二阈值,使得划分点可以基于系统性能中的相对改善来确定,该系统性能基于这些值的比率。例如,用于计算能力的最大阈值可以基于硬件限制或其他划分参数限制来选择。因此,该阈值可以表示对卷积神经网络而言可用的最大可用计算机能力。在确定可用的最大计算能力之后,可以选择所需的用于最小权重因子的第二个值。在选择用于计算能力的最大阈值和最小权重因子值之后,可以在卷积神经网络上运行一系列操作,以便确定是否可能在不降低计算性能的情况下将更多的层移动到神经网络的第一部件。类似地,可以测试将更多的层移动到神经网络的第二部件,以确定由神经网络的第一部件和神经网络的第二部件两者处理的层的最优分割。因此,可以通过分别设置用于计算能力和权重因子的最大值和最小值来确定划分点,从而提高卷积神经网络系统的总体计算性能。 [0048] 处理能力的划分可以基于净期望速度以及网络的硬件限制来调整。优化卷积神经网络的其他方法可以是通过使用以上所详细讨论的批处理、裁剪处理和划分的裁剪处理的。通过修改网络的第一部件或第二部件上的物理组件,可以使用以上列出的处理技术中的一种或多种来进一步提高卷积神经网络的操作效率。例如,在对一批图像数据进行批处理或裁剪处理期间,或者在将数据单独地划分并处理时,卷积神经网络的第一部件可以通过增加存储器的存储容量和/或加速器的处理能力来优化,以便在神经网络的第一部件中处理计算密集层中的更多计算密集层。因此,可以降低对卷积神经网络的第二部件的处理能力的鲁棒性要求,从而提高了系统的效率。 [0049] 在第二示例中,当使用划分裁剪处理时,在卷积神经网络的第二部件中具有更多的计算能力可以是有益的,从而为整个系统提供更多的计算能力以在主计算系统中对图像进行重编和分类。通过改变卷积神经网络的第一部件中的计算能力相对于卷积神经网络的第二部件中的计算能力的比率,可以从而根据应用需求来优化系统。 [0050] 在另一个实施例中,在存在存储器和时间约束的情况下,划分点可以基于优化计算来确定,以找到针对不同输入数据大小的优化划分点。例如,划分点可以取决于是否期望同时处理一个或多个图像而变化。为了优化计算神经网络的第一部件,可以提供一种算法,该算法确定在神经网络第一部件中处理数据所花费的时间、确定第一部件中所需的存储器、限定用于第一部件中的计算的层,并且然后处理多个迭代。然后,可以针对每层,对层浮点运算数(flops)即每区段浮点操作数进行计数,可以为每层确定处理时间,并且可以计算每层的存储器需求。然后,可以评估所需的时间量和/或存储器,以确定所需的时间量和/或存储器是否满足应用的约束。该过程可以是对每个随后的层进行计算,其中,更新针对神经网络的第一部件的计算时间和存储器需求,并且随后添加一层或多层,直到违反时间或存储器要求为止。因此,可以基于操作的存储器和/或时间需求来为输入的数据集合确定层的最大数量。 [0051] 在某些应用中,各种计算系统及其组件可用于实施本文所公开的装置、系统和方法。为了完整起见,下面详细讨论可以与本文所讨论的实施例一起使用的具有选择组件的示例性计算系统。 [0052] 图7示出了根据本发明的一个或多个实施例的计算系统200。计算系统200可以包括布置在一个或多个印刷电路板(未另外示出)上的一个或多个中央处理单元(单个“CPU”或多个“CPU”)205。一个或多个CPU 205中的每一个CPU可以是单核处理器(未单独示出)或多核处理器(未单独示出)。多核处理器通常包括布置在同一物理片(未示出)上的多个处理器核(未示出)或布置在多个片(未示出)上的多个处理器核(未示出),该多个片共同布置在同一机械封装(未示出)内。计算系统200可以包括一个或多个核逻辑设备,诸如例如主机桥 210和输入/输出(“IO”)桥215。 [0053] CPU 205可以包括到主机桥210的接口208、到系统存储器220的接口218和到一个或多个IO设备诸如图形处理单元(“GFX”)225的接口223。GFX 225可以包括一个或多个图形处理器核(未单独示出)和到显示器230的接口228。在某些实施例中,CPU 205可以集成GFX 225的功能,并且与显示器230直接接口连接(未示出)。主机桥210可以包括到CPU 205的接口208、到IO桥215的接口213,针对CPU 205不包括到系统存储器220的接口218的实施例,包括到系统存储器220的接口216,以及针对CPU 205不包括集成的GFX 225或到GFX 225的接口223的实施例,包括到GFX 225的接口221。本领域普通技术人员将认识到,CPU 205和主机桥210可以全部或部分地集成,以减少芯片计数、主板占用空间(footprint)、热设计功率和功率消耗。IO桥215可以包括到主机桥210的接口213、到一个或多个IO扩展设备235的一个或多个接口233、到键盘240的接口238、到鼠标245的接口243、到一个或多个本地存储设备 250的接口248以及到一个或多个网络接口设备255的接口253。 [0054] 每个本地存储设备250可以是固态存储器设备、固态存储器设备阵列、硬盘驱动器、硬盘驱动器阵列或任何其他非暂态计算机可读介质。每个网络接口设备255可以提供一个或多个网络接口,包括例如以太网、光纤通道、WiMAX、Wi-Fi、蓝牙或适合于促进网络通信的任何其他网络协议。除了或代替一个或多个本地存储设备250,计算系统200可以包括一个或多个网络附接的存储设备260。网络附接的存储设备260可以是固态存储器设备、固态存储器设备阵列、硬盘驱动器、硬盘驱动器阵列或任何其他非暂态计算机可读介质。网络附接的存储设备260可以或可以不与计算系统200并置,并且可以经由通过一个或多个网络接口设备255提供的一个或多个网络接口可由计算系统200访问。 [0055] 本领域普通技术人员将认识到,计算系统200可以包括一个或多个专用集成电路(“ASIC”),该一个或多个专用集成电路被配置为以更有效的方式来执行某种功能诸如例如散列(未示出)。一个或多个ASIC可以直接与IO桥215、主机桥210或CPU 205的接口进行接口连接。可替代地,有时称为挖掘系统的专用计算系统(未示出)可以简化为仅仅执行期望的功能——例如经由一个或多个散列ASIC进行散列——所必需的那些组件,以减少芯片计数、主板占用空间、热设计功率和功率消耗。这样,本领域普通技术人员将认识到,根据本发明的一个或多个实施例,一个或多个CPU 205、主机桥210、IO桥215或ASIC或各种子集、超集或其功能或特征的组合可以全部或部分地集成,或者以可以基于应用、设计或形状因子而变化的方式分布在各种设备之间。这样,对计算系统200的描述仅仅是示例性的,并且不旨在限制构成适合于执行计算操作——包括但不限于散列函数——的计算系统的组件的类型、种类或配置。另外地,本领域普通技术人员将认识到,计算系统200、专用计算系统(未示出)或其组合可以以独立式、桌面型、服务器或机架可安装的形状因子式布置。 [0056] 本领域普通技术人员将认识到,根据本发明的一个或多个实施例,计算系统200可以是基于云的服务器、服务器、工作站、桌面型、膝上型、上网本、平板电脑、智能电话、移动设备和/或任何其他类型的计算系统。 [0057] 当使用神经网络时,网络通过多个步骤或训练过程来训练和验证。在训练期间,输入/输出模式集在神经网络上重复。由此过程,调整神经元之间的互连的权重,直到输入产生期望的输出为止。训练神经网络通常包括向神经网络提供训练数据集合,该训练数据集合包括已知输入变量和与输入变量相对应的已知输出变量。然后,神经网络可以在输入变量和输出变量之间建立一系列神经互连和权重链接。通过训练,神经网络随后可以基于输入变量集来预测输出变量值。 [0058] 为了训练用于特定任务的人工神经网络,训练数据集合可以包括诸如图像参数的已知输入变量和诸如相对应的图像参数的已知输出变量。在训练之后,可以通过输入原始图像数据使用神经网络来确定未知的相对应的图像参数。然后可以根据以上所详细描述的方法来处理原始图像数据,随后输出关于图像的经处理的数据、相对应的图像数据、寓言(allegory)或由神经网络导出的其他数据。 [0059] 得益于本公开的本领域普通技术人员将理解,存在可以与本文所公开的实施例一起使用的用于训练神经网络的各种方法。因此,训练神经网络可以包括输入各种数据集合、经验信息、从先前的仿真中导出的数据等。 [0060] 应当理解,前述概念(假设这样的概念不相互矛盾)的所有组合被认为是本文所公开的发明主题的一部分。具体地,出现在本公开的结尾处的所要求保护的主题的所有组合被认为是本文所公开的发明主题的一部分。还应理解,本文明确采用的、也可能出现在通过引用并入的任何公开中的术语应被赋予与本文所公开的特定概念最一致的含义。 [0061] 尽管已经结合各种示例描述了本教导,但是并不旨在将本教导限于这样的示例。 上述示例可以以多种方式中的任何方式来实施。例如,一些示例可以使用硬件、软件或其组合来实施。当示例的任何方面至少部分地以软件实施时,软件代码可以在任何适合的处理器或处理器的集合上执行,无论该任何适合的处理器或处理器的集合是在单个计算机中提供还是在多个计算机之间分布。 [0062] 本文所描述的各种示例可以至少部分地体现为非暂态机器可读存储介质(或多个机器可读存储介质),例如计算机存储器、软盘、紧凑盘、光盘、磁带、闪存、现场可编程门阵列或另一种半导体设备中的电路配置、或利用至少一种机器可读指令编码的另一种有形的计算机存储介质或非暂态介质,该至少一种机器可读指令当在至少一个机器(例如,计算机或其他类型的处理器)上执行时,使得至少一个机器执行实施本文所讨论的技术的各种示例的方法。一个或多个计算机可读介质可以是可移动的,使得存储于其上的一个或多个程序可以加载到至少一个计算机或其他处理器上,以实施本文所描述的各种示例。 [0063] 本文在一般意义上采用术语“机器可读指令”来指代可以用以使得机器(例如,计算机或另一类型的处理器)实施本文所描述各种示例的任何类型的机器代码或机器可执行指令集。机器可读指令可以包括但不限于软件或程序。机器可以指代专门设计用于执行所描述的一个或多个功能的计算机或另一类型的处理器。另外地,机器可读指令在被执行以执行本文所描述的方法时无需驻留在单个机器上,而是可以以模块化的方式分布在多个不同的机器之间以实施本文所描述的各种示例。 [0064] 机器可执行指令可以采用由至少一个机器(例如,计算机或另一类型的处理器)执行的许多形式,例如程序模块。通常,程序模块包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,对程序模块的操作可以在各种示例中按照需要进行组合或分布。 [0065] 本文所描述的技术也可以体现为一种方法,已经提供了该方法的至少一个示例。 作为该方法的部分而执行的动作可以以任何适合的方式排序。因此,即使在说明性示例中作为顺序动作示出,也可以构造以与示出的顺序不同的顺序来执行动作的示例,该示例可以包括同时执行一些动作。 [0066] 一个或多个示例实施例的优点可以包括以下中的一个或多个: [0067] 在一个或多个示例实施例中,本文所公开的装置、系统和方法可以用于提高卷积神经网络的每瓦特性能。 [0068] 在一个或多个示例实施例中,本文所公开的装置、系统和方法可以用于在卷积神经网络上更有效地处理数据。 [0069] 在一个或多个示例实施例中,本文所公开的装置、系统和方法可以用于减少在卷积神经网络上的处理时间。 [0070] 尽管已经关于上述实施例描述了要求保护的主题,但是,得益于本公开的本领域技术人员将认识到,可以设计在如由本文所公开的示例实施例所说明的以下权利要求的范围内的其他实施例。因此,所寻求的保护的范围应仅由所附权利要求书限制。