首页 / 专利分类库 / 基本电子电路 / 分块压缩编码方法、装置、计算机设备及可读存储介质

压缩编码方法、装置、计算机设备及可读存储介质

申请号 CN202011017714.5 申请日 2020-09-24 公开(公告)号 CN112152634B 公开(公告)日 2024-04-30
申请人 南京大学; 发明人 杜力; 杜源; 朱俊翰;
摘要 本 申请 公开了分 块 压缩编码方法、装置、计算机设备及可读存储介质,该方法中,首先获取原始数据集,提取原始数据集中所有数据的数值部分,组成待压缩数据集;按照预设的数据长度,将待压缩数据集划分为多个数据块,获取任一数据块的标志数据及标志位宽,针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩。上述方法中使用每个数据块各自对应的标志位宽,将所有数据转换为二进制数,压缩得到的数据将占用较小内存。
权利要求

1.一种分压缩编码方法,其特征在于,所述方法包括:
获取原始数据集,所述原始数据集中的任一数据为带符号二进制数,所述带符号二进制数包括符号部分及数值部分;
提取所述原始数据集中所有数据的数值部分,组成待压缩数据集;
按照预设的数据长度,将所述待压缩数据集划分为多个数据块,任一所述数据块中至少包含两个数据的数值部分;
获取任一所述数据块的标志数据及标志位宽,所述标志数据为所述数据块中二进制位宽最大的数据,所述标志位宽为所述标志数据的二进制位宽;
针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,针对任一所述二进制数据块,将其包含的所有二进制数按照比特位置进行纵向排列,获取对应的二进制矩阵;
针对所述二进制矩阵中预设的目标行进行压缩,实现所述数据块的压缩,所述目标行为零占比高的行。
2.根据权利要求1所述的分块压缩编码方法,其特征在于,针对所述二进制矩阵中预设的目标行进行压缩,包括:
获取所述二进制矩阵的总行数;
判断所述总行数为偶数还是为奇数;
若所述总行数为偶数,则将所述二进制矩阵的前n/2行设定为所述目标行;若所述总行数为奇数,则将所述二进制矩阵的前(n‑1)/2行设定为所述目标行,其中,n为所述总行数;
针对所述目标行的所有数据进行压缩。
3.根据权利要求1所述的分块压缩编码方法,其特征在于,针对所述二进制矩阵中预设的目标行进行压缩,包括:
获取所述二进制矩阵每行数据中零的占比值;
将零的占比值高于预设阈值的行设定为所述目标行;
针对所述目标行的所有数据进行压缩。
4.根据权利要求1所述的分块压缩编码方法,其特征在于,所述针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,包括:
针对任一所述数据块,分别将每一个位宽大于其标志位宽的二进制数作为待处理二进制数;
将位于所述待处理二进制数前端的零删除,使得所述待处理二进制数的位宽等于所述标志位宽。
5.根据权利要求1所述的分块压缩编码方法,其特征在于,所述按照预设的数据长度,将所述待压缩数据集划分为多个数据块,包括:
根据所述预设的数据长度,对所述待压缩数据集进行划分,获取多个所述数据块,其中,若划分所得的最后一个数据块的数据长度短于所述预设的数据长度,则对所述最后一个数据块进行补零操作。
6.一种分块压缩编码装置,其特征在于,所述装置应用于权利要求1‑5任一项所述的分块压缩编码方法,所述分块压缩编码装置包括:
原始数据集获取模块,用于获取原始数据集,所述原始数据集中的任一数据为带符号二进制数,所述带符号二进制数包括符号部分及数值部分;
待压缩数据集生成模块,用于提取所述原始数据集中所有数据的数值部分,组成待压缩数据集;
数据集划分模块,用于按照预设的数据长度,将所述待压缩数据集划分为多个数据块,任一所述数据块中至少包含两个数据的数值部分;
标志数据获取模块,用于获取任一所述数据块的标志数据及标志位宽,所述标志数据为所述数据块中二进制位宽最大的数据,所述标志位宽为所述标志数据的二进制位宽;
二进制转换模块,用于针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩;
矩阵排列模块,用于在所述二进制转换模块针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩之后,针对任一所述二进制数据块,将其包含的所有二进制数按照比特位置进行纵向排列,获取对应的二进制矩阵;
二次压缩模块,用于针对所述二进制矩阵中预设的目标行进行压缩,所述目标行为零占比高的行。
7.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序
处理器,用于执行所述计算机程序时实现如权利要求1‑5任一项所述的分块压缩编码方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理执行时实现如权利要求1‑5任一项所述的分块压缩编码方法的步骤。

说明书全文

压缩编码方法、装置、计算机设备及可读存储介质

技术领域

[0001] 本申请涉及数据压缩技术领域,尤其涉及分块压缩编码方法、装置、计算机设备及可读存储介质。

背景技术

[0002] 神经网络模型中存在大量的权重数据,这些权重数据都是以二进制格式存储在计算机中。目前,为了减少这些权重数据所需的存储空间,常使用压缩编码的方式,减少所有权重数据占用的二进制位宽,以减小最终所需的内存空间。
[0003] 一种常见的压缩编码方式为二进制标记(binary‑mask)压缩编码,其压缩编码过程中需要建立两张表格,分别为记录表格和数据表格,参见图1,图中的表1即为记录表格,表2为数据表格。在针对原始数据集进行压缩编码时,若原始数据集中的某一数据为0,则在表1的对应位置中记0;若不为0,则在表1的对应位置中记1,并同时将该数据记入表2中。所有数据记入完成后,表1中的每个数据只会是0或1,仅占用一个比特的位宽,而表2中数据的二进制位宽与原本所占用的位宽一致,并未得到压缩。因此,原始数据集中0的占比越大,表2中的数据就会越少,binary‑mask压缩编码的压缩效果则越好。
[0004] 但是,神经网络模型的权重数据中,有很多都是集中在0附近但不为0的数据,这些数据的特点是:数值小、占比高且不为0,这种情况下,若使用binary‑mask压缩编码对这些数据进行压缩,其压缩效果将变差。发明内容
[0005] 为了解决因神经网络权重数据大多为集中在0附近但不为0的数据,从而导致使用binary‑mask压缩编码的压缩效果较差的问题,本申请通过以下实施例公开了分块压缩编码方法、装置、计算机设备及可读存储介质。
[0006] 本申请第一方面公开了一种分块压缩编码方法,所述方法包括:
[0007] 获取原始数据集,所述原始数据集中的任一数据为带符号二进制数,所述带符号二进制数包括符号部分及数值部分;
[0008] 提取所述原始数据集中所有数据的数值部分,组成待压缩数据集;
[0009] 按照预设的数据长度,将所述待压缩数据集划分为多个数据块,任一所述数据块中至少包含两个数据的数值部分;
[0010] 获取任一所述数据块的标志数据及标志位宽,所述标志数据为所述数据块中二进制位宽最大的数据,所述标志位宽为所述标志数据的二进制位宽;
[0011] 针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩。
[0012] 可选的,在所述针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩之后,所述方法还包括:
[0013] 针对任一所述二进制数据块,将其包含的所有二进制数按照比特位置进行纵向排列,获取对应的二进制矩阵;
[0014] 针对所述二进制矩阵中预设的目标行进行压缩,所述目标行为零占比高的行。
[0015] 可选的,针对所述二进制矩阵中预设的目标行进行压缩,包括:
[0016] 获取所述二进制矩阵的总行数;
[0017] 判断所述总行数为偶数还是为奇数;
[0018] 若所述总行数为偶数,则将所述二进制矩阵的前n/2行设定为所述目标行;若所述总行数为奇数,则将所述二进制矩阵的前(n‑1)/2行设定为所述目标行,其中,n为所述总行数;
[0019] 针对所述目标行的所有数据进行压缩。
[0020] 可选的,针对所述二进制矩阵中预设的目标行进行压缩,包括:
[0021] 获取所述二进制矩阵每行数据中零的占比值;
[0022] 将零的占比值高于预设阈值的行设定为所述目标行;
[0023] 针对所述目标行的所有数据进行压缩。
[0024] 可选的,所述针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,包括:
[0025] 针对任一所述数据块,分别将每一个位宽大于其标志位宽的二进制数作为待处理二进制数;
[0026] 将位于所述待处理二进制数前端的零删除,使得所述待处理二进制数的位宽等于所述标志位宽。
[0027] 可选的,所述按照预设的数据长度,将所述待压缩数据集划分为多个数据块,包括:
[0028] 根据所述预设的数据长度,对所述待压缩数据集进行划分,获取多个所述数据块,其中,若划分所得的最后一个数据块的数据长度短于所述预设的数据长度,则对所述最后一个数据块进行补零操作。
[0029] 本申请第二方面公开了一种分块压缩编码装置,所述装置应用于本申请第一方面所述的分块压缩编码方法,所述分块压缩编码装置包括:
[0030] 原始数据集获取模块,用于获取原始数据集,所述原始数据集中的任一数据为带符号二进制数,所述带符号二进制数包括符号部分及数值部分;
[0031] 待压缩数据集生成模块,用于提取所述原始数据集中所有数据的数值部分,组成待压缩数据集;
[0032] 数据集划分模块,用于按照预设的数据长度,将所述待压缩数据集划分为多个数据块,任一所述数据块中至少包含两个数据的数值部分;
[0033] 标志数据获取模块,用于获取任一所述数据块的标志数据及标志位宽,所述标志数据为所述数据块中二进制位宽最大的数据,所述标志位宽为所述标志数据的二进制位宽;
[0034] 二进制转换模块,用于针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩。
[0035] 可选的,所述分块压缩编码装置还包括:
[0036] 矩阵排列模块,用于在所述二进制转换模块针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩之后,针对任一所述二进制数据块,将其包含的所有二进制数按照比特位置进行纵向排列,获取对应的二进制矩阵;
[0037] 二次压缩模块,用于针对所述二进制矩阵中预设的目标行进行压缩,所述目标行为零占比高的行。
[0038] 可选的,所述二次压缩模块包括:
[0039] 行数获取单元,用于获取所述二进制矩阵的总行数;
[0040] 奇偶判断单元,用于判断所述总行数为偶数还是为奇数;
[0041] 第一目标行设定单元,用于若所述总行数为偶数,则将所述二进制矩阵的前n/2行设定为所述目标行;若所述总行数为奇数,则将所述二进制矩阵的前(n‑1)/2行设定为所述目标行,其中,n为所述总行数;
[0042] 第一压缩单元,用于针对所述目标行的所有数据进行压缩。
[0043] 可选的,所述二次压缩模块包括:
[0044] 零占比获取单元,用于获取所述二进制矩阵每行数据中零的占比值;
[0045] 第二目标行设定单元,用于将零的占比值高于预设阈值的行设定为所述目标行;
[0046] 第二压缩单元,用于针对所述目标行的所有数据进行压缩。
[0047] 可选的,所述二进制转换模块在针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数时,通过以下单元执行:
[0048] 待处理二进制数提取单元,用于针对任一所述数据块,分别将每一个位宽大于其标志位宽的二进制数作为待处理二进制数;
[0049] 去零单元,用于将位于所述待处理二进制数前端的零删除,使得所述待处理二进制数的位宽等于所述标志位宽。
[0050] 可选的,所述数据集划分模块包括:
[0051] 划分单元,用于根据所述预设的数据长度,对所述待压缩数据集进行划分,获取多个所述数据块,其中,若划分所得的最后一个数据块的数据长度短于所述预设的数据长度,则对所述最后一个数据块进行补零操作。
[0052] 本申请第三方面公开了一种计算机设备,包括:
[0053] 存储器,用于存储计算机程序
[0054] 处理器,用于执行所述计算机程序时实现如本申请第一方面所述的分块压缩编码方法的步骤。
[0055] 本申请第四方面一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理执行时实现如本申请第一方面所述的分块压缩编码方法的步骤。
[0056] 本申请公开了分块压缩编码方法、装置、计算机设备及可读存储介质,该方法中,首先获取原始数据集,提取原始数据集中所有数据的数值部分,组成待压缩数据集;按照预设的数据长度,将待压缩数据集划分为多个数据块,获取任一数据块的标志数据及标志位宽,针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩。上述方法中使用每个数据块各自对应的标志位宽,将所有数据转换为二进制数,而binary‑mask压缩编码中使用统一的固定位宽将所有非零数据转换为二进制数,其所使用的固定位宽为默认的位宽,通常大于或等于所有非零数据对应的最大位宽,因此,利用上述分块压缩编码方法压缩得到的数据将占用较小内存。附图说明
[0057] 为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0058] 图1为现有的binary‑mask压缩编码示意图;
[0059] 图2为申请实施例公开的一种分块压缩编码方法的工作流程示意图;
[0060] 图3为本申请实施例公开的一种分块压缩编码方法的压缩结果示意图;
[0061] 图4为本申请实施例公开的一种分块压缩编码方法中,对目标行进行二次压缩的示意图;
[0062] 图5为本申请实施例公开的又一种分块压缩编码方法的压缩结果示意图。

具体实施方式

[0063] 为了解决因神经网络权重数据大多为集中在0附近但不为0的数据,从而导致使用binary‑mask压缩编码的压缩效果较差的问题,本申请通过以下实施例公开了分块压缩编码方法、装置、计算机设备及可读存储介质。
[0064] 本申请第一实施例公开了一种分块压缩编码方法,参见图2所示的工作流程示意图,所述方法包括:
[0065] 步骤S11,获取原始数据集,所述原始数据集中的任一数据为带符号二进制数,所述带符号二进制数包括符号部分及数值部分。
[0066] 其中,带符号二进制数的首位为符号位,若符号位为“1”,则表示该二进制数为负数,若为“0”,则表示该二进制数为正数。
[0067] 步骤S12,提取所述原始数据集中所有数据的数值部分,组成待压缩数据集。
[0068] 步骤S13,按照预设的数据长度,将所述待压缩数据集划分为多个数据块,任一所述数据块中至少包含两个数据的数值部分。
[0069] 具体的,根据所述预设的数据长度,对所述待压缩数据集进行划分,获取多个所述数据块,其中,若划分所得的最后一个数据块的数据长度短于所述预设的数据长度,则对所述最后一个数据块进行补零操作。
[0070] 例如,若所述待压缩数据集中包含55736160个权重数据,可以按照127这个数据长度对所述待压缩数据集进行分块,这种情况下,所述待压缩数据集将会被分为438868个数据块,其中最后一个数据块需通过补零操作添加76个零。或者,也可以按照207这个数据长度对所述待压缩数据集进行分块,这种情况下,所述待压缩数据集将会被分为269257个数据块,其中最后一个数据块需通过补零操作添加39个零。
[0071] 步骤S14,获取任一所述数据块的标志数据及标志位宽,所述标志数据为所述数据块中二进制位宽最大的数据,所述标志位宽为所述标志数据的二进制位宽。具体的,标志位宽为标志数据实质上所需占据的二进制位宽,其首位不存在多余的零,因而不存在位宽的浪费。
[0072] 步骤S15,针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩。
[0073] 在一些实施方式中,所述针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,包括:
[0074] 针对任一所述数据块,分别将每一个位宽大于其标志位宽的二进制数作为待处理二进制数。
[0075] 将位于所述待处理二进制数前端的零删除,使得所述待处理二进制数的位宽等于所述标志位宽。
[0076] 实际操作中,若原始数据集中的定点数据为int8类型,则待压缩数据集中任一数据块中的数据均为无符号的八位二进制数,在执行步骤S15之前,每个数据都是8比特二进制数,即每个数据都占用8位位宽。执行完本步骤后,每个数据块中的数据都被转换为与各自标志位宽相同的二进制数,此时,只有在标志位宽为8的情况下,其对应的数据块中的每个数据才会继续占用8位位宽,对于标志位宽小于8的情况,其对应的数据块中每个数据所占用的位宽均会小于8位,因此最终得到的多个二进制数据块,其所需的内存空间将比原始数据集小很多。
[0077] 基于上述原理,在步骤S13中,所述预设的数据长度大小可根据神经网络权重数据的总数,设置为合适的大小,原则上只要不会使数据块的总个数过少或过多即可。数据块个数最多的情况下,最起码要确保每个数据块中至少有两个数据,因为如果每个数据块中只有一个数据,则不会产生任何压缩效果,数据块个数最少的情况下,最起码要确保至少存在一个数据块的标志位宽小于8比特,因为如果所有数据块的标志位宽都是8比特的话,同样的也不会产生压缩效果。如果每个数据块的标志位宽都是8比特,那么可以调节数据长度,重新对待压缩数据集进行划分。
[0078] 图3为本实施例得到的压缩编码结果示意图,该压缩编码结果中包括一个用于保存所有数据符号部分的数据块以及n个二进制数据块,每个二进制数据块包含m个数据(即在将待压缩数据集划分为多个数据块时,所述预设的数据长度为m)。第一个二进制数据块的数据分别为Num 11、……、Num 1m;第二个二进制数据块的数据分别为Num 21、……、Num 2m;第n个二进制数据块的数据分别为Num n1、……、Num nm。用于保存所有数据符号部分的数据块中的数据分别为Num 1、……、Num X1,其中X1表示原始数据集中所有数据的个数。
[0079] 上述压缩编码结果中,大部分数据前端都被添加了零,因此很多数据的高位皆为零,为了实现进一步的压缩,在所述针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩之后,所述方法还包括:
[0080] 针对任一所述二进制数据块,将其包含的所有二进制数按照比特位置进行纵向排列,获取对应的二进制矩阵。其中,二进制矩阵的行数为该二进制数据块对应的标志位宽,列数为该二进制数据块中所包含的数据总个数。
[0081] 针对所述二进制矩阵中预设的目标行进行压缩,所述目标行为零占比高的行。
[0082] 由于任一二进制数据块中很多数据的高位为零,因此将它们按照比特位置纵向排列成二进制矩阵后,矩阵的前面几行数据中零的占比比较高,将这几行作为目标行进行二次压缩,可有效提高压缩效率。针对目标行进行二次压缩的方法可采用现有的压缩方法,包括但不限于游程编码及“跳零”编码等。
[0083] “跳零”压缩编码相当于binary‑mask编码和游程编码的融合。跳零编码记录的是原数据中不为0的值和连个不为零的值之前的相对位置。记录相对位置的索引也是由固定位宽的二进制表示。
[0084] 以下针对索引用2位二进制表示为例,对“跳零”编码进行解释:假设待压缩的原数据为:10020001200000。记录不为0数据为:1212。记录索引时,索引的数字表示两个不为0数之间的间隔,其中2比特表示相对位置,最多可以表示邻近距离为3(即两个数字之前有两个0),当距离超过所表示的范围时,索引位宽记录为0,此时指引光标到达第三个0的位置,后面依次为起点。当数组最后一个数字为0时,索引位宽表示为0,解码时候则补零补齐直到末尾。
[0085] 作为示例,参见图4所示,若一个二进制数据块中包含十个数据,分别为{26、4、6、15、32、86、5、7、16、26}(此处为了便于理解及说明,采用十进制格式例举,但实际应用中,任一数据的格式为无符号二进制,通过补零操作,所有数据的位宽均与86的位宽相一致)。从图4中可以看出,在将所有数据按照比特位置纵向排列成二进制矩阵时,矩阵的前几行存在较多的零,将这几行设为目标行进行二次压缩,可以进一步压缩数据,减小数据最终所需的存储空间。
[0086] 在一种实现方式中,针对所述二进制矩阵中预设的目标行进行压缩,包括:
[0087] 获取所述二进制矩阵的总行数。
[0088] 判断所述总行数为偶数还是为奇数。
[0089] 若所述总行数为偶数,则将所述二进制矩阵的前n/2行设定为所述目标行。若所述总行数为奇数,则将所述二进制矩阵的前(n‑1)/2行设定为所述目标行,其中,n为所述总行数。
[0090] 作为示例,若总行数为6行,则将二进制矩阵的前三行设为所述目标行,若总行数为7行,则还是将二进制矩阵的前三行设为所述目标行。
[0091] 针对所述目标行的所有数据进行压缩。
[0092] 在另一种实现方式中,针对所述二进制矩阵中预设的目标行进行压缩,包括:
[0093] 获取所述二进制矩阵每行数据中零的占比值。
[0094] 将零的占比值高于预设阈值的行设定为所述目标行。其中,所述预设阈值可根据后续对目标行进行二次压缩时所使用的现有压缩编码方式来预先设定。
[0095] 针对所述目标行的所有数据进行压缩。
[0096] 图5为本实施例得到的最终压缩编码结果示意图,该压缩编码结果中包括一个用于保存所有数据符号部分的数据块以及n个二进制数据块,其中,每个二进制数据块均包括目标行和非目标行的压缩结果。每个目标行的压缩结果中包含的数据总数(即X2‑X5的值)根据目标行的二次压缩编码方法确定,每个非目标行的压缩结果中均包含m个数据。
[0097] 本申请实施例工卡的分块压缩编码方法中,使用每个数据块各自对应的标志位宽,将所有数据转换为二进制数,而binary‑mask压缩编码中使用统一的固定位宽将所有非零数据转换为二进制数,其所使用的固定位宽为默认的位宽,通常大于或等于所有非零数据对应的最大位宽,因此,利用上述分块压缩编码方法压缩得到的数据将占用较小内存。而且上述分块压缩编码方法还将每个二进制数据块纵向排列成二进制矩阵,并针对二进制矩阵中零占比高的行进行二次压缩,最大程度上缩小了最终结果所需占用的内存,压缩效果远远优于binary‑mask压缩编码的压缩效果。
[0098] 下述为本申请装置实施例,用于执行上述方法实施例。对于装置实施例中未披露的细节,请参照上述方法实施例。
[0099] 本申请第二实施例公开了一种分块压缩编码装置,所述装置应用于本申请第一实施例所述的分块压缩编码方法,所述分块压缩编码装置包括:
[0100] 原始数据集获取模块,用于获取原始数据集,所述原始数据集中的任一数据为带符号二进制数,所述带符号二进制数包括符号部分及数值部分。
[0101] 待压缩数据集生成模块,用于提取所述原始数据集中所有数据的数值部分,组成待压缩数据集。
[0102] 数据集划分模块,用于按照预设的数据长度,将所述待压缩数据集划分为多个数据块,任一所述数据块中至少包含两个数据的数值部分。
[0103] 标志数据获取模块,用于获取任一所述数据块的标志数据及标志位宽,所述标志数据为所述数据块中二进制位宽最大的数据,所述标志位宽为所述标志数据的二进制位宽。
[0104] 二进制转换模块,用于针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩。
[0105] 进一步的,所述分块压缩编码装置还包括:
[0106] 矩阵排列模块,用于在所述二进制转换模块针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数,获取对应的二进制数据块,实现所述数据块的压缩之后,针对任一所述二进制数据块,将其包含的所有二进制数按照比特位置进行纵向排列,获取对应的二进制矩阵。
[0107] 二次压缩模块,用于针对所述二进制矩阵中预设的目标行进行压缩,所述目标行为零占比高的行。
[0108] 进一步的,所述二次压缩模块包括:
[0109] 行数获取单元,用于获取所述二进制矩阵的总行数;
[0110] 奇偶判断单元,用于判断所述总行数为偶数还是为奇数;
[0111] 第一目标行设定单元,用于若所述总行数为偶数,则将所述二进制矩阵的前n/2行设定为所述目标行;若所述总行数为奇数,则将所述二进制矩阵的前(n‑1)/2行设定为所述目标行,其中,n为所述总行数;
[0112] 第一压缩单元,用于针对所述目标行的所有数据进行压缩。
[0113] 可选的,所述二次压缩模块包括:
[0114] 零占比获取单元,用于获取所述二进制矩阵每行数据中零的占比值;
[0115] 第二目标行设定单元,用于将零的占比值高于预设阈值的行设定为所述目标行;
[0116] 第二压缩单元,用于针对所述目标行的所有数据进行压缩。
[0117] 进一步的,所述二进制转换模块在针对任一所述数据块,将其包含的每个数据分别转换为位宽与其标志位宽一致的二进制数时,通过以下单元执行:
[0118] 待处理二进制数提取单元,用于针对任一所述数据块,分别将每一个位宽大于其标志位宽的二进制数作为待处理二进制数;
[0119] 去零单元,用于将位于所述待处理二进制数前端的零删除,使得所述待处理二进制数的位宽等于所述标志位宽。
[0120] 进一步的,所述数据集划分模块包括:
[0121] 划分单元,用于根据所述预设的数据长度,对所述待压缩数据集进行划分,获取多个所述数据块,其中,若划分所得的最后一个数据块的数据长度短于所述预设的数据长度,则对所述最后一个数据块进行补零操作。
[0122] 本申请第三实施例公开了一种计算机设备,包括:
[0123] 存储器,用于存储计算机程序。
[0124] 处理器,用于执行所述计算机程序时实现如本申请第一实施例所述的分块压缩编码方法的步骤。
[0125] 本申请第四实施例一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理执行时实现如本申请第一实施例所述的分块压缩编码方法的步骤。
[0126] 以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。
QQ群二维码
意见反馈