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

剪裁神经网络的方法、设备、装置及存储介质与流程

2022-04-30 04:15:00 来源:中国专利 TAG:


1.本发明涉及神经网络技术领域,尤其涉及剪裁神经网络的方法、设备、装置及存储介质。


背景技术:

2.神经网络的剪裁算法通常包括顺序的三个阶段:在大模型上训练、剪裁和微调。其中,在剪裁阶段,要根据某种规则把冗余的权重裁掉,并保留重要的权重以维持原模型的精度。
3.一种典型的剪裁算法为训练整个网络,目的是找出哪些是重要的“连接”;其中,设置一个阈值,剪裁掉低于该阈值的权重,将密集的网络变成稀疏的网络,最后对剩下的参数进行微调。但是,通过阈值筛选的方法从大模型中保留的权重,会使得剪裁后的模型达到一个非最优的局部最小解,并不能让剪裁后的模型变得更好。另一种典型的剪裁算法为对训练好的模型,找到给定的、预训练模型有效的网络结构;其中,按照预先设置好的比例剪裁掉卷积神经网络每一层的通道数,或者依据一种算法为各个通道打分,剪裁掉分数较低的通道后进行微调。但是,按比例剪裁通道数、或者为通道打分改变网络结构的方法,并不一定能得到比随机初始化剪裁后的模型更好的测试结果。
4.此外,传统方法缺乏对神经网络剪裁的可解释性说明,无法提供指导性的改进方案。


技术实现要素:

5.本发明实施例的目的在于,提供一种剪裁神经网络的方法、设备、装置及存储介质。
6.本发明实施例提供一种剪裁神经网络的方法,包括:基于已完成训练的第一神经网络模型及其对应的数据集获取第一神经网络模型中每个网络层模块的输出值;基于每个网络层模块的输出值分别计算对应的各个图拉普拉斯矩阵,并且对各个图拉普拉斯矩阵分别计算每个网络层模块的流形度量数值;基于每个网络层模块的流形度量数值分别计算每个非最后一个网络层模块与最后一个网络层模块之间的各个流形度量距离;获取各个流形度量距离中的较小流形度量距离,并将其对应的非最后一个网络层模块与最后一个网络层模块之后的模块连接而形成剪裁后的第二神经网络模型。
7.可选地,基于每个网络层模块的输出值分别计算对应的各个图拉普拉斯矩阵包括:对每个网络层模块的输出值分别计算对应的无向图g=(v,e),其中,v和e分别为无向图中的节点集合和边集合;对无向图g计算归一化的图拉普拉斯矩阵l,其包括:计算无向图g的邻接矩阵a、基于邻接矩阵a计算对角矩阵d、以及基于对角矩阵d计算每个网络层模块对应的、归一化的图拉普拉斯矩阵l。
8.可选地,对各个图拉普拉斯矩阵分别计算每个网络层模块的流形度量数值包括通过如下公式计算归一化的图拉普拉斯矩阵l的热核:
9.l=φλφ
t

[0010][0011]
φ=(φ1,φ2…
,φn),
[0012]
其中,h
t
为归一化的图拉普拉斯矩阵l的热核,t为时刻,φ为归一化的图拉普拉斯矩阵l分解后的特征向量矩阵,φi为φ中的第i个特征向量,φ
it
是φi的转置矩阵,λ为对角矩阵,其特征值(λ1,λ2,

,λn)从小到大排序为λ1≤λ2…
≤λn,λi为其中的第i个特征值。
[0013]
可选地,对各个图拉普拉斯矩阵分别计算每个网络层模块的流形度量数值包括使用slq估计公式计算任一个网络层模块的流形度量数值,其通过如下公式表示:
[0014][0015]
其中,x为任一个网络层模块的输出值,s(x)为任一个网络层模块的流形度量数值,tr()为计算矩阵的迹的算符。
[0016]
可选地,基于每个网络层模块的流形度量数值分别计算每个非最后一个网络层模块与最后一个网络层模块之间的各个流形度量距离包括通过如下公式计算各个流形度量距离:
[0017][0018]
其中,xm为任一个非最后一个网络层模块的输出值,xn为最后一个网络层模块的输出值,d(xm,xn)为任一个非最后一个网络层模块与最后一个网络层模块之间的流形度量距离,s(xm)和s(xn)分别为任一个非最后一个网络层模块和最后一个网络层模块的流形度量数值,t为时刻。
[0019]
可选地,计算各个流形度量距离包括:对t进行若干次采样并分别计算d(xm,xn),取其中的最大距离作为任一个非最后一个网络层模块与最后一个网络层模块之间的流形度量距离,其中,t∈(0.1,10)。
[0020]
可选地,获取各个流形度量距离中的较小流形度量距离包括:将第一神经网络模型中的网络层模块依次分为n组,每组中包括至少一个网络层模块,其中,n为大于或等于2的整数;在最后一个网络层模块所位于的组之外的所有网络层模块中获取其与最后一个网络层模块之间的各个流形度量距离中的最小流形度量距离,并且将其作为较小流形度量距离。
[0021]
本发明实施例还提供一种剪裁神经网络的设备,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行上述任一种剪裁神经网络方法的步骤。
[0022]
本发明实施例还提供一种存储介质,其上存储有计算机指令,计算机指令运行时执行上述任一种剪裁神经网络方法的步骤。
[0023]
本发明实施例还提供一种剪裁神经网络的装置,包括:获取模块,其适于基于已完成训练的第一神经网络模型及其对应的数据集获取第一神经网络模型中每个网络层模块的输出值;第一计算模块,其适于基于每个网络层模块的输出值分别计算对应的各个图拉普拉斯矩阵,并且对各个图拉普拉斯矩阵分别计算每个网络层模块的流形度量数值;第二计算模块,其适于基于每个网络层模块的流形度量数值分别计算每个非最后一个网络层模块与最后一个网络层模块之间的各个流形度量距离;连接模块,其适于获取各个流形度量
距离中的较小流形度量距离,并将其对应的非最后一个网络层模块与最后一个网络层模块之后的模块连接而形成剪裁后的第二神经网络模型。
[0024]
可选地,第一计算模块适于:对每个网络层模块的输出值分别计算对应的无向图g=(v,e),其中,v和e分别为无向图中的节点集合和边集合;对无向图g计算归一化的图拉普拉斯矩阵l,其包括:计算无向图g的邻接矩阵a、基于邻接矩阵a计算对角矩阵d、以及基于对角矩阵d计算每个网络层模块对应的、归一化的图拉普拉斯矩阵l。
[0025]
可选地,第一计算模块适于通过如下公式计算归一化的图拉普拉斯矩阵l的热核:
[0026]
l=φλφ
t

[0027][0028]
φ=(φ1,φ2…
,φn),
[0029]
其中,h
t
为归一化的图拉普拉斯矩阵l的热核,t为时刻,φ为归一化的图拉普拉斯矩阵l分解后的特征向量矩阵,φi为φ中的第i个特征向量,φ
it
是φi的转置矩阵,λ为对角矩阵,其特征值(λ1,λ2,

,λn)从小到大排序为λ1≤λ2…
≤λn,λi为其中的第i个特征值。
[0030]
可选地,第一计算模块适于使用slq估计公式计算任一个网络层模块的流形度量数值,其通过如下公式表示:
[0031][0032]
其中,x为任一个网络层模块的输出值,s(x)为任一个网络层模块的流形度量数值,tr()为计算矩阵的迹的算符。
[0033]
可选地,第二计算模块适于通过如下公式计算各个流形度量距离:
[0034][0035]
其中,xm为任一个非最后一个网络层模块的输出值,xn为最后一个网络层模块的输出值,d(xm,xn)为任一个非最后一个网络层模块与最后一个网络层模块之间的流形度量距离,s(xm)和s(xn)分别为任一个非最后一个网络层模块和最后一个网络层模块的流形度量数值,t为时刻。
[0036]
可选地,第二计算模块适于:对t进行若干次采样并分别计算d(xm,xn),取其中的最大距离作为任一个非最后一个网络层模块与最后一个网络层模块之间的流形度量距离,其中,t∈(0.1,10)。
[0037]
可选地,连接模块适于:将第一神经网络模型中的网络层模块依次分为n组,每组中包括至少一个网络层模块,其中,n为大于或等于2的整数;在最后一个网络层模块所位于的组之外的所有网络层模块中获取其与最后一个网络层模块之间的各个流形度量距离中的最小流形度量距离,并且将其作为较小流形度量距离。
[0038]
与现有技术相比,本发明实施例的技术方案具有有益效果。
[0039]
例如,现有技术中,如果神经网络模型的深度较大(即隐藏层的数量较多),则计算量和计算时间也较大。本发明实施例提供基于流形度量的剪裁方案以减少隐藏层的数量,这不仅显著降低了计算量和计算时间,还使得剪裁后的神经网络模型仍具有较高的测试精度。
[0040]
又例如,本发明实施例基于网络层模块之间的距离剪裁第一神经网络模型,包括计算其中每个非最后一个网络层模块与最后一个网络层模块之间的各个距离、获取其中的
较小距离、以及将其对应的非最后一个网络层模块与最后一个网络层模块之后的模块连接而形成剪裁后的第二神经网络模型,其具有较高的测试精度。
[0041]
又例如,本发明实施例将流形度量的距离计算和比较与网络层模块之间的距离计算和比较进行关联,包括计算每个网络层模块的流形度量数值、基于每个网络层模块的流形度量数值分别计算每个非最后一个网络层模块与最后一个网络层模块之间的各个流形度量距离、获取各个流形度量距离中的较小流形度量距离、将其对应的非最后一个网络层模块与最后一个网络层模块之后的模块连接而形成剪裁后的第二神经网络模型。其中,每个网络层模块的流形度量数值都能够较准确地体现该网络层模块所学习到的数据“内部”的信息量;流形度量距离可以定量地描述冗余的网络层模块,从而能够有效地找到冗余的网络层模块;通过剪裁冗余的网络层模块,可以减少隐藏层的数量,从而显著降低计算量和计算时间;剪裁后的第二神经网络模型仍能够具有较高的测试精度;基于流形度量的剪裁有依据、可解释,从而可以广泛地应用于深度较大的神经网络模型的剪裁场景。
附图说明
[0042]
图1为本发明实施例中剪裁神经网络的方法的流程图;
[0043]
图2为vgg16神经网络模型的结构;
[0044]
图3为resnet50神经网络模型的结构;
[0045]
图4为本发明实施例中剪裁神经网络的装置的结构示意图。
具体实施方式
[0046]
在本发明的实施例中,处理器可以为中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)、其他可编程逻辑器件、分立门或晶体管逻辑器件、或者分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0047]
在本发明的实施例中,存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0048]
在本发明的实施例中,存储介质包括u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0049]
在本发明的实施例中,装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。模块可以存储在存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机,服务器,或者连接于网络的设备等)执行本发明各实施例中相关方法的步骤。
[0050]
为使本发明实施例的目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施方式进行详细说明。
[0051]
如图1所示,本发明实施例提供剪裁神经网络的方法100,包括以下步骤:
[0052]
s110,基于已完成训练的第一神经网络模型及其对应的数据集获取第一神经网络模型中每个网络层模块的输出值;
[0053]
s120,基于每个网络层模块的输出值分别计算对应的各个图拉普拉斯矩阵,并且对各个图拉普拉斯矩阵分别计算每个网络层模块的流形度量数值;
[0054]
s130,基于每个网络层模块的流形度量数值分别计算每个非最后一个网络层模块与最后一个网络层模块之间的各个流形度量距离;
[0055]
s140,获取各个流形度量距离中的较小流形度量距离,并将其对应的非最后一个网络层模块与最后一个网络层模块之后的模块连接而形成剪裁后的第二神经网络模型。
[0056]
在步骤s110的执行中,涉及已完成训练的第一神经网络模型,其可以为现有任何类型的神经网络,例如为,卷积神经网络(convolutional neural network,cnn),循环神经网络(recurrent neural network,rnn),长短期记忆(long short-term memory,lstm)神经网络。
[0057]
在一些实施例中,已完成训练的第一神经网络模型具有较大的规模、较高的测试精度和较多的参数。
[0058]
第一神经网络模型可以包括输入层、隐藏层和输出层,例如,对于cnn,隐藏层可以包括卷积层(convolution layer)、池化层(pooling layer)和完全连接层(fully connected layer),一个或多个卷积层组成网络层模块,输出层可以为softmax层(softmax layer)。
[0059]
已完成训练的第一神经网络模型可以基于数据集而进行新的训练。
[0060]
具体而言,已完成训练的第一神经网络模型具有对应的数据集,其用于新的训练,从而获取第一神经网络模型中每个网络层模块在整个数据集上的输出值。
[0061]
每个网络层模块在数据集上的输出值具有维度,可以通过h、w和c表示,其中,h和w分别为网络层模块输出特征图的高度和宽度、c为网络层模块输出的通道数。
[0062]
在步骤s120的执行中,可以基于每个网络层模块的输出值分别计算对应的各个图拉普拉斯矩阵。
[0063]
计算各个图拉普拉斯矩阵可以为计算每个网络层模块对应的、归一化的图拉普拉斯矩阵l。
[0064]
首先,对每个网络层模块的输出值分别计算对应的无向图g=(v,e)。
[0065]
具体而言,对于任一个网络层模块的输出值x,可以使用聚类算法(例如knn算法、k-means算法)计算对应的无向图g=(v,e),无向图g中一共有n个节点,v是这些节点的集合,e是边集合。
[0066]
然后,计算无向图g的邻接矩阵a。
[0067]
具体而言,邻接矩阵a中的每个元素可以通过如下公式表示:
[0068][0069]
其中,a
ij
为邻接矩阵a中第i行、第j列的元素。
[0070]
接着,基于邻接矩阵a计算对角矩阵d。
[0071]
具体而言,对角矩阵d中的元素可以通过如下公式计算:
[0072][0073]
其中,d
ii
为对角矩阵d中第i行、第i列的元素。
[0074]
最后,基于对角矩阵d计算每个网络层模块对应的、归一化的图拉普拉斯矩阵l。
[0075]
具体而言,归一化的图拉普拉斯矩阵l可以通过如下公式计算:
[0076][0077]
其中,i为单位矩阵。
[0078]
在步骤s120的执行中,还可以对各个图拉普拉斯矩阵分别计算每个网络层模块的流形度量数值。
[0079]
流形是拓扑学中的概念,其表示一个局部处为可坐标化的欧几里得空间;流形学习是从高维采样数据中恢复出低维流形结构,以实现数据的降维。但是,在本发明的实施例中,并不是基于流形的常规应用,即用于数据降维,而是将流形与神经网络模型的深度相关联,例如,计算各个非最后一个网络层模块与最后一个层网络层模块之间的流形度量距离,从而找到冗余的网络层模块,进而为神经网络模型的剪裁提供可解释性的指导。
[0080]
可以通过以下步骤计算每个网络层模块的流形度量数值。
[0081]
首先,可以通过公式(4)将归一化的图拉普拉斯矩阵l进行特征分解,并且通过公式(5)和(6)计算归一化的图拉普拉斯矩阵l的热核:
[0082]
l=φλφ
t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0083][0084]
φ=(φ1,φ2…
,φn)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0085]
其中,h
t
为归一化的图拉普拉斯矩阵l的热核,t为时刻,φ为归一化的图拉普拉斯矩阵l分解后的特征向量矩阵,φi为φ中的第i个特征向量,φ
it
是φi的转置矩阵,λ为对角矩阵,其特征值(λ1,λ2,

,λn)从小到大排序为λ1≤λ2…
≤λn,λi为其中的第i个特征值。
[0086]
然后,使用stochastic lanczos quadrature(随机lanczos积分,slq)估计算法计算任一个网络层模块的流形度量数值,其可以通过如下公式表示:
[0087][0088]
其中,x为任一个网络层模块的输出值,s(x)为任一个网络层模块的流形度量数值,tr()为计算矩阵的迹的算符,h
t
为归一化的图拉普拉斯矩阵l的热核,λi为对角矩阵λ的特征值(λ1,λ2,

,λn)中的第i个特征值。
[0089]
可以通过如下公式将tr(h
t
)进行转换:
[0090]
f(l)=e-tl
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0091]
tr(h
t
)=tr(e-tl
)=tr(f(l))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0092]
使用slq估计公式计算任一个网络层模块的流形度量数值可以包括如下三个步骤。
[0093]
第一个步骤为,使用hutchinson迹估计器(hutchinson trace estimator)计算tr(f(l)),包括如下公式:
[0094][0095]
其中,f(l)为关于归一化的图拉普拉斯矩阵l的函数,v为随机向量的集合,vi为从标准正态分布采样的随机向量,为vi的转置矩阵,p(v)为一个服从标准正态分布的函数,e
p(v)
()为计算期望值的算符,n为无向图g上节点的个数,nv为随机向量的个数。
[0096]
第二个步骤为,使用riemann-stieltjes和m-点gauss积分规则展开包括如下公式:
[0097][0098]
其中,m为算法需要迭代计算的次数,k、wk和f(θk)为中间参量。
[0099]
对于矩阵l和一个任意的起始1
×
n的单位向量q0,其中,单位向量q0可以任意选取,其作为初始的向量用于计算后面的向量(例如q1、
……
、q
m-1
)。可以使用m-step lanczos算法计算得到一个n
×
m的列向量相互正交的矩阵q=[q0,q1…
,q
m-1
],q中的每一个qi向量都可以通过如下公式计算得到:
[0100]
qi=liq0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(12)
[0101]
并且,可以通过如下公式得到一个m
×
m的雅各比矩阵t:
[0102]
t=q
t
lq
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(13)
[0103]
然后,可以通过如下公式展开:
[0104][0105]
其中,λk是雅各比矩阵t的第k个特征值,是雅各比矩阵t的第k个特征向量归一化后的第一个分量的平方。
[0106]
可以将雅各比矩阵t通过如下公式进行正交分解:
[0107]
t=uλu
t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(15)
[0108]
其中,λ是特征值λ的对角矩阵、u是特征向量的标准正交矩阵,λk=λ
k,k
、其为雅各比矩阵t的第k个特征值,τk=u
0,k
、其为雅各比矩阵t的第k个特征向量归一化后的第一个分量,u
0,k
是矩阵u第k个列向量的第一个值。
[0109]
第三个步骤为,获取任一个网络层模块的流形度量数值:
[0110][0111]
其中,为τk的第i个分量,为λk的第i个值。
[0112]
在一些实施例中,可以将m设为10,将nv设为100。
[0113]
在步骤s130的执行中,可以基于每个网络层模块的流形度量数值分别计算每个非
最后一个网络层模块与最后一个网络层模块之间的各个流形度量距离。
[0114]
可以通过公式(16)计算任一个非最后一个网络层模块的流形度量数值、以及最后一个网络层模块的流形度量数值;然后,通过如下公式计算该任一个非最后一个网络层模块与最后一个网络层模块之间的流形度量距离:
[0115][0116]
其中,xm为任一个非最后一个网络层模块的输出值,xn为最后一个网络层模块的输出值,d(xm,xn)为该任一个非最后一个网络层模块与最后一个网络层模块之间的流形度量距离,s(xm)和s(xn)分别为任一个非最后一个网络层模块和最后一个网络层模块的流形度量数值,t为时刻。
[0117]
在具体实施中,可以对t进行若干次采样并分别计算d(xm,xn),取其中的最大距离作为该非最后一个网络层模块与最后一个网络层模块之间的流形度量距离,其中,t∈(0.1,10)。
[0118]
在步骤s140的执行中,可以获取各个流形度量距离中的较小流形度量距离,并将其对应的非最后一个网络层模块与最后一个网络层模块之后的模块连接而形成剪裁后的第二神经网络模型;其中,最后一个网络层模块之后的模块为紧邻最后一个网络层模块并在其之后的模块。
[0119]
具体而言,可以将第一神经网络模型中的网络层模块依次分为n组,每组中包括至少一个网络层模块,其中,n为大于或等于2的整数;在最后一个网络层模块所位于的组之外的所有网络层模块中获取其与最后一个网络层模块之间的各个流形度量距离中的最小流形度量距离,并将其作为上述较小流形度量距离。
[0120]
通过该方式,一方面,在最后一个网络层模块所位于的组之外选择将与最后一个网络层模块之后的模块进行连接的非最后一个网络层模块,从而避免了该非最后一个网络层模块过于靠近最后一个网络层模块,进而避免了将被剪裁的网络层模块的数量过少;另一方面,在最后一个网络层模块所位于的组之外的所有网络层模块中获取其与最后一个网络层模块之间的各个流形度量距离中的最小流形度量距离,并且将其作为上述较小流形度量距离以用于网络层模块的剪裁及模块连接,基于该最小流形度量距离的方式可以实现有效的剪裁。
[0121]
在一个实施例中,将第一神经网络模型中的网络层模块依次分为2组,最后一个网络层模块属于第二组,可以在第一组的网络层模块中获取其与最后一个网络层模块之间的各个流形度量距离中的最小流形度量距离,并将其作为上述较小流形度量距离以用于网络层模块的剪裁及模块连接。
[0122]
在另一个实施例中,将第一神经网络模型中的网络层模块依次分为3组,最后一个网络层模块属于第三组,可以在第一组和/或第二组的网络层模块中获取其与最后一个网络层模块之间的各个流形度量距离中的最小流形度量距离,并将其作为上述较小流形度量距离以用于网络层模块的剪裁及模块连接。
[0123]
在又一个实施例中,将第一神经网络模型中的网络层模块依次分为4组,最后一个网络层模块属于第四组,可以在第一组、第二组和/或第三组的网络层模块中获取其与最后一个网络层模块之间的各个流形度量距离中的最小流形度量距离,并将其作为上述较小流形度量距离以用于网络层模块的剪裁及模块连接。
[0124]
在本发明的实施例中,选择最后一个网络层模块作为参照网络层模块,并且将其他网络层模块与其进行流形度量距离的计算,以使得上述对应的非最后一个网络层模块可以直接与最后一个网络层模块之后的模块进行适配,从而可以进行连接而形成剪裁后的第二神经网络模型。如果参照网络层模块不是最后一个网络层模块,而是其前面的某一个网络层模块,上述对应的非最后一个网络层模块与该某一个网络层模块之后的模块之间可能不能自动适配而需要人工参与,从而增加了剪裁的复杂性。
[0125]
在本发明的实施例中,可对剪裁后的第二神经网络模型进行微调和测试。
[0126]
具体而言,可以使用剪裁时应用的数据集进行微调训练,例如设置网络批处理大小、总训练的迭代数量以及学习率大小等,在损失稳定后停止训练,从而形成第三神经网络模型。相比较于第二神经网络模型,第三神经网络模型的测试精度更高。
[0127]
可以对第三神经网络模型进行精度测试,以确定最终获得的第三神经网络模型是否符合精度要求。
[0128]
实施例一
[0129]
在本实施例中,第一神经网络模型为vgg16神经网络模型,其通过数据集cifar10进行训练而用于剪裁。
[0130]
如图2所示,vgg16神经网络模型包括输入层、隐藏层和输出层,隐藏层包括13个卷积层、5个池化层和3个完全连接层,其中,13个卷积层分别对应13个网络层模块,5个池化层均为最大池化层(max pooling layer),3个完全连接层分别为fc-4096layer、fc-4096layer和fc-10layer,输出层为softmax层。
[0131]
可以通过上述步骤s110、s120和s130计算每个非最后一个网络层模块与最后一个网络层模块13之间的各个流形度量距离。
[0132]
如表1所示,vgg16神经网络模型中每个非最后一个网络层模块与最后一个网络层模块13之间分别具有相应的流形度量距离。
[0133]
表1
[0134][0135][0136]
网络层模块依次分为3组,网络层模块1至4属于第一组,网络层模块5至8属于第二组,网络层模块9至12属于第三组。
[0137]
在第一组和第二组的网络层模块中、或者第二组的网络层模块中获取其与最后一个网络层模块13之间的各个流形度量距离中的最小流形度量距离,其中,网络层模块7的流形度量距离3.76为最小。通过该方式,可以兼顾流形度量的较小距离和剪裁较多数量的网络层模块。
[0138]
可以将网络层模块7与最后一个网络层模块13之后的模块max pooling进行连接,从而形成剪裁后的vgg16神经网络模型。
[0139]
剪裁后的vgg16神经网络模型剪裁了较多的冗余网络层模块,并且仍具有较高的测试精度。
[0140]
如表2所示,相比较于剪裁前的vgg16预训练模型,剪裁后的vgg16神经网络模型的测试精度从90%下降到87%,仍具有非常高的测试精度。
[0141]
表2
[0142][0143]
实施例二
[0144]
在本实施例中,第一神经网络模型为resnet50神经网络模型,其通过数据集imagenet进行训练而用于剪裁。
[0145]
如图3所示,resnet50神经网络模型包括输入层、隐藏层和输出层,隐藏层包括1个卷积层、16个残差块层、2个池化层和1个完全连接层,其中,16个残差块层分别对应16个网络层模块,每个残差块层均包括3个卷积层,2个池化层分别为max pooling layer和平均池化层(average pooling layer),1个完全连接层为fc-1000layer,输出层为softmax层。
[0146]
可以通过上述步骤s110、s120和s130计算每个非最后一个网络层模块与最后一个网络层模块16之间的各个流形度量距离。
[0147]
如表3所示,resnet50神经网络模型中每个非最后一个网络层模块与最后一个网络层模块16之间分别具有相应的流形度量距离。
[0148]
表3
[0149]
网络层模块1234距离d(xm,xn)75.3248.4123.7851.62网络层模块5678距离d(xm,xn)2.0112.7821.9832.12网络层模块9101112距离d(xm,xn)52.6225.78125.43112.56网络层模块131415 距离d(xm,xn)4.432.143.13 [0150]
网络层模块依次分为4组,网络层模块1至4属于第一组,网络层模块5至8属于第二组,网络层模块9至12属于第三组,网络层模块13至15属于第四组。
[0151]
在第二组的网络层模块中、第一组和第二组的网络层模块中、第二组和第三组的网络层模块中、或者第一组至第三组的网络层模块中获取其与最后一个网络层模块16之间的各个流形度量距离中的最小流形度量距离,其中,网络层模块5的流形度量距离2.01为最小。通过该方式,可以兼顾流形度量的较小距离和剪裁较多数量的网络层模块。
[0152]
可以将网络层模块5与最后一个网络层模块16之后的模块average pooling进行连接,从而形成剪裁后的resnet50神经网络模型。
[0153]
剪裁后的resnet50神经网络模型剪裁了较多的冗余网络层模块,并且仍具有较高的测试精度。
[0154]
如表4所示,相比较于剪裁前的resnet50预训练模型,剪裁后的resnet50神经网络模型的测试精度从90%下降到84%,仍具有非常高的测试精度。
[0155]
表4
[0156][0157][0158]
本发明实施例还提供一种剪裁神经网络的设备,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行上述任一种剪裁神经网络方法的步骤。
[0159]
本发明实施例还提供一种存储介质,其上存储有计算机指令,计算机指令运行时执行上述任一种剪裁神经网络方法的步骤。
[0160]
如图4所示,本发明实施例还提供一种剪裁神经网络的装置200,包括:获取模块210,其适于基于已完成训练的第一神经网络模型及其对应的数据集获取第一神经网络模型中每个网络层模块的输出值;第一计算模块220,其适于基于每个网络层模块的输出值分别计算对应的各个图拉普拉斯矩阵,并且对各个图拉普拉斯矩阵分别计算每个网络层模块的流形度量数值;第二计算模块230,其适于基于每个网络层模块的流形度量数值分别计算每个非最后一个网络层模块与最后一个网络层模块之间的各个流形度量距离;连接模块240,其适于获取各个流形度量距离中的较小流形度量距离,并将其对应的非最后一个网络层模块与最后一个网络层模块之后的模块连接而形成剪裁后的第二神经网络模型。
[0161]
在具体实施中,第一计算模块220适于:对每个网络层模块的输出值分别计算对应的无向图g=(v,e),其中,v和e分别为无向图中的节点集合和边集合;对无向图g计算归一化的图拉普拉斯矩阵l,其包括:计算无向图g的邻接矩阵a、基于邻接矩阵a计算对角矩阵d、以及基于对角矩阵d计算每个网络层模块对应的、归一化的图拉普拉斯矩阵l。
[0162]
在具体实施中,第一计算模块220适于通过如下公式计算归一化的图拉普拉斯矩阵l的热核:
[0163]
l=φλφ
t

[0164][0165]
φ=(φ1,φ2…
,φn),
[0166]
其中,h
t
为归一化的图拉普拉斯矩阵l的热核,t为时刻,φ为归一化的图拉普拉斯矩阵l分解后的特征向量矩阵,φi为φ中的第i个特征向量,φ
it
是φi的转置矩阵,λ为对角矩阵,其特征值(λ1,λ2,

,λn)从小到大排序为λ1≤λ2…
≤λn,λi为其中的第i个特征值。
[0167]
在具体实施中,第一计算模块220适于使用slq估计公式计算任一个网络层模块的流形度量数值,其可以通过如下公式表示:
[0168][0169]
其中,x为任一个网络层模块的输出值,s(x)为任一个网络层模块的流形度量数值,tr()为计算矩阵的迹的算符。
[0170]
在具体实施中,第二计算模块230适于通过如下公式计算各个流形度量距离:
[0171][0172]
其中,xm为任一个非最后一个网络层模块的输出值,xn为最后一个网络层模块的输出值,d(xm,xn)为任一个非最后一个网络层模块与最后一个网络层模块之间的流形度量距离,s(xm)和s(xn)分别为任一个非最后一个网络层模块和最后一个网络层模块的流形度量数值,t为时刻。
[0173]
在具体实施中,第二计算模块230适于:对t进行若干次采样并分别计算d(xm,xn),取其中的最大距离作为任一个非最后一个网络层模块与最后一个网络层模块之间的流形度量距离,其中,t∈(0.1,10)。
[0174]
在具体实施中,连接模块240适于:将第一神经网络模型中的网络层模块依次分为n组,每组中包括至少一个网络层模块,其中,n为大于或等于2的整数;在最后一个网络层模块所位于的组之外的所有网络层模块中获取其与最后一个网络层模块之间的各个流形度量距离中的最小流形度量距离,并且将其作为较小流形度量距离。
[0175]
本发明实施例中剪裁神经网络的装置的具体实施可以参考上述结合图1至3所述的剪裁神经网络方法中的相关描述。
[0176]
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
再多了解一些

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

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

相关文献