首页> 中国专利> 神经网络处理器中的批处理

神经网络处理器中的批处理

摘要

本公开涉及神经网络处理器中的批处理。用于针对多个输入中的每个生成相应的神经网络输出的方法、系统和装置,包括在计算机存储介质上编码的计算机程序,所述方法包括,针对神经网络层的每个:接收要在所述神经网络层进行处理的多个输入;从所述多个输入形成输入的一个或多个批,每个批具有达到所述神经网络层的相应的批大小的多个输入;选择输入的所述一个或多个批中的多个进行处理,其中所述一个或多个批中的多个的输入的计数大于或等于按顺序的后续层的相应的相关联批大小;以及对所述一个或多个输入批中的多个进行处理以生成相应的神经网络层输出。

著录项

  • 公开/公告号CN112465131A

    专利类型发明专利

  • 公开/公告日2021-03-09

    原文格式PDF

  • 申请/专利权人 谷歌有限责任公司;

    申请/专利号CN202011246313.7

  • 发明设计人 雷吉纳尔德·克利福德·扬;

    申请日2016-05-03

  • 分类号G06N3/063(20060101);G06N3/08(20060101);G06F15/80(20060101);

  • 代理机构11219 中原信达知识产权代理有限责任公司;

  • 代理人周亚荣;邓聪惠

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:08:35

说明书

分案说明

本申请属于申请日为2016年5月3日的中国发明专利申请201680020154.4的分案申请。

技术领域

该说明书涉及硬件中的计算神经网络推理。

背景技术

神经网是一种采用一层或多层神经元来针对所接收的输入生成输出的机器学习模型,所述输出例如分类。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中下一层的输入,所述下一层即网络中的下一个隐藏层或输出层。所述网络的每一层依据参数的相应集合的当前值从所接收的输入生成输出。

传统上,一些神经网络系统串行地计算推理。也就是说,当针对多个输入计算推理时,神经网络系统能够在处理下一个输入之前经由所述神经网络的每一层来处理每个输入,以针对所述输入生成输出。

发明内容

总体上,该说明书描述了一种计算神经网络推理的专用硬件电路。

总体上,该说明书中所描述主题的一个创新方面能够以方法来体现,所述方法包括针对多个输入中的每个生成相应的神经网络输出的动作,其中所述生成包括经由多个神经网络层中的每个处理每个输入,以针对所述输入生成相应的神经网络输出,其中所述神经网络层被按顺序布置,并且其中每个神经网络层具有相应批大小,所述方法包括,针对每个神经网络层:接收要在所述神经网络层进行处理的多个输入;从所述多个输入形成输入的一个或多个批,每个批具有达到所述神经网络层的相应的批大小的数个输入;选择输入的所述一个或多个输入批中的数个进行处理,其中所述一个或多个批中的数个中的输入的计数大于或等于所述顺序中的后续层的相应的相关联批大小;以及对输入的所述一个或多个批中的数个进行处理以生成相应的神经网络层输出。

实施方式可以包括以下特征中的一个或多个。所述相应批大小至少基于权重重用值,所述权重重用值表示:在要长于所述权重输入从存储器的加载时间的在矩阵计算单元使用所述权重输入的输出值计算时间内,权重输入需要被重复使用的次数。其中所述权重重用值至少基于存储所述权重输入的存储器的时钟速率。每个批大小至少基于所述权重重用值除以权重输入针对相应层被重复使用的次数。所述多个神经网络层在矩阵处理单元被处理,其中对输入的一个或多个批中的数个进行处理包括使用所述矩阵计算单元针对每个输入计算累加值。所述权重重用值基于所述矩阵计算单元内的算术运算单元的数量。每个输入对应于不同的图像资源。从一个或多个层输出形成批以便在后续层进行处理。针对每个输出生成相对应的推理。

该说明书中所描述主题的特定实施例能够被实施从而实现以下优势中的一种或多种。特殊用途的硬件电路能够通过对多个独立输入重复使用给定层的权重输入,来有效地执行具有多个层的神经网络的计算。特别地,所述权重输入被多次重复使用而使得多次重复使用所述权重输入的计算时间大于从存储器访问新的权重输入的摄取时间,由此使得所述电路中的吞吐量最大化并且避免所述电路的失速(stalling)。所述电路即使在权重输入在每个层以不同次数被重复使用的情况下也能够有效地执行计算。

该说明书的主题的一个或多个实施例的细节在附图和以下描述中给出。所述主题的其它特征、方面和优势将由于该描述、附图和权利要求而是显而易见的。

附图说明

图1是用于针对神经网络的给定层执行计算的示例方法的流程图。

图2示出了示例神经网络处理系统。

图3示出了包括矩阵计算单元的示例架构。

图4示出了包括脉动矩阵的cell的示例架构。

图5是用于针对多个层执行神经网络计算的示例方法的流程图。

图6示出了具有多个层的示例神经网络以及每个层的批大小。

各图中同样的附图标记和指示表示同样的要素。

具体实施方式

具有多个层的神经网络能够被用来计算推理。例如,在给定输入的情况下,神经网络能够针对所述输入计算推理。神经网络通过经由所述神经网络的每个层处理输入来计算该推理。特别地,神经网络的层能够按照顺序布置,每个都具有相应的权重集合。每个层接收输入并且依据所述层的权重集合对所述输入进行处理从而生成输出。所述输出能够被用作下一个神经网络层处的输入。

因此,为了从所接收的计算计算推理,神经网络接收输入并且按顺序经由每个神经网络层对其进行处理从而生成推理,其中来自一个神经网络层的输出被作为输入提供至下一个神经网络层。针对神经网络层的数据输入,例如针对神经网络的输入或者针对神经网络的所述顺序中所述层以下的层的输出,能够被称作所述层的激励输入。

在一些实施方式中,神经网络的层以有向图结构进行布置。也就是说,任何特定层都能够接收多个输入、多个输出,或者它们二者。神经网络的层还能够被布置为使得层的输出能够作为输入被送回先前层。

图1是用于使用专用硬件电路针对神经网络的给定层执行计算的示例处理100的流程图。为了方便,将关于执行方法100的具有一个或多个电路的系统对方法100进行描述。方法100能够针对神经网络的每个层执行以便从所接收的输入计算推理。

所述系统针对给定层接收权重输入的集合(步骤102)以及激励输入的集合(步骤104)。所述权重输入的集合和激励输入的集合能够分别从所述专用硬件电路的动态存储器和统一缓冲器接收。在一些实施方式中,所述权重输入的集合和激励输入的集合都能够从统一缓冲器接收。

所述系统使用所述专用硬件电路的矩阵乘法单元从所述权重输入和激励输入生成累加值(步骤106)。在一些实施方式中,所述累加值是所述权重输入的集合和激励输入的集合的点积。也就是说,针对一个权重集合,所述系统能够将每个权重输入与每个激励输入相乘并且将乘积相加在一起从而形成累加值。所述系统随后能够计算其它权重集合与其它激励输入集合的点积。

所述系统能够使用所述专用硬件电路的矢量计算单元从所述累加值生成层输出(步骤108)。在一些实施方式中,所述矢量计算单元对所述累加值应用激励函数。所述层的输出能够被存储在统一缓冲器中以便用作针对神经网络中的后续层的输入,或者能够被用来确定推理。所述系统在所接收的输入已经经由神经网络的每个层进行了处理从而针对所接收的输入生成了推理时,完成对所述神经网络的处理。

图2示出了用于执行神经网络计算的示例专用集成电路200。系统200包括主机接口202。主机接口202能够接收包括用于神经网络计算的配置信息的指令。所述配置信息能够包括以下的至少一个或多个:应当对多少层进行处理,针对所述层中每个层的权重输入的相对应集合,激励输入的初始集合,即针对要从其计算推理的神经网络的输入,每个层的相对应输入和输出大小,神经网络计算的步幅值,以及所要处理的层的类型,例如卷积层或完全连接层。

主机接口202能够向定序器206发送指令,所述定序器206将所述指令转换为控制电路执行神经网络计算的低阶(low level)控制信号。在一些实施方式中,所述控制信号调整(regulate)电路中的数据流,例如权重输入的集合和激励输入的集合如何流过所述电路。定序器206能够向统一缓冲器208、矩阵计算单元212和矢量计算单元214发送控制信号。在一些实施方式中,定序器206还向直接存储器访问引擎204和动态存储器210发送控制信号。在一些实施方式中,定序器206是生成时钟信号的处理器。定序器206能够使用所述时钟信号的时序在适当时间向电路200的每个组件发送控制信号。在一些其它实施方式中,主机接口202送入来自外部处理器的时钟信号。

主机接口202能够将权重输入的集合以及激励输入的初始集合发送至直接存储器访问引擎204。直接存储器访问引擎204能够将激励输入的集合存储在统一缓冲器208。在一些实施方式中,直接存储器访问将权重存储至可以作为存储器单元的动态存储器210。在一些实施方式中,所述动态存储器位于所述电路之外。

统一缓冲器208是存储器缓冲器。其能够被用来存储来自直接存储器访问引擎204的激励输入的集合以及来自矢量计算单元214的输出。直接存储器访问引擎204还能够从统一缓冲器208读取矢量计算单元214的输出。

动态存储器210和统一缓冲器208能够将权重输入的集合和激励输入的集合分别发送至矩阵计算单元212。在一些实施方式中,矩阵计算单元212是二维脉动矩阵。矩阵计算单元212也可以是一维脉动矩阵,或者能够执行例如乘法和加法的算术运算的其它电路。在一些实施方式中,矩阵计算单元212是通用矩阵处理器。

矩阵计算单元212能够对权重输入和激励输入进行处理并且向矢量计算单元214提供输出的矢量。在一些实施方式中,矩阵计算单元将输出的矢量发送至统一缓冲器208,所述统一缓冲器208将所述输出的矢量发送至矢量计算单元214。所述矢量计算单元能够对输出的矢量进行处理并且将经处理的输出的矢量存储至统一缓冲器。例如,矢量计算单元214能够对矩阵计算单元的输出,例如累加值的矢量,应用非线性函数以生成激励值。在一些实施方式中,矢量计算单元214生成规一化(normalized)值、合并值(pooled value),或者它们二者。经处理的输出的矢量能够被用作矩阵计算单元212的激励输入,例如用于在神经网络的后续层中使用。下文将参考图3和图4更为详细地对矩阵计算单元212进行描述。

图3示出了包括矩阵计算单元的示例架构300。所述矩阵计算单元是二维脉动阵列306。阵列306包括多个cell 304。在一些实施方式中,脉动阵列306的第一维度320对应于cell的列,并且脉动阵列306的第二维度320对应于cell的行。所述脉动阵列能够具有比列更多的行,比行更多的列,或者相等数量的列和行。

在所图示的示例中,值加载器302将激励输入发送至阵列306的行,并且权重摄取器接口308将权重输入发送至阵列306的列。然而,在一些其它实施方式中,激励输入被传输至阵列306的列而权重输入则被传输至行。

值加载器302能够从例如图2的统一缓冲器208的统一缓冲器接收激励输入。每个值加载器能够将相对应的激励输入发送至阵列306的不同的最左侧cell。所述最左侧cell可以是沿阵列306的最左侧列的cell。例如,值加载器312能够将激励输入发送至cell 314。所述值加载器还能够将激励输入发送至相邻的值加载器,并且所述激励输入能够在阵列306的另一个最左侧cell使用。这允许激励输入被转移以便在阵列306的另一个特定cell中使用。

权重摄取器接口308能够从例如图2的动态存储器210的存储器单元接收权重输入。权重摄取器接口308能够将相对应的权重输入发送至阵列306的不同的最上方cell。最上方cell能够是沿阵列306的最上方的行的cell。例如,权重摄取器接口308能够将权重输入发送至cell314和316。

在一些实施方式中,例如图2的主机接口202的主机接口沿一个维度将激励输入贯穿整个阵列306转移,例如转移至右侧,同时沿另一个维度将权重输入贯穿整个阵列306转移,例如转移至底部。例如,在一个时钟周期内,cell 314的激励输入能够转移至处于cell314右侧的cell316中的激励寄存器。类似地,cell 316中的权重输入能够转移至处于cell314下方的cell 318处的权重寄存器。

在每个时钟周期上,每个cell能够对给定权重输入和给定激励输入进行处理以生成累加输出。所述累加输出也能够沿给定权重输入相同的维度被送至相邻cell。以下参考图4进一步对个体cell进行描述。

所述累加输出能够沿与权重输入相同的列被例如送往阵列306中的列的底部。在一些实施方式中,在每一列的底部,阵列306能够包括累加器单元310,所述累加器单元310在利用具有比列更多的权重输入的层或者具有比行更多的激励输入的层执行计算时,存储并累加来自每一列的累加输出。在一些实施方式中,每个累加器单元存储多个并行累加值。这将参考图6进一步描述。累加器单元310能够对每个累加输出进行累加以生成最终累加值。所述最终累加值能够被传输至矢量计算单元。在一些实施方式中,累加器单元310在处理具有比列更少的权重输入的层或者具有比行更少的激励输入的层时,在并不执行任何累加的情况下,将累加值送至矢量计算单元。

图4示出了例如图3的脉动阵列306的脉动阵列内的cell的示例架构400。

所述cell能够包括存储激励输入的激励寄存器406。根据cell在脉动阵列内的位置,所述激励寄存器能够从左侧相邻cell即位于给定cell左侧的相邻cell,或者从统一缓冲器,接收激励输入。所述cell可以包括存储权重输入的权重寄存器402。根据cell在脉动阵列内的位置,所述权重输入能够从顶部相邻cell或者从权重摄取器接口进行传输。所述cell还可以包括和输入(sum in)寄存器404。和输入寄存器404能够存储来自顶部相邻寄存器的累加值。乘法电路408能够被用来将来自权重寄存器402的权重输入与来自激励寄存器406的激励输入进行相乘。乘法电路408能够将乘积输出至求和电路410。

求和电路410能够对所述乘积以及来自和输入寄存器404中的累加值进行求和,从而生成新的累加值。求和电路410随后能够将所述新的累加值发送至位于底部相邻cell中的另一个和输入寄存器。所述新的累加值能够被用作所述底部相邻cell中的求和的运算对象。

所述cell还能够将权重输入和激励输入转移至相邻cell以便进行处理。例如,权重寄存器402能够将权重输入发送至底部相邻cell中的另一个权重寄存器。激励寄存器406能够将激励输入发送至右侧相邻cell中的另一个激励寄存器。所述权重输入和激励输入因此都能够被阵列中的其它cell在后续时钟周期中重复使用。

在一些实施方式中,所述cell还包括控制寄存器。所述控制寄存器能够存储确定所述cell是否应当将权重输入或激励输入转移至相邻cell的控制信号。在一些实施方式中,转移权重输入或激励输入占用一个或多个时钟周期。所述控制信号还能够确定激励输入或权重输入是否被传输至乘法电路408,或者能够确定乘法电路408是否对激励和权重输入进行运算。所述控制信号还能够例如使用线路而被送至一个或多个相邻cell。

在一些实施方式中,权重被预先转移至权重路径寄存器412中。权重路径寄存器412能够例如从顶部相邻cell接收权重输入,并且基于控制信号将权重输入传输至权重寄存器402。权重寄存器402能够静态存储权重输入而使得在激励输入在多个时钟周期内例如通过激励寄存器406被传输至cell时,所述权重输入保留在cell内而并不被传输至相邻cell。因此,所述权重输入能够例如使用乘法电路408被应用于多个激励输入,并且相应累加值能够被传输至相邻cell。

在一些实施方式中,经由神经网络的每个层对一个神经网络输入进行处理,以针对所述神经网络输入生成神经网络输出。然而,在一些实施方式中,所述电路一次性地经由神经网络的层处理多个神经网络输入,以针对输入生成神经网络输出,由此提高电路的利用率。

针对神经网络的特定层的输入能够被称作激励输入的集合。因此,神经网络输入能够是针对第一层的激励输入。所述第一层能够生成有待被第二层处理的输出,并且所述输出能够被称作针对所述第二层的激励输入的集合。

在一些实施方式中,不同于电路通过将激励输入从第一层发送至神经网络的最后层以生成推理来对激励输入的一个集合进行处理,所述电路能够在第一层处理激励输入的多个集合,例如如以上图3中所描述的针对激励输入的每个集合生成累加值,随后在第二层对激励输入的多个集合进行处理,等等。给定层处的激励输入的多个集合能够构成输入的一个或多个批。在一些实施方式中,给定层的各批在所述电路处理后续层的各批之前被处理。所述电路能够通过针对批中的每个输入生成累加值来处理一个批,所述每个输入可以是激励输入的独立集合。

在一些实施方式中,为了在针对给定神经网络层执行计算的同时使得吞吐量最大化,能够使得所述电路在给定神经网络层的权重输入被加载于脉动阵列中的同时,对多个独立激励输入进行处理。也就是说,所述权重输入能够随多个激励输入被重复使用。特别地,例如使用图2的矩阵计算单元212,所述电路通过使用权重输入和不同激励输入计算累加值而重复使用权重输入。作为说明,所述激励输入能够来自于多个不同的图像资源或多个音频样本。这将在下文参考图6进一步描述。

所述电路具有处理速度以及它能够访问存储器的速度。通常,所述处理速度比存储器访问速度更快。通过重复使用权重并且由此利用电路的处理速度,所述电路能够在从存储器访问要在后续计算中使用的权重输入的同时,并行地对所述脉动阵列的cell加以利用。

所述电路能够针对神经网络的每个层从电路的权重重用值确定对权重重用多少次。这能够由所述电路上针对硬件进行编译的软件或者由硬件来确定。在一些实施方式中,所述权重重用值是,在不同激励输入下重复使用权重输入数次的计算时间大于或等于从存储器访问新的权重输入的摄取时间之前,所述电路能够重复使用权重输入的次数。因此,所述权重重用值能够指示所述电路应当重复使用权重输入多少次,以使得利用率最大化且使得存储器访问等待时间最小化。

所述权重重用值能够基于以下的一个或多个:例如图2的动态存储器210的存储权重输入的存储器的时钟速率;例如图2的矩阵计算单元212的电路内的算术单元的数量;以及例如图2的统一缓冲器208和动态存储器210的存储器中的通道数量。所述权重重用值能够被用来确定神经网络的每个层的相应批大小。批大小能够被称作有效批大小,即允许层以产生最为有效数量的权重重用的方式进行操作的批大小。所述批大小是要在层进行处理而使得电路中的脉动矩阵得以被最大化的输入的数量。在一些实施方式中,给定层的批大小是权重重用值除以权重输入在层被重复使用的次数的上限值。权重输入被重复使用的次数能够直接对应于在执行累加计算时电路的脉动阵列的cell中所存储的激励输入的数量。这是因为在加载新的激励输入集合的同时权重输入能够保留在cell中,即“被暂停”。当新的激励输入集合被加载而权重输入被原地冷冻时,所述电路能够再次重复使用权重输入来计算与新的激励输入集合的卷积。下文将参考图6进一步对示例进行描述。

图5是用于针对多个层执行神经网络计算的示例方法的示图500。所述方法能够例如使用图2的主机202而由专用硬件电路来执行,或者由一个或多个处理器、固件、片外处理器来执行,或者由被配置为控制所述电路的一些其它软件处理来执行。

所述电路能够在每个神经网络层处进行处理期间接收层输入的集合以便由所述层进行处理(步骤502)。所述层输入的集合能够来自于例如图2的统一缓冲器208的存储器,或者来自于之前层,即所述输入集合是从网络中的之前层所生成的输出,并且如上文参考图2所描述的,使用所述输出作为输入集合能够由主机202来管理。每个输入可以是激励输入的集合,并且能够从独立的神经网络输入所生成。

针对给定神经网络层,所述系统能够从所述输入集合形成输入的一个或多个批(步骤504)。如以上所描述的,每个神经网络层具有相关联的批大小。层处的每个所形成批包括并不超过所述层的批大小的多个输入。每个神经网络层的批输入能够被确定为所述神经网络的配置。在一些实施方式中,每个神经网络层的批大小在编译神经网络模型以便在电路上执行时进行计算。由于给定层的批大小能够在层处的处理开始前被计算,所述批内的输入数量能够基于给定层的批大小而形成。

作为示例,如果有24个图像需要由神经网络进行处理,并且所述神经网络的第一层具有批大小8,则电路能够形成8个图像的3个批,即将24个图像划分为8个输入的3个批。针对每个批,所述电路能够通过针对层重复使用权重输入的特定集合而对批中的8个不同图像进行处理。所述电路随后能够(1)在后续层处理一个或多个批,或者(2)在所述层使用权重输入的特定集合处理8个不同图像资源的另一个批。所述电路基于神经网络中其它层的批大小来确定以(1)还是(2)继续处理,这将在下文的步骤506以及参考图6进一步描述。

针对给定神经网络层,所述电路能够选择一个或多个批中的多个进行处理(步骤506)。在一些实施方式中,选择数量使得一个或多个批中的所述数量中的输入的计数大于或等于后续层的相对应批大小。例如,如果当前层必须处理均具有5个输入的3个批,并且后续层的批大小为10,则所述电路能够选择所述3个批中的2个批进行处理。所述2个被选择的批具有总共10个输入,即2*5,这等于后续层的相对应批大小,即10。在一些实施方式中,剩余的第三批将在电路中的脉动阵列的后续回合中进行处理。下文将参考图6进一步描述又另一个示例。

所述电路能够例如使用脉动阵列来处理所选择数量的输入批以针对所选择批中的每个输入生成相应层输出(步骤508)。所述电路能够通过在针对每个输入计算累加值时重复使用权重输入来处理每个所选择的输入批。如上文所描述的,所述权重输入被应用于多个独立输入,原因在于所述权重输入在新的激励输入集合被加载的同时能够保留在cell中,即“被暂停”。

作为说明,批次能够具有两个输入——激励输入的集合A1以及激励输入的集合A2。所述电路能够通过在从存储器取得权重输入的集合W2之前将权重输入的集合W1应用于这两个集合A1和A2来重复使用集合W1,其中集合W2是用于后续层的权重的集合,或者,如果层具有比要由电路的脉动阵列所处理的更多权重,则权重的下一个子集用于所述层。在另一个示例中,如果存在8个均有待处理的5个输入的批,即总共40个输入,并且电路选择了4个批进行处理,则所述电路能够对4个批内的输入,即总共20个输入,进行处理以生成相应层的输出,即总共20个层输出。这将在下文参考图6进一步描述。

在对所选择数量的批进行处理之后,所述电路能够在所述层处理第二数量的批或者继续在后续层处理一个或多个批。这将在下文参考图6进一步描述。

虽然该方法经被描述为在处理神经网络的电路上实施,但是该方法也能够在例如中央处理器(CPU)或图形处理器(GPU)的处理器上实施。例如,所述处理器能够在从存储器检索权重的同时以一定次数重复使用权重值,所述存储器例如动态随机访问存储器(DRAM)。

图6示出了具有多个层的示例神经网络600以及每个层的批大小。如以上所描述的,给定层的批大小是权重重用值除以权重输入在层处被重复使用的次数的上限值。所述上限函数能够对数量进行处理并且返回不小于所述数量的最小整数。权重输入被重复使用的次数能够直接对应于电路的脉动阵列的cell中所存储的激励输入的数量。例如,电路的权重重用值可以是150。层1 602处理170×170个输入。所述170×170个激励输入中的每个可以被存储在脉动阵列的cell中。因此,层1 602的批大小是CEIL(1500/(170*170))=1。层2 604的批大小是CEIL(1500/(28*28))=2。使用相同计算,层3-5 606-610具有批大小8,并且层6 612具有批大小32。在一些实施方式中,批大小被取整为最接近的2的幂。

作为说明,层1具有1个输入的批大小,而层2具有2个输入的批大小。所述电路例如能够接收10个输入以便在层1进行处理,例如总共10个不同图像。

所述电路能够确定出自于层1处的十个当中的两个批,即总共2个输入,应当被处理。在一些实施方式中,所述电路通过将层2处的批大小除以层1的批大小来确定该数量,即2/1=2。通过处理单一输入的两个批,所述电路处理两个输入,这等于层2的批大小,即2。所述电路能够处理这两个批以从这两个输入生成两个层输出,例如通过计算累加值的两个矢量——每个图像产生一个。每个层输出能够作为输入以便输入至后续层。所述电路能够形成两个输入的批,例如累加值的两个矢量,以便在层2处进行处理。所述批能够被存储在统一缓冲器中。

所述电路能够确定在层2处的四个批应当被处理。通过处理大小为2的四个批,所述电路对8个输入进行处理,这等于层3处的批大小,即8。所述电路能够处理这四个批以从所述8个输入生成八个层输出。随后,所述电路能够形成8个输入的批以便在层3进行处理。

所述电路能够继续直至输入已经在神经网络的所有层得到处理。例如,由于层3-5具有批大小8,所以所述电路能够确定在层3-5中的每个处的8个输入的一个批应当被处理。类似地,所述电路能够确定在层5处的均具有8个输入的四个批应当被处理,由此形成能够在层6进行处理的32个输入的批。针对每个输入,层6能够生成能够被用于推理的一个或多个层输出。

在一些实施方式中,所述电路例如使用运算电路来计算跨神经网络中的所有层的批大小的最小公倍数。所述电路随后能够在处理后续层之前在每个层对等于或大于所述最小公倍数的最小输入数量进行处理。换句话说,所述电路能够基于所述最小公倍数来确定(1)在后续层处理一个批还是(2)在当前层处理另一个批。例如,层1-6 602-612的批大小的最小公倍数是32。在层1处理一个批之后,所述电路能够确定层1仅生成了1个输出,其小于最小公倍数32。因此,所述电路能够确定在层1处理另一个批,在层1已经总共生成了2个输出。所述电路能够继续生成输出直至已经在层1生成了32个输出,即所述最小公倍数。随后,所述电路能够继续在后续层处理批。在一些实施方式中,每个层输出被存储在统一缓冲器中,例如图2的统一缓冲器208。

作为说明,所述电路能够选择32个批进行处理,这在层1总共为32个输入。所述电路随后能够在层2选择总共32个输入的16个批,随后在层3选择4个批以便处理总共32个输入,随后在层4选择4个批以便处理总共32个输入,随后在层5选择4个批以便处理总共32个输入,最后在层6选择1个批以便处理总共32个输入。

在一些实施方式中,在特定层,所述电路基于系统参数而处理数量大于所述最小公倍数的输入,所述系统参数例如是用户所提供的参数。在一些实施方式中,所述电路处理数量能够被后续层的批大小整除的输入。在一些其它实施方式中,所述电路接收指令以处理大量输入,并且所述电路在继续后续数生成输出之前对输入的批进行处理从而使得在特定层所生成输出的数量最大化。所述电路能够限制在特定层所生成的输出数量,使得所生成输出的数量能够被后续层的批大小整除。

该说明书中所描述的主题和功能操作的实施例能够以数字电子电路来实施,以有形体现的计算机软件或固件来实施,以包括该说明书中所公开的结构及其结构等同物的计算机硬件来实施,或者以它们中一个或多个的组合来实施。该说明书中所公开主题的实施例能够被实施为一个或多个计算机程序,即在有形的非瞬态程序载体上进行编码的、用于由数据处理装置执行或者控制其操作的一个或多个计算机程序指令模块。替选地或附加地,该程序指令能够被在人工生成的传播信号上进行编码,例如机器生成的电、光学或电磁信号,其被生成以对信息进行编码,用于传输至适当接收器装置而由数据处理装置来执行。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行访问存储器设备,或者它们中一个或多个的组合。

术语“数据处理装置”包含用于处理数据的所有类型的装置、设备和机器,例如包括可编程处理器、计算机,或者多个处理器或计算机。该装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统,或者它们中的一个或多个的组合的代码。

计算机程序(也被称作或描述为程序、软件、软件应用、模块、软件模块、脚本或代码)能够以任意形式的编程语言进行编写,包括编译或解释语言,或者声明或过程语言,并且其能够以任意形式进行部署,包括作为独立程序或者作为适于在计算环境中使用的模块、组件、子程序或其它单元。计算机程序可以对应于文件系统中的文件,但是并非需要如此。程序能够被存储在保存有例如标记语言文档中所存储的一个或多个脚本的其它程序或数据的文件的一部分中,存储在专用于所讨论程序的单个文件中,或者存储在多个协同文件中,例如存储一个或多个模块、子程序或代码部分的文件。计算机程序可以被部署为在一台计算机或多台计算机上执行,所述多台计算机位于一个地点或者跨多个地点分布并且通过通信网络进行互连。

该说明书中所描述的处理和逻辑流程能够由一个或多个可编程计算机来实施,所述可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来实行功能。所述处理和逻辑流程还能够由例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)的专用逻辑电路所执行,并且装置也能够被实施为所述专用逻辑电路。

适于执行计算机程序的处理器包括,例如能够基于通用和专用的微处理器或者它们二者,以及任意其它类型的中央处理器。通常,中央处理器将从只读存储器或随机访问存储器或者其二者接收指令和数据。计算机的必要部件是用于执行或进行指令的中央处理器以及用于存储指令和数据的一个或多个存储器。通常,计算机还将包括用于存储数据的一个或多个大型存储设备,或者操作性地耦合到所述大型存储设备,或者其二者,所述大型存储设备例如磁、磁光盘或光盘。然而,计算机不是必需具有这样的设备。此外,计算机可以嵌入另一个设备之中,仅举出几个示例,所述设备例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器,或者便携式存储设备,例如通用串行总线(USB)闪存。

适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以被专用逻辑电路补充或者结合于其中。

为了发送与用户的交互,该说明书中所描述主题的实施例可以在具有显示设备以及键盘和指示设备的计算机上实施,所述显示设备例如CRT(阴极射线管)或LCD(液晶显示器)监视器,用于向用户显示信息,并且所述指示设备例如用户能够通过其向计算机发送输入的鼠标或轨迹球。也可以使用其它类型的设备来提供与用户的交互;例如提供给用户的反馈可以是任意形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任意形式被接收,包括声音、语音或触觉输入。此外,计算机能够通过向用户所使用的设备发送文档以及从所述设备接收文档来与用户进行交互;例如,通过响应于从用户的客户端设备上的web浏览器接收到请求而向所述web浏览器发送网页。

该说明书所描述主题的实施例可以在计算系统中实施,所述计算系统包括例如作为数据服务器的后端组件;或者包括例如应用服务器的中间件组件;或者包括前端组件,例如具有用户能够通过其与该说明书中所描述主题的实施方式进行交互的图形用户界面或Web浏览器的客户端计算机;或者一个或多个这样的后端、中间件或前端组件的任意组合。所述系统的组件能够通过例如通信网络的任意形式或介质的数字数据通信来进行互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如互联网。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且典型地通过通信网络进行交互。客户端和服务器的关系通过在各自计算机上运行并且彼此具有客户端-服务器关系的计算机程序所建立。

虽然该说明书包含许多具体实施细节,但是这些并不应当被理解为对任何发明以及所要求保护的内容的范围进行限制,而是作为特定于特定发明的特定实施例的特征的描述。该说明书中以单独实施例为场境进行描述的一定特征也能够在单个实施例中以组合形式来实施。相反,以单个实施例为场境进行描述的各种特征也能够单独或以任意适当子组合在多个实施例中实施。此外,虽然特征在上文中可以被描述为以一定组合进行工作并且甚至最初要求如此,但是来自所要求组合的一个或多个特征在一些情况下可以脱离该组合,并且所要求的组合可以针对子组合或子组合的变化。

类似地,虽然操作在图中以特定顺序进行描绘,但是这并不应当被理解为要求这样的操作以所示出的特定顺序或以连续顺序来执行,或者所有所图示的操作都要被执行以实现所期望的结果。在一定情况下,多任务和并行处理可能是有利的。此外,以上所描述实施例中的各种系统模块和组件的划分并不应当被理解为在所有实施例中都要求这样的划分,并且应当理解的是,所描述的程序组件和系统通常在单个软件产品中集成在一起或者被封装到多个软件产品中。

已经对该主题的特定实施例进行了描述。其它实施例处于以下权利要求的范围之内。例如,权利要求中所引用的动作可以以不同顺序来执行并且仍然实现所期望的结果。作为一个示例,附图中所描绘的处理并非必然要求所示出的特定顺序或连续顺序以实现所期望的结果。在一些实施方式中,多任务和并行处理可能是有利的。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号