首页> 中国专利> 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质

多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质

摘要

本发明实施例公开了一种多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质。该压缩方法包括:获取待压缩的多维稀疏矩阵,多维稀疏矩阵中包括至少一个低二维矩阵;根据多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各非零元素在低二维矩阵中的行列信息加入索引向量中,将各非零元素的数值信息加入与索引向量匹配的数值向量中,得到多维稀疏矩阵的压缩结果;其中,在索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。由此,实现了对多维稀疏矩阵的压缩,且根据多维稀疏矩阵的维度信息及索引向量中分隔信息即可实现对多维稀疏矩阵的解压缩。

著录项

  • 公开/公告号CN110489428A

    专利类型发明专利

  • 公开/公告日2019-11-22

    原文格式PDF

  • 申请/专利权人 上海燧原智能科技有限公司;

    申请/专利号CN201910792796.1

  • 发明设计人 李雄;乔文;

    申请日2019-08-26

  • 分类号

  • 代理机构北京品源专利代理有限公司;

  • 代理人孟金喆

  • 地址 201306 上海市浦东新区南汇新城镇环湖西二路888号C楼

  • 入库时间 2024-02-19 16:20:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-22

    授权

    授权

  • 2019-12-17

    实质审查的生效 IPC(主分类):G06F16/22 申请日:20190826

    实质审查的生效

  • 2019-11-22

    公开

    公开

说明书

技术领域

本发明实施例涉及矩阵压缩技术领域,尤其涉及一种多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质。

背景技术

在科学与工程领域中求解线性模型时,经常会得出许多大型的矩阵,这些矩阵中大部分的元素都为0(即为稀疏矩阵)。存储稀疏矩阵时,可以采用只存储非零元素的压缩存储方式,以达到节约内存的目的,同时还可以提高矩阵的运算速度。

目前,稀疏矩阵的压缩存储格式有多种,如Coordinate Format(COO,坐标格式),Diagonal Storage Format(DIA,对角线存储格式),Compressed Sparse Column Format(CSC,压缩稀疏列格式),Compressed Sparse Row Format(CSR,元素稀疏行格式)等等。

以COO压缩存储格式为例,压缩结果如下:

输入矩阵为:

压缩结果为:row=[0 0 1 1 2 2 2 3 3];indices=[0 1 1 2 0 2 3 1 3];data=[17 2 8 5 3 9 6 4]。也即,将矩阵中每个非零元素的所在行的信息、所在列的信息以及元素数值分别对应存储至行向量row、列索引向量indices以及数值向量data中。

上述这些压缩存储格式都有各自适合的应用场景,但是这些压缩存储格式主要应用于压缩存储二维矩阵,若直接应用于压缩存储多维矩阵,则会存在诸多问题。

以采用COO压缩存储方式压缩存储多维矩阵为例,存在如下问题:

1)row和indices压缩结果中只有该非零元素在当前低二维矩阵中的行列信息,没有高维度的信息,进而无法区分高维度中的非零元素;

其中,低二维矩阵指的是多维矩阵中一个二维矩阵单元,以一个4×3×4的三维矩阵为例,这个三维矩阵包括4个二维矩阵单位,每个二维矩阵单位的维度为3×4。输入矩阵为:

则,非零元素5所在的低二维矩阵即为

注:上述矩阵中每个“x(Exxx)”均表示元素的数值及其索引坐标,例如“1(E323)”中的“1”表示元素的数值,“E323”表示元素的索引坐标。

2)如果某低二维矩阵为全零元素(比如前述举例三维矩阵中的第三个二维矩阵单元),则该低二维矩阵的信息在压缩结果中无法体现,进而导致无法区分后面的非零数据是哪个维度的数据。而且,无法根据压缩结果进行解压缩。

3)如果压缩结果增加额外的高维度向量,则会使压缩结果数据量增大,失去了压缩的目的。

发明内容

本发明实施例提供一种多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质,以实现对多维稀疏矩阵的压缩及解压缩。

第一方面,本发明实施例提供了一种多维稀疏矩阵的压缩方法,包括:

获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;

根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;

其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。

第二方面,本发明实施例还提供了一种多维稀疏矩阵的解压缩方法,包括:

获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;

根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;

根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。

第三方面,本发明实施例还提供了一种多维稀疏矩阵的压缩装置,包括:

多维稀疏矩阵获取模块,用于获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;

压缩模块,用于根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;

其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。

第四方面,本发明实施例还提供了一种多维稀疏矩阵的解压缩装置,包括:

压缩结果获取模块,用于获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;

非零元素提取模块,用于根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;

解压缩结果生成模块,用于根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。

第五方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明任意实施例所述的多维稀疏矩阵的压缩方法。

第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的多维稀疏矩阵的解压缩方法。

第七方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明任意实施例所述的多维稀疏矩阵的压缩方法。

第八方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的多维稀疏矩阵的解压缩方法。

本发明实施例提供了一种多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质,通过将多维稀疏矩阵中的非零元素所在低二维矩阵中的行列信息和数值信息分别对应添加至索引向量和数值向量中,并在索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息的技术方案,实现了对多维稀疏矩阵的压缩,而且在根据压缩结果对多维稀疏矩阵进行解压缩时,根据多维稀疏矩阵的维度信息以及索引向量中的分隔信息即可确定出非零元素在多维稀疏矩阵中的维度信息,以此实现对多维稀疏矩阵的解压缩。

附图说明

图1是本发明实施例一中的一种多维稀疏矩阵的压缩方法的流程图;

图2是本发明实施例二中的一种多维稀疏矩阵的压缩方法的流程图;

图3是本发明实施例三中的一种多维稀疏矩阵的压缩方法的实现电路的结构示意图;

图4是本发明实施例四中的一种多维稀疏矩阵的解压缩方法的流程图;

图5是本发明实施例五中的一种多维稀疏矩阵的解压缩方法的流程图;

图6是本发明实施例六中的一种多维稀疏矩阵的解压缩方法的实现电路的结构示意图;

图7是本发明实施例七中的一种多维稀疏矩阵的压缩装置的结构示意图;

图8是本发明实施例八中的一种多维稀疏矩阵的解压缩装置的结构示意图;

图9是本发明实施例九中的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

实施例一

图1为本发明实施例一提供的一种多维稀疏矩阵的压缩方法的流程图,本实施例可适用于对多维稀疏矩阵进行压缩的情况,该方法可以由本发明实施例提供的多维稀疏矩阵的压缩装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在处理器中。

如图1所示,本实施例的方法具体包括:

S110、获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵。

以一个4×3×4的三维稀疏矩阵(详见下一页)为例,该三维稀疏矩阵中包括4个维度为3×4的低二维矩阵,依次为:

上述4×3×4的三维稀疏矩阵为:

其中,当多维稀疏矩阵只包括一个低二维矩阵时,该多维稀疏矩阵即为二维稀疏矩阵。

S120、根据多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各非零元素的数值信息加入至与索引向量匹配的数值向量中,得到多维稀疏矩阵的压缩结果。

其中,在索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。

具体的,可以在索引向量中每个低二维矩阵的所有非零元素的行列信息之后添加第一分隔信息,在数值向量中的每个低二维矩阵的所有非零元素的数值信息之后添加第二分隔信息。如果某个低二维矩阵的所有元素都为非零元素,则在索引向量的对应位置处直接添加第一分隔信息,在数值向量的对应位置处直接添加第二分隔信息即可。

值得指出的是,如果多维稀疏矩阵中只包括一个低二维矩阵(也即为二维稀疏矩阵),对其进行压缩时,则直接在索引向量的最后位置处添加第一分隔信息,在数值向量的最后位置处添加第二分隔信息即可。

以三维稀疏矩阵中的第一个低二维矩阵中的非零元素为例,非零元素1的行列信息为“0 0”(空格前为行信息,空格后为列信息),非零元素2的行列信息为“11”,非零元素2的行列信息为“2 2”,非零元素4的行列信息为“2 3”。

将这些非零元素的行列信息加入索引向量index中,将这些非零元素的数值信息加入与索引向量匹配的数值向量data中,其中,在索引向量index中不同低二维矩阵的非零元素的行列信息之间通过第一分隔信息来分隔,第一分隔信息可以是所述低二维矩阵的非法位置信息,例如是“3 4”,在数值向量data中不同低二维矩阵的非零元素的数值信息之间通过第二分隔信息来分隔,第二分隔信息可以是0。

由此,对上述三位稀疏矩阵进行压缩后生成的索引向量和数值向量分别是:

index=[0 0 1 1 2 2 2 3 3 4 0 0 1 0 2 0 3 4 3 4 0 3 1 3 2 3 3 4]

data=[1 2 3 4 0 5 6 7 0 0 8 9 1 0]

由于,第三个低二维矩阵中不包含非零元素,所以在索引向量index中出现连续两个非法行列信息[3 4]的现象,在数值向量data中对应出现连续两个分隔数值[0]的现象。

在对上述三维稀疏矩阵进行压缩时,通过在index向量中插入[3 4],data向量中插入[0],达到了分隔每个低二维矩阵的目的,并且没有引入更多高维度的信息占用额外的存储空间。

对于更高维度的多维稀疏矩阵也是同样的,以下述一个2×2×3×3的四维稀疏矩阵为例:

压缩结果为index=[0 0 1 1 2 2 3 3 0 0 1 0 2 0 3 3 3 3 0 2 1 2 2 2 33]

data=[1 2 3 0 5 6 7 0 0 8 9 1 0]

本实施例提供的技术方案,通过将多维稀疏矩阵中的非零元素所在低二维矩阵中的行列信息和数值信息分别对应添加至索引向量和数值向量中,并在索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息的技术方案,实现了对多维稀疏矩阵的压缩,而且使用分隔信息达到了分隔每个低二维矩阵的目的,也没有引入更多高维度的信息占用额外的存储空间。

在压缩多维稀疏矩阵的过程中,如果没有通过分隔信息来分隔不同的低二维矩阵的非零元素的行列信息和数值信息,则前述4×3×4的三维稀疏矩阵的压缩结果为:

index=[0 0 1 1 2 2 2 3 0 0 1 0 2 0 0 3 1 3 2 3]

data=[1 2 3 4 5 6 7 8 9 1]

根据数值向量和索引向量仅能够确定出三个低二维矩阵中具有非零元素,一个低二维矩阵中只有零元素,但是无法确定出这个全零的低二维矩阵是4×3×4的三维稀疏矩阵中的哪一个低二维矩阵。

即使在根据元素数值以及索引对应确定出[1 2 3 4]属于第一个低二维矩阵,[56 7]属于第二个低二维矩阵的前提下,对于元素数值[8 9 1],以及对应索引[0 31 3 23],也无法判断出[8 9 1]属于第三个低二维矩阵还是属于第四个低二维矩阵。

本发明实施例提供的技术方案中,压缩多维稀疏矩阵时在数值向量以及压缩索引向量中添加分隔信息,进而能够在对其进行解压缩时,根据多维稀疏矩阵的维度信息以及索引向量中的分隔信息确定出各个非零元素在多维稀疏矩阵中的维度信息,是属于哪个维度的低二维矩阵,尤其适用于多维稀疏矩阵中某一个或多个维度的低二维矩阵的元素均为零的情况。

实施例二

图2为本发明实施例二提供的一种多维稀疏矩阵的压缩方法的流程图,本实施例以上述实施例为基础进行具体化,其中,将根据多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各非零元素所在的行列信息加入至索引向量中,并将各非零元素的数值信息加入至数值向量中,具体为:

依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素;

如果确定当前处理元素为非零元素,则将当前处理元素在所属的低二维矩阵中的位置信息添加至索引向量中的对应位置,并将当前处理元素的数值添加至数值向量中的对应位置;

如果确定当前处理元素为所属的低二维矩阵中的最后一个元素,则将第一分隔信息顺序添加至索引向量中,并将第二分隔信息顺序添加至数值向量中;

返回执行依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素的操作,直至处理完成待压缩多维稀疏矩阵中的所有元素。

如图2所示,本实施例的方法具体包括:

S210、获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵。

S220、依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素。

仍以压缩前述4×3×4的三维稀疏矩阵为例,假设此次循环中当前处理元素为“4”,相应的,与低二维矩阵对应的已处理元素数量为12。

S230、判断当前处理元素是否为非零元素,若是,则执行S240,若否,则执行S250。

S240、将当前处理元素在所属的低二维矩阵中的位置信息添加至索引向量中的对应位置,并将当前处理元素的数值添加至数值向量中的对应位置,执行S250。

当前处理元素“4”为非零元素,则将该非零元素的行列信息[2 3]添加至索引向量中,此时索引向量为index=[0 0 1 1 2 2 2 3],将该非零元素的数值信息[4]添加至数值向量中,此时数值向量为data=[1 2 3 4]。

S250、判断当前处理元素是否为所属的低二维矩阵中的最后一个元素,若是,则执行S260,若否,则执行S270。

作为本实施例一种具体的实施方式,在获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素之后,还更新与低二维矩阵对应的已处理元素数量,也即更新当前处理元素所属的低二维矩阵中已处理了多少个元素了,每处理完一个元素(不论是零元素还是非零元素)后,已处理元素数量加一。进而,在判断当前处理元素是否为所属的低二维矩阵中的最后一个元素时,可以具体判断更新的已处理元素数量是否与低二维矩阵的标准数量相匹配,如果已处理元素数量与低二维矩阵的标准元素数量相匹配,则确定当前处理元素为所属的低二维矩阵中的最后一个元素,并对已处理元素数量进行重新计数,也即对已处理元素数量进行置零操作,其中,低二维矩阵的标准元素数量由多维稀疏矩阵的维度信息确定,例如4×3×4的三维稀疏矩阵的低二维矩阵的标准元素数量为3×4=12。

S260、将第一分隔信息顺序添加至索引向量中,并将第二分隔信息顺序添加至数值向量中,执行S270。

其中,第一分隔信息可以为低二维矩阵的非法位置信息,例如是行列信息最大有效值分别加1;第二分隔信息可以是0。当第二分隔信息是0时,有利于直接根据多维稀疏矩阵的压缩结果对所述多维稀疏矩阵进行计算。

经判断,已处理元素数量与低二维矩阵的标准元素数量相匹配,均为12,则确定当前处理元素为所属的低二维矩阵中的最后一个元素,将已处理元素数量置0,将第一分隔信息顺序[3 4]添加至索引向量中,此时索引向量为index=[00 1 1 2 2 2 3 3 4],将第二分隔信息[0]顺序添加至数值向量中,此时数值向量为data=[1 2 3 4 0]。

S270、判断是否已处理完成待压缩多维稀疏矩阵中的所有元素,若否,则执行S220,若是,则执行280。

处理完元素“4”之后,并未处理完成待压缩多维稀疏矩阵中的所有元素,返回继续执行S220,直至处理完成待压缩多维稀疏矩阵中的所有元素,得到与多维稀疏矩阵对应的压缩结果。

S280、输出并保存与多维稀疏矩阵对应的索引向量和数值向量。

压缩结束后,得到的索引向量和数值向量分别为:

index=[0 0 1 1 2 2 2 3 3 4 0 0 1 0 2 0 3 4 3 4 0 3 1 3 2 3 3 4]

data=[1 2 3 4 0 5 6 7 0 0 8 9 1 0]

本实施例未尽详细解释之处,请参见前述实施例,在此不再赘述。

实施例三

在上述实施例为基础上,本实施例提供一种具体的实施方式,其中,将根据多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各非零元素所在的行列信息加入至索引向量中,并将各非零元素的数值信息加入至数值向量中,具体为:

分别获取待压缩多维稀疏矩阵中的各个元素进行是否为非零元素的判断,并按照顺序将待压缩多维稀疏矩阵中的非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中;

每当检测到一个低二维矩阵中的元素被处理完成时,在索引向量以及数值向量的对应位置插入第一分隔信息以及第二分隔信息。

典型的,上述对多维稀疏矩阵进行压缩的具体实施方式可以通过硬件电路来实现,如图3(仅为结构示意图,并非实际电路结构)所示,可以通过至少两个(图中以四个为例示出)第一硬件处理单元310,并行地执行分别获取待压缩多维稀疏矩阵中的各个元素进行非零元素的判断,并按照顺序将待压缩多维稀疏矩阵中的非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中的操作;

通过第二硬件处理单元320,执行每当检测到一个低二维矩阵中的元素被处理完成时,在索引向量以及数值向量的对应位置插入第一分隔信息以及第二分隔信息的操作。

为了提高对多维稀疏矩阵的压缩效率,可以采用多个第一硬件处理单元310并行地从内存中读取多维稀疏矩阵中的元素后进行处理,并行的第一硬件处理单元310的数量越大,同时处理的元素越多,理论性能就越好,但也会造成组合逻辑太大,导致芯片后端实现时出现area/timing/congestion的问题而无法收敛,所以并行的第一硬件处理单元310的数量需要权衡性能和可实现性,根据具体的芯片来具体确定。

第一硬件处理单元310,在内存中读取一个元素后,首先判断其是否为非零元素,如果是非零元素,则将该非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中相应的位置上。其中,每个第一硬件处理单元310中可以包括相同的两组处理电路子单元,一组处理元素的位置信息,一组处理元素的数值信息。

第二硬件处理单元320,根据各第一硬件处理单元310处理的元素信息,实时检测是否有一个低二维矩阵已被处理完成,如果是,则在索引向量以及数值向量的对应位置插入第一分隔信息以及第二分隔信息,用于在压缩结果中分隔不同的低二维矩阵。

以一种具体的实现方式进行举例说明,仍以压缩前述4×3×4的三维稀疏矩阵为例,假设并行的第一硬件处理单元310的数量为八个。第一个时钟周期,八个并行的第一硬件处理单元310读到的元素依次为1、0、0、0、0、2、0、0,第一个第一硬件处理单元310判断出读取的元素非零,且根据其他几个第一硬件处理单元310的判断结果计算出元素“1”在当前时钟周期生成元素组合中的相对位置为1,则将元素“1”在所属低二维矩阵中的行列信息添加至当前时钟周期索引组合中的第一个位置上,将元素“1”的数值添加至当前时钟周期数值组合中的第一个位置上,第六个第一硬件处理单元310判断出读取的元素非零,且根据其他几个第一硬件处理单元310的判断结果计算出元素“2”在当前时钟周期生成元素组合中的相对位置为2,则将元素“2”在所属低二维矩阵中的行列信息添加至当前时钟周期索引组合中的第二个位置上,将元素“2”的数值添加至当前时钟周期数值组合中的第二个位置上,进而,当前时钟周期索引组合为[0 0 1 1](由于只有两个非零元素,所以当前时钟周期索引组合中只有两组位置信息),当前时钟周期数值组合为[1 2](由于只有两个非零元素,所以当前时钟周期数值组合中只有两个数值信息),然后将当前时钟周期索引组合和当前时钟周期数值组合分别拼接至之前处理得到的索引组合和数值组合中(当然,此处举例第一时钟周期,之前处理得到的索引组合和数值组合为空)。

值得指出的是,在实际操作中,可以限定并行的第一硬件处理单元310只能同时并行处理同一行的元素,具体可以是如果读取了下一行的元素则选择不处理,留到下一时钟周期进行处理。

根据上述每一时钟周期只处理一行数据的原则,第二硬件处理单元320,如果根据并行的多个第一硬件处理单元310读取并处理的元素,确定出一个低二维矩阵的最后一个元素已被读取并处理,则在将当前时钟周期索引组合和当前时钟周期数值组合分别拼接至之前处理得到的索引组合和数值组合中时,在当前时钟周期索引组合之后插入第一分隔信息,在当前时钟周期数值组合之后插入第二分隔信息。

在多维稀疏矩阵的所有元素都被处理完成之后,得到与该多维稀疏矩阵对应的索引向量和数值向量,写入内存。至此,完成对多维稀疏矩阵的压缩处理。

本实施例未尽详细解释之处,请参见前述实施例,在此不再赘述。

实施例四

图4为本发明实施例四提供的一种多维稀疏矩阵的解压缩方法的流程图,本实施例可适用于对多维稀疏矩阵进行解压缩的情况,该方法可以由本发明实施例提供的多维稀疏矩阵的解压缩装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在处理器中。

如图4所示,本实施例的方法具体包括:

S410、获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在索引向量中通过第一分隔信息来分隔多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在数值向量中通过第二分隔信息来分隔多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息。

仍以压缩前述4×3×4的三维稀疏矩阵为例,与该三维稀疏矩阵对应的索引向量和数值向量分别是:

index=[0 0 1 1 2 2 2 3 3 4 0 0 1 0 2 0 3 4 3 4 0 3 1 3 2 3 3 4]

data=[1 2 3 4 0 5 6 7 0 0 8 9 1 0]

其中,第一分隔信息为低二维矩阵的非法行列信息[3 4],第二分隔信息为0。

S420、根据待解压缩的多维稀疏矩阵的维度信息、索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取索引向量以及数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息。

根据待解压缩的多维稀疏矩阵的维度信息4×3×4,可知该多维稀疏矩阵包括四个低二维矩阵,根据索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,即可确定出与各个低二维矩阵分别对应的非零元素的行列信息和数值信息。

其中,与第一个低二维矩阵对应的非零元素的行列信息和对应的数值信息分别为index=[0 0 1 1 2 2 2 3],data=[1 2 3 4];与第二个低二维矩阵对应的非零元素的行列信息和对应的数值信息分别为index=[0 0 1 0 2 0],data=[5 6 7];与第三个低二维矩阵对应的全部为零元素;与第四个低二维矩阵对应的非零元素的行列信息和对应的数值信息分别为index=[0 3 1 3 2 3],data=[8 9 1]。

S430、根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各低二维矩阵,作为多维稀疏矩阵的解压缩结果。

生成的四个低二维矩阵依次为和将这四个低二维矩阵按照待解压缩多维稀疏矩阵的维度4×3×4拼接起来即可得到待解压缩的多维稀疏矩阵。

具体的,将一个低二维矩阵中的各个非零元素的数值,根据其在低二维矩阵中的行列信息对应添加至该低二维矩阵中,并在该低二维矩阵的其余空闲位置上补充零元素,以完成对该低二维矩阵的解压缩。

本实施例提供的技术方案,在与待解压缩的多维稀疏矩阵对应的索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息,进而在根据压缩结果对多维稀疏矩阵进行解压缩时,可以根据多维稀疏矩阵的维度信息以及索引向量中的分隔信息确定出非零元素在多维稀疏矩阵中的维度信息,进而实现了对多维稀疏矩阵的解压缩。

实施例五

图5为本发明实施例五提供的一种多维稀疏矩阵的压缩方法的流程图,本实施例以上述实施例为基础进行具体化,其中,将根据待解压缩多维稀疏矩阵的维度信息、索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取索引向量以及数值向量中与各个低二维矩阵中各非零元素分别对应的行列信息以及数值信息,具体为:

根据待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中的第一个低二维矩阵作为目标低二维矩阵;

依次获取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息;

如果确定索引处理信息不为第一分隔信息,或者数值处理信息不为第二分隔信息,则确定出目标低二维矩阵中的以索引处理信息为行列信息、以数值处理信息为数值信息的一个非零元素;

如果确定索引处理信息为第一分隔信息,或者数值处理信息为第二分隔信息,则确定目标低二维矩阵处理完成,并根据待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中位于目标低二维矩阵下一位置的低二维矩阵作为新的目标低二维矩阵;

返回执行依次获取索引向量和数值向量中与同一位置对应的索引处理信息或者数值处理信息的操作,直至完成对索引向量和数值向量中全部信息的处理。

如图5所示,本实施例的方法具体包括:

S510、获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在索引向量中通过第一分隔信息来分隔多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在数值向量中通过第二分隔信息来分隔多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息。

S520、根据待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中的第一个低二维矩阵作为目标低二维矩阵。

S530、依次获取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息。

仍以压缩前述4×3×4的三维稀疏矩阵为例,假设当前目标低二维矩阵为三维稀疏矩阵中的第一个低二维矩阵。

S540、判断索引处理信息是否为第一分隔信息,或判断数值处理信息是否为第二分隔信息,若否,则执行S550,若是,则执行S560。

S550、确定出目标低二维矩阵中的以索引处理信息为行列信息、以数值处理信息为数值信息的一个非零元素,执行S570。

如果索引处理信息为[2 3],数值处理信息为[4],则可确定出第一个低二维矩阵中行列信息为[2 3]的位置上的元素为[4]。

S560、确定目标低二维矩阵处理完成,并根据待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中位于目标低二维矩阵下一位置的低二维矩阵作为新的目标低二维矩阵,执行S570。

如果索引处理信息为[3 4],是第一分隔信息,或数值处理信息为[0],是第二分隔信息,则确定第一个低二维矩阵已处理完,并在该低二维矩阵中其余的空闲位置上自动补充零元素,至此完成对第一个低二维矩阵的解压缩。

由于待解压缩的多维稀疏矩阵的维度是4×3×4,则可知下一个低二维矩阵为该多维稀疏矩阵的第二个低二维矩阵,并将该低二维矩阵作为新的目标低二维矩阵进行处理。

S570、判断是否完成对索引向量和数值向量中全部信息的处理,若否,则执行S530,若是,则执行S580。

S580、输出并保存解压缩后的多维稀疏矩阵。

本实施例未尽详细解释之处,请参见前述实施例,在此不再赘述。

实施例六

在上述实施例为基础上,本实施例提供一种具体的实施方式,其中,将根据待解压缩的多维稀疏矩阵的维度信息、索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,具体为:

分别获取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行是否为分隔信息的判断,提取索引向量以及所述数值向量中与非零元素分别对应的行列信息以及数值信息,并根据待解压缩的多维稀疏矩阵的维度信息以及已判断出的第一分隔信息或第二分隔信息的数量确定非零元素在待解压缩的多维稀疏矩阵中所属的低二维矩阵。

典型的,上述对多维稀疏矩阵进行解压缩的具体实施方式可以通过硬件电路来实现,如图6(仅为结构示意图,并非实际电路结构)所示,可以通过至少两个(图中以四个为例示出)第三硬件处理单元610,并行地执行分别获取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行是否为分隔信息的判断,提取索引向量以及数值向量中与非零元素分别对应的行列信息以及数值信息,并根据待解压缩的多维稀疏矩阵的维度信息以及已判断出的第一分隔信息或第二分隔信息的数量确定非零元素在待解压缩的多维稀疏矩阵中所属的低二维矩阵的操作。

为了提高对多维稀疏矩阵的解压缩效率,可以采用多个第三硬件处理单元610并行地从内存中读取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行处理,并行的第三硬件处理单元310的数量需要权衡性能和可实现性,根据具体的芯片来具体确定。

具体的,可以从内存中读回压缩的索引向量和数值向量,并缓存下来,其中,需要将每次读回的向量和缓存中剩下的向量无缝拼接,以保证后续多个第三硬件处理单元一直有数据可以处理。

每个时钟周期内,每个第三硬件处理单元610从缓存中读取索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息,并对处理信息的有效性进行判断,也即判断索引处理信息是否为第一分隔信息,或判断数值处理信息是否为第二分隔信息,如果索引处理信息和数值处理信息有效(非分隔信息),则根据所有第三硬件处理单元610已检测到的无效信息的数量确定出当前处理的索引处理信息和数值处理信息属于哪一个低二维矩阵,进而将数值处理信息移位至对应的低二维矩阵中的索引处理信息对应的位置处。

值得指出的是,如果第三硬件处理单元610的并行数量为N,虽然每次从缓存中读出N个元素,但是由于这N个元素在多维稀疏矩阵中位置的无关性,导致实际硬件不能同一周期全部处理,一次性产生所有的数据,因为如果这N个元素相隔位置非常远,那么解压缩出来的数据量将会非常大。所以,硬件具体实现时,每周期处理不超过原始多维稀疏矩阵的一行,即第一维度的数据量。

仍以压缩前述4×3×4的三维稀疏矩阵为例,假设四个第三硬件处理单元610并行处理,第一时钟周期内,将[1 2 3 4]这四个元素解压处理,且确定这四个元素均属于第一个低二维矩阵,那么根据每次解压不超过一行的原则,只会先将[1 0 0 0]输出,然后是[02 0 0]输出,再然后是[0 0 3 4]。

每次解压到索引处理信息[3 4],即可确定有一个低二维矩阵的所有非零元素均已被解压完成。值得指出的是,由于解压出来的数据将全部写回内存,所以需要将每次解压出的数据进行拼接,组成内存数据宽度,然后一次性写回内存。

本实施例未尽详细解释之处,请参见前述实施例,在此不再赘述。

实施例七

图7所示为本发明实施例七提供的一种多维稀疏矩阵的压缩装置的结构示意图,本实施例可适用于对多维稀疏矩阵进行压缩的情况,该装置可采用软件和/或硬件的方式实现,并一般可集成在处理器中。如图7所示,该多维稀疏矩阵的压缩装置具体包括:多维稀疏矩阵获取模块710和压缩模块720,其中:

多维稀疏矩阵获取模块710,用于获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;

压缩模块720,用于根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;

其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。

本实施例提供的技术方案,通过将多维稀疏矩阵中的非零元素所在低二维矩阵中的行列信息和数值信息分别对应添加至索引向量和数值向量中,并在索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息的技术方案,实现了对多维稀疏矩阵的压缩,而且使用分隔信息达到了分隔每个低二维矩阵的目的,也没有引入更多高维度的信息占用额外的存储空间。

进一步的,压缩模块720具体包括:当前处理元素获取单元、有效数据添加单元、分隔数据添加单元和循环单元,其中,

当前处理元素获取单元,用于依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素;

有效数据添加单元,用于如果确定所述当前处理元素为非零元素,则将所述当前处理元素在所属的低二维矩阵中的位置信息添加至索引向量中的对应位置,并将所述当前处理元素的数值添加至数值向量中的对应位置;

分隔数据添加单元,用于如果确定所述当前处理元素为所属的低二维矩阵中的最后一个元素,则将第一分隔信息顺序添加至所述索引向量中,并将第二分隔信息顺序添加至所述数值向量中;

循环单元,用于返回执行依次获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素的操作,直至处理完成所述待压缩多维稀疏矩阵中的所有元素。

作为一种具体的实施方式,压缩模块720还具体包括:已处理元素数量更新单元,用于在获取待压缩多维稀疏矩阵中的一个元素作为当前处理元素之后,更新与所述低二维矩阵对应的已处理元素数量;

对应的,分隔数据添加单元,具体用于如果确定所述已处理元素数量与所述低二维矩阵的标准元素数量相匹配,则确定当前处理元素为所属的低二维矩阵中的最后一个元素,并对所述已处理元素数量进行重新计数,将第一分隔信息顺序添加至所述索引向量中,并将第二分隔信息顺序添加至所述数值向量中;其中,所述低二维矩阵的标准元素数量由多维稀疏矩阵的维度信息确定。

进一步的,所述第一分隔信息包括所述低二维矩阵的非法位置信息;所述第二分隔信息包括0。

作为另一种具体的实施方式,压缩模块720具体包括:元素信息添加单元和分隔信息添加单元,其中,

元素信息添加单元,用于分别获取待压缩多维稀疏矩阵中的各个元素进行是否为非零元素的判断,并按照顺序将所述待压缩多维稀疏矩阵中的非零元素在所属的低二维矩阵中的位置信息以及数值信息对应添加至索引向量以及数值向量中;

分隔信息添加单元,用于每当检测到一个低二维矩阵中的元素被处理完成时,在所述索引向量以及数值向量的对应位置插入所述第一分隔信息以及所述第二分隔信息。

上述多维稀疏矩阵的压缩装置可执行本发明任意实施例所提供的多维稀疏矩阵的压缩方法,具备执行的多维稀疏矩阵的压缩方法相应的功能模块和有益效果。

实施例八

图8为本发明实施例八提供的一种多维稀疏矩阵的解压缩装置的结构示意图,本实施例可适用于对多维稀疏矩阵进行解压缩的情况,该装置可采用软件和/或硬件的方式实现,并一般可集成在处理器中。如图8所示,该多维稀疏矩阵的解压缩装置具体包括:压缩结果获取模块810、非零元素提取模块820和解压缩结果生成模块830,其中:

压缩结果获取模块810,用于获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;

非零元素提取模块820,用于根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;

解压缩结果生成模块830,用于根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。

本实施例提供的技术方案,在与待解压缩的多维稀疏矩阵对应的索引向量和数值向量中使用分隔信息分别来分隔不同低二维矩阵的非零元素的行列信息和数值信息,进而在根据压缩结果对多维稀疏矩阵进行解压缩时,可以根据多维稀疏矩阵的维度信息以及索引向量中的分隔信息确定出非零元素在多维稀疏矩阵中的维度信息,进而实现了对多维稀疏矩阵的解压缩。

作为一种具体的实施方式,非零元素提取模块820具体包括:目标低二维矩阵初始确定单元、处理信息获取单元、非零元素确定单元、目标低二维矩阵更新单元和循环处理单元,其中,

目标低二维矩阵初始确定单元,用于根据所述待解压缩多维稀疏矩阵的维度信息,将所述多维稀疏矩阵中的第一个低二维矩阵作为目标低二维矩阵;

处理信息获取单元,用于依次获取所述索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息;

非零元素确定单元,用于如果确定所述索引处理信息不为所述第一分隔信息,或者所述数值处理信息不为所述第二分隔信息,则确定出所述目标低二维矩阵中的以所述索引处理信息为行列信息、以所述数值处理信息为数值信息的一个非零元素;

目标低二维矩阵更新单元,用于如果确定所述索引处理信息为所述第一分隔信息,或者所述数值处理信息为所述第二分隔信息,则确定所述目标低二维矩阵处理完成,并根据所述待解压缩多维稀疏矩阵的维度信息,将多维稀疏矩阵中位于所述目标低二维矩阵下一位置的低二维矩阵作为新的所述目标低二维矩阵;

循环处理单元,用于返回执行依次获取所述索引向量和数值向量中与同一位置对应的索引处理信息或者数值处理信息的操作,直至完成对所述索引向量和数值向量中全部信息的处理。

作为另一种具体的实施方式,非零元素提取模块820具体用于:分别获取所述索引向量和数值向量中与同一位置对应的索引处理信息和数值处理信息进行是否为分隔信息的判断,提取所述索引向量以及所述数值向量中与非零元素分别对应的行列信息以及数值信息,并根据待解压缩的多维稀疏矩阵的维度信息以及已判断出的所述第一分隔信息或所述第二分隔信息的数量,确定所述非零元素在待解压缩的多维稀疏矩阵中所属的低二维矩阵。

上述多维稀疏矩阵的解压缩装置可执行本发明任意实施例所提供的多维稀疏矩阵的解压缩方法,具备执行的多维稀疏矩阵的解压缩方法相应的功能模块和有益效果。

实施例九

图9为本发明实施例九提供的一种计算机设备的结构示意图。图9示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图9显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图9所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图9未显示,通常称为“硬盘驱动器”)。尽管图9中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图9中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的多维稀疏矩阵的压缩方法。也即,所述处理单元执行所述程序时实现:获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。

又例如:实现本发明实施例所提供的多维稀疏矩阵的解压缩方法。也即,所述处理单元执行所述程序时实现:获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。

实施例十

本发明实施例十提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的多维稀疏矩阵的压缩方法:也即,该程序被处理器执行时实现:获取待压缩的多维稀疏矩阵,所述多维稀疏矩阵中包括至少一个低二维矩阵;根据所述多维稀疏矩阵中各个非零元素所属的低二维矩阵,将各所述非零元素在低二维矩阵中的行列信息加入至索引向量中,并将各所述非零元素的数值信息加入至与所述索引向量匹配的数值向量中,得到所述多维稀疏矩阵的压缩结果;其中,在所述索引向量中通过第一分隔信息来分隔不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔不同低二维矩阵的非零元素的数值信息。

或者,实现如本申请所有发明实施例提供的多维稀疏矩阵的解压缩方法:也即,该程序被处理器执行时实现:获取与待解压缩的多维稀疏矩阵对应的索引向量和数值向量,其中,在所述索引向量中通过第一分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的行列信息,在所述数值向量中通过第二分隔信息来分隔所述多维稀疏矩阵的不同低二维矩阵的非零元素的数值信息;根据待解压缩的多维稀疏矩阵的维度信息、所述索引向量和数值向量中包括的第一分隔信息以及第二分隔信息,提取所述索引向量以及所述数值向量中与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息;根据与各低二维矩阵中的非零元素分别对应的行列信息以及数值信息,生成各所述低二维矩阵,作为所述多维稀疏矩阵的解压缩结果。

可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号