基于脉动阵列的神经网络处理装置

文档序号:1525398 发布日期:2020-02-11 浏览:5次 >En<

阅读说明:本技术 基于脉动阵列的神经网络处理装置 (Neural network processing device based on pulse array ) 是由 高明明 杨康 谷骞 于 2018-08-14 设计创作,主要内容包括:提供一种神经网络处理装置,该装置包括:脉动阵列;控制单元,用于发送指示卷积操作、平均池化操作或最大化操作的控制信号;脉动阵列中各个计算单元用于,接收控制信号、输入特征数据、权重以及来自沿脉动阵列的第二维度的上一级计算单元的第一中间处理结果;根据控制信号,对输入特征数据、权重以及第一中间处理结果进行相关操作,获得第二中间处理结果;向沿着第二维度的下一级计算单元发送第二中间处理结果;向沿着第一维度的下一级计算单元发送输入特征数据;处理单元,用于接收控制信号以及脉动阵列输出端的计算单元输出的第二中间处理结果,根据控制信号对第二中间处理结果进行相关操作,获得神经网络输出结果。可以降低硬件开销。(There is provided a neural network processing apparatus, the apparatus including: a systolic array; a control unit for transmitting a control signal indicating a convolution operation, an average pooling operation, or a maximization operation; each computing unit in the systolic array is used for receiving a control signal, input characteristic data, weight and a first intermediate processing result from a computing unit at the upper stage along the second dimension of the systolic array; according to the control signal, performing relevant operation on the input characteristic data, the weight and the first intermediate processing result to obtain a second intermediate processing result; sending a second intermediate processing result to a next-level computing unit along a second dimension; sending input feature data to a next-level computing unit along a first dimension; and the processing unit is used for receiving the control signal and a second intermediate processing result output by the computing unit at the output end of the pulse array, and performing related operation on the second intermediate processing result according to the control signal to obtain a neural network output result. Hardware overhead can be reduced.)

基于脉动阵列的神经网络处理装置

版权申明

本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。

技术领域

本申请涉及神经网络领域,并且更为具体地,涉及一种基于脉动阵列的神经网络处理装置。

背景技术

随着神经网络复杂度的不断提高,神经网络技术在实际应用过程中存在占用资源多、运算速度慢、能量消耗大等问题。采用硬件加速器替代传统软件计算的方法成为提高神经网络计算效率的行之有效的方式,例如利用通用图形处理器、专用处理器芯片和现场可编程逻辑阵列实现的神经网络处理器。

当前技术,针对神经网络中的卷积操作设计一套独立的硬件装置,针对池化操作设计一套独立的硬件装置,或者,分别针对平均池化操作与最大池化操作,设计一套独立的硬件装置。

现有方案,在一定程度上增加了神经网络的硬件开销与功耗。

发明内容

本申请提供一种基于脉动阵列的神经网络处理装置,可以有效降低神经网络的硬件开销与功耗。

第一方面,提供一种神经网络处理装置,该装置包括:脉动阵列,包括多个计算单元;控制单元,用于发送控制信号,该控制信号指示如下神经网络操作中的任一种:卷积操作、平均池化操作以及最大化操作;该脉动阵列中的各个计算单元用于,接收该控制信号、输入特征数据、权重以及来自沿该脉动阵列的第二维度的上一级计算单元的第一中间处理结果;根据该控制信号,对该输入特征数据、该权重以及该第一中间处理结果进行神经网络相关操作,获得第二中间处理结果;向沿着该脉动阵列的该第二维度的下一级计算单元发送该第二中间处理结果;向沿着该脉动阵列的第一维度的下一级计算单元发送该输入特征数据;处理单元,与该脉动阵列输出端的计算单元连接,该处理单元用于接收该控制信号以及该脉动阵列输出端的计算单元输出的第二中间处理结果,根据该控制信号对该第二中间处理结果进行神经网络相关操作,获得神经网络输出结果。

第二方面,提供一种池化处理装置,该装置包括:脉动阵列,包括多个计算单元;控制单元,用于发送控制信号,该控制信号指示平均池化操作或最大化操作;该脉动阵列中的各个计算单元用于,接收该控制信号、输入特征数据以及来自沿该脉动阵列的第二维度的上一级计算单元的第一中间处理结果;根据该控制信号,对该输入特征数据以及该第一中间处理结果进行池化相关操作,获得第二中间处理结果;向沿着该脉动阵列的该第二维度的下一级计算单元发送该第二中间处理结果;向沿着该脉动阵列的第一维度的下一级计算单元发送该输入特征数据;处理单元,与该脉动阵列输出端的计算单元连接,该处理单元用于接收该控制信号以及该脉动阵列输出端的计算单元输出的第二中间处理结果,根据该控制信号对该第二中间处理结果进行池化相关操作,获得池化输出结果。

第三方面,提供一种芯片,该芯片上集成第一方面提供的装置或集成第二方面提供的装置。

第四方面,提供一种控制方法,该控制方法由第一方面提供的装置中的控制单元执行,该方法包括第一方面中的控制单元执行的相关流程。

第五方面,提供一种控制装置,该控制装置包括存储器和处理器,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且对该存储器中存储的指令的执行使得该处理器执行第四方面提供的方法。

第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机实现第四方面提供的方法。

第七方面,提供一种包含指令的计算机程序产品,该指令被计算机执行时使得该计算机实现第四方面提供的方法。

附图说明

图1为根据本申请实施例的基于脉动阵列的神经网络处理装置的示意性框图。

图2为采用本申请实施例提供的基于脉动阵列的神经网络处理装置实现神经网络操作的示意性流程图。

图3至图6为本申请实施例中的计算单元的内部结构的示意图。

图7至图14为采用本申请实施例提供的神经网络处理装置实现卷积操作或平均池化操作的时序示意图。

图15至图21为采用本申请实施例提供的神经网络处理装置实现最大池化操作的时序示意图。

图22为采用本申请实施例提供的神经网络处理装置实现针对多个卷积核的卷积操作的示意图。

图23为根据本申请另一实施例提供的基于脉动阵列的池化处理装置的示意性框图。

具体实施方式

下面将结合附图,对本申请实施例中的技术方案进行描述。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。

图1为根据本申请实施例的神经网络处理装置100的示意性框图。该装置100包括控制单元110、脉动阵列120、处理单元130。

控制单元110,用于向脉动阵列120和处理单元130发送控制信号,控制信号指示如下神经网络操作中的任一种:卷积操作、平均池化操作以及最大化操作。

脉动阵列120,包括多个计算单元200。脉动阵列120中的每个计算单元200的内部结构相同,下文将详细进行描述。

脉动阵列120中的各个计算单元200用于,接收控制信号、输入特征数据、权重以及来自沿脉动阵列的第二维度的上一级计算单元的第一中间处理结果;根据控制信号,对输入特征数据、权重以及第一中间处理结果进行神经网络相关操作,获得第二中间处理结果;向沿着脉动阵列的第二维度的下一级计算单元发送第二中间处理结果;向沿着脉动阵列的第一维度的下一级计算单元发送输入特征数据。

当控制信号指示卷积操作时,计算单元200对输入特征数据、权重以及第一中间处理结果进行的神经网络相关操作包括乘法运算和加法运算。当控制信号指示平均池化操作时,计算单元200对输入特征数据、权重以及第一中间处理结果进行的神经网络相关操作包括加法运算。当控制信号指示最大池化操作时,计算单元200对输入特征数据、权重以及第一中间处理结果进行的神经网络相关操作包括比较运算。

第一维度对应于脉动阵列的行,第二维度对应于脉动阵列的列。或者第一维度对应于脉动阵列的列,第二维度对应于脉动阵列的行。

为了便于理解与描述,下文某些实施例中以第一维度对应于脉动阵列的行,第二维度对应于脉动阵列的列为例进行描述。例如,在图1所示实施例中,第一维度对应于脉动阵列120的行,第二维度对应于脉动阵列140的列。

下文某些实施例中也会出现“从左到右”与“从上到下”的描述,其中“从左到右”表示沿着脉动阵列的行从左到右,“从上到下”表示沿着脉动阵列的列从上到下。

如图1所示,对于脉动阵列120中沿着第一维度上的输入端的计算单元来说,其可以从脉动阵列120之外的特征数据存储器140中接收输入特征值。其余计算单元均是从沿着第一维度的上一级计算单元接收输入特征值。

如图1所示,脉动阵列120中各个计算单元均可以从脉动阵列120之外的权重存储器150中接收权重。

可选地,由主处理器确定需要载入脉动阵列120中的输入特征数据和权重,然后将该输入特征数据从特征数据存储器140载入到脉动阵列120中,将该权重从权重存储器150载入到脉动阵列120中。其中,该主处理器可以为控制单元110,也可以为神经网络系统中的了解脉动阵列的计算规律的其它处理器。

可选地,本申请提供的神经网络处理装置100包括特征数据存储器140和权重存储器150。

可选地,本申请提供的神经网络处理装置100不包括特征数据存储器140和权重存储器150,但是包括用于与特征数据存储器140和权重存储器150进行通信的通信接口。

在本实施例中,神经网络处理装置100还可以包括一个缓存单元,该缓存单元用于对从通信接口传递过来的数据进行缓存。也就是说,特征数据存储器140和权重存储器150中的数据通过该缓存单元,进入脉动阵列120中。应理解,利用缓存单元缓存从通信接口传递过来的数据,有助于保证进入脉动阵列120的数据的时序的正确性。

处理单元130,与脉动阵列120输出端的计算单元200连接,处理单元130用于接收控制信号以及脉动阵列输出端的计算单元输出的第二中间处理结果,根据控制信号对第二中间处理结果进行神经网络相关操作,获得神经网络输出结果。

本文中描述的某个单元与某个单元连接,包括但不限于有线通信连接和无线通信连接。

脉动阵列120输出端的计算单元指的是,脉动阵列120中最终输出中间处理结果的计算单元,例如,在图1中,指的是,脉动阵列120的最后一行的计算单元。

例如,脉动阵列120输出端的计算单元的发送接口与处理单元130的接收接口通信连接。

当控制信号指示卷积操作时,处理单元130对第二中间处理结果进行累加运算。当控制信号指示平均池化操作时,处理单元130对第二中间处理结果进行求平均运算。当控制信号指示最大池化操作时,处理单元130对第二中间处理结果进行比较运算。

上述可知,控制单元110用于控制脉动阵列120和处理单元130进行神经网络相关操作的类型,即卷积操作、平均池化操作或最大池化操作,从而使得本申请提供的装置100既可以实现卷积操作,又可以实现池化操作。

因此,本申请提供的方案,通过使得卷积运算和池化运算复用一套硬件装置,从而可以提高硬件利用率,节省成本。

需要说明的是,在本申请中,在脉动阵列中脉动(在脉动阵列的各个计算单元之间转发)的元素包括输入特征数据与计算单元计算得到的中间处理结果,不包括权重。换言之,对于一次神经网络操作,权重被载入计算单元后,不再被转发。

应理解,本文中提及的第一中间处理结果与第二中间处理结果仅为了区分同一个计算单元接收与发送的中间处理结果,还可以采用其它描述来区分同一个计算单元接收与发送的中间处理结果,本申请对此不做限定。

还应理解,当一个计算单元X为脉动阵列沿着第一维度的输入端的计算单元时,该计算单元X不存在沿着第一维度的前一级计算单元,即该计算单元X从外部存储器中获取输入特征数据。当一个计算单元Y为脉动阵列沿着第二维度的输入端的计算单元时,该计算单元Y不存在沿着第二维度的前一级计算单元,即该计算单元Y的用于接收上一级计算单元的第一中间处理结果的端口的输入为空或者为零。当一个计算单元Z为脉动阵列沿着第二维度的输出端的计算单元时,该计算单元Z不存在沿着第二维度的后一级计算单元,该计算单元Z与处理单元130连接,用于将获得的第二中间处理结果发送到处理单元130。

应理解,在采用本申请提供的装置100实现卷积操作时,载入到脉动阵列120中的权重就是卷积核。

可选地,在控制信号指示卷积操作时,权重在脉动阵列120中的分布方式与权重在卷积核中的分布方式一致或呈镜像。

例如,卷积核对应的二维矩阵为

Figure BDA0002312511780000061

则载入到脉动阵列120中的权重在脉动阵列120中的分布方式可以为

Figure BDA0002312511780000062

也可以为

由主处理器(例如控制单元110或神经网络系统中的其他处理器)从权重存储器中读取相应的权重载入到脉动阵列120中,其中,权重的寻址以及权重在脉动阵列120中的分布方式均可以根据实际需求来确定,本申请对此不做限定,只要能够实现卷积操作或池化操作即可。

池化操作仅针对输入特征数据,并不涉及权重,因此,为了能够使计算单元200可以兼容卷积运算和池化运算,在控制信号指示最大池化操作或平均池化操作时,将权重的值配置为1。

可选地,在一些实施例中,装置100还包括如下单元。

特征数据存储器(如图1中所示的特征数据存储器140),用于存储输入特征数据。

第一权重存储器(如图1中所示的权重存储器150)和第二权重存储器(图1中未示出)。当控制信号指示卷积操作时,第一权重存储器用于存储当前卷积操作的卷积核,第二权重存储器用于预先存储下一次卷积操作的卷积核。

控制单元110用于将第一权重存储器中的权重载入脉动阵列120中的计算单元,即载入沿着脉动阵列120的第一维度的输入端的计算单元中。

本实施例提供的装置,在执行卷积操作时,通过预先存储当前卷积操作的下一次卷积操作的卷积核,从而在利用脉动阵列完成当前卷积操作的相关运算后,可以立即开始下一次卷积操作的运算,从而可以提高卷积操作的效率。

作为示例,如图2所示,采用如图1所示的基于脉动阵列的装置100处理神经网络的过程如下。

S210,控制单元110确定神经网络操作类型,神经网络操作类型为下列操作中的任一种:卷积操作、平均池化操作以及最大池化操作。

S220,控制单元110根据神经网络操作类型,对存储单元(如图1中所示的特征存储器与权重存储器)寻址,读取并解析下一步需要执行的指令。

S230,控制单元110根据解析指令得到存储地址,从存储单元中获取输入数据(输入特征数据和权重),将输入特征数据和权重分别载入至脉动阵列中。

S240,控制单元110向脉动阵列120中的各个计算单元200发送控制信号,该控制信号指示神经网络操作类型。

S250,脉动阵列120中的各个计算单元200基于控制信号,对接收的输入特征数据与权重执行相关运算,获得第二中间处理结果,并向沿着第二维度的下一级计算单元发送该第二中间处理结果。下文将详细描述步骤S250。

S260,控制单元120向处理单元130发送控制信号,该控制信号指示神经网络操作类型。

S270,处理单元130从脉动阵列120输出端的计算单元200获取第二中间处理结果,并基于控制信号,对该第二中间处理结果执行相关运算,获得神经网络的输出结果。下文将详细描述步骤S270。

可选地,处理单元130输出的神经网络的输出结果可以被存储到神经网络系统的输出存储单元中。

以脉动阵列中的某一个计算单元200为例,上述步骤S250包括如下内容。

当控制信号指示卷积操作或平均池化操作时,计算单元200对输入特征数据与权重进行相乘,获得乘积,对该乘积与第一中间处理结果进行累加,获得累加结果,该累加结果为第二中间处理结果。

当控制信号指示最大池化操作时,计算单元200对输入特征数据与第一中间处理结果进行比较,获得二者中的最大值,该最大值为第二中间处理结果。或者,计算单元200对输入特征数据与权重进行相乘,获得乘积,对该乘积与第一中间处理结果进行比较,获得二者中的最大值,该最大值为第二中间处理结果。

需要说明的是,当控制信号指示池化操作(平均池化或最大池化)时,载入脉动阵列中的权重的值均为1。

应理解,当执行步骤S250的计算单元为脉动阵列中沿着第二维度输出端的计算单元,则向处理单元130发送第二中间处理结果。

以处理单元130接收到第二中间处理结果为某一个卷积核对应的卷积操作的中间结果为例,或者,以处理单元130接收到第二中间处理结果为某一个池化窗对应的池化操作的中间结果为例,步骤S270具体包括如下内容。

当控制信号指示卷积操作时,处理单元130对接收的多个第二中间处理结果进行累加,获得一个卷积核的计算结果。

当控制信号指示平均池化操作时,处理单元130基于池化窗的大小(k*k),对接收的多个第二中间处理结果进行求平均,获得一个池化窗的平均池化计算结果。

当控制信号指示最大池化操作时,处理单元130对接收的多个第二中间处理结果进行比较,获得其中的最大值,则获得了一个池化窗的最大池化计算结果。

在本申请实施例中,脉动阵列中的每个计算单元采用相同的内部结构。本申请中,计算单元的内部结构可以有多种实现方式。

图3和图4是计算单元200的一种内部结构的示意图。图3和图4分别是计算单元200基于同一种内部结构的两种工作模式。

图5和图6是计算单元200的另一种内部结构的示意图。图5和图6分别是计算单元200基于同一种内部结构的两种工作模式。

作为一种实现方式,计算单元200的内部结构如图3(或图4)所示。

特征寄存器201用于存储输入特征数据,还用于向沿着脉动阵列的第一维度的后一级计算单元转发输入特征数据。

权重寄存器202用于存储权重。

乘法器203与特征寄存器201和权重寄存器202连接,乘法器203用于输出权重与输入特征数据的乘积。

加法器204与乘法器203连接。

比较器205,与乘法器203连接。

基于这种内部结果,计算单元200具有两种工作模式。

具体地,计算单元200接收控制信号,当解析获得控制信号指示卷积操作或平均池化操作时,开启工作模式一,如图3中所示。加法器204用于,接收乘法器203输出的乘积与来自沿着第二维度的前一级计算单元的第一中间处理结果,对乘积与第一中间处理结果进行累加,获得第二中间处理结果,向沿着第二维度的后一级计算单元发送第二中间处理结果。在工作模式一,比较器205所在的电路是无效的(如图3中虚线标注的电路)。

计算单元200接收控制信号,当解析获得控制信号指示最大池化操作时,开启工作模式二,如图4所示。比较器205用于接收乘法器203输出的乘积与来自沿着第二维度的前一级计算单元的第一中间处理结果,并输出乘积与第一中间结果中的最大值,向沿着第二维度的后一级计算单元发送第二中间处理结果,第二中间处理结果为最大值。在工作模式二,加法器204所在的电路是无效的(如图4中虚线标注的电路)。

计算单元200还包括一个控制子单元,该控制子单元用根据控制信号切换计算单元200的工作模式。

作为另一种实现方式,计算单元200的内部结构如图5(或图6)所示。

特征寄存器401用于存储输入特征数据,还用于向沿着脉动阵列的第一维度的后一级计算单元转发输入特征数据。

权重寄存器402用于存储权重。

乘法器403与特征寄存器401和权重寄存器402连接,乘法器403用于输出权重与输入特征数据的乘积。

加法器404与乘法器403连接。

选择器405与乘法器403和加法器404连接。

基于这种内部结果,计算单元200具有两种工作模式。

具体地,计算单元200接收控制信号,当解析获得控制信号指示卷积操作或平均池化操作时,开启工作模式一,如图5中所示。加法器404用于,接收乘法器403输出的乘积与来自沿着第二维度的前一级计算单元的第一中间处理结果,对乘积与第一中间处理结果进行累加,获得第二中间处理结果,向沿着第二维度的后一级计算单元发送第二中间处理结果。在工作模式一,选择器405所在的电路是无效的(如图5中虚线标注的电路)。

计算单元200接收控制信号,当解析获得控制信号指示最大池化操作时,开启工作模式二,如图6所示。加法器404用于,接收乘法器403输出的乘积与来自沿着第二维度的前一级计算单元的第一中间处理结果,输出乘积与第一中间处理结果的相减结果;选择器405用于接收乘法器403输出的乘积、加法器404输出的相减结果、以及第一中间处理结果,根据相减结果从乘积与第一中间处理结果中选择出最大值,并向沿着第二维度的后一级计算单元发送第二中间处理结果,第二中间处理结果为最大值。在工作模式二,加法器的404所在的某些电路是无效的(如图6中虚线标注的电路)。

例如,计算单元200还包括一个控制子单元,该控制子单元用根据控制信号切换计算单元200的工作模式。

应理解,本文中提及的乘法器可以采用乘法电路实现,加法器可以采用加法电路实现,比较器可以采用比较电路实现,选择器可以采用比较电路实现。

应理解,图3至图6仅为示例而非限定。计算单元200的内部结果还可以采用其他实现方式,本申请对比不做限定,只要能够使得计算单元200根据控制信号所指示的神经网络操作类型切换工作模式即可。

处理单元130根据控制信号所指示的神经网络操作类型,可以在多种工作模式之间切换。

在控制信号指示卷积操作时,处理单元130用于对接收的第二中间处理结果进行累加,获得卷积操作的输出结果。

在控制信号指示平均池化操作时,处理单元130用于基于池化窗的大小,对接收的第二中间处理结果进行求平均,获得平均池化操作的输出结果。

在控制信号指示最大池化操作时,处理单元130用于对接收的第二中间处理结果进行比较,获得最大池化操作的输出结果。

作为一个示例,处理单元130的内部结果包括:累加器、除法器(或乘法器)、比较器。

在控制信号指示卷积操作时,处理单元130内部的累加器工作。具体地,该累加器用于输出多个计算单元的第二中间处理结果的累加结果,获得卷积操作的输出结果。

在控制信号指示平均池化操作时,处理单元130内部的累加器与除法器工作。具体地,该累加器用于输出多个计算单元的第二中间处理结果的累加结果,除法器用于基于池化窗口的大小,对该累加结果求平均,例如,池化窗口的大小为k*k,则除法器将该累加结果除以k*k,获得平均池化操作的输出结果。应理解,求平均也可以采用乘法器来实现,例如,池化窗口的大小为k*k,则乘法器将该累加结果乘以1/(k*k),获得平均池化操作的输出结果。

在控制信号指示最大池化操作时,处理单元130内部的比较器工作。具体地,该比较器用于输出多个计算单元的第二中间处理结果中的最大值,获得最大池化操作的输出结果。

因此,本申请提供的方案,通过使得卷积运算和池化运算复用一套硬件装置,从而可以提高硬件利用率,节省成本。

为了更好地理解本申请提供的方案,下文结合图7至图21,以3*3的脉动阵列、3*3的权重矩阵、3*3的输入特征矩阵为例,描述本申请提供的基于脉动阵列的神经网络处理装置执行卷积操作、平均池化操作以及最大池化操作的过程。

如图7所示,假设图1中所示的脉动阵列120由计算单元C00、C01、C02、C10、C11、C12、C20、C21与C22组成,处理单元130与计算单元C20、C21与C22连接,用于根据其输出的中间计算结果获得最终的计算结果。各个计算单元的内部结构可以为图3与图4所示,或者为图5或图6所示。

本例中,以3*3的权重矩阵为

Figure BDA0002312511780000111

与3*3的输入特征矩阵为

Figure BDA0002312511780000112

为例进行描述。

第一种情形,控制信号指示卷积操作。

这种情形下,3*3的权重矩阵

Figure BDA0002312511780000121

为卷积核。

对于数据块

Figure BDA0002312511780000122

和权重

Figure BDA0002312511780000123

的卷积操作,其计算结果应为:

a11*W11+a12*W12+a13*W13+a21*W21+a22*W22+a23*W23+a31*W31+a32*W32+a33*W33。

如图7至图14所示,采用本申请的神经网络处理装置,执行输入特征数据与权重的载入和卷积计算的过程如下。

参见图7所示,预先将权重

Figure BDA0002312511780000124

加载到脉动阵列中

下面实施例中描述的从左到右流动对应于上述实施例中描述的沿着脉动阵列的第一维度(行)流动。下面实施例中描述的从上到下流动对应于上述实施例中描述的沿着脉动阵列的第二维度(列)流动。

在第一个周期(T1),参见图8所示,输入特征数据a11进入计算单元C00,其中,输入特征数据a11从计算单元C00的左边载入并从左向右流动。在第一个周期结束时,计算单元C00的计算结果为a11*W11。计算单元C00的计算结果a11*W11从上向下流动。

在第二个周期(T2),参见图9所示,输入特征数据a11向右流动进入计算单元C01,计算结果a11*W11向下流动进入计算单元C10;同时输入特征数据a21载入至计算单元C00,输入特征数据a21载入至计算单元C10。在第二个周期结束时,计算单元C00的计算结果为a12*W11,计算单元C01的计算结果为a11*W12,计算单元C10的计算结果为a11*W11+a21*W21。各个计算单元的计算结果从上向下流动。

在第三个周期(T3),参见图10所示,输入特征数据a11向右流动进入计算单元C02,a12向右流动进入计算单元C01,a21向右流动进入计算单元C11,计算结果a12*W11向下流动进入计算单元C10,计算结果a12*W12向下流动进入计算单元C11,计算结果a11*W11+a21*W21向下流动进入计算单元C20。同时,a13载入计算单元C00,a22载入计算单元C10,a31载入计算单元C20。在第三个周期结束时,计算单元C00的计算结果为a13*W11,计算单元C01的计算结果为a12*W12,计算单元C02的计算结果为a11*W13,计算单元C10的计算结果为a12*W11+a22*W21,计算单元C11的计算结果为a11*W12+a21*W22,计算单元C20的计算结果为a11*W11+a21*W21+a31*W31。各个计算单元的计算结果从上向下流动。

在第四个周期(T4),参见图11所示,输入特征数据a12向右流动进入计算单元C02,a13向右流动进入计算单元C01,a21向右流动进入计算单元C12,a22向右流动进入计算单元C11,a31向右流动进入计算单元C21。第三个周期结束后,计算单元C00、C01、C02、C10、C11的计算结果向下流动进入各自的下一级计算单元中。同时,a23载入计算单元C10,a32载入计算单元C20。在第四个周期结束时,计算单元C01的计算结果为a13*W12,计算单元C02的计算结果为a12*W13,计算单元C10的计算结果为a13*W11+a23*W21,计算单元C11的计算结果为a12*W12+a22*W22,计算单元C12的计算结果为a11*W13+a21*W23,计算单元C20的计算结果为a12*W11+a22*W21+a32*W31,计算单元C21的计算结果为a11*W12+a21*W22+a31*W32,各个计算单元的计算结果从上向下流动。

在第五个周期(T5),参见图12所示,a13向右流动进入计算单元C02,a22向右流动进入计算单元C12,a23向右流动进入计算单元C11,a31向右流动进入计算单元C22,a32向右流动进入计算单元C21。第四个周期结束后,计算单元C01、C02、C10、C11、C12的计算结果向下流动进入各自的下一级计算单元中。同时,a33载入计算单元C20。在第五个周期结束时,计算单元C02的计算结果为a13*W13,计算单元C11的计算结果为a13*W12+a23*W22,计算单元C12的计算结果为a12*W13+a22*W23,计算单元C20的计算结果为a13*W11+a23*W21+a33*W31,计算单元C21的计算结果为a12*W12+a22*W22+a32*W32,计算单元C22的计算结果为a11*W13+a21*W23+a31*W33,各个计算单元的计算结果从上向下流动。

在第六个周期(T6),参见图13所示,a23向右流动进入计算单元C12,a32向右流动进入计算单元C22,a33向右流动进入计算单元C21。第五个周期结束后计算单元C02、C11、C12的计算结果向下流动进入各自的下一级计算单元中。在第六个周期结束时,计算单元C12的计算结果为a13*W13+a23*W23,计算单元C21的计算结果为a13*W12+a23*W22+a33*W32,计算单元C22的计算结果为a12*W13+a22*W23+a32*W33,各个计算单元的计算结果从上向下流动。

在第七个周期(T7),参见图14所示,a33向右流动进入计算单元C22,计算结果a13*W13+a23*W23向下流动进入计算单元C22。在第七个周期结束时,计算单元C22的计算结果为a13*W13+a23*W23+a33*W33,各个计算单元的计算结果从上向下流动。

可知,第三个周期结束时计算单元C20的计算结果a11*W11+a21*W21+a31*W31、第五个周期结束时计算单元C21的计算结果a12*W12+a22*W22+a32*W32、以及第七个周期结束时计算单元C22的计算结果a13*W13+a23*W23+a33*W33的累加值为数据块和权重

Figure BDA0002312511780000142

的卷积操作的计算结果。

处理单元130用于接收计算单元C20、C21与C22输出的中间计算结果,并对第三个周期结束时计算单元C20的计算结果、第五个周期结束时计算单元C21的计算结果、以及第七个周期结束时计算单元C22的计算结果作累加,得到数据块

Figure BDA0002312511780000151

和权重

Figure BDA0002312511780000152

的卷积操作的计算结果。

第二种情形,控制信号指示平均池化操作。

这种情形下,3*3的权重矩阵

Figure BDA0002312511780000153

可以表示池化窗的大小为3*3,这里所谓的权重矩阵

Figure BDA0002312511780000154

的值为

对于数据块

Figure BDA0002312511780000156

的平均池化操作,其计算结果应为:(a11+a12+a13+a21+a22+a23+a31+a32+a33)/9。

采用本申请的神经网络处理装置,执行输入特征数据与权重的载入和平均池化计算的过程与上述的执行卷积运算的过程类似,不同的是,权重矩阵

Figure BDA0002312511780000157

的值为

Figure BDA0002312511780000158

以及处理单元130基于3*3的池化窗,对第三个周期结束时计算单元C20的计算结果、第五个周期结束时计算单元C21的计算结果、以及第七个周期结束时计算单元C22的计算结果求平均,得到数据块的平均池化操作的计算结果(a11+a12+a13+a21+a22+a23+a31+a32+a33)/9。

第三种情形,控制信号指示最大池化操作。

这种情形下,3*3的权重矩阵

Figure BDA00023125117800001510

表示化窗的大小为3*3,权重矩阵

Figure BDA0002312511780000161

的值为

Figure BDA0002312511780000162

对于数据块

Figure BDA0002312511780000163

的最大池化,其计算结果应为:Max(a11,a12,a13,a21,a22,a23,a31,a32,a33),Max()表示求最大值。

如图15至图21所示,采用本申请的神经网络处理装置,执行输入特征数据与权重的载入和最大池化计算的过程如下。

预先将权重

Figure BDA0002312511780000164

(值为

Figure BDA0002312511780000165

)加载到脉动阵列中(图15至图21中未示出)。

在第一个周期(T1),参见图15所示,输入特征数据a11进入计算单元C00,其中,输入特征数据a11从计算单元C00的左边载入并从左向右流动。在第一个周期结束时,计算单元C00的计算结果为Max(a11),即a11。计算单元C00的计算结果Max(a11)从上向下流动。

在第二个周期(T2),参见图16所示。关于输入特征数据的载入与流动,以及计算结果的流动与图9类似,具体描述请参见上文结合图9的描述,为了简洁,这里不再赘述。在第二个周期结束时,计算单元C00的计算结果为Max(a12),计算单元C01的计算结果为Max(a11),计算单元C10的计算结果为Max(a11,a21)。各个计算单元的计算结果从上向下流动。

在第三个周期(T3),参见图17所示。关于输入特征数据的载入与流动,以及计算结果的流动与图10类似,具体描述请参见上文结合图10的描述,为了简洁,这里不再赘述。在第三个周期结束时,计算单元C00的计算结果为Max(a13),计算单元C01的计算结果为Max(a12),计算单元C02的计算结果为Max(a11),计算单元C10的计算结果为Max(a12,a22),计算单元C11的计算结果为Max(a11,a21),计算单元C20的计算结果为Max(Max(a11,a21),a31)。各个计算单元的计算结果从上向下流动。

在第四个周期(T4),参见图18所示。关于输入特征数据的载入与流动,以及计算结果的流动与图11类似,具体描述请参见上文结合图11的描述,为了简洁,这里不再赘述。在第四个周期结束时,计算单元C01的计算结果为Max(a13),计算单元C02的计算结果为Max(a12),计算单元C10的计算结果为Max(a13,a23),计算单元C11的计算结果为Max(a12,a22),计算单元C12的计算结果为Max(a11,a21),计算单元C20的计算结果为Max(Max(a12,a22),a32),计算单元C21的计算结果为Max(Max(a11,a21),a31),各个计算单元的计算结果从上向下流动。

在第五个周期(T5),参见图19所示。关于输入特征数据的载入与流动,以及计算结果的流动与图12类似,具体描述请参见上文结合图12的描述,为了简洁,这里不再赘述。在第五个周期结束时,计算单元C02的计算结果为Max(a13),计算单元C11的计算结果为Max(a13,a23),计算单元C12的计算结果为Max(a12,a22),计算单元C20的计算结果为Max(Max(a13,a23),a33),计算单元C21的计算结果为Max(Max(a12,a22),a32),计算单元C22的计算结果为Max(Max(a11,a21),a31),各个计算单元的计算结果从上向下流动。

在第六个周期(T6),参见图20所示。关于输入特征数据的载入与流动,以及计算结果的流动与图13类似,具体描述请参见上文结合图13的描述,为了简洁,这里不再赘述。在第六个周期结束时,计算单元C12的计算结果为Max(a13,a23),计算单元C21的计算结果为Max(Max(a13,a23),a33),计算单元C22的计算结果为Max(Max(a12,a22),a32),各个计算单元的计算结果从上向下流动。

在第七个周期(T7),参见图21所示。关于输入特征数据的载入与流动,以及计算结果的流动与图14类似,具体描述请参见上文结合图14的描述,为了简洁,这里不再赘述。在第七个周期结束时,计算单元C22的计算结果为Max(Max(a13,a23),a33),各个计算单元的计算结果从上向下流动。

可知,第三个周期结束时计算单元C20的计算结果Max(Max(a11,a21),a31)、第五个周期结束时计算单元C21的计算结果Max(Max(a12,a22),a32)、以及第七个周期结束时计算单元C22的计算结果Max(Max(a13,a23),a33)的最大值为

Figure BDA0002312511780000181

的最大池化操作的计算结果。

处理单元130用于接收计算单元C20、C21与C22输出的中间计算结果,并对第三个周期结束时计算单元C20的计算结果、第五个周期结束时计算单元C21的计算结果、以及第七个周期结束时计算单元C22的计算结果作累加,得到数据块

Figure BDA0002312511780000182

的最大池化操作的计算结果。

上述可知,本申请提供的基于脉动阵列的神经网络处理装置既可以实现卷积操作,也可以实现池化操作(平均池化、最大池化)。具体地,卷积操作与池化操作可以共用一套数据通道,通过控制信号的指示和/或修改权重值,就可以使得同一脉动阵列和处理单元即可以实现卷积操作,又可以实现池化操作。因此,在本申请中,池化操作与卷积操作复用一套硬件装置,从而提高硬件利用率,节省成本。

应理解,上述图7至图21仅为示例而非限定。实际应用中,卷积核或者池化窗的大小不一定是3*3;输入特征矩阵(即输入特征图)的维度不一定是二维的,还可以能是三维的;卷积核的维度也可能是3维的。此外,实际应用中,在一次卷积运算中,可能针对多个2维的卷积核进行计算,或者,这都能对多个3维的卷积核进行计算。本申请提供的神经网络处理装置也可实现上述场景下的神经网络操作。

例如,如图22所示,采用本申请提供的神经网络处理装置实现针对9个3*3的卷积核的卷积操作。

权重映射方式为:平铺映射。

如图22所示,一个大小是9*9的脉动阵列可以刚好映射满9个3*3的滤波器(filter)的权重矩阵,并且每个权重矩阵直接映射,不需要翻转。

输入特征图中的输入特征数据载入脉动阵列的方式为:输入特征图中的每行输入特征数据按照顺序输入到脉动阵列的每行。每个周期,每行输入一个输入特征数据到脉动阵列的最左侧一列计算单元(MAC)中,同时每个计算单元把已经保存的输入特征数据向右传播到相邻的计算单元中。所以在列方向,每个计算单元接收到的输入特征数据来自于它左侧的计算单元。在行方向,相邻两行,下面一行总是延迟于上面一行一个周期。

计算时序可参考上文描述的图7至图14为了简洁,这里不再赘述。

如图23所示,本申请实施例还提供一种基于脉动阵列的池化处理装置2300。该装置2300用于执行平均池化或最大池化。该装置2300包括控制单元2310、脉动阵列2320、处理单元2330。

控制单元2310,用于向脉动阵列2320和处理单元2330发送控制信号,控制信号指示平均池化操作或最大化操作。

脉动阵列2320,包括多个计算单元3000。脉动阵列2320中的每个计算单元3000的内部结构相同。

脉动阵列2320中的各个计算单元3000用于,接收控制信号、输入特征数据以及来自沿脉动阵列2320的第二维度的上一级计算单元的第一中间处理结果;根据控制信号,对输入特征数据以及第一中间处理结果进行池化相关操作,获得第二中间处理结果;向沿着脉动阵列2320的第二维度的下一级计算单元发送第二中间处理结果;向沿着脉动阵列2320的第一维度的下一级计算单元发送输入特征数据。

如图23所示,对于脉动阵列2320中沿着第一维度上的输入端的计算单元来说,其可以从脉动阵列2320之外的特征数据存储器2340中接收输入特征值。其余计算单元均是从沿着第一维度的上一级计算单元接收输入特征值。

可选地,由主处理器确定需要载入脉动阵列2320中的输入特征数据,然后将该输入特征数据从特征数据存储器2340载入到脉动阵列2320中。其中,该主处理器可以为控制单元2310,也可以为神经网络系统中的其他处理器。

可选地,本申请提供的神经网络处理装置2300包括特征数据存储器2340。

可选地,本申请提供的神经网络处理装置2300不包括特征数据存储器2340,但是包括用于与特征数据存储器2340。

处理单元2330与脉动阵列2320输出端的计算单元3000连接,处理单元2230用于接收控制信号以及脉动阵列输出端的计算单元输出的第二中间处理结果,根据控制信号对第二中间处理结果进行池化相关操作,获得池化输出结果。

脉动阵列2320输出端的计算单元指的是,脉动阵列2320中最终输出中间处理结果的计算单元,例如,在图2300中,指的是,脉动阵列2320的最后一行的计算单元。

例如,脉动阵列2320输出端的计算单元的发送接口与处理单元2330的接收接口通信连接。

当控制信号指示平均池化操作时,处理单元2330对第二中间处理结果进行求平均运算。当控制信号指示最大池化操作时,处理单元2330对第二中间处理结果进行比较运算。

上述可知,控制单元2310用于控制脉动阵列2320和处理单元2330进行平均池化操作或最大池化操作,可以在一定程度上提高硬件利用率。

此外,利用脉动阵列实现池化运算,可以有效降低池化操作过程中读数据的次数。

因此,本申请提供的池化处理装置,可以通过使得平均池化操作和最大池化操作复用一套硬件装置,从而可以提高硬件利用率,节省成本,同时也可以有效降低池化操作过程中读数据的次数。

计算单元3000的内部结构可以有多种实现方式。

可选地,作为一种实现方式,各个计算单元3000的内部结构如下。

特征寄存器,用于存储输入特征数据,还用于向沿着脉动阵列2320的第一维度的后一级计算单元转发输入特征数据。

加法器,与特征寄存器连接。

比较器,与特征寄存器连接。

在控制信号指示平均池化操作时,加法器用于,接收输入特征数据与来自沿着第二维度的前一级计算单元的第一中间处理结果,对输入特征数据与第一中间处理结果进行累加,获得第二中间处理结果,向沿着第二维度的后一级计算单元发送第二中间处理结果。

在控制信号指示最大池化操作时,比较器用于接收输入特征数据与第一中间结果,并输出输入特征数据与第一中间结果中的最大值,向沿着第二维度的后一级计算单元发送第二中间处理结果,第二中间处理结果为最大值。

可选地,作为另一种实现方式,各个计算单元3000的内部结构如下。

特征寄存器,用于存储输入特征数据,还用于向沿着脉动阵列2320的第一维度的后一级计算单元转发输入特征数据。

加法器,与特征寄存器连接。

选择器,与特征寄存器和加法器连接。

在控制信号指示平均池化操作时,加法器用于,接收输入特征数据与来自沿着第二维度的前一级计算单元的第一中间处理结果,对输入特征数据与第一中间处理结果进行累加,获得第二中间处理结果,向沿着第二维度的后一级计算单元发送第二中间处理结果。

在控制信号指示最大池化操作时,加法器用于,接收输入特征数据与第一中间处理结果,输出乘积与第一中间处理结果的相减结果;选择器用于接收输入特征数据、相减结果以及第一中间处理结果,根据相减结果从输入特征数据与第一中间处理结果中选择出最大值,并向沿着第二维度的后一级计算单元发送第二中间处理结果,第二中间处理结果为最大值。

可选地,在本实施例中,处理单元2330用于:在控制信号指示平均池化操作时,基于池化窗的大小,对接收的第二中间处理结果进行求平均,获得平均池化操作的输出结果;或在控制信号指示最大池化操作时,对接收的第二中间处理结果进行比较,获得最大池化操作的输出结果。

因此,本申请提供的神经网络处理装置2300,可以通过使得平均池化操作和最大池化操作复用一套硬件装置,从而可以提高硬件利用率,节省成本,同时也可以有效降低池化操作过程中读数据的次数。

需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可,本申请对各个步骤的执行顺序不做严格限定。

本申请实施例提供的神经网络处理装置可以在现场可编程门阵列(field-programmable gate array,FPGA)或专门应用的集成电路(application specificintegrated circuit,ASIC)上实现。

本发明实施例还提供了一种计算单元的控制方法。该计算单元例如可以是上文任一实施例描述的计算单元200。该控制方法由上述实施例描述的控制单元110执行。该控制方法可以包括如上文中描述的由控制单元110执行的处理流程,为避免重复,此处不再详述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个计算单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

38页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:神经网络处理装置、控制方法以及计算系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!