一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于线性无关的结构化剪枝方法与流程

2021-10-19 23:33:00 来源:中国专利 TAG: 剪枝 深度 神经网络 主要用于 线性


1.本发明公开了一种基于线性无关的结构化剪枝方法,主要用于深度神经网络模型剪枝,涉及深度学习技术领域。


背景技术:

2.由于卷积神经网络具有特征鲁棒、泛化能力强的优点,在无人驾驶、人脸识别等领域得到了广泛应用,但是如何将复杂度高、实时性差的模型应用在实际场景中,成为各行业学者亟待解决的问题。
3.模型加速技术是解决该问题的方案之一,模型剪枝是模型加速领域中较为成熟、且提升效果显著的技术。结构化剪枝剪掉了网络中冗余度较高的层或者卷积核,在不损失模型精度的同时,降低模型的资源占用,缩短模型的前向推理时间。根据剪枝策略的不同,可以将其分为结构化剪枝和非结构化剪枝两种。
4.结构化剪枝是通过计算卷积核或者层的冗余性,剪掉冗余度较高的卷积核或者卷积层而达到模型加速的目的,结构化剪枝根据评估卷积核重要性的条件可以分为固定剪枝率的结构化剪枝和自适应的结构化剪枝,固定剪枝率的结构化剪枝一般为one

shot的剪枝方式,根据固定剪枝率,对卷积核个数进行剪枝。自适应的结构化剪枝一般为迭代的剪枝方式,根据loss或者准确率的变化,寻找最优的剪枝率。非结构化剪枝又被称为权重剪枝,将模型的权重根据条件筛选出不重要的权重进行稀疏化,进而通过依赖于硬件资源的计算库进行模型加速。
5.但是当前结构化剪枝和非结构化剪枝存在着一些不足:当前l1、l2主流的结构化剪枝方法都基于“卷积核范数越小,越不重要”的假设,即要求卷积核权重分布满足偏差足够大以及减掉的权重范数足够小这两个条件。当卷积核权重分布偏差较小以及卷积核的权重范数较大时,该剪枝方法无效。自适应的结构化剪枝方法依赖准确度和loss变化的影响,对模型进行逐层剪枝。该方法剪枝周期长,并且容易陷入局部最优,无法达到有效去除网络冗余结构的目的。非结构化剪枝方法没有从根本上减少参数量和浮点运算次数,只是将冗余的权重稀疏化,仅适用于特殊的硬件或者加速库,难以被广泛应用。


技术实现要素:

6.本发明所要解决的技术问题是:针对现有技术的缺陷,提供一种基于线性无关的结构化剪枝方法(maximal linearly independent pruning,mlip)。本发明重新定义了深度模型中卷积核重要性的评估条件,提出使用极大线性无关组的方式对网络的卷积核进行剪枝。本发明基于权重矩阵卷积核之间存在着冗余信息和极大线性无关组的性质,将求冗余卷积核的问题转换为极大线性无关组求解的问题。假设某卷积层的某些卷积核权重可以被其他卷积核线性表示,那么可以认为该卷积核的输出可以被其他卷积核的输出线性组合代替,从而达到剪枝的目的。
7.本发明为解决上述技术问题采用以下技术方案:
8.一种基于线性无关的结构化剪枝方法,所述方法具体包含以下步骤:
9.步骤一、根据不同的计算机视觉任务,在数据集上训练一个深度网络模型;
10.步骤二、计算某个卷积层卷积核之间的冗余性,并对每个卷积层的卷积核进行fm变换,对变换后的矩阵计算极大线性无关组;
11.步骤三、对剪枝网络所有的卷积层重复步骤二,计算每个卷积层的极大线性无关组,得到剪枝之后的模型;
12.步骤四、使用训练数据对步骤三生成的剪枝之后的模型进行微调训练,获得剪枝之后模型的权重。
13.优选的,还可以在方案中增加验证步骤,步骤五、在验证集上对剪枝前后模型的性能进行验证。
14.作为优选方案,步骤二中,所述fm变换的具体过程为:
15.设定某个卷积层表示为:
[0016][0017]
其中,o
i
为第i层卷积层,n为该层卷积层中的第n个通道卷积核;
[0018]
c
out
表示该卷积层卷积核个数,则每个卷积核的尺寸表示为:
[0019]
c
in
×
k
×
k;
[0020]
其中,k为卷积核的kernel size,c
in
为该卷积核的通道个数;
[0021]
将该卷积层每个卷积核拉伸为一维向量,则拉伸之后的向量尺寸为:
[0022]1×
c
in
×
k
×
k;
[0023]
将多个卷积核的向量合并为矩阵,则该矩阵的尺寸为:
[0024]
c
out
×
(c
in
×
k
×
k)。
[0025]
作为优选方案,步骤二中,所述对变换后的矩阵计算极大线性无关组的具体过程为:
[0026]
对经过fm变换后的卷积层的矩阵进行行列式变换,其中,行向量全为零为线性相关的向量,该向量所对应的卷积核为需要做剪枝的卷积核;
[0027]
线性无关的向量表示为:
[0028][0029]
线性相关的向量表示为:
[0030][0031]
式中,m为线性相关的向量个数,n为线性无关的向量个数;
[0032]
根据极大线性无关组的性质,线性相关的向量被线性无关的向量线性表示,即:
[0033]
w
s
=a*w
p

ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0034]
a={α1,α2,α3…
α
m
},α
k
∈r1×
n
,k∈{1,2,

m};
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0035]
其中,式(2)中k为线性相关的向量组索引,因此,w
sk
=α
k
*w
p
,则第k个线性相关的向量等于相关系数矩阵第k行和线性无关向量组乘积求和的结果:
[0036][0037]
即:
[0038][0039]
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
[0040]
1、解决了计算冗余卷积核复杂度过高的问题,采用one

shot结构化剪枝方式,仅需要计算每个卷积层的极大线性无关组,相比于迭代的结构化剪枝方式,即插即用,计算复杂度小。
[0041]
2、不依赖相关假设证明,将冗余卷积核的求解问题转为极大线性无关组求解的问题,适用于所有结构的网络模型,普适性更好。
[0042]
3、能够大幅度提升模型的前向推理时间,减少模型的参数量。
附图说明
[0043]
图1是本发明中,fm变换示意图;
[0044]
图2是本发明中,某一层基于极大线性无关组的剪枝流程图;
[0045]
图3是剪枝前后,深度神经网络结构变换图;
[0046]
图4是本发明的方法流程示意图;
[0047]
图5是本发明的一个具体实施例的流程示意图;
[0048]
图6是本发明的一个具体实施例中,构建resnet50的网络模型整体结构图。
具体实施方式
[0049]
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0050]
下面结合附图对本发明的技术方案做进一步的详细说明:
[0051]
本发明所公开的一种基于线性无关的结构化剪枝方法,具体包含以下步骤:
[0052]
步骤一、根据不同的计算机视觉任务,在数据集上训练一个大的深度网络模型。
[0053]
步骤二、计算某个卷积层卷积核之间的冗余性,设某个卷积层可以表示为:
[0054][0055]
其中,o
i
为第i层卷积层,n为该层卷积层中的第n个通道卷积核;c
out
表示该卷积层卷积核个数,则每个卷积核的尺寸可以表示为:
[0056]
c
in
×
k
×
k;
[0057]
k为卷积核的kernel size,c
in
为该卷积核的通道个数。
[0058]
首先,将该卷积层每个卷积核拉伸为一维向量,则拉伸之后的向量尺寸为1
×
c
in
×
k
×
k,将多个卷积核的向量合并为矩阵,则该矩阵的尺寸为c
out
×
(c
in
×
k
×
k)。我们将上述变换称为fm(flatten

merge)变换,每个卷积层的卷积核通过fm变换,变换过程的示意图如图1所示。
[0059]
然后对变换后的矩阵计算极大线性无关组,通过行列式变换,其中,行向量全为零为线性相关的向量,该向量所对应的卷积核为需要做剪枝的卷积核,某个卷积层极大线性无关组剪枝流程图如图2所示,图中,被虚线所框出来的向量为线性相关的向量,该向量所对应的卷积核为冗余的卷积核。设矩阵经过极大线性无关组计算,线性无关的向量可以表
示为:
[0060][0061]
线性相关的向量可以表示为:
[0062][0063]
式中,m为线性相关的向量个数,n为线性无关的向量个数,根据极大线性无关组的性质,线性相关的向量可以被线性无关的向量线性表示,即:
[0064]
w
s
=a*w
p

ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0065]
a={α1,α2,α3…
α
m
},α
k
∈r1×
n
,k∈{1,2,

m};
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0066]
其中,式(2)中k为线性相关的向量组索引,因此,w
sk
=α
k
*w
p
,则第k个线性相关的向量等于相关系数矩阵第k行和线性无关向量组乘积求和的结果:
[0067][0068]
即:
[0069][0070]
步骤三、对剪枝网络所有的卷积层重复步骤2,计算每个卷积层的极大线性无关组,可以得到剪枝之后的模型,如图3所示。
[0071]
步骤四、使用训练数据对步骤三生成的剪枝之后模型进行微调训练,获得剪枝之后模型的权重。
[0072]
步骤五、在验证集上对剪枝前后模型的性能进行验证。
[0073]
综合以上步骤,基于极大线性无关组的结构化剪枝方法流程如4图所示。
[0074]
下面结合当前主流的分类模型resnet50网络作为一个具体实施例,对本发明的技术方案进行详细介绍,整个流程如图5所示,该流程具体包含以下步骤:
[0075]
步骤1、构建resnet50的网络模型整体结构图如图6所示;
[0076]
步骤2、计算resnet50每个卷积层卷积核之间的冗余性,本发明是通过极大线性无关组计算卷积核之间的相关性来评价该卷积核的重要程度,由于线性相关的卷积核可以被其他线性无关的卷积核线性表示,那么可以认为线性相关的卷积核输出可以被其他线性无关的卷积核输出线性组合代替,故线性相关的卷积核可以被减掉。
[0077]
然后对合并后的矩阵计算线性无关组,矩阵中线性无关组的索引所对应通道的卷积核为需要保留的卷积核,其余的为需要去除的卷积核。
[0078]
此处以resnet50的“conv1”为例进行说明:“conv1”的卷积核的通道个数为3,卷积核个数为64,卷积核的kernel size为3,即:c
in
=3,c
out
=64,k=3,则权重w可以表示为:
[0079]
w∈r
64
×3×3×3;
[0080]“conv1”的权重矩阵经过fm变换,计算极大线性无关组之后,可以得到:
[0081]
w
m
∈r
64
×
(3
×3×
3)

[0082]
其中,w
m
为经过fm变换后的二维矩阵。
[0083]
设线性无关的向量可以表示为:
[0084][0085]
线性相关的向量可以表示为:
[0086]
w
s
={w
s1
,w
s2
,w
s3
,

w
sm
},w
s
∈r
n
×
(3
×3×
3)

[0087]
则有:
[0088][0089]
式中,m为线性相关的向量个数,n为线性无关的向量个数,根据线性无关组的性质,线性相关的向量可以被线性无关的向量线性表示,即:
[0090]
w
s
=a*w
p

[0091]
则有:
[0092]
a={α1,α2,α3…
α
m
},其中:a∈r
m
×
n
,α
k
∈r1×
n
,k∈{1,2,

m};
[0093]
其中,k为线性相关的向量组索引,因此,则第k个线性相关的向量等于相关系数矩阵第k行和线性无关向量组乘积求和的结果:
[0094][0095]
即:
[0096][0097]
步骤3、对resnet50所有的卷积层重复步骤2,计算每个卷积层的极大线性无关组,比如resnet50的“conv1”,“conv3_1”,得到最终剪枝之后的模型。
[0098]
步骤4、使用训练数据对步骤3得到的resnet50剪枝之后的模型进行微调训练,获得剪枝之后模型的权重。
[0099]
401、加载原始模型预训练的权重;
[0100]
402、使用交叉熵损失函数作为loss函数对剪枝后的模型进行微调;交叉熵损失函数可以表示为:
[0101][0102]
其中,n为输出的类别个数,p(x
i
)为真实标签,q(x
i
)为模型预测属于该类别的置信分数。
[0103]
步骤5、在验证集上计算resnet50剪枝前后的准确率、参数量、浮点运算次数等指标,验证剪枝前后模型的性能。
[0104]
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献