700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 数据压缩方法及装置和计算机可读存储介质与流程

数据压缩方法及装置和计算机可读存储介质与流程

时间:2020-04-10 08:59:23

相关推荐

数据压缩方法及装置和计算机可读存储介质与流程

本发明属于数据处理领域,具体涉及一种数据压缩方法和装置以及计算机可读存储介质。

背景技术:

:随着各种电子设备计算处理能力的不断增强,以及电子设备间通信的增多,在电子设备中存储的数据量以及在电子设备之间传输的数据量也不断上升。一个典型的例子就是人工智能领域中采用的神经网络,随着目前计算能力的增强和需要解决的问题越来越复杂,以及对神经网络性能的要求逐步提高,深度神经网络的深度越来越深、规模越来越大,大规模的神经网络对应着大量的参数,这些参数的存储和传输也逐渐成为一个不能忽视的问题,尤其是针对边缘计算,深度神经网络直接在终端上计算,因此终端上存储有大量参数,参数的存储空间对终端神经网络计算器(可以是芯片或者其他硬件/软件形式)的成本影响较大,而影响参数的存储空间的一个主要因素就是参数值编码后的最大码字长度,最大码字长度越长,则存储码表所需的存储空间就越大。因此,存在对神经网络中需要存储和/或传输的数据(例如各种参数)进行压缩的方法。传统上,一种方式是减少神经网络中不必要的神经元连接,从而减少参数数量,但是这可能会降低神经网络的性能;另一种方式是对神经网络中的参数进行量化,对量化后的参数进一步采用一些无损压缩编码算法进行压缩编码,以提高参数的存储和传输效率,降低对存储空间的需求,但是该方式中,码表的大小取决于最大码字长度,最大码字长度越长,则所需存储空间越大。例如,以采用霍夫曼编码作为无损压缩编码算法为例,霍夫曼码是一种可变字长码,即编码后每个码字对应码字长度不一定相同,通常最长的码字长度会比参数的原始量化编码要长,例如,量化后为16比特的参数经过霍夫曼编码之后,所得的最长码字长度可能为20比特以上,最短码字长度可能为3比特,但是平均码字长度会变短,例如平均码字长度变成12比特,这相比原始量化编码提高了编码效率,但是也给译码带来一定困难。具体而言,在霍夫曼译码时,需要将编码后的码表传给译码器,译码器通过查表的方式(或者类似的查找树的方式)进行译码,那么对于本来长度较大的系数,例如16比特系数,至少需要存储2^16=64k个表项,每个表项至少需要包括:16比特原始数据、编码后码字长度,如果不扩展则还需要包括编码后的码字。如果为了硬件实现查找表的方便,往往还需要将这个表按照最长码字长度进行扩展(即,将码表中所有编码后的码字高位对齐,不足的末尾补齐到最大码字长度,从而导致译码表所需空间过大),以最长码字长度为20为例,那么就要存储2^20=1m个表项。因此,现有技术中硬件实现译码时所需存储空间大。但是实际上,对于神经网络参数而言,传统的无损压缩算法并非是最优的,而是存在进一步优化的空间,以降低最大码字长度。具体而言,通过对大量神经网络参数的分析发现,参数的原始取值或量化值的概率分布呈类似正态分布,即参数的各原始取值对应的出现概率(或出现次数)差异很大,这就为参数取值编码的进一步压缩提供了可能,即相比传统的无损压缩编码算法进一步降低最大码字长度。技术实现要素:针对上面提到的码表大小由于编码后的最大码字长度过长而导致码表存储空间过大的问题,提出了一种数据压缩方法和装置,其能控制和缩短最大码字长度,从而降低用于码表的存储空间大小。依据本发明的第一方面,提供了一种数据压缩方法,其包括:获取参数的多个取值,以及所述多个取值中每一者的出现概率;将所述出现概率与预定阈值进行比较,其中所述出现概率小于所述预定阈值的取值为第一组取值,而所述出现概率大于或等于所述预定阈值的取值为第二组取值;对所述第一组取值进行预处理;以及对所述第二组取值和经预处理的第一组取值进行编码。在这里,预定阈值可以根据实际应用情况而由本领域技术人员具体确定。一般来说,预定阈值越大,则第一组取值的数量会越多,对最大码字长度的降低效果越显著,但是可能对总体编码效率的影响会越大;相反,如果预定阈值越小,则第一组取值的数量会越少,对最大码字长度的降低效果会较小,但是可能对总体编码效率的影响会越小。此外,对第一组取值进行预处理然后进行编码的目的在于降低该组取值的编码码字长度。优选地,对所述第一组取值进行预处理可以包括:获取所述第一组取值中各取值的原始编码码字。优选地,对所述第二组取值和经预处理的第一组取值进行编码可以包括:对所述第二组取值进行可变字长编码,得到所述第二组取值中各取值对应的编码后码字,以及将所述可变字长编码所得的最短编码后码字在末尾补充0和1中的一者作为所述最短编码后码字对应的取值的补充后码字,并且将所述最短编码后码字在末尾补充0和1中的另一者作为前缀与所获取的所述第一组取值中各取值的原始编码码字组合分别作为所述第一组取值中的各取值的组合码字。优选地,上述方法还可以包括:形成码表,所述码表可至少包括:所述第一组取值中的各取值及其分别对应的所述组合码字;所述第二组取值中的各取值及其分别对应的所述编码后码字或补充后码字。优选地,所述方法还可以包括:在根据所述码表对输入比特流进行译码时,如果译码结果为所述前缀,则在所述输入比特流中从所述前缀往后取预设n个比特作为所述原始编码码字进行输出,其中n可以是所述原始编码码字的长度。原始编码码字的长度n优选为大于2的自然数,n越大,本发明的数据压缩方法的优势更显著。优选地,对所述第一组取值进行预处理可以包括:将所述第一组取值中各取值的出现概率设置为使得:所述第一组取值中各取值的出现概率之和不大于所述第二组取值中的次小值,并且所述第一组取值能够形成平衡二叉树。更加优选地,对所述第一组取值进行预处理可以包括:计算所述第一组取值中各取值的出现概率的平均值,并且将所述第一组取值中各取值的出现概率设置为彼此相等且小于或等于所述平均值。在这里,所述预处理旨在使得对所述第一组取值编码后的码字长度更加均匀。优选地,对所述第二组取值和经预处理的第一组取值进行编码包括:对所述第二组取值和经预处理的第一组取值一起进行可变字长编码。优选地,所述可变字长编码可以为香农编码、费诺编码或者霍夫曼编码。依据本发明的第一方面,提供了一种数据压缩装置,包括获取单元、比较单元、预处理单元和编码单元,其中获取单元与比较单元连接,比较单元与预处理单元及编码单元连接,预处理单元与编码单元连接,其特征在于,所述获取单元用于获取参数的多个取值,以及所述多个取值中每一者的出现概率;所述比较单元用于将所述获取单元获取的出现概率与预定阈值进行比较,并且将来自所述获取单元的所述多个取值分为其出现概率小于所述预定阈值的第一组取值、以及其出现概率大于或等于所述预定阈值的第二组取值;所述预处理单元对来自所述比较单元的所述第一组取值进行预处理;以及所述编码单元对来自所述比较单元的所述第二组取值和经所述预处理单元预处理的第一组取值进行编码。在这里,预定阈值可以根据实际应用情况而由本领域技术人员具体确定。一般来说,预定阈值越大,则第一组取值的数量会越多,对最大码字长度的降低效果越显著,但是可能对总体编码效率的影响会越大;相反,如果预定阈值越小,则第一组取值的数量会越少,对最大码字长度的降低效果会较小,但是可能对总体编码效率的影响会越小。此外,对第一组取值进行预处理然后进行编码的目的在于降低该组取值的编码码字长度。优选地,所述预处理包括:获取所述第一组取值中各取值的原始编码码字。优选地,所述编码单元进行的编码可以包括:对所述第二组取值进行可变字长编码,得到所述第二组取值中各取值对应的编码后码字,以及将所述可变字长编码所得的最短编码后码字在末尾补充0和1中的一者作为所述最短编码后码字对应的取值的补充后码字,并且将所述最短编码后码字在末尾补充0和1中的另一者作为前缀与所获取的所述第一组取值中各取值的原始编码码字组合分别作为所述第一组取值中的各取值的组合码字。优选地,所述编码单元还用于形成码表,所述码表至少包括:所述第一组取值中的各取值及其分别对应的所述组合码字;所述第二组取值中的各取值及其分别对应的所述编码后码字或补充后码字。优选地,所述预处理单元对所述第一组取值进行预处理包括:将所述第一组取值中各取值的出现概率设置为使得:所述第一组取值中各取值的出现概率之和不大于所述第二组取值中的次小值,并且所述第一组取值能够形成平衡二叉树。优选地,所述预处理单元还可以用于:计算所述第一组取值中各取值的出现概率的平均值,并且将所述第一组取值中各取值的出现概率设置为彼此相等且小于或等于所述平均值。优选地,所述编码单元还可以用于:对所述第二组取值和经预处理的第一组取值一起进行可变字长编码。优选地,所述可变字长编码为香农编码、费诺编码或者霍夫曼编码。根据本发明的又一方面,还提供了一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现如上所述的方法。利用以上方案,针对进行本发明的编码前概率最小的一部分码字进行预处理,从而达到降低最大编码后码字长度的效果。因为人工神经网络的参数中有一部分取值的出现概率是远小于其他部分的取值,因此针对这部分取值的处理对压缩效率影响不大,但却会显著降低译码的复杂度和实现代价,尤其是存储器空间的代价。应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举说明本发明的具体实施方式。附图说明通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的有点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:图1为根据本发明一实施例的数据压缩方法的流程示意图;图2为根据本发明另一实施例的数据压缩方法的示例,其中(a)示出采用传统霍夫曼编码的示例,而(b)和(c)示出采用本发明实施例中的方法的示例;图3为根据本发明另一实施例的数据压缩方法的另一示例,其中(a)示出采用传统霍夫曼编码的示例,而(b)和(c)示出采用本发明实施例中的方法的示例;图4为根据本发明又一实施例的数据压缩方法的示例,其中(a)示出采用传统霍夫曼编码的示例,而(b)示出采用本发明实施例中的方法的示例;图5为根据本发明又一实施例的数据压缩装置的示意图;图6示出了根据本发明一实施例的计算机可读存储介质的示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。在本发明中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。在图1中,示出了根据本发明一实施例的数据压缩方法的流程示意图。该数据压缩方法包括:s101:获取参数的多个取值,以及所述多个取值中每一者的出现概率;s102:将所述出现概率与预定阈值进行比较,其中所述出现概率小于所述预定阈值的取值为第一组取值,而所述出现概率大于或等于所述预定阈值的取值为第二组取值;s103:对第一组取值进行预处理;以及s104:对第二组取值和经预处理的第一组取值进行编码。在这里,对所述参数的类型不作具体限定,其可以是各种参数,例如人工神经网络中的各种参数(例如卷积计算中涉及的参数),或者其它数学模型或算法中的参数;本发明实施例中的数据压缩方法所达效果的有效程度高低,与各参数取值概率分布差异的大小呈正相关。本申请中以人工神经网络中的参数为例进行说明,但是不限于人工神经网络中的参数。本发明实施例中,对参数取值的处理并非如传统那样采用统一方式,而是对参数取值进行分组,并对不同组的取值进行不同的处理,从而实现控制和缩短最大码字长度,进而降低用于码表的存储空间大小的目的。本领域技术人员可以理解的是,预定阈值越大,则第一组取值中的取值数量会越多,对最大码字长度的降低效果越显著,但是可能对总体编码效率的影响会越大;相反,如果预定阈值越小,则第一组取值中的取值数量会越少,对最大码字长度的降低效果会较小,但是可能对总体编码效率的影响会越小。此外,对第一组取值进行预处理然后进行编码的目的在于降低该组取值的编码后码字长度。下面结合图2和图3进一步描述本发明实施例。图2为根据本发明另一实施例的数据压缩方法的示例,其中(a)示出采用传统霍夫曼编码的示例,而(b)和(c)示出采用本发明实施例中的方法的示例;图3为根据本发明另一实施例的数据压缩方法的另一示例,其中(a)示出采用传统霍夫曼编码的示例,而(b)和(c)示出采用本发明实施例中的方法的示例。如图2所示,在本示例中,参数a在编码前的原始编码码字长度n为3比特(例如,该参数a以3比特进行量化编码),具有8个取值a1、a2、a3、a4、a5、a6、a7、a8,分别具有原始编码码字000、001、010、011、100、101、110、111,对应的出现概率为分别为1/2、1/4、1/8、1/16、1/32、1/64、1/128、1/128。如图中(a)所示,如果采用传统霍夫曼(huffman)编码,尽管所得编码的最短码字长度仅为1,即取值a1对应的编码后码字1,但是所得编码的最大码字长度达到了7比特,即取值a7对应的编码后码字0000001和取值a8对应的编码后码字0000000。在采用本发明实施例中的数据压缩方法的情况下,如图2中(b)和(c)所示,假如预定阈值为1/48,则通过上述步骤s102将取值a1、a2、a3、a4、a5、a6、a7、a8的概率1/2、1/4、1/8、1/16、1/32、1/64、1/128、1/128与该预定阈值进行比较后将参数a的8个取值分为两组,即第一组取值a6、a7、a8和第二组取值a1、a2、a3、a4、a5。接着对第一组取值a6、a7、a8进行预处理以获取第一组取值a6、a7、a8中各取值的原始编码码字101、110、111。同时,如图2中(b)所示,对第二组取值a1、a2、a3、a4、a5进行可变字长编码如霍夫曼编码,得到第二组取值a1、a2、a3、a4、a5中各取值对应的编码后码字1、01、001、0001、0000,此外,将所得编码后码字中的最短编码后码字1在末尾补充0作为所述最短编码后码字对应的取值a1的补充后码字10,并且将所述最短编码后码字1在末尾补充1作为前缀11,将该前缀11与所获取的第一组取值a6、a7、a8中各取值的原始编码码字101、110、111组合,得到11101、11110、11111,分别作为第一组取值a6、a7、a8中的各取值的组合码字,如图2中(c)所示。这样,本发明实施例最终所得的最长编码后码字的长度为5,比传统编码对应的最长编码后码字的长度7减小了。本实施例中的数据压缩方法中形成的码表如下表1所示,该码表可至少包括:第一组取值中的各取值及其分别对应的组合码字;第二组取值中的各取值及其分别对应的编码后码字或补充后码字。表1编码后码字编码前取值码字长度10a1201a22001a330001a440000a5411101a6511110a7511111a85在上述获得前缀的方式中,当然也可以是将第二组取值a1、a2、a3、a4、a5中各取值的所得编码后码字中的最短编码后码字1在末尾补充1作为所述最短编码后码字对应的取值a1的补充后码字11,并且将所述最短编码后码字1在末尾补充0作为前缀10,将该前缀10与所获取的第一组取值a6、a7、a8中各取值的原始编码码字101、110、111组合,得到10101、10110、10111,分别作为第一组取值a6、a7、a8中的各取值的组合码字。在根据所得到的码表对输入比特流进行译码时,如果译码结果为所述前缀,则在输入比特流中从所述前缀往后取预设n个比特作为原始编码码字进行输出,其中n为所述原始编码码字的长度。原始编码码字长度n优选为大于2的自然数,n越大,本发明的数据压缩方法的优势更显著。在另一示例中,如图3所示,参数a在编码前的原始编码码字长度n为4比特(例如,该参数a以4比特进行量化编码),具有16个取值a1、a2、a3、a4、a5、a6、a7、a8、a9、a10、a11、a12、a13、a14、a15、a16,分别具有原始编码码字0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111,对应的出现概率为分别为1/2、1/4、1/8、1/16、1/32、1/64、1/128、1/256、1/512、1/1024、1/2048、1/4096、1/8192、1/16384、1/32768、1/32768。如图3中(a)所示,如果采用传统霍夫曼(huffman)编码,尽管所得编码的最短码字长度仅为1,即取值a1对应的编码后码字1,但是所得编码的最大码字长度达到了15比特,即取值a15对应的编码后码字000000000000001和取值a16对应的编码后码字000000000000000。在采用本发明实施例中的数据压缩方法的情况下,如图3中(b)和(c)所示,假如预定阈值为1/72,则通过上述步骤s102将取值a1、a2、a3、a4、a5、a6、a7、a8、a9、a10、a11、a12、a13、a14、a15、a16的概率与该预定阈值进行比较后将参数a的16个取值分为两组,即第一组取值a7、a8、a9、a10、a11、a12、a13、a14、a15、a16和第二组取值a1、a2、a3、a4、a5、a6。接着对第一组取值a7、a8、a9、a10、a11、a12、a13、a14、a15、a16进行预处理以获取第一组取值a7、a8、a9、a10、a11、a12、a13、a14、a15、a16中各取值的原始编码码字0110、0111、1000、1001、1010、1011、1100、1101、1110、1111。同时,如图3中(b)所示,对第二组取值a1、a2、a3、a4、a5、a6进行可变字长编码如霍夫曼编码,得到第二组取值a1、a2、a3、a4、a5、a6中各取值对应的编码后码字1、01、001、0001、00001、00000,此外,将所得编码后码字中的最短编码后码字1在末尾补充0作为所述最短编码后码字对应的取值a1的补充后码字10,并且将所述最短编码后码字1在末尾补充1作为前缀11,将该前缀11与所获取的第一组取值a7、a8、a9、a10、a11、a12、a13、a14、a15、a16中各取值的原始编码码字0110、0111、1000、1001、1010、1011、1100、1101、1110、1111组合,得到110110、110111、111000、111001、111010、111011、111100、111101、111110、111111,分别作为第一组取值中的各取值的组合码字,如图3中(c)所示。这样,本发明实施例最终所得的最长编码后码字的长度为6,比传统编码对应的最长编码后码字的长度15显著减小了。本实施例中的数据压缩方法中形成的码表如下表2所示,该码表可至少包括:第一组取值中的各取值及其分别对应的组合码字;第二组取值中的各取值及其分别对应的编码后码字或补充后码字。表2图4为根据本发明又一实施例的数据压缩方法的示例,其中(a)示出采用传统霍夫曼编码的示例,而(b)示出采用本发明实施例中的方法的示例。如图4所示的示例中,参数a在根据本发明编码前的原始编码码字长度n为3比特(例如,该参数a以3比特进行量化编码),具有8个取值a1、a2、a3、a4、a5、a6、a7、a8,分别具有原始编码码字000、001、010、011、100、101、110、111,对应的出现概率为分别为1/2、1/4、1/8、1/16、1/32、1/64、1/128、1/128。如图中(a)所示,如果采用传统霍夫曼编码,尽管所得编码的最短码字长度仅为1,即取值a1对应的编码后码字1,但是所得编码的最大码字长度达到了7比特,即取值a7对应的编码后码字0000001和a8对应的编码后码字0000000。在采用本发明实施例中的数据压缩方法的情况下,如图4中(b)所示,假如预定阈值为1/24,则通过上述步骤s102将取值a1、a2、a3、a4、a5、a6、a7、a8的概率1/2、1/4、1/8、1/16、1/32、1/64、1/128、1/128与该预定阈值进行比较后将参数a的8个取值分为两组,即第一组取值a5、a6、a7、a8和第二组取值a1、a2、a3、a4。接着对第一组取值a5、a6、a7、a8进行预处理以将其中各取值的出现概率重新设置为使得:第一组取值a5、a6、a7、a8中各取值的出现概率之和不大于第二组取值a1、a2、a3、a4中的次小值1/8,并且第一组取值能够形成平衡二叉树,这是为了避免对第一组取值重新编码时所得码字长度不够均匀而彼此差别太大。更加优选地,对第一组取值a1、a2、a3、a4进行的预处理可以包括:计算第一组取值a1、a2、a3、a4中各取值的出现概率的平均值,并且将第一组取值a1、a2、a3、a4中各取值的出现概率设置为彼此相等且小于或等于该平均值,这样,对第一组取值a1、a2、a3、a4编码后所得的码字长度能够更加均匀。接下来,对第二组取值a5、a6、a7、a8和出现概率被重新设置后的第一组取值a1、a2、a3、a4一起进行编码,例如进行可变字长编码,如图4中(b)所示。本实施例中的数据压缩方法中形成的码表如下表3所示,该码表可至少包括:第一组取值中的各取值及其分别对应的组合码字;第二组取值中的各取值及其分别对应的编码后码字或补充后码字。表3编码后码字编码前取值码字长度1a1101a22001a330001a44000011a56000010a66000001a76000000a86这样,本示例中最终所得的最长编码后码字的长度为6,比传统编码对应的最长编码后码字的长度7减小了。这里的可变字长编码可以为香农编码、费诺编码或者霍夫曼编码,或者其它编码方式。下面结合图5描述用于实现上述数据压缩方法的数据压缩装置。如图5所示,示出了根据本发明又一实施例的数据压缩装置500的示意图。该数据压缩装置500包括:获取单元501、比较单元502、预处理单元503和编码单元504,其中获取单元501与比较单元502连接,比较单元502与预处理单元503及编码单元504连接,预处理单元503与编码单元504连接。其中,获取单元501用于获取参数的多个取值,以及所述多个取值中每一者的出现概率;比较单元502用于将获取单元501获取的出现概率与预定阈值进行比较,并且将来自获取单元502的所述多个取值分为其出现概率小于预定阈值的第一组取值、以及其出现概率大于或等于所述预定阈值的第二组取值;预处理单元503对来自比较单元502的第一组取值进行预处理;以及编码单元504对来自比较单元502的第二组取值和经预处理单元503预处理的第一组取值进行编码。在这里,预定阈值可以根据实际应用情况而由本领域技术人员具体确定。一般来说,预定阈值越大,则第一组取值的数量会越多,对最大码字长度的降低效果越显著,但是可能对总体编码效率的影响会越大;相反,如果预定阈值越小,则第一组取值的数量会越少,对最大码字长度的降低效果会较小,但是可能对总体编码效率的影响会越小。此外,对第一组取值进行预处理然后进行编码的目的在于降低该组取值的编码后码字长度。在一具体示例中,预处理可以包括:获取第一组取值中各取值的原始编码码字。编码单元504进行的编码可以包括:对第二组取值进行可变字长编码,得到第二组取值中各取值对应的编码后码字,以及将可变字长编码所得的最短编码后码字在末尾补充0和1中的一者作为所述最短编码后码字对应的取值的补充后码字,并且将所述最短编码后码字在末尾补充0和1中的另一者作为前缀与所获取的所述第一组取值中各取值的原始编码码字组合分别作为所述第一组取值中的各取值的组合码字。此外,编码单元504还可以用于形成码表,该码表至少包括:所述第一组取值中的各取值及其分别对应的所述组合码字;所述第二组取值中的各取值及其分别对应的所述编码后码字或补充后码字。在另一具体示例中,预处理单元503对第一组取值进行的预处理包括:将第一组取值中各取值的出现概率设置为使得:第一组取值中各取值的出现概率之和不大于第二组取值中的次小值,并且第一组取值能够形成平衡二叉树。或者,预处理单元503还可以用于:计算第一组取值中各取值的出现概率的平均值,并且将第一组取值中各取值的出现概率设置为彼此相等且小于或等于该平均值。编码单元504还可以用于:对第二组取值和经预处理的第一组取值一起进行可变字长编码。可变字长编码为香农编码、费诺编码或者霍夫曼编码,或者其它编码方式。根据本发明的又一实施例,还提供了一种计算机可读存储介质。如图6所示,示出了根据本发明一实施例的计算机可读存储介质600的示意图,该计算机可读存储介质上存储有计算机指令,该计算机指令被处理器执行时实现如上所述的数据压缩方法。该计算机可读存储介质600可以采用便携式紧凑盘只读存储器(cd-rom)。然而,本发明的计算机可读存储介质600不限于此,在本文件中,计算机可读存储介质可以是任何包含或存储计算机指令的有形介质。利用以上方案,针对进行本发明的编码前概率最小的一部分码字进行预处理,从而达到降低最大编码后码字长度的效果。因为人工神经网络的参数中有一部分取值的出现概率是远小于其他部分的取值,因此针对这部分取值的处理对压缩效率影响不大,但却会显著降低译码的复杂度和实现代价,尤其是存储器空间的代价。附图中的流程图和框图,图示了按照本公开各种实施例的方法、装置和计算机可读存储介质的可能实现的体系架构、功能和操作。应当注意,流程图中的每个方框所表示的步骤未必按照标号所示的顺序进行,有时可以基本并行地执行,有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的硬件来实现,或者可以用硬件与计算机指令的组合来实现。描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。通过以上对实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页1 2 3 

技术特征:

1.一种数据压缩方法,其特征在于,包括:

获取参数的多个取值,以及所述多个取值中每一者的出现概率;

将所述出现概率与预定阈值进行比较,其中所述出现概率小于所述预定阈值的取值为第一组取值,而所述出现概率大于或等于所述预定阈值的取值为第二组取值;

对所述第一组取值进行预处理;以及

对所述第二组取值和经预处理的第一组取值进行编码。

2.如权利要求1所述的数据压缩方法,其特征在于,

对所述第一组取值进行预处理包括:获取所述第一组取值中各取值的原始编码码字。

3.如权利要求2所述的数据压缩方法,其特征在于,

对所述第二组取值和经预处理的第一组取值进行编码包括:

对所述第二组取值进行可变字长编码,得到所述第二组取值中各取值对应的编码后码字,以及

将所述可变字长编码所得的最短编码后码字在末尾补充0和1中的一者作为所述最短编码后码字对应的取值的补充后码字,并且将所述最短编码后码字在末尾补充0和1中的另一者作为前缀与所获取的所述第一组取值中各取值的原始编码码字组合分别作为所述第一组取值中的各取值的组合码字。

4.如权利要求3所述的数据压缩方法,其特征在于,还包括:

形成码表,所述码表至少包括:所述第一组取值中的各取值及其分别对应的所述组合码字;所述第二组取值中的各取值及其分别对应的所述编码后码字或补充后码字。

5.如权利要求4所述的数据压缩方法,其特征在于,还包括:

在根据所述码表对输入比特流进行译码时,如果译码结果为所述前缀,则在所述输入比特流中从所述前缀往后取预设n个比特作为所述原始编码码字进行输出。

6.如权利要求1所述的数据压缩方法,其特征在于,对所述第一组取值进行预处理包括:

将所述第一组取值中各取值的出现概率设置为使得:所述第一组取值中各取值的出现概率之和不大于所述第二组取值中的次小值,并且所述第一组取值能够形成平衡二叉树。

7.如权利要求6所述的数据压缩方法,其特征在于:

计算所述第一组取值中各取值的出现概率的平均值,并且将所述第一组取值中各取值的出现概率设置为彼此相等且小于或等于所述平均值。

8.如权利要求6或7所述的数据压缩方法,其特征在于,对所述第二组取值和经预处理的第一组取值进行编码包括:

对所述第二组取值和经预处理的第一组取值一起进行可变字长编码。

9.如权利要求3或8所述的数据压缩方法,其特征在于,所述可变字长编码为香农编码、费诺编码或者霍夫曼编码。

10.一种数据压缩装置,包括获取单元、比较单元、预处理单元和编码单元,其中获取单元与比较单元连接,比较单元与预处理单元及编码单元连接,预处理单元与编码单元连接,其特征在于,

所述获取单元用于获取参数的多个取值,以及所述多个取值中每一者的出现概率;

所述比较单元用于将所述获取单元获取的出现概率与预定阈值进行比较,并且将来自所述获取单元的所述多个取值分为其出现概率小于所述预定阈值的第一组取值、以及其出现概率大于或等于所述预定阈值的第二组取值;

所述预处理单元对来自所述比较单元的所述第一组取值进行预处理;以及

所述编码单元对来自所述比较单元的所述第二组取值和经所述预处理单元预处理的第一组取值进行编码。

11.如权利要求10所述的数据压缩装置,其特征在于,

所述预处理包括:获取所述第一组取值中各取值的原始编码码字。

12.如权利要求11所述的数据压缩装置,其特征在于,

所述编码单元进行的编码包括:

对所述第二组取值进行可变字长编码,得到所述第二组取值中各取值对应的编码后码字,以及

将所述可变字长编码所得的最短编码后码字在末尾补充0和1中的一者作为所述最短编码后码字对应的取值的补充后码字,并且将所述最短编码后码字在末尾补充0和1中的另一者作为前缀与所获取的所述第一组取值中各取值的原始编码码字组合分别作为所述第一组取值中的各取值的组合码字。

13.如权利要求12所述的数据压缩装置,其特征在于:

所述编码单元还用于形成码表,所述码表至少包括:所述第一组取值中的各取值及其分别对应的所述组合码字;所述第二组取值中的各取值及其分别对应的所述编码后码字或补充后码字。

14.如权利要求10所述的数据压缩装置,其特征在于,所述预处理单元对所述第一组取值进行预处理包括:

将所述第一组取值中各取值的出现概率设置为使得:所述第一组取值中各取值的出现概率之和不大于所述第二组取值中的次小值,并且所述第一组取值能够形成平衡二叉树。

15.如权利要求14所述的数据压缩装置,其特征在于,所述预处理单元还用于:

计算所述第一组取值中各取值的出现概率的平均值,并且将所述第一组取值中各取值的出现概率设置为彼此相等且小于或等于所述平均值。

16.如权利要求14或15所述的数据压缩装置,其特征在于,所述编码单元用于:对所述第二组取值和经预处理的第一组取值一起进行可变字长编码。

17.如权利要12或16所述的数据压缩装置,其特征在于,所述可变字长编码为香农编码、费诺编码或者霍夫曼编码。

18.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1-9中任一项所述的方法。

技术总结

本发明提供了一种数据压缩方法,其包括:获取参数的多个取值,以及所述多个取值中每一者的出现概率;将所述出现概率与预定阈值进行比较,其中所述出现概率小于所述预定阈值的取值为第一组取值,而所述出现概率大于或等于所述预定阈值的取值为第二组取值;对所述第一组取值进行预处理;以及对所述第二组取值和经预处理的第一组取值进行编码。利用该数据压缩方法,能够有利地降低最大码字长度,从而降低码表对储存空间的需求。本发明还提供了相应的数据压缩装置以及计算机可读存储介质。

技术研发人员:徐兵;张楠赓

受保护的技术使用者:北京嘉楠捷思信息技术有限公司

技术研发日:.07.19

技术公布日:.01.31

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。