处理用于神经网络的层的数据的制作方法

文档序号:30520332发布日期:2022-06-25 04:42阅读:78来源:国知局
处理用于神经网络的层的数据的制作方法
处理用于神经网络的层的数据


背景技术:
技术领域
1.本公开涉及处理数据。具体地但非唯一地,本公开涉及使用包括多个计算资源的数据处理系统处理用于神经网络的层的输入数据。
2.相关技术说明
3.神经网络已成为用于图像处理、推断、机器学习和相关任务的强大工具。神经网络可包括一个或多个卷积层。例如,卷积神经网络(cnn)通常包括多个卷积层。在卷积层中,通过输入数据阵列(被称为输入特征图(ifm))和一个或多个滤波器(也被称为内核)之间的卷积来计算输出数据阵列(被称为输出特征图(ofm))。每个输出特征图包含多个元素,其中每个元素经由数据阵列的元素的子集与内核的相应权重值之间的一系列卷积计算来计算。神经网络还可包括其他层类型,例如完全连接(fc)层、去卷积层、递归层等。
4.就处理时间而言和就在寄存器内切换位所需的功率而言,卷积计算占了执行推断或训练神经网络的计算成本的很大部分。由于这些计算在推断或训练期间重复执行,因此已经开发了被称为硬件加速器的专用集成电路。
5.神经处理单元(npu)是专门用于根据神经网络(例如,卷积神经网络(cnn))处理数据的硬件加速器。npu还可被称为神经网络加速器(nna)、卷积神经网络加速器(cnna)、机器学习加速器或人工智能加速器。npu包括专用卷积引擎(ce)的阵列,这些专用卷积引擎各自包含例如乘法累加(mac)硬件以执行卷积运算。


技术实现要素:

6.根据第一方面,提供了一种使用数据处理系统处理用于神经网络的给定层的输入数据的方法,该数据处理系统包括用于执行卷积计算的计算资源,该输入数据包括给定的一组输入特征图ifm和给定的一组滤波器。该方法包括执行处理用于给定层的输入数据的计算性能改进方法,包括:生成一组部分ifm,该组部分ifm包括与给定的一组ifm中的第一ifm对应的第一多个部分ifm和与给定的一组ifm中的第二ifm对应的第二多个部分ifm。该方法还包括将该组部分ifm中的部分ifm分组成一组部分ifm选择,包括:至少选择来自第一多个部分ifm的第一部分ifm和来自第二多个部分ifm的第二部分ifm,以形成第一部分ifm选择,并且至少选择来自第一多个部分ifm的第三部分ifm和来自第二多个部分ifm的第四部分ifm,以形成第二部分ifm选择。该方法还包括通过该数据处理系统的相应计算资源将该组选择与该给定的一组滤波器卷积来计算一组部分输出特征图—部分ofm。
7.根据第二方面,提供了一种数据处理系统。该数据处理系统包括多个计算资源和存储装置,该存储装置用于根据神经网络的层存储数据。该数据包括一组输入特征图ifm和一组滤波器。该存储元件耦接到数据处理系统。该数据处理系统被配置为生成一组部分ifm,该组部分ifm包括与给定的一组ifm中的第一ifm对应的第一多个部分ifm和与给定的一组ifm中的第二ifm对应的第二多个部分ifm。该数据处理系统被进一步配置为将该组部
分ifm中的部分ifm分组成一组部分ifm选择,包括:至少选择来自第一多个部分ifm的第一部分ifm和来自第二多个部分ifm的第二部分ifm,以形成第一部分ifm选择,并且至少选择来自第一多个部分ifm的第三部分ifm和来自第二多个部分ifm的第四部分ifm,以形成第二部分ifm选择。该数据处理系统被进一步配置为通过该多个计算资源中的相应计算资源将该组选择与给定的一组滤波器卷积来计算一组部分输出特征图—部分ofm。
8.根据第三方面,提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质包括计算机可执行指令,这些计算机可执行指令当由至少一个处理器执行时使该至少一个处理器:生成一组部分ifm,该组部分ifm包括与给定的一组ifm中的第一ifm对应的第一多个部分ifm和与给定的一组ifm中的第二ifm对应的第二多个部分ifm;将该组部分ifm中的部分ifm分组成一组部分ifm选择,包括:至少选择来自第一多个部分ifm的第一部分ifm和来自第二多个部分ifm的第二部分ifm,以形成第一部分ifm选择,并且至少选择来自第一多个部分ifm的第三部分ifm和来自第二多个部分ifm的第四部分ifm,以形成第二部分ifm选择;并且通过数据处理系统的相应计算资源将该组选择与给定的一组滤波器卷积来计算一组部分输出特征图—部分ofm。
附图说明
9.图1示意性地示出了输入数据阵列和内核之间的用于生成输出数据阵列的元素的数据处理操作;
10.图2示意性地示出了根据示例的被配置为执行数据处理操作的计算系统;
11.图3示意性地示出了图2的计算系统内的神经处理单元(npu);
12.图4是示出根据示例的用于处理数据的方法的流程图。
13.图5a是根据示例的卷积神经网络的卷积层。
14.图5b是对图5a的卷积神经网络的卷积层的示例性第一操作。
15.图5c是对图5a的卷积神经网络的卷积层的示例性第二操作。
16.图6是根据示例的计算机可读存储介质。
具体实施方式
17.参考附图,根据示例的系统和方法的细节将从以下描述中变得明显。在本说明书中,出于解释的目的,阐述了某些示例的许多具体细节。本说明书中对“示例”或类似语言的引用意指结合该示例描述的特征、结构或特性包括在至少该一个示例中,但不一定包括在其他示例中。还应当注意,示意性地描述了某些示例,其中省略了某些特征并且/或者必须简化了某些特征,以便于解释和理解示例所基于的概念。
18.本文描述的某些示例涉及一种使用数据处理系统处理用于神经网络的给定层的输入数据的方法,该数据处理系统包括用于执行卷积计算的计算资源,该输入数据包括给定的一组输入特征图(ifm)和给定的一组滤波器,该方法包括执行处理用于给定层的输入数据的计算性能改进方法。该方法涉及从该组ifm生成多个部分ifm,以及由数据处理系统的相应计算资源卷积部分ifm中的每个部分ifm。通过生成和卷积比存在的相应ifm更多的部分ifm,可利用数据处理系统的更多计算资源。这种提高的利用率可通过利用数据处理系统对该多个计算资源并行运行计算的能力来改善操作性能。
19.图1示出了输入数据阵列100和滤波器102之间的用于生成输出数据阵列104的卷积的示例。在本示例中,输入数据阵列100是具有多个通道的三维阵列,每个通道包括在下文被称为数据值的数值数据元素的平面阵列。通道的数量被称为输入数据阵列100的深度。例如,彩色图像可由三维阵列表示,其中不同平面内位置表示不同像素并且不同平面切片表示不同颜色通道。滤波器102是与输入数据阵列100具有相同深度的另外的三维阵列。滤波器102包括堆叠在一起的尺寸为w
×
h的d二维阵列。d二维阵列中的每个二维阵列将在本文中被称为内核。滤波器102的元素被称为权重值。输入数据阵列100包括堆叠在一起的d二维阵列。输入数据阵列中的d二维阵列中的每个二维阵列将被称为输入特征图(ifm)。根据本文,ifm可以指cnn的第一层中的输入数据(例如,图像)或到cnn的后续层的输入数据(例如,来自cnn的先前层的输出)。在此示例中,d=8,w=3,h=3。应当理解,在不脱离本发明的范围的情况下,滤波器的其他尺寸和形状是可能的。例如,表示rgb图像的输入数据可包括每个输入数据阵列的三个ifm,红色数据、绿色数据和蓝色数据中的每一者一个ifm。输出数据阵列104是二维数据阵列。
20.卷积被定义成使得针对滤波器102相对于输入数据阵列100的给定位置,执行乘法累加(mac)运算,其中滤波器102的每个权重值乘以输入数据阵列100的重合数据值,并且将所得乘积求和以生成输出数据阵列104的元素106。针对滤波器102的给定位置,由此在滤波器102和输入数据阵列100的相应子阵列之间计算点积。为了生成整个输出数据阵列104,针对滤波器102相对于输入数据阵列100的预先确定的一组位置中的每个位置执行该点积运算,其中这些预先确定的位置由在阵列的每个平面内方向上的固定数量的元素(被称为步长)分开。在本示例中,步长在每个方向为1,使得滤波器102相对于输入数据阵列100的相邻位置彼此相邻。在此示例中,采用零填充,使得输入数据阵列100被宽度/高度为两个元素的边界(未示出)包围,其中所有元素被设置为零。该零填充确保输出数据阵列104具有与输入数据阵列100相等的平面内尺寸。在其他示例中,可使用其他类型的填充。此外,可完全省略填充并且/或者可在平面内尺寸中使用大于1的步长,在这种情况下,输出数据阵列104将具有比输入数据阵列100更小的平面内尺寸。
21.卷积运算诸如上文所描述的卷积运算通常用于在卷积神经网络(cnn)的训练期间或一旦已经训练了cnn就在推断期间在cnn的卷积层内生成输出特征图。在给定卷积层中,通过执行包括多个输入特征图(ifm)的三维数据阵列和相应滤波器之间的卷积来生成三维输出特征图(ofm)的每个平面切片,其中不同的ofm具有不同的多组滤波器。ofm可以指示与给定任务相关的相应的一组特征,例如在计算机视觉或其他图像处理任务中。不同的滤波器导致不同的多组特征,并且尽管给定内核的权重值可以是预先确定的,但是对于大多数应用,权重值可能是与cnn的其他参数诸如偏差一起在训练阶段期间学习的。不同尺寸的内核允许从每个ifm捕获不同类型的特征。较大的内核可能够比较小的内核捕获更多的表达特征,但是对于许多应用,感兴趣的特征是高度局部的,并且因此能够使用小内核(诸如尺寸为3
×
3的内核)来捕获。所生成的ofm通常将经受进一步的处理操作,例如应用激活函数并任选地进行池化,然后传递到cnn的后续层。因此,经处理的ofm可成为用于cnn的后续层的ifm。后续层可以是例如另一个卷积层、去卷积层或完全连接层。
22.图2示出了被布置成根据给定神经网络架构执行层处理的计算系统200的示例。数据处理系统200包括连接到中央处理单元(cpu)204和存储器206的系统总线202。存储器206
包括易失性存储器(包括动态随机存取存储器(dram),诸如同步动态随机存取存储器(sdram)),以及非易失性存储器和存储装置,例如闪存存储器、固态驱动器(ssd)和非易失性随机存取存储器(nvram)。系统总线202还可连接到图2中未示出的其他部件,例如输入/输出设备、图形处理单元(gpu)、网络接口等。数据处理系统200还包括神经处理单元(npu)208,该npu是用于根据神经网络架构例如卷积神经网络(cnn)架构处理数据的专用集成电路。npu还可被称为神经网络加速器(nna)、卷积神经网络加速器(cnna)、机器学习加速器或人工智能加速器。
23.npu 208包括控制单元210,该控制单元包括被布置成生成用于多个卷积引擎或计算资源212.1、212.2、

、212.n(统称为卷积引擎212)的控制数据的处理电路。在本示例中,npu 208包括n=16卷积引擎212,但是应当理解,在不脱离本发明的范围的情况下,可采用不同数量的卷积引擎212。npu 208被布置成使用直接存储器存取(dma)214从存储器206检索数据。从存储器206接收的数据可包括例如图像数据或ifm数据,以及与给定神经网络层相关联的权重数据,以及任何其他参数诸如偏差。npu 208被进一步布置成使用dma 214将数据诸如ofm数据写入存储器206。
24.图3更详细地示出了npu 208,包括卷积引擎212.1的部件。其他卷积引擎212.2、

、212.n包括与卷积引擎212.1基本上相同的部件。卷积引擎212.1包括存储器302,该存储器在该示例中包括静态随机存取存储器(sram)。卷积引擎212.1还包括mac计算引擎(mce)304,该mce被布置成处理从存储器302和从其他卷积引擎212的类似存储器接收的数据。mce 304包括用于执行针对神经网络架构实施层处理所必需的mac运算的部件。具体地,npu 208具有被布置成用于ifm或其他数据阵列和内核之间的卷积(或去卷积)的优化具体实施的部件,以生成ofm数据的切片,如下文将更详细地描述。
25.卷积引擎212.1还包括被布置成对由mce 304生成的ofm数据的切片执行附加处理操作(包括例如池化运算并应用激活函数)的后计算资源306。后计算资源306可被编程为对给定神经网络内的不同层执行不同的操作,从而允许实施广泛的神经网络架构。在该示例中,后计算资源306被布置成将经处理的ofm数据的切片输出到卷积引擎212.1的存储器302。经处理的ofm数据的切片可在存储器302具有足够容量的情况下存储在卷积引擎212.1的存储器302中,可被传输回到计算系统200的存储器206,或者可广播到其他卷积引擎212以用于进一步的层处理。
26.在一个示例中,计算机系统200用于根据包括多个卷积层的神经网络架构对一组ifm执行推断。神经网络的每个卷积层包括多个滤波器,并且因此实施每个卷积层涉及多个卷积运算。从存储器206检索一组ifm,以及与神经网络的第一卷积层的滤波器对应的权重数据。该组ifm和滤波器两者都被传输到卷积引擎212.1的存储器302。卷积引擎212.1执行该组ifm和滤波器之间的卷积以生成表示ofm的数据,该数据存储在存储器302中。卷积引擎212中的每个卷积引擎以这种方式执行该组ifm和第一层的相应滤波器之间的卷积,从而导致卷积引擎212中的每个卷积引擎存储表示多个ofm的数据。一旦已经应用了第一层的所有滤波器,则在卷积引擎212之间存储整组经处理的ofm。该组ofm成为用于神经网络的第二卷积层的新的一组ifm。卷积引擎212被布置成将所存储的新的一组ifm广播给彼此,使得每个卷积引擎212可访问用于第二层的整组新ifm。然后将与第二层的滤波器对应的权重数据从存储器206传输到卷积引擎212,并且卷积引擎212中的每个卷积引擎执行新的一组ifm和第
二层的相应滤波器之间的卷积。对神经网络的后续卷积层重复此过程。当已实施最终卷积层时,所得的经处理的一组ofm被传输到计算系统200的存储器206或npu 208的板上存储器(包括存储器302)。神经网络的另外的层可沿用卷积层,例如去卷积层、完全连接层或输出层。尽管在该示例中,一次处理神经网络的层中的一个层,但是在其他示例中,可以同时处理多个层的部分,从而产生所谓的融合层处理。
27.图4示出了使用数据处理系统处理用于神经网络的给定层的输入数据的方法400,该数据处理系统包括用于执行卷积计算的计算资源,该输入数据包括给定的一组输入特征图(ifm)和给定的一组滤波器。方法400包括执行处理用于给定层的输入数据的计算性能改进方法。数据处理系统可以是图2所示的计算机系统200。在该示例中,计算资源是卷积引擎212。
28.对用于给定层的输入数据的处理涉及通过将一组ifm与一组滤波器卷积来计算一组ofm,如上所述。ifm是包括表示图像的属性值的元素的数据阵列。该阻滤波器中的滤波器的数量与所产生的ofm的数量有关。在标准卷积中,滤波器的数量等于所产生的ofm的数量。这在方法400中进行了修改以考虑不在标准卷积中利用的计算资源。例如,因为每个计算资源被配置为通过将一组ifm与来自一组滤波器的一个滤波器卷积来计算一个ofm,所以当滤波器的数量小于可用于处理的计算资源的数量时,可能导致计算资源的未充分利用。例如,一组滤波器中可能存在8个滤波器,并且数据处理系统中可能存在16个计算资源。使用标准卷积计算卷积层将导致16个计算资源中的8个计算资源用于处理卷积层,从而使得可用计算资源的利用率为50%。
29.在框402处,方法400涉及生成一组部分ifm,该组部分ifm包括与给定的一组ifm中的第一ifm对应的第一多个部分ifm和与给定的一组ifm中的第二ifm对应的第二多个部分ifm。如上所述,数据处理系统包括计算资源。计算资源可包括多个卷积引擎,诸如在图2所示的计算机系统200中。卷积引擎中的每个卷积引擎被配置为通过将一组ifm与来自一组滤波器的滤波器卷积来计算一个ofm。
30.生成第一多个部分ifm和第二多个部分ifm可由数据处理系统来动态地完成。为此,数据处理系统可被配置为确定一组ofm中的ofm的数量和可用于处理的计算引擎的数量。在这种情况下,数据处理系统可确定该组ofm中的ofm的数量小于可用计算引擎的数量。然后,数据处理系统可基于所确定的可用于处理的计算引擎的数量来生成第一组部分ifm。例如,数据处理系统可包括16个计算资源,并且卷积神经网络的层可具有八个ofm。在这种情况下,数据处理系统可生成与第一ifm对应的两个部分ifm,使得每个滤波器卷积部分ifm中的每个ifm来产生16个对应的部分ofm。以这种方式,可利用所有可用计算资源来处理神经网络的层。
31.在另一个示例中,数据处理系统可包括32个计算资源,而卷积神经网络的层可包括14个滤波器和14个ifm,从而生成14个ofm。在这种情况下,可通过生成28个部分ifm来提高数据处理系统的计算资源处理卷积神经网络的效率。虽然不是数据处理系统的所有计算资源都将被利用,但是通过从ifm生成部分ifm,可将数据处理系统的效率从最大可能效率14/32提高到28/32。
32.通常,当存在比可用于处理的计算资源更少的滤波器时,可能可以生成多个部分ifm,以便将该多个部分ifm与该组滤波器卷积使得计算资源的利用率更高。第一组部分ifm
中的部分ifm的数量不需要是2的幂。例如,第一组部分ifm中可能存在三个、五个、七个等部分ifm。所生成的部分ifm的数量可取决于该组滤波器中的滤波器的数量和可用于处理的计算资源的数量。
33.如何生成第一多个部分ifm和第二多个部分ifm中的部分ifm可取决于卷积层的某些属性。例如,如果每个内核具有尺寸nxm,其中n和m两者都是大于1的正整数,则第一多个部分ifm中的第一部分ifm可包括也在第一多个部分ifm中的第二部分ifm中的一个或多个元素。也就是说,部分ifm之间可能存在一些重叠,以确保基于如果第一ifm与滤波器卷积,随后的卷积产生预期的部分ofm。这是由于当内核的尺寸为n
×
m时卷积的性质而导致的,因为表示ofm的数据阵列中的元素是对表示ifm的数据阵列中的多个元素进行的mac运算的结果。表示ifm的数据阵列中的单个元素可参与表示ofm的数据阵列中的多于一个元素的计算。因此,这些元素可存在于给定的多个部分ifm中的多于一个部分ifm中。
34.然而,如果该组滤波器中的滤波器中的每个内核的尺寸为1
×
1,则多个部分ifm中的每个部分ifm的元素可彼此独立,即,表示部分ifm的每个数据阵列可以是表示对应ifm的阵列的不相交子阵列。在任何情况下,表示部分ifm的每个数据阵列可被认为是表示对应ifm的数据阵列的子阵列。另外,所生成的部分ifm的组成和/或尺寸还可取决于卷积神经网络模型所使用的步长和填充中的至少一者。
35.表示第一多个部分ifm中的第一部分ifm的数据阵列可与表示第一多个部分ifm中的第二部分ifm的数据阵列具有相同的尺寸。在一个示例中,表示第一多个部分ifm中的每个部分ifm的每个数据阵列可具有相同的尺寸。例如,第一多个部分ifm可包括与第一ifm对应的四个部分ifm,其中部分ifm中的每个部分ifm具有相同的尺寸并且大致对应于表示第一ifm的数据的四分之一。
36.在另一个示例中,表示第一多个部分ifm中的部分ifm的数据阵列的尺寸可与表示第一多个ifm中的第二部分ifm的数据阵列具有不同的尺寸。例如,考虑以下这种情况:第一ifm由尺寸为10
×
10的二维数据阵列表示,该组滤波器包括四个滤波器,并且数据处理系统包括12个可用计算资源。在这种情况下,如果生成与第一ifm对应的三个部分ifm,则可增加计算资源的利用率。在这种情况下,这三个部分ifm可被生成为具有尺寸6
×
6、6
×
6和6
×
10,因为将表示第一ifm的数据阵列划分为具有相等尺寸的三个部分ifm可能难以实现。
37.第二多个部分ifm中的每个部分ifm与第一多个部分ifm中的对应部分ifm具有相同的尺寸,使得第二多个部分ifm中的多个部分ifm等于第一多个部分ifm中的部分ifm的数量。例如,如果第一多个部分ifm中存在与第一ifm的左上3
×
3元素对应的部分ifm,那么第二多个部分ifm中将存在与第二ifm的左上3
×
3元素对应的对应部分ifm。可对所有ifm重复这种为输入层中的相应ifm生成部分ifm的过程。
38.可通过操纵第一ifm的存储器地址来生成第一多个部分ifm和第二多个部分ifm。在这种情况下,这可能导致第一ifm被数据处理系统识别为第一多个部分ifm。因此,将对所识别的第一多个部分ifm进行随后的卷积运算。其他示例是可能的。在一个示例中,控制单元210可基于该组ofm中的ofm的数量和可用于处理的计算资源的数量来生成多组部分ifm。ofm的数量和计算资源的数量可由控制单元210来确定。在任何情况下,生成第一组部分ifm都不会将附加数据引入神经网络模型中,因此不会增加存储器使用。
39.在框404处,方法400涉及将该组部分ifm中的部分ifm分组成一组部分ifm选择。该
分组包括至少选择来自第一多个部分ifm的第一部分ifm和来自第二多个部分ifm的第二部分ifm,以形成第一部分ifm选择,并且至少选择来自第一多个部分ifm的第三部分ifm和来自第二多个部分ifm的第四部分ifm,以形成第二部分ifm选择。
40.该分组可基于部分ifm中的哪个部分ifm被卷积以产生给定部分ofm。例如,标准卷积可通过将一组ifm与给定滤波器卷积来产生给定ofm。ofm的左上四分之一可以是将该组ifm中的每个ifm的相应左上四分之一与给定滤波器卷积的结果。因此,可对与该组ifm中的每个ifm的左上四分之一对应的部分ifm进行分组,使得卷积该组部分ifm产生对应ofm的左上四分之一。
41.该分组可涉及识别第一多个部分ifm和第二多个部分ifm中的对应部分ifm。例如,可将与第一ifm的包括第一3
×
3元素的子阵列对应的第一部分ifm和与第二ifm的包括第一3
×
3元素的子阵列的第二部分ifm分组在一起。
42.可通过操纵第一部分ifm和第二部分ifm的存储器地址来实现分组。例如,可操纵存储器地址,使得第一部分ifm和第二部分ifm被识别为ifm层的子层。另选地,控制单元210可被配置为对第一部分ifm和第二部分ifm进行分组,使得它们被相应计算资源接收在一起,以用于与相应滤波器卷积。
43.选择第三部分ifm和第四部分ifm以形成第二部分ifm选择可以与形成第一部分ifm选择的方式一致的方式来完成。可重复对来自第一组部分ifm和第二组部分ifm的部分ifm进行分组的过程,直到第一组部分ifm和第二组部分ifm中的所有对应部分ifm被分组成部分ifm选择。
44.在框406处,方法400涉及通过数据处理系统的相应计算资源将该组选择与给定的一组滤波器卷积来计算一组部分输出特征图(部分ofm)。例如,将第一部分ifm选择与该组滤波器中的每个滤波器卷积产生第一组部分ofm,其中第一组部分ofm中的每个部分ofm是将第一部分ifm选择与相应滤波器卷积的结果。确定在框404处将部分ifm分组成第一部分ifm选择,使得表示每个部分ofm的每个所得数据阵列对应于表示对应ofm的数据阵列的不相交子集。以这种方式,当将每个部分ifm选择与该组滤波器卷积时,所得部分ofm在功能上等同于卷积ifm而产生的ofm。
45.该操作的结果是,可利用更多的数据处理系统的计算资源来计算神经网络的层。例如,如果对ifm进行卷积,而不是部分ifm,那么所产生的ofm的数量将等于该组滤波器中的滤波器的数量,因为将该组ifm与单个滤波器卷积的结果是单个ofm。然而,根据方法400,通过卷积过程产生的部分ofm的数量等于每个ifm的部分ifm的数量乘以该组滤波器中的滤波器的数量。这可在数学上表述为:
46.no=nf*n
pi
ꢀꢀꢀ
公式1
47.其中no是部分ofm的数量,nf是该组滤波器中的滤波器的数量,并且n
pi
是单个卷积层中每个ifm的部分ifm的数量。
48.因此,选择每个ifm的部分ifm的适当数量确定所产生的部分ofm的数量,并且因此确定在卷积神经网络中的卷积层的计算中利用多少计算资源。可利用公式1以便针对可用计算资源的数量找到最大可能的no,并且因此找到应针对每个ifm生成多少个部分ifm。这可以由数据处理系统本身完成,或者使用包括数据处理系统的设备上的软件来计算。例如,数据处理系统可确定:如果将给定的一组ifm与给定的一组滤波器卷积,则将计算出包括给
定数量的ofm的一组ofm。如果ofm的给定数量小于或等于卷积引擎的给定数量的一半,则数据处理系统确定:该组部分ofm可包括数量大于ofm的给定数量并且小于或等于卷积引擎的给定数量的部分ofm。
49.在框408处,方法400涉及组合该组部分ofm来形成给定的一组ofm,并且使用该给定的一组ofm作为用于神经网络的后续层的输入数据。如上文相对于框406所讨论的,表示每个部分ofm的数据阵列是表示对应ofm的数据阵列的不相交子集。在一些情况下,例如,卷积层的输出可以是用于后续卷积层或池化层的输入。在这种情况下,可能期望在框406处产生的输出看起来好像卷积层没有通过首先生成部分ifm来处理。这种情况的示例是卷积网络的后续层期望来自先前层的一定数量的ofm作为到后续层的输入的情况。这在已经过训练的卷积神经网络中可能是有用的,在卷积神经网络中,后续层中的更复杂的过程(诸如通道重排或进一步卷积)期望一定尺寸的输入数据阵列。
50.形成该组ofm的过程可对应于生成多个部分ifm。例如,可操纵部分ofm的存储器地址,使得卷积神经网络的后续层将对应ofm识别为部分ofm。另选地,控制单元210可被配置为形成该组ofm。
51.在一些情况下,可能不需要从部分ofm形成一组ofm。根据后续层中的一组滤波器中的滤波器的数量,可重复方法400,诸如如果后续层中的滤波器的数量小于可用于处理的计算资源的数量。这可动态地确定,因为数据在卷积神经网络的层之间传递,或者可在第一卷积层上开始处理之前确定。
52.在一些示例中,可选择性地执行计算性能改进方法400。在这种情况下,可以执行与计算性能改进方法400不同的另外的方法,以使用数据处理系统处理用于另外的神经网络层的另外的数据,这分别取决于给定的网络层和另外的网络层的特性。例如,方法400可不应用于卷积神经网络的每个层,但是可基于另外的网络层的特性而选择性地实施。例如,这些特性可包括由另外的网络层产生的ofm的数量。
53.在一个示例中,另外的层包括另外一组ifm和另外一组滤波器。数据处理系统可确定:如果将另外一组ifm与另外一组滤波器卷积,则将计算出包括另外数量的ofm的另外一组ofm。如果ofm的另外数量大于卷积引擎的给定数量的一半,则可将另外一组ifm与第一组滤波器卷积来计算另外一组ofm。可在卷积引擎中的不同卷积引擎中计算另外一组ofm中的每个ofm。
54.方法400提供了通过增加可用计算资源的利用率来处理神经网络的层的有效方法。另外,由于部分ifm是相应ifm的子阵列,并且将部分ifm与同一组滤波器卷积,因此方法400不会增加神经网络的标准卷积层上方的存储器使用。应当注意,参考第一ifm和第二ifm描述了方法400。然而,方法400适用于包括大于一个的任何数量的ifm的层。
55.现在将参考图5a至图5c讨论方法400的示例。图5a是卷积神经网络500的示例性卷积层,该卷积神经网络具有一组ifm 502和504、一组滤波器506-512和一组ofm 514-520。每个滤波器506-512包括用于卷积每个ifm 502和504的两个内核。图5a示出了将一组ifm 502和504与一组滤波器506-512卷积以产生一组ofm 514-520的结果。在这种情况下,ofm 514通过将ifm 502和504与滤波器506卷积来产生,ofm 516通过将ifm 502和504与滤波器508卷积来产生,ofm 518通过将ifm 502和504与滤波器510卷积来产生,并且ofm 520通过将ifm 502和504与滤波器512卷积来产生。
56.在图5a至图5c所示的示例中,数据处理系统(未示出)包括含有至少八个卷积引擎的计算资源。因此,在图5a所示的示例中,八个计算引擎中仅四个计算引擎将用于处理卷积层500。如果可利用更多的计算引擎来处理卷积层,则可使处理卷积层更有效。
57.图5b示出了生成522与ifm 502和504对应的一组部分ifm 502’、502”、504’、504”的示例。如上所述,数据处理系统包括至少八个卷积引擎。因此,在图5b所示的示例中,两个ifm 502和504被划分为四个部分ifm 502’、502”、504’、504”,使得将通过将每个部分ifm与一组滤波器卷积来产生八个部分ofm,并且因此,在卷积过程中利用所有八个计算引擎。每个部分ifm 502’、502”、504’、504”的尺寸取决于滤波器506-512中的内核的尺寸。例如,如果滤波器506-512中的内核的尺寸为1
×
1,则部分ifm 502’、502”、504’、504”可表示相应ifm 502和504的不相交子阵列。在一个示例中,部分ifm 502’可表示ifm 502中的元素的上半部分,部分ifm 502”可表示ifm 502中的元素的下半部分,部分ifm 504’可表示ifm 504中元素的上半部分,并且部分ifm 504”可表示ifm 504中元素的下半部分。其他划分是可能的。例如,部分ifm 502’、502”、504’和504”可对应于相应ifm 502和504的竖直二等分。在另一个示例中,部分ifm 502’和504’与部分ifm 502”和504”具有不同的尺寸。
58.如果滤波器506-512中的内核的尺寸为nxm,其中n和m是大于1的正整数,则来自部分ifm 502’的至少一个元素将与来自部分ifm 502”的元素相同,以便产生正确的部分ofm。在ifm 502由尺寸为16
×
16的数据阵列表示的情况下,部分ifm 502’可对应于ifm 502的上部9
×
16元素,而部分ifm 502”可对应于ifm 502的下部9
×
16元素。在这种情况下,部分ifm 502’的底部行将与部分ifm 502”的顶部行相同。如上所述,其他划分是可能的。
59.对于要卷积以产生预期的部分ofm的部分ifm 502’、502”、504’、504”,部分ifm 502’、502”、504’、504”需要在卷积之前被适当地分组。图5c是卷积神经网络524的示例性卷积层,其中部分ifm 502’、502”、504’、504”被分组以形成部分ifm选择526和528。部分ifm选择526包括分别与第一ifm 502和第二ifm 504对应的部分ifm 502’、504’,而部分ifm选择528包括分别与第一ifm 502和第二ifm 504对应的部分ifm 502”、504”。然后,数据处理系统可将第一部分ifm选择526和第二部分ifm选择528作为单独的数据输入层来处理。
60.然后分别通过滤波器506-512卷积部分ifm选择526、528以产生两个部分ofm选择530和532,这两个选择分别包括部分ofm 514’、516’、518’、520’和514”、516”、518”、520”。部分ofm514’、514”对应于ofm 514,部分ofm 516’、516”对应于ofm 516,部分ofm 518’、518”对应于ofm 518,并且部分ofm 520’、520”对应于ofm 520。具体地,通过将部分ifm选择526与相应的滤波器506-512卷积来产生部分ofm 514’、516’、518’、520’,并且通过将部分ifm选择528与相应的滤波器506-512卷积来产生部分ofm 514”、516”、518”、520”。以这种方式,可以理解的是,ofm选择530、532在功能上等同于图5a中的ofm 514-520。
61.应当注意,方法400可由具有图2所示的计算设备200的多个计算资源212和存储装置206的数据处理系统来执行。例如,存储装置206根据神经网络的层存储数据,该数据包括一组输入特征图ifm和一组滤波器,并且其中该存储元件耦接到数据处理系统。该数据处理系统被配置为生成一组部分ifm,该组部分ifm包括与给定的一组ifm中的第一ifm对应的第一多个部分ifm和与给定的一组ifm中的第二ifm对应的第二多个部分ifm。该数据处理系统被进一步配置为将该组部分ifm中的部分ifm分组成一组部分ifm选择,包括:至少选择来自第一多个部分ifm的第一部分ifm和来自第二多个部分ifm的第二部分ifm,以形成第一部分
ifm选择,并且至少选择来自第一多个部分ifm的第三部分ifm和来自第二多个部分ifm的第四部分ifm,以形成第二部分ifm选择。该数据处理系统被进一步配置为通过相应计算资源将该组选择与给定的一组滤波器卷积来计算一组部分输出特征图—部分ofm。
62.如上所述,数据处理系统可以是被配置为处理表示卷积神经网络的层的数据的神经数据处理系统。计算资源可包括多个卷积引擎。该数据处理系统可被进一步被配置为:相较于在将给定的一组ifm与给定的一组滤波器卷积的情况下将使用的卷积引擎的数量而言,增加所述多个卷积引擎中的卷积引擎的数量,这些卷积引擎用于处理用于给定层的输入数据。除此之外或另选地,该数据处理系统可被配置为修改与第一ifm相关联的存储器地址以生成第一多个部分ifm。如果是这种情况,则数据处理系统还可被配置为修改与来自第一多个部分ifm的第一部分ifm相关联的存储器地址和来自第二多个部分ifm的第二部分ifm以形成第一部分ifm选择。该数据处理系统可被进一步被配置为组合该组部分ofm以形成给定的一组ofm,并且使用该给定的一组ofm作为用于神经网络的后续层的输入数据。
63.图6示出了包括计算机可执行指令604-610的非暂态计算机可读存储介质600。计算机可执行指令604-610当由处理器602执行时使处理器602执行方法400。在第一框604处,方法400包括生成一组部分ifm,该组部分ifm包括与给定的一组ifm中的第一ifm对应的第一多个部分ifm和与给定的一组ifm中的第二ifm对应的第二多个部分ifm。在第二框606处,该方法涉及至少选择来自第一多个部分ifm的第一部分ifm和来自第二多个部分ifm的第二部分ifm,以形成第一部分ifm选择,并且至少选择来自第一多个部分ifm的第三部分ifm和来自第二多个部分ifm的第四部分ifm,以形成第二部分ifm选择。在框608处,该方法涉及通过数据处理系统的相应计算资源将该组选择与给定的一组滤波器卷积来计算一组部分输出特征图—部分ofm。在框610处,该方法涉及组合该组部分ofm来形成给定的一组ofm,并且使用该给定的一组ofm作为用于神经网络的后续层的输入数据。
64.应当理解,相对于任何一个实施方案所述的任何特征结构可单独使用,或与所述的其他特征结构组合使用,并且还可与任何其他实施方案的一个或多个特征结构组合使用,或与任何其他实施方案的任何特征结构组合使用。此外,在不脱离所附权利要求中限定的本发明的范围的情况下,也可采用上文未描述的等同物和修改形式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1