基于张量分解的深度卷积神经网络的加速与压缩方法与流程

文档序号:11865452阅读:673来源:国知局
基于张量分解的深度卷积神经网络的加速与压缩方法与流程

本发明实施例涉及深度神经网络技术领域,具体涉及一种基于张量分解的深度卷积神经网络的加速与压缩方法。



背景技术:

近几年来,深度卷积神经网络在计算机视觉、语音处理等众多领域取得了巨大的突破,显著地提高了图像检索与分类、目标检测、目标跟踪以及语音识别等任务的性能,并且在互联网、视频监控、娱乐、智能家居等众多行业中得到了广泛应用。

深度卷积神经网络能够获得如此大的突破,很大程度上得益于新的计算工具,例如GPU、计算机集群等,以及大规模的含有人工标注信息的数据集。另一方面,近几年卷积神经网络的层数在不断增加,计算复杂度、硬盘存储、内存消耗等都随之大幅度的增长。因此,目前卷积神经网络在实际应用中离不开高性能的计算工具的支持。

另一方面,随着移动互联网技术的发展,将卷积神经网络利用到低端设备上得到了越来越多的关注。在移动互联网的应用场景下,用户所使用的设备,例如普通笔记本、手机或者平板电脑,以及智能家居、汽车等嵌入式设备,其运算与存储能力都十分有限。并且,针对视频监控、目标跟踪等对实时性要求比较高的应用,目前的卷积神经网络很难发挥作用。总体来说,目前卷积神经网络面临着一些挑战:如何降低卷积神经网络的测试用时,以及如何压缩网络模型的存储开销。

针对卷积神经网络的加速与压缩问题,已有一些有效的算法被提出。这些算法中很多只针对一些小型的卷积神经网络框架,另外一些方法只考虑对单层网络的加速或者压缩问题。对于大型深度卷积神经网络的所有层同时进行加速与压缩还有待研究。

有鉴于此,特提出本发明。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种至少部分地解决上述问题的一种基于权值张量分解的深度卷积神经网络的加速与压缩方法。

为了实现上述目的,根据本发明的一个方面,提供了以下技术方案:

一种基于张量分解的深度卷积神经网络的加速与压缩方法,该方法可以包括:

步骤1:获取原始深度卷积神经网络;

步骤2:对所述原始深度卷积神经网络中各层的权值张量进行张量分解,得到多个低秩子张量;

步骤3:用所述多个低秩子张量替换所述原始深度卷积神经网络中各层的权值张量,获得新的深度卷积神经网络。

优选地,所述原始深度卷积神经网络中各层为卷积层;

所述步骤2具体包括:

步骤21a:设定所述低秩子张量的数目G以及所述低秩子张量分别对应于S维度和T维度的秩M、N;其中,所述G取整数;所述卷积层的卷积核权值为S×w×h×T的四维张量,所述M小于所述S,所述N小于所述T且所述M、所述N为整数;

步骤22a:令W_res_1=W;其中,所述W_res_1表示第1个残差张量;所述W表示所述卷积层的权值张量;

步骤23a:令g从1到G依次取值,并按以下步骤执行:

步骤23a1:根据以下公式计算第g个低秩子张量:

W_g=HOSVD(W_res_g)

其中,所述W_g表示第g个低秩子张量,所述W_res_g表示第g个残差张量;所述HOSVD表示高阶奇异值分解;

步骤23a2:根据以下公式计算第(g+1)个残差张量:

W_res_(g+1)=W-(W_1+W_2+...+W_g)

其中,所述W_res_(g+1)表示第(g+1)个残差张量。

优选地,在所述低秩子张量的个数为G,所述低秩子张量包括对应于所述S维度的G个因子矩阵、对应于所述T维度的G个因子矩阵及G个核心张量;

所述步骤3具体包括:

步骤31a:将所述G个低秩子张量对应于所述S维度的所述G个因子矩阵按列拼接成第一因子矩阵;

步骤32a:将所述G个低秩子张量对应于所述T维度的所述G个因子矩阵按行拼接成第二因子矩阵;

步骤33a:将所述G个低秩子张量的所述G个核心张量按对角线的顺序依次排列形成G个核心子张量;

步骤34a:将所述第一因子矩阵用维度为S×1×1×S'的卷积层替换;

步骤35a:将所述G个核心子张量用一个分组为G的卷积层替换;

步骤36a:将所述第二因子矩阵用T'×1×1×T的卷积层替换。

优选地,所述原始深度卷积神经网络中各层为全连接层;为了表述形式的统一,我们把所有全连接层视为特殊形式的卷积层,其中,第一层全连接层视为卷积核与该层输入特征图大小相同的卷积层,其余全连接层视为S×1×1×T的卷积层;其中,所述S表示所述全连接层输入的节点个数;所述T表示全连接层输出节点的个数;

所述步骤2具体包括:

步骤21b:设定所述低秩子张量的数目G以及所述低秩子张量分别对应于S维度和T维度的秩M、N;其中,所述G取整数;所述全连接层的权值为S×w×h×T的四维张量,所述M小于所述S,所述N小于所述T且所述M、所述N为整数;

步骤22b:令W_res_1=W;其中,所述W_res_1表示第1个残差张量;所述W表示所述全连接层的权值张量;

步骤23b:令g从1到G依次取值,并按以下步骤执行:

步骤23b1:根据以下公式计算第g个低秩子张量:

W_g=HOSVD(W_res_g)

其中,所述W_g表示第g个低秩子张量,所述W_res_g表示第g个残差张量;所述HOSVD表示高阶奇异值分解;

步骤23b2:根据以下公式计算第(g+1)个残差张量:

W_res_(g+1)=W-(W_1+W_2+...+W_g)

其中,所述W_res_(g+1)表示第(g+1)个残差张量。

优选地,在所述低秩子张量的个数为G,所述低秩子张量包括对应于所述S维度的G个因子矩阵、对应于所述T维度的G个因子矩阵及G个核心张量;

所述步骤3具体包括:

步骤31b:将所述G个低秩子张量对应于所述S维度的所述G个因子矩阵按列拼接成第一因子矩阵;

步骤32b:将所述G个低秩子张量对应于所述T维度的所述G个因子矩阵按行拼接成第二因子矩阵;

步骤33b:将所述G个低秩子张量的所述G个核心张量按对角线的顺序依次排列形成G个核心子张量;

步骤34b:将所述第一因子矩阵用维度为S×1×1×S'的卷积层替换;

步骤35b:将所述G个核心子张量用一个分组为G的卷积层替换;

步骤36b:将所述第二因子矩阵用T'×1×1×T的卷积层替换。

与现有技术相比,上述技术方案至少具有以下有益效果:

本发明实施例提供的基于权值张量分解的深度卷积神经网络的加速与压缩方法,通过对深度卷积神经网络的权值进张量分解,利用所得的多个低秩子张量替换原有权值,从而可以实现大型深度卷积神经网络的加速与压缩。

当然,实施本发明的任一产品不一定需要同时实现以上所述的所有优点。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其它优点可通过在所写的说明书、权利要求书以及附图中所特别指出的方法来实现和获得。

附图说明

附图作为本发明的一部分,用来提供对本发明的进一步的理解,本发明的示意性实施例及其说明用于解释本发明,但不构成对本发明的不当限定。显然,下面描述中的附图仅仅是一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。在附图中:

图1为根据一示例性实施例示出的基于权值张量分解的深度卷积神经网络的加速与压缩方法的流程示意图;

图2为根据一示例性实施例示出的深度卷积神经网络用于图像分类过程示意图;

图3为根据一示例性实施例示出的在图像分类过程中深度卷积神经网络的卷积操作示意图;

图4为根据一示例性实施例示出的高阶奇异值分解的示意图;

图5为根据一示例性实施例示出的权值张量分解的示意图;

图6为根据一示例性实施例示出的把分解后的多个低秩子张量拼接成大的张量的示意图;

图7为根据一示例性实施例示出的利用分解后的权值张量替换对应层权值后,获得新的卷积层的示意图。

这些附图和文字描述并不旨在以任何方式限制本发明的构思范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。

具体实施方式

下面结合附图以及具体实施例对本发明实施例解决的技术问题、所采用的技术方案以及实现的技术效果进行清楚、完整的描述。显然,所描述的实施例仅仅是本申请的一部分实施例,并不是全部实施例。基于本申请中的实施例,本领域普通技术人员在不付出创造性劳动的前提下,所获的所有其它等同或明显变型的实施例均落在本发明的保护范围内。本发明实施例可以按照权利要求中限定和涵盖的多种不同方式来具体化。

需要说明的是,在下面的描述中,为了方便理解,给出了许多具体细节。但是很明显,本发明的实现可以没有这些具体细节。

需要说明的是,在没有明确限定或不冲突的情况下,本发明中的各个实施例及其中的技术特征可以相互组合而形成技术方案。

本发明实施例提供一种基于权值张量分解的深度卷积神经网络的加速与压缩方法。如图1所示,该方法可以包括:

步骤S100:获取原始深度卷积神经网络。

步骤S110:对原始深度卷积神经网络中各层的权值张量进行张量分解,得到多个低秩子张量。

本步骤中,低秩子张量的数目是预先设定好的。本步骤分解出预设数目的低秩子张量。

步骤S120:用多个低秩子张量替换原始深度卷积神经网络中各层的权值张量,获得新的深度卷积神经网络。

本发明实施例通过对深度卷积神经网络的权值张量进张量分解,把权值张量分解成多个低秩子张量的和,并用该多个低秩子张量替换原深度卷积神经网络中各层的权值张量,从而可以实现深度卷积神经网络的加速与压缩。

下面以图像分类为例对本发明实施例进行详细说明。

图2示例性地示出了将深度卷积神经网络用于图像分类的过程。其中,卷积神经网络包含多个卷积层和多个全连接层。输入图像经过卷积层和全连接层的处理后得到分类结果。图3示例性地示出了在图像分类过程中深度卷积神经网络中卷积层的卷积操作。其中,每个卷积层都有一组卷积核,该组卷积核共同组成该层的权值张量,例如,卷积核可以设置为3×3;卷积层的处理方式就是使用所述卷积核对该层的输入特征图进行卷积操作(即计算每个卷积核与输入特征图的每个位置的卷积区域对应元素相乘,并求和),获得对应层的输出特征图。如图3所示,把所述卷积核记作该层的权值张量。在深度卷积神经网络为多个卷积层的情况下,卷积层的卷积核权值可以是,但不限于S×w×h×T的四维张量。如图2所示,权值张量对应的S为4;w、h、T均为2。其中,w维度对应卷积核的宽度;h维度对应卷积核的高度;S维度对应输入的特征图的通道数;T维度对应输出的特征图的通道数。为方便表示,将卷积核的宽度维度w与高度维度h合并,记作维度D。即将四维权值张量转换成S×D×T的三维权值张量,并记该三维权值张量为W,其也为卷积层权值张量。

本发明实施例可以通过以下步骤对权值张量W进行张量分解,直至所有卷积层都被遍历:

步骤S101:设定待分解的低秩子张量的数目G,G取整数。

步骤S102:设定待分解的所有低秩子张量对应于S维度和T维度的秩M、N。其中,M<S,N<T且M、N为整数。

步骤S103:对W进行张量分解,获得一组(G个)低秩子张量W_1,...,W_G。

在本步骤中,本发明可以,但不限于,采用贪婪法来对W进行逼近,即每个低秩子张量都对拟合的残差(即用已经获得的低秩子张量的和对W进行拟合的拟合误差)进行拟合;步骤S103具体可以包括:

步骤S1031:初始化第1个残差张量,令W_res_1=W;W_res_1表示第1个残差张量;W表示所述卷积层的权值张量。

步骤S1032:令g从1到G依次取值,并按以下步骤执行:

步骤S10321:根据以下公式计算第g个低秩子张量:

W_g=HOSVD(W_res_g)

其中,W_g表示第g个低秩子张量,W_res_g表示第g个残差张量;HOSVD表示高阶奇异值分解。

步骤S10322:根据以下公式计算第(g+1)个残差张量:

W_res_(g+1)=W-(W_1+W_2+...+W_g)

其中,W_res_(g+1)表示第(g+1)个残差张量。

当g小于G时,返回步骤S10321。

步骤S10321中,符号HOSVD表示高阶奇异值分解,图4示例性地示出了对S×D×T的张量进行高阶奇异值分解的过程。此处只对S维度和T维度进行分解,分解出核心张量和两个因子矩阵。如图4所示,当秩M、N确定后,把原有大的权值张量S×D×T三维张量分解成一个小的M×D×N核心张量与两个因子矩阵(两个因子矩阵的大小分别为S×M和N×T)乘积的形式,乘积的结果就是低秩子张量。

如图5所示,卷积层权值张量分解成为G个低秩子张量的和的形式,即用多个低秩子张量的和来逼近W。此处,原始深度卷积神经网络卷积层的权值张量W被分解成G个低秩子张量(即W_1,..W.,)_的G和的形式。此处,每个子张量表示成一个核心张量在S维度和T维度分别乘以一个因子矩阵的形式。

步骤S104:用G个低秩子张量来替换原始深度卷积神经网络卷积层的权值张量,以获得新的深度卷积神经网络。

具体地,本步骤利用拼接后的两个因子矩阵和核心张量替换原始深度卷积神经网络中正在被分解的层的权值张量。

在低秩子张量的个数为G的情况下,低秩子张量包括对应于S维度的G个因子矩阵、对应于T维度的G个因子矩阵及G个核心张量;步骤S104具体可以包括:

步骤S1041:将G个低秩子张量对应于S维度的G个因子矩阵按列拼接成第一因子矩阵。

步骤S1042:将G个低秩子张量对应于T维度的G个因子矩阵按行拼接成第二因子矩阵。

步骤S1043:将G个低秩子张量的G个核心张量按对角线的顺序依次排列形成G个核心子张量。

步骤S1044:将第一因子矩阵用维度为S×1×1×S'的卷积层替换。

步骤S1045:将G个核心子张量用一个分组为G的卷积层替换。

具体地,本步骤可以看成用G组维度为M×w×h×N的卷积核替换。

步骤S1046:将第二因子矩阵用T'×1×1×T的卷积层替换。

图6示例性地示出了把G个低秩子张量(其以一个核心张量与两个因子矩阵的乘积的形式表示)拼接成大的张量(其以一个核心张量与两个因子矩阵的乘积的形式表示)的过程。其中,针对于图5,把G个低秩子张量对应于S维度的G个因子矩阵拼接成一个大的维度为S×S'(其可以看成是维度为S×1×1×S'的卷积核)的因子矩阵;把G个低秩子张量对应于T维度的G个因子矩阵拼接成一个大的维度为T'×T(其可以看成是维度为T'×1×1×T的卷积核)的因子矩阵;把G个低秩子张量的G个核心张量按对角线的顺序排列成一个维度为S'×(w*G)×(h*G)×S'的分块张量(其可以看成是G个维度为M×w×h×N的卷积核);其中,S'=G*M,T'=G*N。

图7示例性地示出了利用分解后的权值张量替换对应层权值后,获得新的卷积层的过程。第一行表示原卷积操作过程,第二行表示获得的新的卷积操作过程;原卷积层被三层新的卷积层代替,其中第一个卷积层用维度为S×1×1×S'的卷积实现;第二个卷积层把输入特征图和输出特征图等分成G组,用G组维度为M×w×h×N的卷积实现,其中,S'=G*M,T'=G*N;第三个卷积层用维度为T'×1×1×T的卷积实现。在图7中,每个指针表示由输入特征图通过卷积计算输出特征图,指针尾部的方块对应于图3中的输入特征图的卷积区域,指针头部方块表示该卷积计算出的值。

在一个优选的实施例中,在原始深度卷积神经网络为多个全连接层的情况下,所有全连接层都可以看成是一种卷积层。为了表述形式的统一,把所有全连接层视为特殊形式的卷积层.例如:在图像分类应用中,第一层全连接层可以看成是卷积核与该层输入特征图大小相同的卷积层,除去第一层以外的所有全连接层都可以看成是S×1×1×T的卷积层(也就是若全连接层属于除第一层全连接层以外的其余的全连接层,则w=h=1),其中,S表示所述全连接层输入节点的个数;T表示全连接层输出节点的个数;因此对于全连接层的处理方式与卷积层的处理方式相同,相关的执行步骤及其说明可以参考针对卷积层进行处理的实施例,在此不再赘述。

本发明提供的方法可以实现对深度卷积神经网络的加速与压缩,我们本发明提供的方法应用前后的空间复杂度以及时间复杂度进行了分析,具体分析如下:原始深度卷积神经网络中的卷积层的每一层权值张量占用空间为S*w*h*T(单位是浮点所占用的空间),卷积处理计算量为:(S*w*h*T)*(width*height)个浮点乘法和加法,分解后的对应的3层小的卷积层权值占用的空间为:计算量为:(width*height),其中,width、height分别表示该层输入特征图的宽度和高度。其中,S′远小于S,T′远小于T。可见,分解后的卷积层权值占用的空间和卷积处理的计算量都远远小于原始深度卷积神经网络卷积层。全连接层可以视为特殊的卷积层,因此全连接层也具有上述特性。对于卷积层和全连接层,近似后权值张量远远小于未经本发明实施例处理前的原权值张量的大小,卷积计算复杂度得到了很大程度上的降低,因此可以显著地减低卷积神经网络权值的存储开销和卷积神经网络运行时间,进而提高了运行速度。

下面以一优选实施例来具体说明本发明实施例提供的方法。本优选实施例中将本发明实施例提出的方法应用于图像分类应用领域。其中,未经本发明实施例方法处理的VGG16深度卷积神经网络占用的存储空间为528兆字节,且单张图像处理时间为1442毫秒。

该方法可以包括:

获取图像分类中应用的VGG16深度卷积神经网络。

利用上述本发明实施例提供的方法对深度卷积神经网络进行处理,得到新的VGG16深度卷积神经网络。

经过本发明实施例提供的方法进行处理后,新的VGG16深度卷积神经网络占用的存储空间为48兆字节。利用新的VGG16深度卷积神经网络对单张图像进行处理的时间为195毫秒。可见,本发明实施例提供的方法可以达到11倍的压缩率和7.4倍的加速。

上述实施例中虽然将各个步骤按照上述先后次序的方式进行了描述,但是本领域技术人员可以理解,为了实现本实施例的效果,不同的步骤之间不必按照这样的次序执行,其可以同时(并行)执行或以颠倒的次序执行,这些简单的变化都在本发明的保护范围之内。

以上对本发明实施例所提供的技术方案进行了详细的介绍。虽然本文应用了具体的个例对本发明的原理和实施方式进行了阐述,但是,上述实施例的说明仅适用于帮助理解本发明实施例的原理;同时,对于本领域技术人员来说,依据本发明实施例,在具体实施方式以及应用范围之内均会做出改变。

需要说明的是,本文中涉及到的流程图或框图不仅仅局限于本文所示的形式,其还可以进行划分和/或组合。

需要说明的是:附图中的标记和文字只是为了更清楚地说明本发明,不视为对本发明保护范围的不当限定。

术语“包括”或者任何其它类似用语旨在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备/装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者还包括这些过程、方法、物品或者设备/装置所固有的要素。

本发明的各个步骤可以用通用的计算装置来实现,例如,它们可以集中在单个的计算装置上,例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备或者多处理器装置,也可以分布在多个计算装置所组成的网络上,它们可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。因此,本发明不限于任何特定的硬件和软件或者其结合。

本发明提供的方法可以使用可编程逻辑器件来实现,也可以实施为计算机程序软件或程序模块(其包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件或数据结构等等),例如根据本发明的实施例可以是一种计算机程序产品,运行该计算机程序产品使计算机执行用于所示范的方法。所述计算机程序产品包括计算机可读存储介质,该介质上包含计算机程序逻辑或代码部分,用于实现所述方法。所述计算机可读存储介质可以是被安装在计算机中的内置介质或者可以从计算机主体上拆卸下来的可移动介质(例如:采用热插拔技术的存储设备)。所述内置介质包括但不限于可重写的非易失性存储器,例如:RAM、ROM、快闪存储器和硬盘。所述可移动介质包括但不限于:光存储介质(例如:CD-ROM和DVD)、磁光存储介质(例如:MO)、磁存储介质(例如:磁带或移动硬盘)、具有内置的可重写非易失性存储器的媒体(例如:存储卡)和具有内置ROM的媒体(例如:ROM盒)。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1