CN114077885A - 基于张量分解的模型压缩方法、装置和服务器 - Google Patents
基于张量分解的模型压缩方法、装置和服务器 Download PDFInfo
- Publication number
- CN114077885A CN114077885A CN202010849312.5A CN202010849312A CN114077885A CN 114077885 A CN114077885 A CN 114077885A CN 202010849312 A CN202010849312 A CN 202010849312A CN 114077885 A CN114077885 A CN 114077885A
- Authority
- CN
- China
- Prior art keywords
- tensor
- model
- layer
- decomposition
- dimension
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请实施例适用于人工智能技术领域,提供了一种基于张量分解的模型压缩方法、装置和服务器,该方法包括:服务器获取待压缩的模型,模型包括至少一层模型层,模型层具有相应的原始张量,原始张量包括多个维度,多个维度分别具有相应的维度大小;针对模型层中的待分解层,服务器根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式;以及,服务器根据每个维度的维度大小,确定待分解层的原始张量的张量链分解秩;服务器按照张量分解形式和张量链分解秩,对待分解层的原始张量进行张量分解,得到压缩模型。通过上述方法,可以对深度神经网络模型进行压缩,使得压缩后的深度神经网络模型能够部署在终端设备上。
Description
技术领域
本申请实施例属于人工智能(artificial intelligence,AI)技术领域,尤其涉及一种基于张量分解的模型压缩方法、装置和服务器。
背景技术
大规模的数据集驱动了深度神经网络(deep neural network,DNN)的迅猛发展,基于深度神经网络训练得到的各类模型已广泛应用于计算机视觉、自然语言处理等领域。
深度神经网络模型提供了一种端到端的数据处理方法,可以替代传统人工设计(hand-crafted)的特征提取器和分类器,模型的性能也得到了大幅提升。借助于处理器、计算机集群等提供的强大计算能力,使得通过深度神经网络模型快速处理大规模的数据也成为了可能。
目前,由于传统的深度神经网络模型离不开高性能计算能力的支持,深度神经网络模型的训练及推理过程大多是在云端完成的。但是,上述在云端实现的数据处理模式需要将大量的数据(如图像和音频数据)通过网络从边缘端传输至云端,数据通信存在较高的延迟,在离线或者低延时要求的场景下,无法满足用户的实际需求。
发明内容
本申请实施例提供了一种基于张量分解的模型压缩方法、装置和服务器,用以对深度神经网络模型进行压缩,使得压缩后的深度神经网络模型能够部署在终端设备上。
第一方面,本申请实施例提供了一种基于张量分解的模型压缩方法,包括:
服务器获取待压缩的模型,模型包括至少一层模型层,模型层具有相应的原始张量,原始张量包括多个维度,多个维度分别具有相应的维度大小;
针对模型层中的待分解层,服务器根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式;以及,
服务器根据每个维度的维度大小,确定待分解层的原始张量的张量链分解秩;
服务器按照张量分解形式和张量链分解秩,对待分解层的原始张量进行张量分解,得到与模型对应的压缩模型。
本申请实施例通过确定模型中待分解层对应的原始张量的张量分解形式和张量链分解秩,从而可以按照上述张量分解形式和张量链分解秩对原始张量进行分解,减少模型的参数量,降低模型占用的空间,有助于将模型部署在算力有限的终端设备上,满足用户在离线或低延时场景下的实际需求。
在第一方面的一种可能的实现方式中,针对模型层中的待分解层,服务器根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式,可以是指:针对模型层中的待分解层,服务器根据待分解层的原始张量中每个维度的维度大小,分别确定待分解层的原始张量中每个维度的张量分解形式。
在第一方面的一种可能的实现方式中,服务器根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量中每个维度的张量分解形式时,服务器可以按照预设的维数,对每个维度的维度大小进行因子分解,得到每个维度的多种分解式;然后,服务器根据多种分解式,确定每个维度的张量分解形式。
在第一方面的一种可能的实现方式中,服务器根据多种分解式,确定每个维度的张量分解形式可以包括:服务器分别计算每个维度的每个分解式中各个数值的熵;服务器将最大值的熵对应的分解式,确定为对应维度的张量分解形式。
在第一方面的一种可能的实现方式中,服务器根据多种分解式,确定每个维度的张量分解形式还可以包括:服务器分别计算每个维度的每个分解式中各个数值的和;服务器将最小值的和对应的分解式,确定为对应维度的张量分解形式。
在第一方面的一种可能的实现方式中,服务器根据每个维度的维度大小,确定待分解层的原始张量的张量链分解秩,包括:服务器确定多个维度的维度大小的最小值;服务器在对维度大小的最小值取对数后,向下取整,得到第一整数;服务器根据第一整数,确定待分解层的原始张量的张量链分解秩。
在第一方面的一种可能的实现方式中,服务器根据第一整数,确定待分解层的原始张量的张量链分解秩,包括:服务器确定小于第一整数的多个整数中的最大值,得到第二整数;服务器计算以2为底,以第二整数为幂次得到的第三整数;服务器将第三整数确定为待分解层的原始张量的张量链分解秩。
在第一方面的一种可能的实现方式中,服务器在获取待压缩的模型之后,可以分别判断模型中各个模型层是否适于进行张量分解;若某一模型层适于进行张量分解,则服务器执行针对该模型层中的待分解层,根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式的步骤。
在第一方面的一种可能的实现方式中,服务器判断模型层是否适于进行张量分解时,可以确定模型层的多个维度的维度大小的最大值和最小值;服务器计算维度大小的最大值和最小值之间的比值;若比值小于预设阈值,则服务器判定模型层适于进行张量分解,否则服务器判定模型层不适于进行张量分解。
在第一方面的一种可能的实现方式中,在服务器按照张量分解形式和张量链分解秩,对待分解层的原始张量进行张量分解,得到与模型对应的压缩模型之后,服务器还可以对压缩模型进行模型量化,得到量化后的压缩模型;服务器可以将量化后的压缩模型配置于终端设备中。
第二方面,本申请实施例提供了一种基于张量分解的模型压缩装置,应用于服务器,所述装置包括模型获取模块、张量分解形式确定模块、张量链分解秩确定模块和张量分解模块,其中:
模型获取模块,用于获取待压缩的模型,模型包括至少一层模型层,模型层具有相应的原始张量,原始张量包括多个维度,多个维度分别具有相应的维度大小;
张量分解形式确定模块,用于针对模型层中的待分解层,根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式;
张量链分解秩确定模块,用于根据每个维度的维度大小,确定待分解层的原始张量的张量链分解秩;
张量分解模块,用于按照张量分解形式和张量链分解秩,对待分解层的原始张量进行张量分解,得到与模型对应的压缩模型。
在第二方面的一种可能的实现方式中,张量分解形式确定模块可以包括:张量分解形式确定子模块,用于根据待分解层的原始张量中每个维度的维度大小,分别确定待分解层的原始张量中每个维度的张量分解形式。
在第二方面的一种可能的实现方式中,张量分解形式确定子模块可以因子分解单元和张量分解形式确定单元,其中:因子分解单元,用于按照预设的维数,对每个维度的维度大小进行因子分解,得到每个维度的多种分解式;张量分解形式确定单元,用于根据多种分解式,确定每个维度的张量分解形式。
在第二方面的一种可能的实现方式中,张量分解形式确定单元可以包括:熵计算子单元和第一张量分解形式确定子单元,其中:熵计算子单元,用于分别计算每个维度的每个分解式中各个数值的熵;第一张量分解形式确定子单元,用于将最大值的熵对应的分解式,确定为对应维度的张量分解形式。
在第二方面的一种可能的实现方式中,张量分解形式确定单元还可以包括:和计算子单元和第二张量分解形式确定子单元,其中:和计算子单元,用于分别计算每个维度的每个分解式中各个数值的和;第二张量分解形式确定子单元,用于将最小值的和对应的分解式,确定为对应维度的张量分解形式。
在第二方面的一种可能的实现方式中,张量链分解秩确定模块可以包括:维度大小确定子模块、第一整数计算子模块和张量链分解秩确定子模块,其中:维度大小确定子模块,用于确定多个维度的维度大小的最小值;第一整数计算子模块,用于在对维度大小的最小值取对数后,向下取整,得到第一整数;张量链分解秩确定子模块,用于根据第一整数,确定待分解层的原始张量的张量链分解秩。
在第二方面的一种可能的实现方式中,张量链分解秩确定子模块可以包括:第二整数确定单元、第三整数计算单元和张量链分解秩确定单元,其中:第二整数确定单元,用于确定小于第一整数的多个整数中的最大值,得到第二整数;第三整数计算单元,用于计算以2为底,以第二整数为幂次得到的第三整数;张量链分解秩确定单元,用于将第三整数确定为待分解层的原始张量的张量链分解秩。
在第二方面的一种可能的实现方式中,基于张量分解的模型压缩装置还可以包括:模型层判断模块和调用模块,其中:模型层判断模块,用于判断模型层是否适于进行张量分解;调用模块,用于若模型层适于进行张量分解,则调用张量分解形式确定模块,执行针对模型层中的待分解层,根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式的步骤。
在第二方面的一种可能的实现方式中,模型层判断模块可以包括:比值计算子模块和判定子模块,其中:比值计算子模块,用于确定模型层的多个维度的维度大小的最大值和最小值;计算维度大小的最大值和最小值之间的比值;判定子模块,用于若比值小于预设阈值,则判定模型层适于进行张量分解,否则判定模型层不适于进行张量分解。
第三方面,本申请实施例提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面任一项所述的基于张量分解的模型压缩方法。
第四方面,本申请实施例提供了一种芯片系统,所述芯片系统包括存储器和处理器,所述处理器执行所述存储器中存储的计算机程序,以实现如上述第一方面任一项所述的基于张量分解的模型压缩方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被终端设备的处理器执行时实现如上述第一方面任一项所述的基于张量分解的模型压缩方法。
第六方面,本申请实施例提供了一种计算机程序产品,当所述计算机程序产品在服务器上运行时,使得服务器执行上述第一方面任一项所述的基于张量分解的模型压缩方法。
与现有技术相比,本申请实施例包括以下有益效果:
本申请实施例,服务器在获取待压缩的模型后,针对模型中的待分解层,服务器可以根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式以及张量链分解秩。然后,服务器按照上述张量分解形式和张量链分解秩,对待分解层的原始张量进行张量分解,可以得到与该模型对应的压缩模型。在服务器对原模型中待分解层的原始张量进行张量分解的过程中,实现了对原模型中冗余空间的压缩;通过张量分解,也减少了待分解层包含的参数量。相较于原模型,压缩模型的参数量更少,占用的空间也更小,便于将压缩模型部署在内存空间有限的终端设备上。与直接在终端设备部署原模型相比,通过服务器对模型的压缩,可以有效节省终端设备的内存空间。此外,由于压缩模型包含的参数量更少,终端设备在调用压缩模型进行数据处理时,也能够基于终端设备有限的软硬件条件,实现原模型可以实现的各种功能,保证了模型的处理性能。第三,通过将压缩模型部署于终端设备,在需要借助模型进行数据处理时,终端设备可以直接调用压缩模型实现相应功能。与将模型部署在服务器端相比,省去了终端设备将数据传输至服务器的过程,提高了数据处理的时效,能够满足离线或低时延场景下对模型的应用需求。
附图说明
图1是深度神经网络模型的一种可能的压缩方法的实现过程示意图;
图2是深度神经网络模型的另一种可能的压缩方法的实现过程示意图;
图3是本申请实施例提供的基于张量分解的模型压缩方法所适用的场景示意图;
图4是本申请实施例提供的一种基于张量分解的模型压缩方法的示意性步骤流程图;
图5是本申请实施例的一种用于表示张量的具体形式的示意图;
图6是本申请实施例提供的一种基于张量分解的模型压缩装置的结构框图;
图7是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,“A和/或B”,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
如图1所示,是深度神经网络模型的一种可能的压缩方法的实现过程示意图。图1所示的压缩方法建立在对深度神经网络模型进行预训练的基础之上,其分解对象为卷积核。首先,服务器获取原始的深度神经网络模型的卷积核张量;然后,服务器对获取到的卷积核张量进行张量分解,得到多个低秩子张量;最后,服务器通过使用得到的多个低秩子张量来替换掉原始的深度神经网络模型中对应的卷积核张量,完成对深度神经网络模型的压缩。
通常,深度神经网络中的卷积核张量一般服从正态分布,按照图1所示的压缩方法对深度神经网络模型进行卷积核张量的低秩分解,压缩过程中的损失会非常大,压缩后得到的模型的分类精度、准确率均会受到较大的影响。此外,对于较复杂的深度神经网络模型,例如模型的层数较多或存在残差连接的深度神经网络模型,按照图1所示的压缩方法对其进行压缩处理后,压缩后得到的模型的收敛性也难以保证。
如图2所示,是深度神经网络模型的另一种可能的压缩方法的实现过程示意图。图2所示的压缩方法亦是建立在对深度神经网络模型进行预训练的基础之上。相较于图1所示的压缩方法,图2所示的压缩方法增加了对待分解层的判别。服务器在对深度神经网络模型进行压缩前,可以通过判断精度差是否符合预期,判定当前选定的模型层是否适合进行张量分解。按照图2所示的压缩方法,服务器首先获取待压缩的深度神经网络模型,然后在服务器确定上述待压缩的深度神经网络模型有适合进行张量分解的模型层后,服务器可以按照预先设定的顺序,一次选取一层模型层进行张量分解。服务器在对选定的模型层进行张量分解时,通过调整精度要求得到多个核矩阵。当核矩阵之间的精度差符合预设条件时,服务器可以将得到的核矩阵作为选定的模型层的张量分解核矩阵。服务器通过重复选取下一模型层进行张量分解,待适合进行张量分解的全部模型层均完成核矩阵分解后,服务器可以得到压缩后的深度神经网络模型。
如果按照图2所示的压缩方法对深度神经网络模型进行压缩,在模型的层数较多时,通过模型训练输出的结果的精度是否符合预期来判断每个模型层是否适合进行张量分解,费时费力。此外,对于深度神经网络模型,模型中较为靠前的各个模型层对于该模型的收敛性尤为重要,若针对各个模型层的张量分解是按照从前往后的顺序进行分解,可能导致压缩后得到的模型不能很好的收敛,影响模型的后续处理效果。
因此,针对上述问题,本申请实施例提供了一种基于张量分解的模型压缩方法,服务器通过在矩阵分解过程中自适应地选择矩阵维度及矩阵秩,解决现有技术中深度神经网络模型压缩过程较为复杂,压缩后得到的模型不易收敛的问题,使得压缩后得到的模型可以方便地配置于终端设备中,并能够基于终端设备上有限的计算能力保持模型性能,满足用户在离线或低延时场景下的实际需求。
如图3所示,是本申请实施例提供的基于张量分解的模型压缩方法所适用的场景示意图。在图3所示的应用场景中,包括服务器301和多个终端设备(即,手机302、智能穿戴设备303、个人计算机304等)。现有技术中,完整的深度神经网络模型可以部署于服务器301中。当终端设备需要使用基于深度神经网络模型提供的各种功能时,例如,需要使用深度神经网络模型对手机302中的部分数据进行处理时,手机302可以将数据通过通信网络传输至服务器301,在由服务器301中的深度神经网络模型对该数据进行处理后,服务器301通过通信网络将处理结果发送至手机302。在本申请实施例中,服务器301可以对深度神经网络模型进行模型压缩;然后,服务器301可以将压缩后得到的压缩模型配置于各个终端设备中。例如,服务器301可以将压缩后的压缩模型配置于手机302、智能穿戴设备303、个人计算机304中。后续,手机302、智能穿戴设备303、个人计算机304需要使用基于深度神经网络模型的各种功能时,可以直接在终端设备侧调用已配置的压缩模型进行处理,无需再将终端设备侧的数据传输至服务器301,提高了模型的处理效率,能够满足用户在离线或低延时场景下的实际需求。此外,服务器301按照本申请实施例提供的模型压缩方法对深度神经网络模型进行压缩后所得到的压缩模型,也能够在终端设备所能提供的有限的算力情况下,保证模型的处理性能。
示例性地,深度神经网络模型可以是用于对图像数据进行处理的图像模型,服务器301可以对图像模型进行压缩,压缩后的图像模型可以配置于手机301中。由于压缩后的图像模型包含的参数量更少,手机301在使用压缩后的图像模型时,也能够基于自身相对有限的软硬件条件,实现图像模型的各种功能。另外,在对图像模型进行压缩时,服务器301压缩了模型中大量的冗余空间,将压缩后的图像模型部署于手机301中,有助于节省手机301的内存空间。
如图4所示,是本申请实施例提供的一种基于张量分解的模型压缩方法的示意性步骤流程图,该方法包括如下步骤:
S401、服务器获取待压缩的模型,所述模型包括至少一层模型层,所述模型层具有相应的原始张量,所述原始张量包括多个维度,所述多个维度分别具有相应的维度大小。
在本申请实施例中,待压缩的模型可以是任意类型的模型。例如,深度神经网络模型、卷积神经网络模型、自编码神经网络模型,等等,本申请实施例对待压缩的模型的具体类型不作限定。
以待压缩的模型为深度神经网络模型为例,深度神经网络中存在着大量的冗余空间,这就使得对深度神经网络模型的压缩成为了可能。服务器通过对深度神经网络模型进行压缩,可以有效减少模型占用的空间,便于将深度神经网络模型配置于空间有限的各类设备中,如图3中所示的手机302、智能穿戴设备303、个人计算机304等。
通常,各个模型都包括有多层模型层,如全连接层、卷积层、池化层等等。每一模型层都具有相应的原始张量。每个原始张量都包括有多个维度,各个维度分别具有相应的维度大小。
张量(Tensor)是一个定义在一些向量空间和一些对偶空间的笛卡儿积上的多重线性映射,其坐标是n维空间内,有n个分量的一种量。其中,每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。
在本申请实施例中,对模型的压缩即是对模型中部分模型层所对应的原始张量所做的张量分解。
在本申请实施例的一种可能的应用场景中,待压缩的模型为具备图像处理能力的深度神经网络模型,该模型包含的池化层、卷积层、全连接层等,在图像处理过程中可以实现相应的功能。例如,基于图像中的像素点提取图像中的特征信息点,对提取的特征信息进行处理、识别,完成对图像的分类,等等。服务器可以对该模型进行压缩,并将压缩后的模型部署于终端设备,使得在终端设备中可以通过调用压缩后的模型,实现上述图像处理功能。
S402、针对所述模型层中的待分解层,所述服务器根据所述待分解层的原始张量中每个维度的维度大小,确定所述待分解层的原始张量的张量分解形式。
在本申请实施例中,模型层中的待分解层,可以是该模型的全部模型层,也可以是该模型的全部模型层中的部分模型层。即,在服务器对模型进行压缩时,服务器可以对该模型的全部模型层进行张量分解,也可以仅对全部模型层中的部分层进行张量分解。本申请实施例对此不作限定。
例如,对于包括全连接层、卷积层、池化层等的某一待压缩的模型,服务器在对该模型进行压缩时,可以对全部的全连接层、卷积层、池化层进行张量分解;或者,服务器也可以仅对该模型中的全部全连接层进行张量分解;又或者,服务器还可以仅对全部全连接层中的部分模型层进行张量分解。
在本申请实施例中,对于待分解层,服务器可以根据该层的原始张量中每个维度的维度大小,确定该层的原始张量的张量分解形式。上述张量分解形式可以是指对原始张量进行分解后得到的张量所对应的矩阵的形式。
示例性地,若张量分解形式为(8,8,8),可以表示分解后得到的张量所对应的矩阵为三维矩阵,该三维矩阵中每一维度的数组元素为8个。
S403、所述服务器根据所述每个维度的维度大小,确定所述待分解层的原始张量的张量链分解秩。
在本申请实施例中,张量链分解秩可以是指服务器在对模型压缩时,按照怎样的秩对原始张量进行张量分解。
在具体实现中,与张量分解形式类似,对于待分解层,服务器可以根据该层的原始张量中每个维度的维度大小,确定该层的原始张量的张量链分解秩。
在本申请实施例的一种可能的应用场景中,通过对具备图像处理能力的深度神经网络模型的各模型层进行处理,确定出该层的原始张量的张量分解形式及张量链分解秩,有助于在后续对该层的原始张量进行张量分解时,加快张量分解的处理效率,减少图像模型各层包含的参数量及占用的内存空间。
S404、所述服务器按照所述张量分解形式和所述张量链分解秩,对所述待分解层的原始张量进行张量分解,得到与所述模型对应的压缩模型。
对于一个原始张量,可以采用张量分解后得到的一个紧凑的多线性形式(tensortrain,TT-format)的张量A来近似代替,上述TT-format形式是一种用于表示张量的具体形式,能够允许使用很少的数据来储存大型密集矩阵参数,同时保持足够的灵活性以执行信号转换。TT-format形式的张量A可以表示为多个低维度张量G(k)(ik)之间的运算结果:
A(i1,i2,...,ik,...,iN)=G(1)(i1)G(2)(i2)...G(k)(ik)...G(N)(iN)
如图5所示,是本申请实施例的一种用于表示张量的具体形式的示意图,图5中包括多个低维度张量,即G(1)(i1)、G(2)(i2)、...、G(k)(ik)、...、G(N)(iN),这些低维度张量之间的运算结果构成了TT-format形式的张量A。
其中,A(i1,i2,...,ik,...,iN)为TT-format形式的张量,G(1)(i1)G(2)(i2)...G(k)(ik)...G(N)(iN)为多个低维度张量,k=1、2、...、N表示张量的维度,i1,i2,...,ik,...,iN表示每一个维度下的索引与相同维度k相关的G(k)(ik)都是矩阵,其大小被限制在Rk-1×Rk,序列被称为张量A(i1,i2,...,ik,...,iN)的秩。其中,R0=1,RN=1。
当原始张量以TT-format形式的张量A(i1,i2,...,ik,...,iN)表示,且张量A(i1,i2,...,ik,...,iN)的秩最高为R时,使用复杂度为O(dR2)的参数就可以表示原始数据。针对数据量较多、占用空间较大的模型,使用张量分解将参数矩阵分解为矩阵连乘状态,可以显著减少参数量,降低模型占用的空间。
因此,在本申请实施例中,服务器在确定出待分解层的原始张量的张量分解形式和张量链分解秩后,可以按照上述张量分解形式和张量链分解秩对该层的原始张量进行分解,得到多个核矩阵。
在本申请实施例中,在完成某一待分解层的张量分解后,服务器可以重复选取下一模型层进行张量分解,直至模型的全部模型层均完成张量分解。每个待分解层的原始张量分解得到的多个核矩阵所构成的模型,即是压缩后的模型。
示例性地,待压缩的模型可以为深度神经网络模型,该深度神经网络模型为图像模型。使用该图像模型可以对采集得到的大量图像数据进行处理,例如对图像进行识别、分类、比对等等。通常,这类图像模型包含的参数量多,占用的空间大,只能将图像模型部署在服务器端。在应用图像模型的一种可能的场景中,终端设备采集的大量的待处理的图像数据需要被传输至服务器端,才能基于该图像模型进行相应的图像处理。
在本申请实施例中,服务器可以对图像模型中各模型层对应的原始张量进行张量分解,将图像模型中的高维张量分解为多个低维度张量,减少了图像模型包含的参数量,压缩了图像模型中的冗余空间。压缩后得到的图像模型,参数量更少,占用的空间也更小,能够被部署在软硬件条件有限的终端设备中。
在将压缩得到的图像模型部署于终端设备后,当终端设备采集到大量图像数据时,终端设备无需将这些图像数据传输至服务器,终端设备可以直接调用压缩得到的图像模型进行图像处理,提高图像数据的处理时效,满足在离线或者通信条件不佳等情况下,对图像模型的应用需求。由于压缩得到的图像模型包含的参数量更少,使得应用该模型所需的软硬件资源也相对少,终端设备可以在自身软硬件条件有限的情况下,实现图像模型的各种功能,保证图像模型的图像处理性能。
在本申请实施例中,服务器在获取待压缩的模型后,针对模型中的待分解层,服务器可以根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式以及张量链分解秩。然后,服务器按照上述张量分解形式和张量链分解秩,对待分解层的原始张量进行张量分解,可以得到与该模型对应的压缩模型。相较于原模型,压缩模型的参数量更少,占用的空间也更小,便于将压缩模型部署在终端设备上。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请实施例的一种可能的实现方式中,服务器在获取待压缩的模型之后,还可以针对该模型中的各模型层,判断模型层是否适于进行张量分解。若某一模型层适于进行张量分解,则服务器可以将该模型层作为当前处理的待分解层,执行前述步骤S402,针对模型层中的待分解层,根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式。
在本申请实施例中,适于进行张量分解的模型层可以是该模型层对应的原始张量的多个维度之间的比例小于某一预设阈值的模型层。通过判定各模型层是否适于进行张量分解,可以避免对维度比例严重失调的模型层进行处理,提高张量分解的效率。
在具体实现中,服务器判断模型层是否适于进行张量分解可以通过如下方式实现:
服务器确定模型层的多个维度的维度大小的最大值和最小值;服务器计算上述维度大小的最大值和最小值之间的比值;若该比值小于预设阈值,则服务器判定该模型层适于进行张量分解,否则服务器判定该模型层不适于进行张量分解。
示例性地,服务器可以提供一形式判别函数fdis(),该函数可以表示为:max(d)/min(d)。其中,max(d)表示原始张量的多个维度的维度大小的最大值,min(d)表示原始张量的多个维度的维度大小的最小值。
例如,若对于某一模型层的原始张量,其对应的维度大小的最大值和最小值均为512,则按照上述形式判别函数fdis()计算得到的比值为512/512=1;若对于另一模型层的原始张量,其对应的维度大小的最大值和最小值分别为512和256,则按照上述形式判别函数fdis()计算得到的比值为512/256=2。
在采用上述形式判别函数fdis()计算得到的比值小于预设阈值时,服务器可以判定该模型层适于进行张量分解,服务器可以将该模型层作为当前分解的待分解层,并执行前述实施例中的步骤S402-S404;若采用上述形式判别函数fdis()计算得到的比值大于或于预设阈值,则服务器可以判定该模型层不适于进行张量分解。服务器可以不对该模型层进行其他处理,继续采用上述形式判别函数fdis()计算下一模型层是否适于进行张量分解。
需要说明的是,对于适于进行张量分解的模型层,服务器在对该模型层进行张量分解时,可以固定模型中其他各模型层的参数不变。
在本申请实施例的一种可能的实现方式中,针对模型层中的待分解层,服务器根据待分解层的原始张量中每个维度的维度大小,确定待分解层的原始张量的张量分解形式,可以包括:
针对模型层中的待分解层,服务器根据待分解层的原始张量中每个维度的维度大小,分别确定待分解层的原始张量中每个维度的张量分解形式。
即,服务器在对待分解层的原始张量进行分解时,可以对该原始张量的每个维度分别进行分解。
在具体实现中,针对模型层中的待分解层,服务器可以按照预设的维数,对每个维度的维度大小进行因子分解,得到每个维度的多种分解式;然后,服务器根据上述多种分解式,确定每个维度的张量分解形式。
上述预设的维数可以根据经验选择或者预计的推理时间确定。一般地,预设的维数可以为3或者4,本申请实施例对此不作限定。
在本申请实施例中,服务器按照预设的维数对每个维度的维度大小进行因子分解后,所得到的各个因子的乘积,应当等于该维度的维度大小。
示例性地,若某一维度的维度大小D=512,预设的维数dim=3,则按照该维数对上述维度大小进行因子分解后,可以得到(8,8,8)、(4,8,16)、(2,16,16)等多种分解式,每个分解式中的因子个数与预设的维数dim相等,各个因子的乘积等于该维度的维度大小。
在本申请实施例的一种可能的实现方式中,服务器分解多种分解式,确定每个维度的张量分解形式,可以包括:
服务器分别计算每个维度的每个分解式中各个数值的熵。
服务器将最大值的熵对应的分解式,确定为对应维度的张量分解形式。
在具体实现中,服务器可以根据维度选择函数fdim()自动选择合适的张量分解形式,上述维度选择函数可以表示为fdim=max(entropy(factorize(D,dim)))。其中,D为当前待分解的维度的维度大小,dim为预设的维数,factorize(D,dim)表示对维度大小进行因子分解后得到的分解式,entropy(factorize(D,dim))表示各个分解式中各个数值的熵。按照上述维度选择函数,服务器可以选定最大值的熵对应的分解式,为对应维度的张量分解形式。
示例性地,对于D=512,dim=3,分解得到的分解式包括有(8,8,8)、(4,8,16)、(2,16,16)等多种,在计算上述各种分解式中各个数值的熵后可知,分解式(8,8,8)的熵为最大值的熵。因此,服务器可以选定分解式(8,8,8)为该维度的张量分解形式。
在本申请实施例的另一种可能的实现方式中,服务器分解多种分解式,确定每个维度的张量分解形式,还可以包括:
服务器分别计算每个维度的每个分解式中各个数值的和。
服务器将最小值的和对应的分解式,确定为对应维度的张量分解形式。
在本申请实施例中,服务器还可以根据其他的维度选择函数确定每个维度的张量分解形式。例如,维度选择函数也可以是fdim()=min(sum(factorize(D,dim)))。其中,sum(factorize(D,dim))表示各个分解式中各个数值的和。按照上述维度选择函数,服务器可以选定最小值的和对应的分解式,为对应维度的张量分解形式。
在本申请实施例的一种可能的实现方式中,服务器根据每个维度的维度大小,确定待分解层的原始张量的张量链分解秩,可以包括:
服务器确定多个维度的维度大小的最小值。
服务器在对维度大小的最小值取对数后,向下取整,得到第一整数。
服务器根据第一整数,确定待分解层的原始张量的张量链分解秩。
在本申请实施例中,服务器可以对原始张量的多个维度的维度大小进行比较,从中找出维度大小的最小值。然后,服务器可以对该最小值取对数,再对取对数后得到的数值向下取整,得到第一整数。服务器可以根据第一整数确定原始张量的张量链分解秩。
在本申请实施例的另一种可能的实现方式中,服务器根据第一整数,确定待分解层的原始张量的张量链分解秩。还可以包括:
服务器确定小于第一整数的多个整数中的最大值,得到第二整数。
服务器计算以2为底,以第二整数为幂次得到的第三整数。
服务器将第三整数确定为待分解层的原始张量的张量链分解秩。
服务器按照上述步骤确定原始张量的张量链分解秩的过程,可以通过秩选择函数frank()表示,即:
其中,min(d)表示维度大小的最小值,floor(log2(min(d)表示在对维度大小的最小值取对数后,向下取整得到的第一整数,R<floor(log2(min(d)表示小于第一整数的第二整数。
服务器在确定出张量分解形式和张量链分解秩后,可以按照上述张量分解形式和张量链分解秩,对待分解层的原始张量进行张量分解,减少待分解层的数据量。
定义映射函数μ(l)=(μ1(l),...,μd(l)),以及v(t)=(v1(t),...,vd(t)),上述映射函数可以将行索引l=1,2,...,M,以及列索引t=1,2,...,N分别映射到d维的向量索引上。因此,使用这些索引就可以将原始矩阵A表示为:
A(l,t)=A((μ1(l),v1(t)),...,(μd(l),vd(t)))=G1[(μ1(l),v1(t))]...Gd[(μd(l),vd(t))]
对于输入数据X,服务器可以将X转换为维度为(m1,...,md)的高维张量χ,则服务器在对X进行处理时,模型运算可以表示为:
若当前待分解的原始张量T为高维张量,例如卷积核时,假定χ∈RF×F×M,服务器可将其转换为Q×k2M,其中Q=F2M/k2M。
然后,服务器按照已确定的张量链分解秩对原始张量进行张量分解,分解得到的矩阵记为Gk[mk,nk],分解后得到的模型的卷积运算可以表示为:
通过上述运算表达式可知,通过对高维张量进行张量分解,可以减少模型层的参数量,提高运算速度。
在本申请实施例的一种可能的实现方式中,服务器在对全部适于进行张量分解的各模型层进行张量分解后,可以对得到的压缩模型进行再训练,保证压缩模型的处理精度和准确率。
通常,完成张量分解后得到的压缩模型为32比特(bit)的全精度模型,全精度模型采用浮点数(float)进行计算,耗时较长。因此,为了加快压缩模型的处理速度,在对各模型层完成张量分解得到压缩模型后,服务器可以对压缩模型进行模型量化,得到量化后的压缩模型。例如,服务器可以对32bit的全精度压缩模型进行8bit的量化,或者,服务器也可以对上述压缩模型进行1-8bit的混合量化,本申请实施例对此不作限定。
在完成对压缩模型的量化后,服务器可以将量化后的压缩模型配置于终端设备中,这样有助于在算力较低的平台上,最大程度的利用模型能力,加速推理速度。
在本申请实施例中,对于待压缩的模型,服务器可以根据各模型层对应的原始张量的各个维度之间的比值,确定该模型层是否适于进行张量分解。对于适于进行张量分解的待分解层,服务器可以根据每个维度的维度大小,自动确定张量分解形式和张量链分解秩,减少模型压缩过程中的人工参与,提高模型压缩效率。此外,按照本申请实施例提供的方式确定的张量分解形式和张量链分解秩,也有助于解决压缩后的模型不易收敛的问题。
对应于上文实施例所述的基于张量分解的模型压缩方法,图6示出了本申请实施例提供的一种基于张量分解的模型压缩装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图6,该装置可以应用于服务器中,该装置可以包括模型获取模块601、张量分解形式确定模块602、张量链分解秩确定模块603和张量分解模块604,其中:
模型获取模块,用于获取待压缩的模型,所述模型包括至少一层模型层,所述模型层具有相应的原始张量,所述原始张量包括多个维度,所述多个维度分别具有相应的维度大小;
张量分解形式确定模块,用于针对所述模型层中的待分解层,根据所述待分解层的原始张量中每个维度的维度大小,确定所述待分解层的原始张量的张量分解形式;
张量链分解秩确定模块,用于根据所述每个维度的维度大小,确定所述待分解层的原始张量的张量链分解秩;
张量分解模块,用于按照所述张量分解形式和所述张量链分解秩,对所述待分解层的原始张量进行张量分解,得到与所述模型对应的压缩模型。
在本申请实施例中,所述张量分解形式确定模块具体可以包括如下子模块:
张量分解形式确定子模块,用于根据所述待分解层的原始张量中每个维度的维度大小,分别确定所述待分解层的原始张量中每个维度的张量分解形式。
在本申请实施例中,所述张量分解形式确定子模块具体可以包括如下单元:
因子分解单元,用于按照预设的维数,对所述每个维度的维度大小进行因子分解,得到所述每个维度的多种分解式;
张量分解形式确定单元,用于根据所述多种分解式,确定所述每个维度的张量分解形式。
在本申请实施例中,所述张量分解形式确定单元具体可以包括如下子单元:
熵计算子单元,用于分别计算所述每个维度的每个分解式中各个数值的熵;
第一张量分解形式确定子单元,用于将最大值的熵对应的分解式,确定为对应维度的张量分解形式。
在本申请实施例中,所述张量分解形式确定单元还可以包括如下子单元:
和计算子单元,用于分别计算所述每个维度的每个分解式中各个数值的和;
第二张量分解形式确定子单元,用于将最小值的和对应的分解式,确定为对应维度的张量分解形式。
在本申请实施例中,所述张量链分解秩确定模块具体可以包括如下子模块:
维度大小确定子模块,用于确定所述多个维度的维度大小的最小值;
第一整数计算子模块,用于在对所述维度大小的最小值取对数后,向下取整,得到第一整数;
张量链分解秩确定子模块,用于根据所述第一整数,确定所述待分解层的原始张量的张量链分解秩。
在本申请实施例中,所述张量链分解秩确定子模块具体可以包括如下单元:
第二整数确定单元,用于确定小于所述第一整数的多个整数中的最大值,得到第二整数;
第三整数计算单元,用于计算以2为底,以所述第二整数为幂次得到的第三整数;
张量链分解秩确定单元,用于将所述第三整数确定为所述待分解层的原始张量的张量链分解秩。
在本申请实施例中,所述装置还可以包括如下模块:
模型层判断模块,用于判断所述模型层是否适于进行张量分解;
调用模块,用于若所述模型层适于进行张量分解,则调用所述张量分解形式确定模块,执行针对所述模型层中的待分解层,根据所述待分解层的原始张量中每个维度的维度大小,确定所述待分解层的原始张量的张量分解形式的步骤。
在本申请实施例中,所述模型层判断模块具体可以包括如下子模块:
比值计算子模块,用于确定所述模型层的多个维度的维度大小的最大值和最小值;计算所述维度大小的最大值和最小值之间的比值;
判定子模块,用于若所述比值小于预设阈值,则判定所述模型层适于进行张量分解,否则判定所述模型层不适于进行张量分解。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例部分的说明即可。
参照图7,示出了本申请实施例提供的一种服务器的结构示意图。如图7所示,本实施例的服务器700包括:处理器710、存储器720以及存储在所述存储器720中并可在所述处理器710上运行的计算机程序721。所述处理器710执行所述计算机程序721时实现上述基于张量分解的模型压缩方法各个实施例中的步骤,例如图4所示的步骤S401至S404。或者,所述处理器710执行所述计算机程序721时实现上述各装置实施例中各模块/单元的功能,例如图6所示模块601至604的功能。
示例性的,所述计算机程序721可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器720中,并由所述处理器710执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段可以用于描述所述计算机程序721在所述服务器700中的执行过程。例如,所述计算机程序721可以被分割成模型获取模块、张量分解形式确定模块、张量链分解秩确定模块和张量分解模块,各模块具体功能如下:
模型获取模块,用于获取待压缩的模型,所述模型包括至少一层模型层,所述模型层具有相应的原始张量,所述原始张量包括多个维度,所述多个维度分别具有相应的维度大小;
张量分解形式确定模块,用于针对所述模型层中的待分解层,根据所述待分解层的原始张量中每个维度的维度大小,确定所述待分解层的原始张量的张量分解形式;
张量链分解秩确定模块,用于根据所述每个维度的维度大小,确定所述待分解层的原始张量的张量链分解秩;
张量分解模块,用于按照所述张量分解形式和所述张量链分解秩,对所述待分解层的原始张量进行张量分解,得到与所述模型对应的压缩模型。
所述服务器700可以是桌上型计算机、云端服务器等计算设备。所述服务器700可包括,但不仅限于,处理器710、存储器720。本领域技术人员可以理解,图7仅仅是服务器700的一种示例,并不构成对服务器700的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器700还可以包括输入输出设备、网络接入设备、总线等。
所述处理器710可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器720可以是所述服务器700的内部存储单元,例如服务器700的硬盘或内存。所述存储器720也可以是所述服务器700的外部存储设备,例如所述服务器700上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等等。进一步地,所述存储器720还可以既包括所述服务器700的内部存储单元也包括外部存储设备。所述存储器720用于存储所述计算机程序721以及所述服务器700所需的其他程序和数据。所述存储器720还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时可以实现前述各个实施例中的基于张量分解的模型压缩方法。
本申请实施例还公开了一种芯片系统,所述芯片系统包括存储器和处理器,所述处理器执行所述存储器中存储的计算机程序,以实现前述各个实施例中的基于张量分解的模型压缩方法。
本申请实施例还公开了一种计算机程序产品,当所述计算机程序产品在服务器上运行时,使得服务器执行前述各个实施例中的基于张量分解的模型压缩方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的基于张量分解的模型压缩方法、装置和服务器,可以通过其他的方式实现。例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其他的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到基于张量分解的模型压缩装置和服务器的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (13)
1.一种基于张量分解的模型压缩方法,其特征在于,包括:
服务器获取待压缩的模型,所述模型包括至少一层模型层,所述模型层具有相应的原始张量,所述原始张量包括多个维度,所述多个维度分别具有相应的维度大小;
针对所述模型层中的待分解层,所述服务器根据所述待分解层的原始张量中每个维度的维度大小,确定所述待分解层的原始张量的张量分解形式;以及,
所述服务器根据所述每个维度的维度大小,确定所述待分解层的原始张量的张量链分解秩;
所述服务器按照所述张量分解形式和所述张量链分解秩,对所述待分解层的原始张量进行张量分解,得到与所述模型对应的压缩模型。
2.根据权利要求1所述的方法,其特征在于,所述针对所述模型层中的待分解层,所述服务器根据所述待分解层的原始张量中每个维度的维度大小,确定所述待分解层的原始张量的张量分解形式,包括:
针对所述模型层中的待分解层,所述服务器根据所述待分解层的原始张量中每个维度的维度大小,分别确定所述待分解层的原始张量中每个维度的张量分解形式。
3.根据权利要求2所述的方法,其特征在于,所述针对所述模型层中的待分解层,所述服务器根据所述待分解层的原始张量中每个维度的维度大小,确定所述待分解层的原始张量中每个维度的张量分解形式,包括:
针对所述模型层中的待分解层,所述服务器按照预设的维数,对所述每个维度的维度大小进行因子分解,得到所述每个维度的多种分解式;
所述服务器根据所述多种分解式,确定所述每个维度的张量分解形式。
4.根据权利要求3所述的方法,其特征在于,所述服务器根据所述多种分解式,确定所述每个维度的张量分解形式,包括:
所述服务器分别计算所述每个维度的每个分解式中各个数值的熵;
所述服务器将最大值的熵对应的分解式,确定为对应维度的张量分解形式。
5.根据权利要求3所述的方法,其特征在于,所述服务器根据所述多种分解式,确定所述每个维度的张量分解形式,包括:
所述服务器分别计算所述每个维度的每个分解式中各个数值的和;
所述服务器将最小值的和对应的分解式,确定为对应维度的张量分解形式。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述服务器根据所述每个维度的维度大小,确定所述待分解层的原始张量的张量链分解秩,包括:
所述服务器确定所述多个维度的维度大小的最小值;
所述服务器在对所述维度大小的最小值取对数后,向下取整,得到第一整数;
所述服务器根据所述第一整数,确定所述待分解层的原始张量的张量链分解秩。
7.根据权利要求6所述的方法,其特征在于,所述服务器根据所述第一整数,确定所述待分解层的原始张量的张量链分解秩,包括:
所述服务器确定小于所述第一整数的多个整数中的最大值,得到第二整数;
所述服务器计算以2为底,以所述第二整数为幂次得到的第三整数;
所述服务器将所述第三整数确定为所述待分解层的原始张量的张量链分解秩。
8.根据权利要求1-7任一项所述的方法,其特征在于,在服务器获取待压缩的模型之后,所述方法还包括:
所述服务器判断所述模型层是否适于进行张量分解;
若所述模型层适于进行张量分解,则所述服务器执行针对所述模型层中的待分解层,根据所述待分解层的原始张量中每个维度的维度大小,确定所述待分解层的原始张量的张量分解形式的步骤。
9.根据权利要求8所述的方法,其特征在于,所述服务器判断所述模型层是否适于进行张量分解,包括:
所述服务器确定所述模型层的多个维度的维度大小的最大值和最小值;
所述服务器计算所述维度大小的最大值和最小值之间的比值;
若所述比值小于预设阈值,则所述服务器判定所述模型层适于进行张量分解,否则所述服务器判定所述模型层不适于进行张量分解。
10.根据权利要求1-9任一项所述的方法,其特征在于,在所述服务器按照所述张量分解形式和所述张量链分解秩,对所述待分解层的原始张量进行张量分解,得到与所述模型对应的压缩模型之后,所述方法还包括:
对所述压缩模型进行模型量化,得到量化后的压缩模型;
将所述量化后的压缩模型配置于终端设备中。
11.一种基于张量分解的模型压缩装置,其特征在于,应用于服务器,所述装置包括:
模型获取模块,用于获取待压缩的模型,所述模型包括至少一层模型层,所述模型层具有相应的原始张量,所述原始张量包括多个维度,所述多个维度分别具有相应的维度大小;
张量分解形式确定模块,用于针对所述模型层中的待分解层,根据所述待分解层的原始张量中每个维度的维度大小,确定所述待分解层的原始张量的张量分解形式;以及,
张量链分解秩确定模块,用于根据所述每个维度的维度大小,确定所述待分解层的原始张量的张量链分解秩;
张量分解模块,用于按照所述张量分解形式和所述张量链分解秩,对所述待分解层的原始张量进行张量分解,得到与所述模型对应的压缩模型。
12.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-10任一项所述的基于张量分解的模型压缩方法。
13.一种芯片系统,其特征在于,所述芯片系统包括存储器和处理器,所述处理器执行所述存储器中存储的计算机程序,以实现如权利要求1-10任一项所述的基于张量分解的模型压缩方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010849312.5A CN114077885A (zh) | 2020-08-21 | 2020-08-21 | 基于张量分解的模型压缩方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010849312.5A CN114077885A (zh) | 2020-08-21 | 2020-08-21 | 基于张量分解的模型压缩方法、装置和服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114077885A true CN114077885A (zh) | 2022-02-22 |
Family
ID=80282361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010849312.5A Pending CN114077885A (zh) | 2020-08-21 | 2020-08-21 | 基于张量分解的模型压缩方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114077885A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115309713A (zh) * | 2022-09-29 | 2022-11-08 | 江西锦路科技开发有限公司 | 交通数据压缩方法、装置、电子设备及存储介质 |
-
2020
- 2020-08-21 CN CN202010849312.5A patent/CN114077885A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115309713A (zh) * | 2022-09-29 | 2022-11-08 | 江西锦路科技开发有限公司 | 交通数据压缩方法、装置、电子设备及存储介质 |
CN115309713B (zh) * | 2022-09-29 | 2022-12-23 | 江西锦路科技开发有限公司 | 交通数据压缩方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110309847B (zh) | 一种模型压缩方法及装置 | |
CN108898087B (zh) | 人脸关键点定位模型的训练方法、装置、设备及存储介质 | |
CN110119745B (zh) | 深度学习模型的压缩方法、装置、计算机设备及存储介质 | |
EP3735658A1 (en) | Generating a compressed representation of a neural network with proficient inference speed and power consumption | |
CN113259665B (zh) | 一种图像处理方法以及相关设备 | |
CN113326930B (zh) | 数据处理方法、神经网络的训练方法及相关装置、设备 | |
CN113132723B (zh) | 一种图像压缩方法及装置 | |
CN110222717A (zh) | 图像处理方法和装置 | |
CN112766467B (zh) | 基于卷积神经网络模型的图像识别方法 | |
CN112672168B (zh) | 基于图卷积的点云压缩方法及装置 | |
CN113595993B (zh) | 边缘计算下模型结构优化的车载感知设备联合学习方法 | |
CN113361698A (zh) | 神经网络模型的处理方法和装置、数据处理方法和装置 | |
WO2022179588A1 (zh) | 一种数据编码方法以及相关设备 | |
CN114077885A (zh) | 基于张量分解的模型压缩方法、装置和服务器 | |
Qi et al. | Learning low resource consumption cnn through pruning and quantization | |
CN113256744B (zh) | 一种图像编码、解码方法及系统 | |
US20230143985A1 (en) | Data feature extraction method and related apparatus | |
WO2023179096A1 (zh) | 基于图字典学习的三维点云编解码方法、压缩方法及装置 | |
CN114677545B (zh) | 一种基于相似性剪枝和高效模块的轻量化图像分类方法 | |
CN116095183A (zh) | 一种数据压缩方法以及相关设备 | |
CN114154621A (zh) | 一种基于fpga的卷积神经网络图像处理方法及装置 | |
CN115913245A (zh) | 数据编码方法、数据解码方法以及数据处理装置 | |
CN116644783A (zh) | 模型训练方法、对象处理方法及装置、电子设备、介质 | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 | |
CN115409150A (zh) | 一种数据压缩方法、数据解压方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |