修剪卷积神经网络的方法与流程

文档序号:26986883发布日期:2021-10-19 20:04阅读:89来源:国知局
修剪卷积神经网络的方法与流程

1.本公开涉及卷积神经网络,具体地涉及提高计算效率并减少残留网络的存储器存储。


背景技术:

2.训练卷积网络要求具有非常大的存储空间和计算能力。训练后的模型的尺寸可能很大,这对存储不足的移动客户端可能是个问题。计算能力和存储大小与准确性有关,因此人们在寻求潜在的解决方案以在减少计算和存储使用的情况下保持高的准确度。
3.在此讨论先前的卷积神经网络(cnn)以提供针对本公开的背景。alexnet包括五个卷积层和三个全连接(fc)层。alexnet使用称为修正线性单元(relu)的激活函数,其在接收到负值输入返回零,而任何正输入值输入时返回该正输入值,该函数表示为f(x)=max(0,max)。relu是由两个线性部分组成的简单函数,可以很好地对非线性和交互建模,并且训练非常迅速。relu函数是cnn最常用的激活函数。alexnet通过在每个全连接层之后使用一个丢弃(dropout)层来解决过度拟合问题。该丢弃层具有应用于神经元的概率(p),并以概率(p)随机关闭对神经元的激活。
4.vgg由牛津vgg集团设计,其使用多个3x3内核尺寸的滤波器按序替换了alexnet的大内核尺寸的滤波器。这种多重堆叠的滤波器组合增加了网络的深度,并且相比与一个大滤波器,可以更快地学习更复杂的特征。vgg卷积层的后面是三个全连接层。虽然vgg是准确的,但是其具有非常高的计算和存储要求。该非常高的计算和存储要求是由于每个输出通道都以密集连接的方式连接到相应的输入通道的事实所产生的。
5.googlenet建立在以下认识之上:大多数的激活或为零(即,不必要的),或为冗余。这种认识允许其中输入和输出不一对一连接的架构。此修剪(pruning)可以使vgg的密集连接变为稀疏连接。不幸的是,稀疏矩阵乘法未被优化为像密集乘法那样且使得系统运行速度变慢。然后,googlenet架构了一个初始模块(inception module),该模块将稀疏卷积神经网络近似为密集神经网络,并用全局平均池化(global average pooling)来代替全连接层。
6.resnet认识到增加网络深度会提高其准确性,但是随着深度的增加,在早期层更改权重所需的信号会变小。权重的确定是在网络末端通过比较真值(ground-truth)和预测来执行的。在早期层这种可忽略的学习被称为梯度消失(vanishing gradient)。伴随优化带有附加层的大参数空间的另一个问题导致过度的训练错误率。resnet通过构建残差(residual)模型来训练深度网络。
7.例如,如果你的第一个网络产生第一网络训练误差,并构造添加到该第一网络上的第二个网络以使第一网络输出不受影响,那么第一网络训练误差将不受影响,但是会看到效果。为了解决第一个网络训练误差问题,在模块的输入和输出之间创建了直接路径以暗示映射。然后系统仅需要学习添加到第一网络输入的特征。由于第二网络仅学习残差,因此将该模块表示为残差模块。resnet由于主要由3x3滤波器组成,并像googlenet一样实现
了全局平均池化,因此具有类似于vgg的架构。


技术实现要素:

8.根据本技术的一个方面,提供一种修剪卷积神经网络的方法,包括如下中的至少一个:确定网络输入和网络输出之间的通道数量n;构造n个查询表,每个查询表与各自的通道匹配;以及基于n个查询表修剪卷积神经网络中的滤波器,以在网络输入和网络输出之间建立直连。
9.在一个实施例中,修剪卷积神经网络的方法还包括合并网络输入和网络输出之间的通道;对n个通道数据流进行分类;以及通过分类的n个通道数据流修剪滤波器。
10.在一个实施例中,n个通道数据流的分类是仅由res使用、添加到res以及旁路中的一个,如果通道数据流被分类为仅由res使用,则在根据n个查询表的计算后将其去除。
11.在一个实施例中,修剪卷积神经网络的方法还包括:确定在一组相关滤波器内的滤波器元素的多个分组;确定所述滤波器元素的多个分组中的每一个的权重;基于权重确定掩码;以及基于该组相关滤波器中的每一个中的掩码修剪所述滤波器元素的多个分组。
12.在一个实施例中,修剪卷积神经网络的方法还包括:确定并行处理通道(ppc)的数量;确定所述网络输入和所述网络输出之间的所述通道数量(n);以及将通道数量(n)修剪为并行处理通道(ppc)的数量的整数倍。
13.在一个实施例中,基于可以并行处理的乘积累加(mac)阵列的硬件特定数量确定并行处理通道(ppc)的数量。
14.在一个实施例中,在训练过程中进行对通道数量(n)的修剪。
15.根据本技术的另一方面,还提供一种修剪卷积神经网络的方法,包括如下中的至少一个:确定网络输入和网络输出之间的通道数量(n);构造n个查询表,每个查询表与各自的通道匹配;合并网络输入和网络输出之间的通道;对n个通道数据流进行分类;以及通过分类的n个通道数据流修剪滤波器。
16.在一个实施例中,n个通道数据流的分类是仅由res使用、添加到res和旁路中的一个,如果通道数据流被分类为仅由res使用,则在基于n个查询表的计算后将其去除。
17.在一个实施例中,修剪卷积神经网络的方法还包括基于n个查询表修剪卷积神经网络中的滤波器,以在网络输入和网络输出之间建立直连。
18.在一个实施例中,修剪卷积神经网络的方法还包括:确定在一组相关滤波器内的滤波器元素的多个分组;确定滤波器元素的多个分组中的每一个的权重;基于权重确定掩码;以及基于该组相关滤波器中的每一个中的掩码修剪滤波器元素的多个分组。
19.在一个实施例中,修剪卷积神经网络的方法还包括:确定并行处理通道(ppc)的数量;以及将通道数量(n)修剪为并行处理通道(ppc)的数量的整数倍。
20.根据本技术的再一方面,提供一种修剪卷积神经网络的方法,包括以下中的至少一个:确定在一组相关滤波器内的滤波器元素的多个分组;确定滤波器元素的多个分组中的每一个的权重;基于权重确定掩码;以及基于该组相关滤波器中的每一个中的掩码修剪滤波器元素的多个分组。
21.在一个实施例中,修剪卷积神经网络的方法还包括:确定网络输入和网络输出之间的通道数量(n);构造n个查询表,每个查询表与各自的通道匹配;基于n个查询表修剪卷
积神经网络中的滤波器,以在网络输入和网络输出之间建立直连。
22.在一个实施例中,修剪卷积神经网络的方法还包括:合并网络输入和网络输出之间的通道;对n个通道数据流进行分类;以及通过分类的n个通道数据流修剪滤波器。
23.根据本技术的仍然另一方面,提供一种修剪卷积神经网络的方法,包括以下中的至少一个:确定并行处理通道(ppc)的数量;确定网络输入和网络输出之间的通道数量n;以及将通道数量(n)修剪为并行处理通道(ppc)的数量的整数倍。
24.在一个实施例中,基于可以并行处理的乘积累加(mac)阵列的硬件特定数量确定并行处理通道(ppc)的数量。
25.在一个实施例中,在训练过程中进行对通道数量(n)的修剪。
26.在一个实施例中,修剪卷积神经网络的方法还包括:确定在一组相关滤波器内的滤波器元素的多个分组;确定滤波器元素的多个分组中的每一个的权重;基于权重确定掩码;以及基于该组相关滤波器中的每一个中的掩码修剪滤波器元素的多个分组。
27.在一个实施例中,修剪卷积神经网络的方法还包括:构造n个查询表,每个查询表与各自的通道匹配;以及基于n个查询表修剪卷积神经网络中的滤波器,以在网络输入和网络输出之间建立直连。
附图说明
28.在图中:
29.图1a是根据本公开的一个实施例的第一示例系统图;
30.图1b是根据本公开的一个实施例的第二示例系统图;
31.图2是卷积神经网络结构的示例块;
32.图3是根据本公开的一个实施例的具有查询表的示例卷积神经网络结构;
33.图4是根据本公开的一个实施例的修剪卷积神经网络的第一方法的描述;
34.图5是根据本公开的一个实施例的具有修剪的块的示例卷积神经网络结构;
35.图6是根据本公开的一个实施例的修剪卷积神经网络的第二方法的描述;
36.图7是根据本公开的一个实施例的具有一组修剪张量的卷积神经网络的描述;
37.图8是根据本公开的一个实施例的具有块二进制掩码的卷积神经网络的描述;
38.图9是根据本公开的一个实施例的权重块的描述;
39.图10是根据本公开的一个实施例的修剪卷积神经网络的第三方法的描述;以及
40.图11是根据本公开的一个实施例的修剪卷积神经网络的第四方法的描述。
具体实施方式
41.下面列出的实施例仅是为了说明装置和方法的应用,并不用于限制保护范围。对这种装置和方法等同形式的修改应归入权利要求的保护范围内。
42.在贯穿以下说明和权利要求中,某些术语被用来指代特定系统部件。如本领域技术人员可以理解的,不同的公司可以用不同的名称来指代部件和/或方法。本文无意区分名称不同但功能相同的部件和/或方法。
43.在以下的讨论和权利要求中,术语“包括”和“包含”以开放式方式使用,因此可以解释为表示“包括但不限于
……”
。此外,术语“耦合”旨在表示间接或直接连接。因此,如果
第一设备耦合到第二设备,该连接可以是通过直接连接或通过经由其他设备和连接的间接连接。
44.图1a描绘了示例混合计算系统100,其可用于实现与过程400、600、1000或1100的一个或多个部分或步骤的操作,或由图4、6、10和11提供的部件和过程的操作相关联的神经网。在该示例中,与混合计算系统相关联的处理器包括现场可编程门阵列(fpga)122,图形处理器单元(gpu)120和中央处理单元(cpu)118。
45.处理单元118、120和122中的每一个具有提供神经网的能力。cpu是可以执行许多不同功能的通用处理器,它的通用性使其具有执行多个不同任务的能力,然而,它对多个数据流的处理是有限的并且其关于神经网络的功能非常有限。gpu是图形处理器,其具有能够按顺序处理并行任务的许多小的处理核。fpga是现场可编程设备,它具有重新配置的能力,并且可以以硬接线电路方式执行可编程到cpu或gpu中的任何功能。由于对fpga的编程是电路形式,因此其速度比cpu快许多倍并且明显比gpu快。
46.还有系统可以包含其他类型的处理器,诸如包括带有片上gpu元件的cpu的加速处理器(apu)和专用于执行高速数值数据处理的数字信号处理器(dsp)。专用集成电路(asic)也可以执行fpga的硬接线功能;然而,设计和生产asic的前置时间大约为一年的几个季度,而非fpga编程中可获得的快速周转实现。
47.图形处理器单元120、中央处理单元118和现场可编程门阵列122彼此连接并且连接到存储器接口和控制器112。fpga通过可编程逻辑电路到存储器互连130连接到存储器接口。使用该额外的设备是由于fpga以非常大的带宽运行的这样一个事实以及为了将fpga中用来执行存储器任务的电子线路最小化。存储器接口和控制器112被另外连接到持久存储器盘110、系统存储器114和只读存储器(rom)116。
48.可以利用图1a的系统来对fpga进行编程和训练。gpu可以很好地作用于非结构化数据并且可被用于进行训练,一旦数据已经被训练,就可以找到确定性推理模型,并且cpu可以利用由gpu确定的模型数据对fpga进行编程。
49.存储器接口和控制器连接到中央互连124,中央互连另外连接到gpu 120、cpu 118和fpga 122。中央互连124另外连接到输入和输出接口128以及网络接口126。
50.图1b描绘了第二示例混合计算系统150,可用于实现与过程400的一个或多个部分或步骤的操作,或由图4提供的部件或过程的操作相关联的神经网。在该示例中,与混合计算系统相关联的处理器包括现场可编程门阵列(fpga)160和中央处理单元(cpu)170。
51.fpga 160电连接到fpga控制器162,fpga控制器162与直接存储器访问(dma)168接口连接。dma连接到输入缓冲器164和输出缓冲器166,输入缓冲器164和输出缓冲器166两者都耦合到fpga,以分别对进出fpga的数据进行缓冲。dma具有两个先进先出(fifo)缓冲器,一个用于主机cpu而另一个用于fpga,dma允许对适当的缓冲器读写数据。
52.主开关178是在dma的cpu侧,主开关178将数据和命令传送(shuttle)到dma。dma还连接到同步动态随机存储器(sdram)控制器174,这允许数据在fpga和cpu 170之间传送,sdram控制器还连接到外部sdram 176和cpu 170。主开关178连接到外围设备接口180。闪存控制器172控制持久存储器并且连接到cpu 170。
53.计算神经网络(cnn)已应用于若干分类问题,例如语音和图像识别。一般情况下,网络参数量越大,系统学习困难功能的能力就越大。但是,较大的网络以增加计算工作量为
代价。如果当前参数量大于所需的最佳数量,则可能发生过度拟合。相反,如果选择的参数量不足,则网络学习能力不足。
54.训练cnn的一种方法是学习具有大型网络的任务,并通过去除冗余和重复的连接来修剪张量流(tensor flow)连接。在大型网络中,网络修剪是一种可以解决计算神经网络的实时应用中诸如繁重计算和高存储带宽等一些问题的技术。目前网络修剪导致的潜在问题可能包括不规则的网络连接,这需要额外的表示(representation)并且可能导致并行计算效率低下。
55.结构稀疏化可以带来优势,例如减少嵌入式计算机、并行计算机和如现场可编程门阵列(fpga)的基于硬件的系统中的计算资源。
56.在本文中,术语“通道”和“张量流连接”是同义词。
57.结构化网络修剪和稀疏化加速的方法:
58.网络修剪可以用更少的存储来提高计算效率,是一种能在资源有限的情况下(例如,在移动设备中会遇到的功能较弱的处理器和有限的存储)部署解决方案的技术。
59.当前,由于直连(shortcut)结构的存在,修剪最常用的resnet类(resnet-like)的卷积神经网络(cnn)结构的方法仍然不令人满意,而且设计为适用硬件阵列分区的结构修剪方法也是缺失的。在此,通过提出以下三种方法来解决这些问题。
60.第一种方法是使用基于查询表的分支合并机制来修剪resnet类的结构,第二种方法是执行压缩存储并减少计算周期的按组(group-wise)修剪,而第三种方法是对修剪的通道数量进行取整以提高硬件利用率。
61.使用基于查询表的分支合并机制修剪resnet类的结构:
62.对简单结构如vgg和alexnet的修剪已得到很好的研究。但是resnet类网络由于如图2所示的直连分支218而引入了额外的复杂性。自然的应用典型通道修剪方法可能会导致加法运算中输入的通道不匹配。
63.通过将两个查询表318,322引入到如图3所示的结构300中,可以找到解决此问题的一种可能的方法。查询表318,322实现两个分支通道之间的映射。查询表318,322处理三种映射情况:i)存在于ar和as两者中的通道;ii)仅在ar中存在的通道;iii)仅在as中存在的频道。查询表的引入允许修剪此结构从而允许输入和输出匹配。解决此问题的另一种方法是对ar和as中相同的通道执行修剪。但是,此方案可能会对结构施加另外的限制,从而具有性能降低的风险。
64.图4描绘了修剪卷积神经网络的第一示例方法400,包括:确定(410)网络输入与网络输出之间的通道数量(n);构造(412)n个查询表,每个查询表与各自的通道匹配;以及基于n个查询表,修剪(414)卷积神经网络中的滤波器以在网络输入和网络输出之间创建直连。
65.图5显示了用于合并ar和as的相应硬件设计。硬件用等效操作替代了两个查询表。具体地,基于查询表,将通道分为三类,即“仅由res使用”,“添加到res”和“旁路(bypass)”。在以下步骤中,将对每个类别进行不同的处理。例如,在计算ar之后,将丢弃类别为“仅由res使用”的通道。为了节省存储,可以使用新生成的通道填充被丢弃通道的空间。
66.图6描绘了修剪卷积神经网络的第二示例方法600,包括:确定(610)网络输入与网络输出之间的通道数量(n);构造(612)n个查询表,每个查询表与各自的通道匹配;合并
(614)在网络输入和网络输出之间的通道;对n个通道数据流进行分类(616);以及通过分类的n个通道数据流来修剪(618)滤波器。
67.按组修剪:
68.上一部分中的方法是按通道修剪,其去除了作为最基本元素的3d滤波器,是一种对硬件友好的方法。一个可能的问题是,在不显著降低性能的情况下,可能无法积极地去除滤波器。另一种可能的解决方案是去除滤波器内的元素。当前,执行此操作的一种常用方法是基于权重幅度随机去除滤波器元素,但其结果在存储和计算方面提供的好处有限。一种可能的解决方案是采用组修剪,其去除滤波器中的元素块,而非随机元素。方法如图7所示。
69.块的尺寸由存储阵列分区标识。示例的块的尺寸是1
×1×8×
16。可以通过掩码m来提供稀疏化的编码,其中掩码0表示去除的元素,而掩码1表示剩下的元素。硬件存储器中的掩码布局如图8所示。
70.图9示出了存储器中的权重块的布局,其中白色块是修剪的块,由掩码中的0指示。组稀疏化不仅减小了滤波器的尺寸,而且由于可能会跳过与已去除块相对应的整个周期而因此显著地节省了计算量。
71.对修剪通道数量取整:
72.硬件具有固定数量的乘积累加(mac)阵列,可以同时处理一定数量的通道,例如n个通道。最后一个周期可能会被部分占用,而其余通道数量小于n,从而降低了硬件使用率。因此,优选地将通道数量修剪为n的整数倍。对通道数量的取整可以在训练过程中进行。
73.图10描绘了修剪卷积神经网络的第三方法1000,该方法包括:确定(1010)位于一组相关滤波器内的滤波器元素的多个分组;确定(1012)滤波器元素的多个分组中的每一个的权重;基于权重确定(1014)掩码;以及基于该组相关滤波器中的每一个内的掩码,修剪(1016)滤波器元素的多个分组。
74.图11描绘了修剪卷积神经网络的第四方法1100,包括确定(1110)并行处理通道(ppc)的数量;确定(1112)网络输入和网络输出之间的通道的数量(n);以及,将通道数量(n)修剪(1114)为并行处理通道(ppc)数量的整数倍。
75.本领域的技术人员将了解,本文中所描述的各种说明性的块、模块、元件、部件、方法和算法可被实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,已经根据它们的功能性对各种说明性的块、模块、元件、部件、方法和算法在上文做了大概描述。将这样的功能性实现为硬件还是软件取决于施加于整个系统的特定应用和设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能性。在不脱离本主题技术的范围的情况下,各种部件和块可以不同地布置(例如,以不同的顺序布置,或以不同的方式划分)。
76.应理解,所公开的过程中的步骤的特定顺序或层次是对示例方法的说明。基于设计偏好,可以理解的是,过程中的步骤的特定顺序或层次可以重新布置。一些步骤可以同时执行。所附方法权利要求以样本顺序呈现各个步骤的元素,并不意在限于所呈现的特定顺序或层次。
77.提供前面的描述是为了使得任何本领域的技术人员都能够实践本文中所描述的各种方面。前面的描述提供了本主题技术的各种示例,并且本主题技术不限于这些示例。对于本领域技术人员来说,对这些方面的各种修改是明显的,并且本文定义的一般原理可以
应用于其他方面。因此,权利要求不旨在限于本文所示的方面,而是旨在使全部范围与权利要求的语言表述相一致,其中除非具体如此陈述,对单数要素的引用并非旨在意为“一个且仅一个”,而是表示“一个或多个”。除非另外特别说明,否则术语“一些”是指一个或多个。男性的代词(例如,他的)包括女性和中性(例如,她的和它的),反之亦然。标题和副标题(如果有的话)仅用于方便而使用,并不限制本发明。谓语词“被配置为”,“可操作为”和“被编程为”并不意味着对主语的任何特定的有形或无形修改,而是旨在可互换地使用。例如,被配置以监视和控制操作或部件的处理器,还可以意为该处理器被编程以监视和控制该操作,或者处理器可被操作以监视和控制该操作。同样地,被配置以执行代码的处理器可以解释为被编程以执行代码或可操作以执行代码的处理器。
78.诸如“方面”的短语并非表明这样的方面对于本主题技术是必不可少的,或者这样的方面适用于本主题技术的所有配置。涉及一方面的公开可适用于所有配置,或者一个或多个配置。一个方面可以提供一个或多个示例。诸如“方面”的短语可以指代一个或多个方面,反之亦然。诸如“实施例”的短语并非表明这样的实施例对于本主题技术是必不可少的,或者这样的实施例适用于本主题技术的所有配置。涉及一个实施例的公开可以适用于所有实施例,或者一个或多个实施例。实施例可以提供一个或多个示例。诸如“实施例”的短语可以指代一个或多个实施例,反之亦然。诸如“配置”之类的短语并不表明这种配置对于本主题技术是必不可少的,或者这种配置适用于本主题技术的所有配置。涉及一种配置的公开可以适用于所有配置,或者一个或多个配置。一种配置可以提供一个或多个示例。诸如“配置”的短语可以指代一个或多个配置,反之亦然。
79.本文所使用“示例”一词来表示“用作示例或说明”。本文中描述为“示例”的任何方面或设计并不必定被解释为比其他方面或设计更优选的或更具优势。
80.本领域普通技术人员已知或以后将会知道的贯穿本发明所描述的各个方面的元件等同的所有结构和功能通过引用被明确地并入本文,并且旨在由权利要求所涵盖。此外,无论在权利要求中是否明确地叙述了这样的公开,本文所公开的内容都不旨在捐献给公众。此外,关于说明书或权利要求中所使用的术语“包括”、“具有”或类似术语的含义,这样的术语旨在被包括在术语“包含”的方式内,类似于当“包括”在权利要求中被用作连接词时,对“包括”的解释那样。
81.对“一实施例”、“一个实施例”、“一些实施例”、“各种实施例”或类似表述的引用表示特定元件或特征包括于本发明的至少一个实施例中。尽管短语可能出现在各个地方,但短语不一定指的是同一实施例。连同本发明,本领域技术人员将能够设计和结合适合于实现上述功能的各种机制中的任何一种。
82.应当理解,本公开仅教导了说明性实施例的一个示例,并且本领域技术人员在阅读本公开之后能够容易地设计出本发明的许多变型,本发明的范围由以下权利要求确定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1