用于对神经网络中卷积层进行剪枝的方法和装置与流程

文档序号:26629199发布日期:2021-09-14 22:35阅读:360来源:国知局
用于对神经网络中卷积层进行剪枝的方法和装置与流程

1.本技术涉及神经网络技术,更具体地,涉及一种用于对神经网络中卷积层进行剪枝(pruning)的方法和装置。


背景技术:

2.近年来,深度学习技术已经应用于许多技术领域,例如,图像识别、语音识别、自动驾驶和医学成像等等。卷积神经网络(cnn:convolutional neural network)是深度学习技术中具有代表性的一种网络结构和算法,在图像处理技术中取得了很大的成功。然而,现有的卷积神经网络模型的参数较多,对存储空间和计算量的消耗较大,限制了其应用范围。


技术实现要素:

3.本技术的一个目的在于提供一种用于对神经网络中卷积层进行剪枝的方法,以提高剪枝效率和准确度。
4.根据本技术的一些方面,提供了一种用于对神经网络中卷积层进行剪枝的方法。该方法包括:获取目标神经网络,所述目标神经网络包括待剪枝卷积层,所述待剪枝卷积层包括c个滤波器,每个滤波器中包括k个卷积核,每个卷积核包括m行n列个权重值,其中c、k、m和n为大于等于1的正整数;基于所述卷积核中权重值的数量m
×
n和目标压缩率确定每个卷积核中待剪枝的权重值的数量p,其中p为小于m
×
n的正整数;以及将所述待剪枝卷积层的每个卷积核中绝对值最小的p个权重值置零,形成剪枝后卷积层。
5.在一些实施例中,所述方法还包括:将包括所述剪枝后卷积层的目标神经网络进行再训练以形成更新的神经网络,所述更新的神经网络包括对所述剪枝后卷积层进行再训练产生的更新的卷积层,所述更新的卷积层中与所述剪枝后卷积层中权重值被置零位置对应位置的权重值为零。
6.在一些实施例中,将包括所述剪枝后卷积层的目标神经网络进行再训练以产生更新的神经网络包括:生成屏蔽张量,所述屏蔽张量中各元素与所述剪枝后卷积层中各权重值对应,并且所述屏蔽张量中与所述剪枝后卷积层中权重值被置零位置对应的位置的元素为0,其余位置的元素为1;以及使用所述屏蔽张量将误差梯度张量中与所述剪枝后的卷积层中权重值被置零位置对应位置的梯度值置零,使得所述更新的卷积层中与所述剪枝后的卷积层中权重值被置零位置对应位置的权重值为零。
7.在一些实施例中,使用所述屏蔽张量将误差梯度张量中与所述剪枝后的卷积层中权重值被置零位置对应位置的梯度值置零包括:将所述屏蔽张量与所述误差梯度张量进行阿达马乘法运算。
8.在一些实施例中,所述目标压缩率基于目标准确度设置,所述目标压缩率使得所述更新的神经网络进行神经网络运算的准确度大于等于所述目标准确度。
9.在一些实施例中,所述方法还包括:获取所述更新的神经网络进行神经网络运算的更新的准确度;比较所述更新的准确度与所述目标准确度;以及若所述更新的准确度小
于所述目标准确度,则增加所述目标压缩率并基于增加的目标压缩率重新确定所述待剪枝的权重值的数量p。
10.在一些实施例中,将每个卷积核中绝对值最小的p个权重值置零包括:将所述待剪枝卷积层根据权重值的数量展开为c
×
k行、m
×
n列的二维矩阵;将所述二维矩阵中每一行的m
×
n个权重值根据其绝对值大小进行排序;将每一行m
×
n个权重值中绝对值最小的p个权重值置零;以及将所述二维矩阵重新排列得到与所述待剪枝卷积层对应的c个滤波器,每个滤波器中包括k个卷积核,每个卷积核包括m行n列个权重值,从而形成剪枝后卷积层。
11.在一些实施例中,所述待剪枝卷积层或所述更新的卷积层用于与输入层的k个输入通道进行卷积操作后生成运算结果以由输出层的c个输出通道输出。
12.在一些实施例中,所述神经网络为卷积神经网络。
13.根据本技术的另一些方面,提供了一种用于对神经网络中卷积层进行剪枝的装置,该装置包括:获取单元,用于获取目标神经网络,所述目标神经网络包括待剪枝卷积层,所述待剪枝卷积层包括c个滤波器,每个滤波器中包括k个卷积核,每个卷积核包括m行n列个权重值,其中c、k、m和n为大于等于1的正整数;待剪枝数量确定单元,用于基于所述卷积核中权重值的数量m
×
n和目标压缩率确定每个卷积核中待剪枝的权重值的数量p,其中p为小于m
×
n的正整数;剪枝单元,用于将所述待剪枝卷积层的每个卷积核中绝对值最小的p个权重值置零,形成剪枝后卷积层。
14.根据本技术的又一些方面,提供了一种电子设备,该电子设备包括:处理器;和存储装置,用于存储能够在所述处理器上运行的计算机程序;其中,当所述计算机程序被所述处理器执行时,使得所述处理器执行上述的用于对神经网络中卷积层进行剪枝的方法。
15.根据本技术的又一些方面,提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的用于对神经网络中卷积层进行剪枝的方法。
16.以上为本技术的概述,可能有简化、概括和省略细节的情况,因此本领域的技术人员应该认识到,该部分仅是示例说明性的,而不旨在以任何方式限定本技术范围。本概述部分既非旨在确定所要求保护主题的关键特征或必要特征,也非旨在用作为确定所要求保护主题的范围的辅助手段。
附图说明
17.通过下面说明书和所附的权利要求书并与附图结合,将会更加充分地清楚理解本技术内容的上述和其他特征。可以理解,这些附图仅描绘了本技术内容的若干实施方式,因此不应认为是对本技术内容范围的限定。通过采用附图,本技术内容将会得到更加明确和详细地说明。
18.图1示出了根据本技术实施例的用于对神经网络中卷积层进行剪枝的方法的流程图;
19.图2示出了根据本技术实施例的神经网络的示意图;
20.图3示出了图2所示的神经网络的卷积层中一些示例性卷积核的示意图;
21.图4示出了根据本技术实施例的对包括剪枝后卷积层的神经网络进行再训练的方法的流程图;
22.图5示出了根据本技术实施例的使用再训练更新后的卷积核进行卷积运算的示意图;
23.图6示出了根据本技术实施例的用于对神经网络中卷积层进行剪枝的方法与现有剪枝方法的效果对比图;以及
24.图7示出了根据本技术实施例的用于对神经网络中卷积层进行剪枝的装置的框图。
具体实施方式
25.在下面的详细描述中,参考了构成其一部分的附图。在附图中,类似的符号通常表示类似的组成部分,除非上下文另有说明。详细描述、附图和权利要求书中描述的说明性实施方式并非旨在限定。在不偏离本技术的主题的精神或范围的情况下,可以采用其他实施方式,并且可以做出其他变化。可以理解,可以对本技术中一般性描述的、在附图中图解说明的本技术内容的各个方面进行多种不同构成的配置、替换、组合,设计,而所有这些都明确地构成本技术内容的一部分。
26.卷积神经网络作为深度学习的代表算法之一,是一种具有深度结构的前馈神经网络。卷积神经网络通常包括一个或多个卷积层(convolutional layer)和对应的池化层(pooling layer),其中卷积层用于提取输入数据的特征,卷积层数越多可以提取的特征越多,进而有利于获得更精确的输出结果。但是,当卷积层数增多、卷积核规模变大时,不仅会导致计算压力增大,而且在批处理模式下从外部存储器读入权重值进行运算的带宽要求也会越来越高。
27.本技术的发明人发现,在卷积神经网络中,计算量和计算复杂度主要取决于具有较大尺寸的卷积核(例如3
×
3、5
×
5或7
×
7的卷积核)的卷积层。但是,这些卷积核中可能存在较大的冗余性,即卷积核中可能存在对于卷积神经网络输出准确度没有贡献或者贡献较小的权重值。基于此,如果能够通过将这些冗余的权重值剪除(例如,设置为零),那么就可以减少神经网络的计算量,进而减少能量消耗。
28.基于上述发明构思,本技术提供一种对神经网络中卷积层进行剪枝的方法。具体地,基于卷积层中卷积核的权重值的数量和目标压缩率确定每个卷积核中待剪枝权重值的数量p,直接将该卷积层的每个卷积核中绝对值最小的p个权重值置零,形成剪枝后的卷积层。本技术的方法在对卷积核剪枝时,不对卷积层或卷积核进行敏感性分析,即不去评测对该剪枝后的卷积层或卷积核对神经网络输出准确性的影响,而是直接对单个卷积层内的所有卷积核剪去相同数量的绝对值最小的权重值。因此,本技术技术方案的实施流程更为简化,同时由于对各个卷积核剪枝规则相同,对应硬件电路的实现复杂度也较低。
29.下面结合附图对本技术的用于对神经网络中卷积层进行剪枝的方法进行详细说明。图1示出了根据本技术一些实施例的用于对神经网络中卷积层进行剪枝的方法100的流程图,具体包括如下的步骤s120-s180。
30.步骤s120,获取目标神经网络,目标神经网络包括待剪枝卷积层。
31.目标神经网络可以是由训练样本数据集训练之后得到的神经网络。例如,目标神经网络可以是在cifar10、imagenet或其他类型的数据集上训练获得的lenet、alexnet、vggnet、googlenet、resnet或其他类型的卷积神经网络。在一个具体的示例中,目标神经网
络可以为在cifar10数据集上训练获得的resnet56卷积神经网络。需要说明的是,虽然下面的实施例以卷积神经网络为例进行了说明,但是本领域技术人员可以理解本技术的剪枝方法适用于任何包含卷积层的神经网络。
32.在一些实施例中,目标神经网络可以包括一个或多个卷积层,还可以包括池化层、全连接层等。图1所示的方法100可以根据实际需求对该目标神经网络中的一个、多个或所有卷积层进行剪枝操作。为了描述方便,下面的描述中以对一个待剪枝卷积层进行剪枝为例进行说明,并且假定该待剪枝卷积层包括c个滤波器,每个滤波器中包括k个卷积核,每个卷积核包括m行n列(m
×
n)个权重值,其中c、k、m和n为大于等于1的正整数。该待剪枝卷积层用于与输入层的k个输入通道的输出进行卷积操作后,并且将运算结果提供给输出层的c个输出通道。本领域技术人员可以理解,卷积层中滤波器的数量与输出层的输出通道数量相同(即均为c个),并且每个滤波器中卷积核的数量与输入层100的输入通道的数量相同(即均为k个),每个滤波器分别与输入层中的每个输入通道进行卷积操作(即,点乘和加和运算)后得到相应的输出层的输出通道。
33.参考图2,图2示出了图1所示的方法所应用的目标神经网络的示意图,其包括一个示例性的卷积层200。卷积层200位于输入层300和输出层400之间,用于对输入层300输入的数据进行卷积运算之后生成运算结构,并由输出层400输出。在图2所示的示例中,卷积层200可包括5个滤波器210、220、230、240和250,其分别与输入层300输出的对应数据进行卷积运算,并且运算结果将由输出层400的5个输出通道410、420、430、440和450分别输出。滤波器210、220、230、240和250中的每一个都可包括3个卷积核,这3个卷积核用于分别与输入层300的3个输入通道310、320和330进行卷积运算。例如,滤波器210包括如图3中(a)-(c)所示的3个卷积核211、212和213,每个卷积核包括3行3列的权重值。在一些用于图像处理或图像识别的示例性应用中,图2所示的输入层300可以为rgb格式的图像数据,而3个输入通道310、320和330可以分别为该图像数据的r、g、b颜色通道。经过与卷积层200的运算后,在输出层400的5个输出通道410、420、430、440和450可以得到图像数据在5个维度上的特征信息。在另一些实施例中,输入层也可以为声音数据、文字数据等,这取决于卷积神经网络的具体应用场景。
34.参考图2和图3所示的示例,当将该卷积层200作为待剪枝卷积层时,上述的c、k、m和n的值可分别为5、3、3和3。应当理解,图2和图3所示的卷积层仅作为示例用于描述本技术,在其他实施例中,待剪枝卷积层的参数c、k、m和n也可以取其他不同的值。
35.步骤s140,基于待剪枝卷积层的卷积核中权重值的数量和目标压缩率确定每个卷积核中待剪枝的权重值的数量。
36.其中,目标压缩率是指剪枝后卷积层中的非零权重值的数量与剪枝操作前的卷积层中权重值的数量的比率,用r表示。
37.在一些实施例中,可以基于具体应用场景或运算条件预先设定每个待剪枝卷积层的目标压缩率r,例如根据在该具体应用场景或运算条件而需要减少的计算量或者减少的存储空间来设定。例如,目标压缩率r是大于零且小于1的数值,例如其可以被设置为4/5、3/4、2/3、1/2等等。
38.仍以具有上述参数c、k、m和n的卷积层为例进行说明,每个卷积核中权重值的数量为m
×
n。结合目标压缩率r,可以确定每个卷积核中待剪枝的权重值的数量p,也即,将权重
值的数量m
×
n与(1-r)相乘再取整,得到待剪枝的权重值的数量p。在一些实施例中,将m
×
n与(1-r)的乘积进行取整运算时采取对非整数部分进行四舍五入取整。在一些实施例中,为了确保剪枝操作后能够达到目标压缩率,将m
×
n与(1-r)的乘积进行取整运算时采取向上取整。可以理解,在一些实施例中,也可以根据具体应用场景,采取向下取整或其他取整方式。由于目标压缩率r的值大于零且小于1,因此p的取值范围为小于m
×
n的正整数。
39.可以理解,神经网络可以有多个卷积层,而不同卷积层中卷积核的权重值的数量可能相同或不同。例如,不同的卷积层中可以包括3
×
3、3
×
5、5
×
5、5
×
7或7
×
7的卷积核,相应地这些卷积核包括的权重值的数量分别为9、15、25、35和49。以目标压缩率设定为2/3为例,对于3
×
3的卷积核,待剪枝的权重值的数量为(3
×
3)
×
(1-2/3)=3,则保留的权重值的数量为6;对于5
×
5的卷积核,待剪枝的权重值的数量为对(5
×
5)
×
(1-2/3)并向上取整,也即为9,则保留的非零权重值的数量为16;以及,对于7
×
7的卷积核,待剪枝的权重值的数量为对(7
×
7)
×
(1-2/3)向上取整,也即为17,则保留的非零权重值的数量为32。
40.步骤s160,将待剪枝卷积层的每个卷积核中绝对值最小的与待剪枝数量相等的若干个权重值置零,形成剪枝后卷积层。
41.继续以具有上述参数c、k、m和n的卷积层为例说明具体的剪枝操作。
42.在一些实施例中,首先将待剪枝卷积层根据权重值的数量展开为c
×
k行、m
×
n列的二维矩阵;再将该二维矩阵中每一行的m
×
n个权重值根据其绝对值大小进行排序;再将每一行m
×
n个权重值中绝对值最小的p个权重值置零;然后将该二维矩阵重新排列得到与待剪枝卷积层对应的c个滤波器,每个滤波器中包括k个卷积核,每个卷积核包括m行n列个权重值,从而形成剪枝后卷积层。可以理解,未被置零的权重值在剪枝后卷积层中的位置与剪枝前的位置相同。在另一些实施例中,也可以不进行上述的矩阵展开操作,而是直接对待剪枝卷积层中的c
×
k个卷积核依次进行处理,将每个卷积核中绝对值最小的p个权重值置零,形成剪枝后卷积层的每个卷积核。
43.需要说明的是,在本技术实施例的剪枝方法中,对待剪枝卷积层中的每个卷积核中权重值置零的个数相同,也即待剪枝的权重值数量均为p个。与现有技术的方案中每个卷积核内被置为零的权重值的数量可能不同相比,这种方案更有利于硬件电路实现。
44.参考图3,图中示出了对待剪枝卷积层200中的滤波器210进行压缩率为2/3的剪枝的示意图。可以看出,在将如图3(a)中的卷积核211的(0,1),(2,0)和(2,2)位置处绝对值最小的三个权重值置零后形成图3(d)中剪枝后的卷积核211';在将如图3(b)中的卷积核212的(0,0),(1,2)和(2,1)位置处绝对值最小的三个权重值置零后形成图3(e)中剪枝后的卷积核212';以及在将如图3(c)中的卷积核213的(0,2),(1,1)和(2,0)位置处绝对值最小的三个权重值置零后形成图3(f)中剪枝后的卷积核213'。
45.在一些实施例中,步骤s160结束后,目标神经网络中的一个卷积层即完成剪枝操作,剪枝后的该卷积层具有较少的权重值,因而基于其进行卷积运算可以减少运算量。
46.在图1所示的实施例中,在步骤s160之后,还可以进行后续处理以调整目标神经网络,特别是为了提高准确率。
47.具体地,在步骤s180,将包括所述剪枝后卷积层的目标神经网络进行再训练以形成更新的神经网络。其中,更新的神经网络包括对剪枝后卷积层进行再训练产生的更新的卷积层;且更新的卷积层中与剪枝后卷积层中权重值被置零位置对应位置的权重值为零。
48.在一些实施例中,将包括剪枝后卷积层的目标神经网络进行再训练可以采用与训练产生目标神经网络相同的样本数据集,例如,cifar10、imagenet或其他类型的数据集。在另一些实施例中,也可以采用与训练产生目标神经网络不同的样本数据集进行再训练。之所以进行步骤s180的再训练操作,是因为对目标神经网络中的卷积层进行剪枝虽然能够有效地减少卷积层的参数和运算量,但由于剪除了原始卷积层中的部分权重值,包括剪枝后的卷积层的目标神经网络的准确度通常会有一定程度的损失。因此,可以将包括剪枝后卷积层的目标神经网络进行再训练,对剪枝后卷积层中未置零的权重值进行微调并更新,以减少准确度的损失。
49.但需要注意的是,在一些实施例中,对包括剪枝后卷积层的目标神经网络的再训练只需要更新剪枝后卷积层的非零权重值,而避免将剪枝操作中置零的权重值更新为非零值。在另一些实施例中,对包括剪枝后卷积层的目标神经网络的再训练也可以将置零的权重值中的一部分更新为非零值。优选地,出于减少运算量的考虑,再训练不将剪枝操作中置零的权重值更新为非零值。相应地,在本发明的一些实施例中,可以生成屏蔽张量,该屏蔽张量中各元素与剪枝后卷积层中各权重值对应,并且屏蔽张量的与剪枝后卷积层中权重值被置零位置对应的位置的元素为0,其余位置的元素为1。在将包括剪枝后卷积层的目标神经网络进行再训练以产生更新的神经网络的过程中,使用屏蔽张量将再训练过程的误差梯度张量中与剪枝后的卷积层中权重值被置零位置对应的位置的梯度值置零,从而使得更新的卷积层中与剪枝后的卷积层中权重值被置零位置对应位置的权重值均为零。
50.参考图4,其示出了一些实施例中将包括剪枝后卷积层的目标神经网络进行再训练以产生更新的神经网络的流程。该流程包括下述步骤。
51.步骤s182,生成屏蔽张量。
52.具体地,生成屏蔽张量mask,屏蔽张量mask为与剪枝后卷积层对应尺寸的张量,并且屏蔽张量mask中各元素与剪枝后卷积层中权重值分别对应,例如,屏蔽张量mask也具有c、k、m和n四个维度。接着,对屏蔽张量mask进行初始化,使得屏蔽张量mask的与剪枝后卷积层中权重值被置零位置对应的位置的元素为0,其余位置的非零元素为1。
53.步骤s184,将包括剪枝后卷积层的目标神经网络进行再训练,获取与剪枝后卷积层对应的误差梯度张量。
54.在一些实施例中,再训练包括在训练数据集上对包括剪枝后卷积层的目标神经网络进行正向传播。正向传播是指将训练数据集的输入数据输入至包括剪枝后卷积层的目标神经网络进行卷积运算,并获得该剪枝后卷积层对于该输入数据的输出结果。然后将该输出结果与原目标神经网络的待剪枝卷积层针对相同输入数据进行卷积运算得到的标准输出结果比较,这二者的差值即可作为剪枝后卷积层的误差梯度张量gradient。
55.步骤s186,基于误差梯度张量和屏蔽张量获取剪枝误差梯度张量。
56.在一些实施例中,可以将误差梯度张量gradient和屏蔽张量mask进行阿达马(hadamard)乘法,即对应元素相乘,获得剪枝误差梯度张量grsdient

。与屏蔽张量mask类似,该剪枝误差梯度张量gradient

在与剪枝后卷积层中权重值被置零位置对应位置处的元素为0。
57.步骤s188,使用剪枝误差梯度张量更新剪枝后卷积层,产生更新的卷积层。
58.在一些实施例中,使用反向传播算法,通过反向传播算法基于剪枝误差梯度张量
grsdient

获得卷积层对应权重值的变化量,并根据该变化量对剪枝后卷积层的权重值进行更新,以使得更新后卷积层的输出值与标准输出值相差减小。具体地,可以根据以下公式(1)来对剪枝后卷积层进行梯度更新获得更新的卷积层:
59.w

=w+λ*(gradientomask)
ꢀꢀꢀ
公式(1)
60.其中,w

表示更新的卷积层,w表示剪枝后卷积层,λ表示学习率,gradient表示误差梯度张量,mask表示屏蔽张量,o为阿达马算符,表示两个张量的对应元素相乘,(gradientomask)即表示剪枝误差梯度张量gradient


61.通过对包括剪枝后卷积层的目标神经网络进行再训练,每次误差反向传播进行误差梯度更新时,将求得的误差梯度张量与屏蔽张量进行阿达马相乘以获得剪枝误差梯度张量,并且用剪枝误差梯度张量更新剪枝后卷积层。由于剪枝误差梯度张量在与剪枝后卷积层中权重值被置零位置对应的位置处的元素为0,因此保证了被剪枝的权重值在整个更新过程中也始终为0。
62.在一些实施例中,可以多次迭代执行步骤s182至s188,直至误差梯度张量达到一较小值为止。例如,可以设置一误差梯度阈值,在步骤s184中获取误差梯度张量之后,可以将其与该误差梯度阈值进行比较:如果误差梯度张量大于误差梯度阈值,则继续执行后续步骤s186;如果误差梯度张量小于误差梯度阈值,则结束再训练过程。再训练过程结束后,将最后得到的卷积层作为更新的卷积层。
63.需要说明的是,在上述步骤s140中描述了目标压缩率基于具体应用场景预先设定的实施例。在另外一些实施例中,目标压缩率还可以基于目标准确度设置,例如目标压缩率可以被设置为使得更新的神经网络进行神经网络运算的准确度大于或等于目标准确度。目标准确度是指在对神经网络中卷积层进行剪枝,导致准确度损失后,所能接受的神经网络的准确度阈值。通常地,目标压缩率越低,需要剪除的权重值越多,则神经网络损失准确度损失的越大。因此,需要在目标压缩率和目标准确度之间权衡,在确保达到当前应用场景的目标准确度要求的前提下,剪除尽量多的权重值。相应地,在一些实施例中,可以根据目标准确度调整目标压缩率。具体地,可以获取更新的神经网络进行神经网络运算的更新的准确度数据;再将更新的准确度数据与目标准确度数据比较:如果更新的准确度数据小于目标准确度数据,则增大目标压缩率,并基于增大的目标压缩率重新确定待剪枝数量,并迭代执行上述的步骤s140至s180,直至更新的准确度数据大于或等于目标准确度数据。当然,在将更新的准确度数据与目标准确度数据比较后,若更新的准确度数据大于目标准确度数据,也可以减小目标压缩率并基于减小的目标压缩率重新确定待剪枝数量,以剪除尽量多的权重值。
64.还需要说明的是,虽然上述实施例中以对目标神经网络中的一个待剪枝卷积层进行剪枝对本技术进行了说明,但其仅是为了说明的目的,应当理解本技术的技术方案还可用于对目标神经网络中多个或者所有的卷积层进行剪枝。另外,随着卷积神经网络的规模和深度增加,其往往包含了非常多的卷积层,每个卷积层包括滤波器的个数、卷积核的尺寸以及其在卷积神经网络中所处的位置均可能不相同。为了尽可能降低整个目标神经网络的压缩率并保证较高的准确度,可以对目标神经网络中的各个卷积层设置不同的目标压缩率。例如,卷积神经网络中,初级卷积层的冗余通常较小,而越靠后级的卷积层的冗余通常越高。因此,可以为较后级的卷积层设置较低的目标压缩率,而为较前级的卷积层设置较高
的目标压缩率。
65.在一些实施例中,在获得更新的卷积层后,需要将包含了该更新的卷积层的神经网络进行存储,以便后续运算时使用。由于对更新的卷积层进行了剪枝操作,其包括大量稀疏度较高的权重值矩阵,因此可以对更新的卷积层进行压缩存储,以减少存储占用空间。当需要使用该神经网络应用具体计算时,如果是静态配置,则将存储的更新后的卷积层直接读出后重排即可使用;如果是动态配置(例如deformable network),则需要根据数据通路进行变换(例如,偏移、旋转等),在变换后进行使用。在使用过程中,由于卷积层中大量的权重值已被置零,降低了从外部存储器读入权重值的带宽需求,减少了参与计算的权重值的数量,进而提高了运行效率。可以理解,卷积层的存储和读取可以各种适合的方式实现。
66.例如,使用剪枝前的待剪枝卷积层进行卷积运算可以使用公式(2)进行描述:
67.y[i,j,c]=∑
k

(m,n)∈ω(ω)
w[m,n,k,c]
×
[i+m,j+n,k]
ꢀꢀꢀ
公式(2);
[0068]
其中,卷积层使用四维张量w[m,n,k,c]表示,其中c为卷积层中滤波器的索引,k为每个滤波器中卷积核的索引,m和n为每个卷积核中行和列的索引;y[i,j,c]表示输出层元素;[i+m,j+n,k]表示输入层元素。当卷积核为3
×
3矩阵且各权重值均不为零时,集合ω{ω}中的非零元素为ω={(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)}。
[0069]
对应地,进行剪枝操作后更新的卷积层的卷积运算可以使用公式(3)进行描述:
[0070]
y[i,j,c]=∑
k

(m,n)∈ω(ω

)
w[m,n,k,c]
×
[i+m,j+n,k]
ꢀꢀꢀ
公式(3);
[0071]
公式(3)与公式(2)中相同符号表示相同元素,只不过由于更新后的卷积层已经基于目标压缩率将大量权重值置零,则集合ω(ω')中的非零元素数量大量减少,从而使得卷积运算的计算量大大降低。
[0072]
下面以对滤波器210进行剪枝为例说明,图3中的(a)、(b)和(c)表示剪枝前滤波器210中卷积核211、212和213的元素图样,(d)、(e)和(f)表示剪枝后滤波器210中相应卷积核211'、212'和213'的元素图像,其中阴影方框表示非零元素,而空白方框表示零元素。可以看出,在剪枝前的卷积核211、212和213中的每一个对应非零元素ω={(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)};而在剪枝后,相应卷积核211'、212'和213'对应的非零元素为:
[0073]
ω211'={(0,0),(0,2),(1,0),(1,1),(1,2),(2,1)};
[0074]
ω212'={(0,1),(0,2),(1,0),(1,1),(2,0),(2,2)};
[0075]
ω213'={(0,0),(0,1),(1,0),(1,2),(2,1),(2,2)};
[0076]
可以看出,在剪枝之后,各卷积核非零元素的数量的从9个减小为6个,大大减少了卷积运算的运算量。参考图5(a)至(b),其中示出了使用剪枝后卷积核211'、212'和213'计算第一个输出通道410的(0,0)和(0,1)处元素的示意图。具体地,如图5(a)所示,剪枝后滤波器210中的具有3
×
3尺寸的3个卷积核211'、212'和213'分别与输入层300的3个输入通道310、320和330的左上角的3
×
3矩阵进行点乘后再相加,得到输出层的第一个输出通道410的(0,0)处的元素;接着,如图5(b)所示,输入层300的取值框向右“滑动”一格,使输入层300的3个输入通道310、320和330中从第二列开始的3
×
3矩阵与3个卷积核211'、212'和213'分别进行点乘后再相加,得到输出层的第一个输出通道410的(0,1)处的元素。继续向右及向下“滑动”输入层300的取值框,取输入层300的3个输入通道的数据矩阵与3个卷积核进行运
算,即可获得输出层的第一个输出通道410其余位置处的元素,此处不再赘述。
[0077]
参考图6,其通过在cifar10数据集训练获得的resnet56卷积神经网络,将本技术的用于对神经网络中卷积层进行剪枝的方法与传统的filter_wise和kernel_wise剪枝方法的效果进行了比较。其中,filter_wise或kernel_wise方法在剪枝时先对每个卷积层进行敏感性分析,也就是分别对神经网络每一个卷积层独立的进行基于滤波器或基于卷积核的剪枝,然后评估剪枝后的神经网络在测试数据集上的准确度,准确度下降越多的卷积层越敏感。然后根据敏感性情况设置每一层的滤波器或卷积核的裁剪比例,之后再对整个网络进行在训练。而本技术的用于对神经网络中卷积层进行剪枝的方法不进行敏感性分析,只需设置所有卷积核的待剪枝数量,直接对所有卷积核的权重值进行裁剪,流程更为简化。进一步地,从图6中可以看出,在不同稀疏度(稀疏度=1-压缩率,例如90%的稀疏度对应于10%的压缩率)情况下,本技术技术方案的剪枝方法的准确度均高于filter_wise和kernel_wise剪枝方法。或者说,在同样准确度的情况下本技术技术方案的剪枝方法可以裁剪更多的权重值,带来更高性能增益。
[0078]
本技术实施例还提供了一种用于对神经网络中卷积层进行剪枝的装置。如图7所示,该用于对神经网络中卷积层进行剪枝的装置700包括获取单元710、待剪枝数量确定单元720和剪枝单元730。获取单元710用于获取目标神经网络,目标神经网络包括待剪枝卷积层,待剪枝卷积层包括c个滤波器,每个滤波器中包括k个卷积核,每个卷积核包括m行n列个权重值,其中c、k、m和n为大于等于1的正整数;待剪枝数量确定单元720用于基于卷积核中权重值的数量m
×
n和目标压缩率确定待剪枝数量p,其中p为小于m
×
n的正整数;剪枝单元730用于将所述待剪枝卷积层的每个卷积核中绝对值最小的p个权重值置零,形成剪枝后的卷积层。关于装置700的详细介绍可以参考上文结合附图1至6对相应方法的描述,此处不再赘述。
[0079]
在一些实施例中,用于对神经网络中卷积层进行剪枝的装置700可以被实现为一个或多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件。另外,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0080]
在另一些实施例中,用于对神经网络中卷积层进行剪枝的装置700也可以采用软件功能单元的形式实现。所述功能单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中,并可以被计算机装置执行。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)
执行本发明各个实施例所述方法的全部或部分步骤。
[0081]
本技术实施例还提供一种电子设备,该电子装置包括:处理器和存储装置,存储装置用于存储能够在处理器上运行的计算机程序。当计算机程序被处理器执行时,使得处理器执行上述实施例中用于对神经网络中卷积层进行剪枝的方法。在一些实施例中,该电子设备可以是移动终端、个人计算机、平板电脑、服务器等。
[0082]
本技术实施例还提供一种非易失性计算机可读存储介质,该非易失性计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时执行上述实施例中用于对神经网络中卷积层进行剪枝的方法。在一些实施例中,该非易失性计算机可读存储介质可以是闪存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或本技术领域内所公知的任意其它形式非易失性计算机可读存储介质。
[0083]
本技术领域的一般技术人员可以通过研究说明书、公开的内容及附图和所附的权利要求书,理解和实施对披露的实施方式的其他改变。在权利要求中,措词“包括”不排除其他的元素和步骤,并且措辞“一”、“一个”不排除复数。在本技术的实际应用中,一个零件可能执行权利要求中所引用的多个技术特征的功能。权利要求中的任何附图标记不应理解为对范围的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1