CN114723035A - 神经网络模型参数的压缩方法、装置、设备及存储介质 - Google Patents

神经网络模型参数的压缩方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114723035A
CN114723035A CN202011525006.2A CN202011525006A CN114723035A CN 114723035 A CN114723035 A CN 114723035A CN 202011525006 A CN202011525006 A CN 202011525006A CN 114723035 A CN114723035 A CN 114723035A
Authority
CN
China
Prior art keywords
parameter
compression
zero
parameters
model
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
Application number
CN202011525006.2A
Other languages
English (en)
Inventor
聂玉庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gree Electric Appliances Inc of Zhuhai
Original Assignee
Gree Electric Appliances Inc of Zhuhai
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Gree Electric Appliances Inc of Zhuhai filed Critical Gree Electric Appliances Inc of Zhuhai
Priority to CN202011525006.2A priority Critical patent/CN114723035A/zh
Publication of CN114723035A publication Critical patent/CN114723035A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning 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)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (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)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请提供一种神经网络模型参数的压缩方法、装置、设备及存储介质,涉及计算机技术领域,用于解决卷积系数对存储空间以及访问带宽的需求大的问题。该方法包括:根据目标神经网络模型的模型参数划分多个参数集合;针对每一参数集合,可根据每一参数集合中非零参数的数值以及参数值为零的参数个数,得到每一参数集合对应的第一压缩参数;且可根据非零参数得到每一参数集合对应的第二压缩参数以及第三压缩参数;进而可根据第一压缩参数、第二压缩参数以及第三压缩参数对每一参数集合进行编码,得到每一参数集合对应的压缩表示;进而根据各个参数集合的压缩表示得到目标神经网络模型的模型参数的压缩包。

Description

神经网络模型参数的压缩方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,提供一种神经网络模型参数的压缩方法、装置、设备及存储介质。
背景技术
随着科学技术的进步,人工智能高速发展,为了进一步提高人工智能的识别精度,人工智能算法向更深的网络层次不断发展,进而使得网络层次以及每层网络特征图像的不断增多,导致神经网络的卷积系数暴增。从最开始乐春网络(Lecun Network,LeNet)的几兆(MByte,MB)的卷积系数量,发展到现在的视觉几何组(Visual Geometry Group,VGG)网络、谷歌乐春网络(Google Lecun Network,GoogLeNet)、残差网络(Residual Network,ResNet)以及移动网络(Mobile Network,MobileNet)等网络框架的几百MB的卷积系数量,可以看出卷积系数对存储空间以及访问带宽的需求日益增加,进而使得人工智能系统的硬件成本也日益增加。
因此,如何降低卷积系数对存储空间以及访问带宽的需求是一个亟待解决的问题。
发明内容
本申请实施例提供一种神经网络模型参数的压缩方法、装置、设备及存储介质,用于解决卷积系数对存储空间以及访问带宽的需求大的问题。
一方面,提供一种神经网络模型参数的压缩方法,所述方法包括:
根据目标神经网络模型的模型参数划分多个参数集合;其中,一个参数集合包括一个非零参数和位于所述非零参数之前且连续的参数值为零的参数;
针对每一参数集合,根据所述每一参数集合中非零参数的数值以及参数值为零的参数个数,得到所述每一参数集合对应的第一压缩参数;其中,所述第一压缩参数用于指示所述非零参数的数值范围以及参数值为零的参数个数;以及,
根据所述非零参数得到所述每一参数集合对应的第二压缩参数以及第三压缩参数;其中,根据所述第二压缩参数与所述第一压缩参数指示的所述非零参数的数值范围能够得到所述非零参数的数值,所述第三压缩参数用于指示所述非零系数为正数或者负数;
根据所述第一压缩参数、所述第二压缩参数以及所述第三压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示;
根据各个参数集合的压缩表示得到所述目标神经网络模型的模型参数的压缩包。
一方面,提供一种神经网络模型参数的压缩装置,所述装置包括:
模型参数划分单元,用于根据目标神经网络模型的模型参数划分多个参数集合;其中,一个参数集合包括一个非零参数和位于所述非零参数之前且连续的参数值为零的参数;
获取单元,用于针对每一参数集合,根据所述每一参数集合中非零参数的数值以及参数值为零的参数个数,得到所述每一参数集合对应的第一压缩参数;其中,所述第一压缩参数用于指示所述非零参数的数值范围以及参数值为零的参数个数;以及,
所述获取单元,还用于根据所述非零参数得到所述每一参数集合对应的第二压缩参数以及第三压缩参数;其中,根据所述第二压缩参数与所述第一压缩参数指示的所述非零参数的数值范围能够得到所述非零参数的数值,所述第三压缩参数用于指示所述非零系数为正数或者负数;
编码单元,用于根据所述第一压缩参数、所述第二压缩参数以及所述第三压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示;
所述获取单元,还用于根据各个参数集合的压缩表示得到所述目标神经网络模型的模型参数的压缩包。
可选的,所述模型参数划分单元,还用于:
根据设定的分组条件,将所述目标神经网络模型的模型参数进行分组,得到多个模型参数组;
从每一模型参数组中确定至少一个参数集合,以得到所述多个参数集合。
可选的,所述模型参数划分单元,还用于:
根据所述目标神经网络模型的卷积核的尺寸,将所述目标神经网络模型的模型参数进行分组,得到多个模型参数组;或者,
根据所述目标神经网络模型的卷积核组的尺寸,将所述目标神经网络模型的模型参数进行分组,得到多个模型参数组;其中,所述卷积核组由所述目标神经网络模型的多个卷积核组成;或者,
根据设定的每个模型参数组包括的参数数量,将所述目标神经网络模型的模型参数进行分组,得到多个模型参数组。
可选的,所述获取单元,具体用于:
根据所述非零参数的数值确定所述非零参数的等级,所述等级用于表征存储所述非零参数所需的比特数;
根据所述等级以及参数值为零的参数个数,得到所述每一参数集合对应的第一压缩参数。
可选的,所述获取单元,具体用于:
根据所述非零参数的数值以及所述等级确定所述每一参数集合对应的第二压缩参数。
可选的,所述获取单元,还用于:
获得所述最后一个参数集合的第四压缩参数,所述第四压缩参数为所述目标神经网络模型的模型参数的结束标志;
则根据所述第一压缩参数、第二压缩参数以及第三压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示,包括:
根据所述第一压缩参数、所述第二压缩参数、所述第三压缩参数以及所述第四压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示。
可选的,所述编码单元,还用于:
获取各个所述第一压缩参数以及所述第四压缩参数的取值出现的次数在所有取值出现的总次数中的占比;
根据各个取值对应占比的大小,将所述取值进行排列得到由所述取值作为节点构成的队列;
根据所述队列进行二叉树状图的构建,并根据所述二叉树状图中各个所述取值各自对应的末端节点到达根节点的路径,分别得到各个所述取值对应的码字;其中,每一次构建过程包括如下步骤:
根据所述队列中对应占比最小的两个节点构造树状分支,其中,所述树状分支中的父节点的占比为所述对应占比最小的两个节点的占比和,所述树状分支的子节点为所述对应占比最小的两个节点;
根据各个取值对应占比的大小,将所述父节点与除所述对应占比最小的两个节点之外的其他节点进行排列得到新的队列;
在所述新的队列的节点数为1时,得到所述二叉树状图;其中,所述树状图中的末端节点为各个所述取值;或者,
在所述新的队列的节点数不为1时,进入下一次构建过程。
可选的,所述获取单元,具体用于:
获取所述第一压缩参数的取值对应的第一码字,以及所述第四压缩参数的取值对应的第二码字;并,
对所述第二压缩参数的取值进行二进制编码,得到对应的所述第二压缩参数的第一二进制值,以及对所述第三压缩参数的取值进行二进制编码,得到所述第三压缩参数的第二二进制值;
将所述第一码字、第二码字、第一二进制值和第二二进制值按照设定的组合方式进行组合,得到所述每一参数集合对应的压缩表示。
一方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方面所述方法的步骤。
一方面,提供一种计算机存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述方面所述方法的步骤。
本申请实施例中,根据目标神经网络模型的模型参数划分多个参数集合;针对每一参数集合,可根据每一参数集合中非零参数的数值以及参数值为零的参数个数,得到每一参数集合对应的第一压缩参数;且可根据非零参数得到每一参数集合对应的第二压缩参数以及第三压缩参数;进而可根据第一压缩参数、第二压缩参数以及第三压缩参数对每一参数集合进行编码,得到每一参数集合对应的压缩表示;进而根据各个参数集合的压缩表示得到目标神经网络模型的模型参数的压缩包。因此,在本申请实施例中,针对神经网络模型的模型参数分布情况,采用游程编码的方式对模型参数进行处理,进而获取模型参数中非零参数的绝对值、符号位以及等级,并对该非零参数之前连续参数值为零的参数个数进行统计,进而将非零参数的等级以及参数值为零的参数个数进行组合获得哈夫曼编码符号,并将根据非零参数的数值与对应等级获得的差值作为该非零参数的第二压缩参数,进而对上述获得的哈夫曼编码符号、非零参数符号位以及第二压缩参数进行哈夫曼编码,以获取模型参数对应的压缩包,进而减少模型参数对存储空间以及访问带宽的需求,使得人工智能系统的硬件成本得到降低。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的压缩方法的流程示意图;
图2为本申请实施例提供的哈夫曼映射关系获取流程示意图;
图3为本申请实施例提供的哈夫曼编码过程的示意图;
图4为本申请实施例提供的神经网络模型参数的压缩装置的示意图;
图5为本申请实施例提供的计算机设备的一种示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
由于人工智能高速发展,为了提高人工智能的识别精度,人工智能算法向更深的网络层次不断发展,进而使得网络层次以及每层网络特征图像的不断增多,导致神经网络的卷积系数暴增,从开始几MB发展到现在的几百MB,使得神经网络的卷积系数对存储空间以及访问带宽的需求日益增加,进而使得人工智能系统的硬件成本也日益增加。
基于此,本申请实施例提供一种神经网络模型参数的压缩方法,在该方法中,根据目标神经网络模型的模型参数划分多个参数集合;针对每一参数集合,可根据每一参数集合中非零参数的数值以及参数值为零的参数个数,得到每一参数集合对应的第一压缩参数;且可根据非零参数得到每一参数集合对应的第二压缩参数以及第三压缩参数;进而可根据第一压缩参数、第二压缩参数以及第三压缩参数对每一参数集合进行编码,得到每一参数集合对应的压缩表示;进而根据各个参数集合的压缩表示得到目标神经网络模型的模型参数的压缩包。因此,在本申请实施例中,针对神经网络模型的模型参数分布情况,采用游程编码的方式对模型参数进行处理,进而获取模型参数中非零参数的绝对值、符号位以及等级,并对该非零参数之前连续参数值为零的参数个数进行统计,进而将非零参数的等级以及参数值为零的参数个数进行组合获得哈夫曼编码符号,并将根据非零参数的数值与对应等级获得的差值作为该非零参数的第二压缩参数,进而对上述获得的哈夫曼编码符号、非零参数符号位以及第二压缩参数进行哈夫曼编码,以获取模型参数对应的压缩包,进而减少模型参数对存储空间以及访问带宽的需求,使得人工智能系统的硬件成本得到降低。
如图1所示,为本申请实施例提供的压缩方法的流程示意图,该方法的流程介绍如下。
步骤101:根据目标神经网络模型的模型参数划分多个参数集合。
在本申请实施例中,一个参数集合可以包括一个非零参数和位于该非零参数之前且连续的参数值为零的参数,如{0,-5}。
在本申请实施例中,模型参数即为目标神经网络模型的卷积系数,如目标神经网络模型的卷积参数矩阵为
Figure BDA0002850509440000071
则模型参数为{1,0,0,0,3,0,-5,0,2},其中的每一个数值为一个参数。
为了方便后续进行处理,在划分数据集合之前,可以根据设定的分组条件将目标神经网络模型的模型参数进行分组,以得到多个模型参数组,进而可以针对每个模型参数组分别进行处理。针对每一模型参数组,从该模型参数组中确定出至少一个参数集合,以得到目标神经网络模型的模型参数对应的多个参数集合。
具体的,可以根据目标神经网络模型的卷积核的尺寸,将目标神经网络模型的模型参数进行分组,以得到多个模型参数组。如目标神经网络模型存在100个模型参数,该目标神经网络模型为卷积核尺寸为5×5,则可以将该目标神经网络模型的模型参数按照每组5×5个模型参数进行分组,即可分为5个模型参数组。若该目标神经网络模型为卷积核尺寸为3×3,则可以将模型参数按照每组3×3个模型参数进行分组,可分为11个含有9个模型参数的模型参数组,以及1个含有1个参数的组,可以将只含有1个含有1个参数的组的后8位都补上0,以构成9位的模型参数组。
或者,可以根据目标神经网络模型的卷积核组的尺寸,将目标神经网络模型的模型参数进行分组,以得到多个模型参数组,且该卷积核组由目标神经网络模型的多个卷积核组成。如目标神经网络模型为卷积核尺寸为5×5时,可以将该目标神经网络模型的模型参数按照每组k×5×5个模型参数进行分组,其中,k为正整数。示例性的,在将模型参数按照每组2×5×5个模型参数进行分组,可将模型参数分为2个模型参数组,或者将模型参数按照每组3×5×5个模型参数进行分组,可得到1个含有75个模型参数的模型参数组,以及1个含有25个模型参数的模型参数组,可以将含有25个模型参数的模型参数组的后50位都补上0,以构成75位的模型参数组。
或者,可以根据设定的每个模型参数组包括的参数数量,将目标神经网络模型的模型参数进行分组,以得到多个模型参数组。如可以按照2M个模型参数进行分组,其中,M为正整数。示例性的,将模型参数按照每组16或者32或者64个模型参数进行分组。
进而,在对模型参数进行分组之后,就可以根据分组后的模型参数组划分出至少一个参数集合。如一个模型参数组为{1,0,0,0,3,0,-5,0,2},则可以划分出4个参数集合,分别为{1}、{0,0,0,3}、{0,-5}以及{0,2}。
步骤102:针对每一参数集合,根据每一参数集合中非零参数的数值以及参数值为零的参数个数,得到每一参数集合对应的第一压缩参数。
在本申请实施例中,第一压缩参数可以用于指示非零参数的数值范围以及参数值为零的参数个数。
具体的,针对每一参数集合,可以将非零参数的数值与参数值为零的参数个数进行组合,得到第一压缩参数,例如参数集合{0,-5}中,非零参数数值为5,非零参数的个数为1,则可以构成的第一压缩参数为{5,1}。
具体的,由于非零参数的数值可能较大,需要占据较大存储空间,且模型参数中包含大量的取值为0的参数,因而还可以基于游程编码的思想,对每个参数集合进行统计。具体而言,针对每一参数集合,可以根据该参数集合中非零参数的数值确定出非零参数的等级,该等级用于表征存储非零参数所需的比特数。其中,非零参数的数值w_abs与等级w_level之间满足如下关系:
2w_level-1≤w_abs<2w_level
例如,当一个参数集合为{0,-5},该参数集合的非零参数为-5,则可获取到该非零参数为-5的数值w_abs为5,然后,根据上述关系可得到w_abs为5的数值的等级,即该等级w_level为3。
此外,因参数集合{0,-5}中非零参数-5之前连续的参数值为零的参数个数为1,则参数个数的表征参数zero_run=1。
本申请实施例中,第一压缩参数可以由上述等级与参数个数的表征参数组成构成,即第一压缩参数为{w_level,zero_run}。那么将该参数集合对应的等级w_level与zero_run进行组合,可以得到参数集合{0,-5}对应的第一压缩参数为{3,1}。或者,第一压缩参数也可以为{zero_run,w_level},即参数集合{0,-5}对应的第一压缩参数为{1,3}。
步骤103:根据非零参数得到每一参数集合对应的第二压缩参数以及第三压缩参数。
在申请实施例中,可以根据第二压缩参数与第一压缩参数指示的非零参数的数值范围能够得到非零参数的数值,且第三压缩参数可以用于指示非零系数为正数或者负数。
具体的,由于第一压缩参数{w_level,zero_run}只能表征出相应参数集合中在非零参数之前存在多少个连续为0的参数,以及非零参数对应的数值的取值范围。但我们真实想要的是对非零参数进行编码,所以还需要在取值范围的基础上,进一步获取到该非零参数对应的数值才行。
在本申请实施例中,可以根据非零参数的数值w_abs以及等级w_level确定每一参数集合对应的第二压缩参数w_tail,即:
w_tail=w_abs-2w_level
即可根据第二压缩参数w_tail以及等级w_level获得非零参数的数值w_abs。此外,根据非零参数还可以获取到该非零参数对应的第三压缩参数,即该非零参数对应的符号位,其中,在计算机中,通常采用8位的二进制补码的形式来进行字符串符号表示,因此,可以根据二进制补码的最高位是否为1来判定非零参数的正负。
示例性的,当非零参数为-5时,根据w_tail=w_abs-2w_level可得第二压缩参数w_tail为5-23=-3,即在解压缩时,可通过-3以及等级3解压得到非零参数的数值为5,且非零参数为-5时,其二进制补码为1111 1011,即最高位为1,所以可以判定非零参数为-5为负数,那么可得到其符号位的取值表征非零参数为负数。
为了表征模型参数的结束,并可在编码的过程中能够确定出在编码的停止位置,在本申请实施例中,针对目标神经网络模型的多个参数集合中的最后一个参数集合,可以在最后一个参数集合对应的第一压缩参数之后插入目标神经网络模型的模型参数的结束标志,即第四压缩参数,例如第四压缩参数可以用{0,0}进行表示。
步骤104:根据第一压缩参数、第二压缩参数以及第三压缩参数对每一参数集合进行编码,得到每一参数集合对应的压缩表示。
在本申请实施例中,在获取了每一参数集合对应的第一压缩参数、第二压缩参数以及第三压缩参数之后,可根据每一参数集合对应的第一压缩参数、第二压缩参数以及第三压缩参数进行编码,以获取每一参数集合对应的压缩表示。
具体的,如上所述可见,由于第一压缩参数和第四压缩参数依然需要占据较大的空间进行存储,因而为了进一步进行压缩,可以对第一压缩参数和第四压缩参数继续进行编码,在进行编码时可以采用任何可能的编码进行,例如可以采用哈夫曼编码方法进行,下面以哈夫曼编码方法为例,对各个第一压缩参数以及第四压缩参数进行编码的过程进行介绍。
在进行编码时,需要首先获取第一压缩参数以及第四压缩参数的取值与哈夫曼码字之间的映射关系,如图2所示,为本申请实施例提供的取值与哈夫曼码字之间的映射关系获取流程示意图。
步骤1041:获取各个第一压缩参数以及第四压缩参数的取值出现的次数在所有取值出现的总次数中的占比。
当采用哈夫曼编码方法时,第一压缩参数和第四压缩参数作为待编码的哈夫曼编码符号,统计每个参数集合的第一压缩参数在所有第一压缩参数和第四压缩参数中出现的占比,以及最后一个参数集合由于对应第一压缩参数和第四压缩参数,因而可分别得到第一压缩参数和第四压缩参数在所有第一压缩参数和第四压缩参数中出现的占比。
示例性的,假设目标神经网络模型的模型参数划分出9个参数集合,该参数集合分别为{1}、{0,0,0,3}、{0,-5}、{0,0,0,3}、{0,-5}、{0,2}、{0,-5}、{0,2}以及{0,-5},则对应生成的第一压缩参数为{1,0}、{2,3}、{3,1}、{2,3}、{3,1}、{2,1}、{3,1}、{2,1}以及{3,1},再加上一个结束标志第四压缩参数{0,0},该目标神经网络模型共有5种哈夫曼编码符号,对这5种哈夫曼编码符号出现的次数进行统计,并按照出现次数的大小进行排序,如表1所示。
哈夫曼编码符号 {0,0} {1,0} {2,3} {2,1} {3,1}
出现的次数 1 1 2 2 4
出现系数的占比 0.1 0.1 0.2 0.2 0.4
表1
步骤1042:根据各个取值对应占比的大小,将取值进行排列得到由取值作为节点构成的队列。
如图3所示,为本申请实施例提供的哈夫曼编码过程的示意图,将哈夫曼编码符号按照出现的占比排成一个队列,如图3中(a)所示,为按照从左到右占比依次增大的方式进行排列,当然,在实际应用中,也可以按照其他可能的排列方式进行排列,本申请实施例对此不做限制。
步骤1043:根据队列中对应占比最小的两个节点构造树状分支。
其中,树状分支中的父节点的占比为对应占比最小的两个节点的占比和,树状分支的子节点为对应占比最小的两个节点。
如图3中(b)所示,编码的过程即是将占比队列转成二叉树的过程。当按照从左到右占比依次增大的方式进行排列时,则取占比队列的最左侧的占比值最小的两个哈夫曼编码符号{0,0}和{1,0}构造树状分支,进而将{0,0}和{1,0}占比相加获得其父节点的占比和,即0.1+0.1=0.2。
步骤1044:根据各个取值对应占比的大小,将父节点与除对应占比最小的两个节点之外的其他节点进行排列得到新的队列。
如图3中(b)所示,将新形成的占比为0.2的父节点与{2,3}、{2,1}以及{3,1}重新进行排列得到新的队列。
步骤1045:判断队列的节点数是否为1。
当步骤1045的判断结果为否,则跳转至步骤1043。
如图3所示,得到图3中(b)所示的占比队列后,节点数量为4,则继续执行步骤1043至步骤1045的过程,即将占比队列中最左侧的占比值最小的两个哈夫曼编码符号的占比相加,并将相加后的占比值与未进行计算的占比按照占比大小重新进行排序,如图3中(c)所示,形成了一个新的占比0.2+0.2=0.4。
如此进行循环,直到队列中最后只剩下一个节点,结束循环,则可获得如图(e)所示的二叉树。
步骤1046:当步骤1045的判断结果为是时,得到二叉树状图。
二叉树状图中的末端节点为第一压缩参数或者第四压缩参数。
步骤1047:根据二叉树状图中各个取值各自对应的末端节点到达根节点的路径,分别得到各个取值对应的码字。
如图3中(e)所示,令二叉树中每个二叉分支中的左支编码为0,右支编码为1,沿着每一路径,则可获得如表2所示的哈夫曼编码表。当然,在实际使用时,则可以令二叉树中每个二叉分支中的左支编码为1,右支编码为0。
哈夫曼编码符号 {0,0} {1,0} {2,3} {2,1} {3,1}
哈夫曼编码码字 0011 1011 111 01 0
表2
基于上述哈夫曼编码表可知,取值为{1,0}、{2,3}、{2,1}、{3,1}以及{0,0}分别对应的码字为1011、111、01、0和0011。
在本申请实施例中,在获得了上面的哈夫曼编码表之后,则可以根据各个第一压缩参数的取值,查询上述哈夫曼编码表,以得到相应的码字。此外,可以对第二压缩参数以及第三压缩参数分别进行二进制编码,以得到对应的第二压缩参数的第一二进制值以及第三压缩参数的第二二进制值。进而,就可以根据第一码字、第二码字、第一二进制值和第二二进制值按照设定的组合方式进行组合,以得到每一参数集合对应的压缩表示。
具体的,第二压缩参数w_tail可以用wlevel-1个比特表示,所以直接把wlevel-1个比特的二进制数据放入编码数据中。非零参数对应的第三压缩参数,即符号位w_sign可以用1比特表示,所以直接把1个比特的二进制数据放入编码数据中。
则参数集合{0,-5}的第一压缩参数为{3,1},其对应的码字为0,第二压缩参数为-3,其对应的二进制值为11,第三压缩参数为1,其对应的二进制值为1,则参数集合{0,-5}可表示如下:
1(第三压缩参数的二进制数值)0(第一压缩参数的压缩表示)11(第二压缩参数的二进制数值)。
在实际使用时,也可以按照其他的顺序排列第一压缩参数、第二压缩参数和第三压缩参数对应的码字。
步骤105:根据各个参数集合的压缩表示得到目标神经网络模型的模型参数的压缩包。
按照各个参数集合对应于模型参数的位置,将各个参数集合按照相应的位置进行排列,以得到目标神经网络模型的模型参数的压缩包。
例如,参数集合{0,-5}的完整的码字可以表示为1011,同理,参数集合{0,2}的完整的码字可以表示为001,参数集合{0,0,0,3}的完整的码字可以表示为011111,参数集合{1}的完整的码字可以表示为01011。
本申请实施例中,在进行压缩的过程中,可以从模型参数的起始位置,依次对每个模型参数组进行上述的统计过程和编码过程,当所有模型参数组的统计过程和编码过程结束之后,则可以获得上述的压缩包。
对于原始字符串符号{1,0,0,0,3,0,-5,0,0,0,3,0,-5,0,2,0,-5,0,2,0,-5}来说,二进制补码表示为:0000 0001 0000 0000 0000 0000 0000 0000 0000 0011 00000000 1111 1011 0000 0000 0000 0000 0000 0000 0000 0011 0000 0000 1111 10110000 0000 0000 0010 0000 0000 1111 1011 0000 0000 0000 0010 0000 0000 11111011,而采用了采用哈夫曼编码方法进行编码后的码字表示为:0101 1011 1111 01101111 1101 1001 1011 0011 0110 011,共43个比特,即目标神经网络模型的模型参数的压缩包为43个比特,由此可见,经本申请实施例的方法进行压缩后,可大大减少存储所需的空间。
综上所述,本申请实施例中,针对神经网络模型的模型参数分布情况,采用游程编码的方式对模型参数进行处理,进而获取模型参数中非零参数的绝对值、符号位以及等级,并对该非零参数之前连续参数值为零的参数个数进行统计,进而将非零参数的等级以及参数值为零的参数个数进行组合获得哈夫曼编码符号,并将根据非零参数的数值与对应等级获得的差值作为该非零参数的第二压缩参数,进而对上述获得的哈夫曼编码符号、非零参数符号位以及第二压缩参数进行哈夫曼编码,以获取模型参数对应的压缩包,进而减少模型参数对存储空间以及访问带宽的需求,使得人工智能系统的硬件成本得到降低。
如图4所示,基于同一发明构思,本申请实施例提供一种神经网络模型参数的压缩装置,该装置40包括:
模型参数划分单元401,用于根据目标神经网络模型的模型参数划分多个参数集合;其中,一个参数集合包括一个非零参数和位于非零参数之前且连续的参数值为零的参数;
获取单元402,用于针对每一参数集合,根据每一参数集合中非零参数的数值以及参数值为零的参数个数,得到每一参数集合对应的第一压缩参数;其中,第一压缩参数用于指示非零参数的数值范围以及参数值为零的参数个数;以及,
获取单元402,还用于根据非零参数得到每一参数集合对应的第二压缩参数以及第三压缩参数;其中,根据第二压缩参数与第一压缩参数指示的非零参数的数值范围能够得到非零参数的数值,第三压缩参数用于指示非零系数为正数或者负数;
编码单元403,用于根据第一压缩参数、第二压缩参数以及第三压缩参数对每一参数集合进行编码,得到每一参数集合对应的压缩表示;
获取单元,还用于根据各个参数集合的压缩表示得到目标神经网络模型的模型参数的压缩包。
可选的,模型参数划分单元401,还用于:
根据设定的分组条件,将目标神经网络模型的模型参数进行分组,得到多个模型参数组;
从每一模型参数组中确定至少一个参数集合,以得到多个参数集合。
可选的,模型参数划分单元401,还用于:
根据目标神经网络模型的卷积核的尺寸,将目标神经网络模型的模型参数进行分组,得到多个模型参数组;或者,
根据目标神经网络模型的卷积核组的尺寸,将目标神经网络模型的模型参数进行分组,得到多个模型参数组;其中,卷积核组由目标神经网络模型的多个卷积核组成;或者,
根据设定的每个模型参数组包括的参数数量,将目标神经网络模型的模型参数进行分组,得到多个模型参数组。
可选的,获取单元402,具体用于:
根据非零参数的数值确定非零参数的等级,等级用于表征存储非零参数所需的比特数;
根据等级以及参数值为零的参数个数,得到每一参数集合对应的第一压缩参数。
可选的,获取单元402,具体用于:
根据非零参数的数值以及等级确定每一参数集合对应的第二压缩参数。
可选的,获取单元402,还用于:
获得最后一个参数集合的第四压缩参数,第四压缩参数为目标神经网络模型的模型参数的结束标志;
则根据第一压缩参数、第二压缩参数以及第三压缩参数对每一参数集合进行编码,得到每一参数集合对应的压缩表示,包括:
根据第一压缩参数、第二压缩参数、第三压缩参数以及第四压缩参数对每一参数集合进行编码,得到每一参数集合对应的压缩表示。
可选的,编码单元403,还用于:
获取各个第一压缩参数以及第四压缩参数的取值出现的次数在所有取值出现的总次数中的占比;
根据各个取值对应占比的大小,将取值进行排列得到由取值作为节点构成的队列;
根据队列进行二叉树状图的构建,并根据二叉树状图中各个取值各自对应的末端节点到达根节点的路径,分别得到各个取值对应的码字;其中,每一次构建过程包括如下步骤:
根据队列中对应占比最小的两个节点构造树状分支,其中,树状分支中的父节点的占比为对应占比最小的两个节点的占比和,树状分支的子节点为对应占比最小的两个节点;
根据各个取值对应占比的大小,将父节点与除对应占比最小的两个节点之外的其他节点进行排列得到新的队列;
在新的队列的节点数为1时,得到二叉树状图;其中,树状图中的末端节点为各个取值;或者,
在新的队列的节点数不为1时,进入下一次构建过程。
可选的,获取单元402,具体用于:
获取第一压缩参数的取值对应的第一码字,以及第四压缩参数的取值对应的第二码字;并,
对第二压缩参数的取值进行二进制编码,得到对应的第二压缩参数的第一二进制值,以及对第三压缩参数的取值进行二进制编码,得到第三压缩参数的第二二进制值;
将第一码字、第二码字、第一二进制值和第二二进制值按照设定的组合方式进行组合,得到每一参数集合对应的压缩表示。
该装置可以用于执行图1~图3所示的实施例中提到的方法,因此,对于该装置的各功能模块所能够实现的功能等可参考图1~图3所示的实施例的描述,不多赘述。
请参见图5,基于同一技术构思,本申请实施例还提供了一种计算机设备50,可以包括存储器501和处理器502。
所述存储器501,用于存储处理器502执行的计算机程序。存储器501可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。处理器502,可以是一个中央处理单元(central processing unit,CPU),或者为数字处理单元等等。本申请实施例中不限定上述存储器501和处理器502之间的具体连接介质。本申请实施例在图5中以存储器501和处理器502之间通过总线503连接,总线503在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器501可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器501也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器501是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器501可以是上述存储器的组合。
处理器502,用于调用所述存储器501中存储的计算机程序时执行如图1~图3所示的实施例中设备所执行的方法。
在一些可能的实施方式中,本申请提供的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的方法中的步骤,例如,所述计算机设备可以执行如图1~图3所示的方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (11)

1.一种神经网络模型参数的压缩方法,其特征在于,所述方法包括:
根据目标神经网络模型的模型参数划分多个参数集合;其中,一个参数集合包括一个非零参数和位于所述非零参数之前且连续的参数值为零的参数;
针对每一参数集合,根据所述每一参数集合中非零参数的数值以及参数值为零的参数个数,得到所述每一参数集合对应的第一压缩参数;其中,所述第一压缩参数用于指示所述非零参数的数值范围以及参数值为零的参数个数;以及,
根据所述非零参数得到所述每一参数集合对应的第二压缩参数以及第三压缩参数;其中,根据所述第二压缩参数与所述第一压缩参数指示的所述非零参数的数值范围能够得到所述非零参数的数值,所述第三压缩参数用于指示所述非零系数为正数或者负数;
根据所述第一压缩参数、所述第二压缩参数以及所述第三压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示;
根据各个参数集合的压缩表示得到所述目标神经网络模型的模型参数的压缩包。
2.如权利要求1所述的方法,其特征在于,根据目标神经网络模型的模型参数划分多个参数集合,包括:
根据设定的分组条件,将所述目标神经网络模型的模型参数进行分组,得到多个模型参数组;
从每一模型参数组中确定至少一个参数集合,以得到所述多个参数集合。
3.如权利要求2所述的方法,其特征在于,所述根据设定的分组条件,将所述目标神经网络模型的模型参数进行分组,得到多个模型参数组,包括:
根据所述目标神经网络模型的卷积核的尺寸,将所述目标神经网络模型的模型参数进行分组,得到多个模型参数组;或者,
根据所述目标神经网络模型的卷积核组的尺寸,将所述目标神经网络模型的模型参数进行分组,得到多个模型参数组;其中,所述卷积核组由所述目标神经网络模型的多个卷积核组成;或者,
根据设定的每个模型参数组包括的参数数量,将所述目标神经网络模型的模型参数进行分组,得到多个模型参数组。
4.如权利要求1所述的方法,其特征在于,针对每一参数集合,根据所述每一参数集合中非零参数的数值以及参数值为零的参数个数,得到所述每一参数集合对应的第一压缩参数,包括:
根据所述非零参数的数值确定所述非零参数的等级,所述等级用于表征存储所述非零参数所需的比特数;
根据所述等级以及参数值为零的参数个数,得到所述每一参数集合对应的第一压缩参数。
5.如权利要求4所述的方法,其特征在于,根据所述非零参数得到所述每一参数集合对应的第二压缩参数,包括:
根据所述非零参数的数值以及所述等级确定所述每一参数集合对应的第二压缩参数。
6.如权利要求1所述的方法,其特征在于,针对所述多个参数集合中最后一个参数集合,所述方法还包括:
获得所述最后一个参数集合的第四压缩参数,所述第四压缩参数为所述目标神经网络模型的模型参数的结束标志;
则根据所述第一压缩参数、第二压缩参数以及第三压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示,包括:
根据所述第一压缩参数、所述第二压缩参数、所述第三压缩参数以及所述第四压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示。
7.如权利要求6所述的方法,其特征在于,在根据所述第一压缩参数、所述第二压缩参数、所述第三压缩参数以及所述第四压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示之前,所述方法还包括:
获取各个所述第一压缩参数以及所述第四压缩参数的取值出现的次数在所有取值出现的总次数中的占比;
根据各个取值对应占比的大小,将所述取值进行排列得到由所述取值作为节点构成的队列;
根据所述队列进行二叉树状图的构建,并根据所述二叉树状图中各个所述取值各自对应的末端节点到达根节点的路径,分别得到各个所述取值对应的码字;其中,每一次构建过程包括如下步骤:
根据所述队列中对应占比最小的两个节点构造树状分支,其中,所述树状分支中的父节点的占比为所述对应占比最小的两个节点的占比和,所述树状分支的子节点为所述对应占比最小的两个节点;
根据各个取值对应占比的大小,将所述父节点与除所述对应占比最小的两个节点之外的其他节点进行排列得到新的队列;
在所述新的队列的节点数为1时,得到所述二叉树状图;其中,所述树状图中的末端节点为各个所述取值;或者,
在所述新的队列的节点数不为1时,进入下一次构建过程。
8.如权利要求7所述的方法,其特征在于,所述根据所述第一压缩参数、所述第二压缩参数、所述第三压缩参数以及所述第四压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示,包括:
获取所述第一压缩参数的取值对应的第一码字,以及所述第四压缩参数的取值对应的第二码字;并,
对所述第二压缩参数的取值进行二进制编码,得到对应的所述第二压缩参数的第一二进制值,以及对所述第三压缩参数的取值进行二进制编码,得到所述第三压缩参数的第二二进制值;
将所述第一码字、第二码字、第一二进制值和第二二进制值按照设定的组合方式进行组合,得到所述每一参数集合对应的压缩表示。
9.一种神经网络模型参数的压缩装置,其特征在于,所装置包括:
模型参数划分单元,用于根据目标神经网络模型的模型参数划分多个参数集合;其中,一个参数集合包括一个非零参数和位于所述非零参数之前且连续的参数值为零的参数;
获取单元,用于针对每一参数集合,根据所述每一参数集合中非零参数的数值以及参数值为零的参数个数,得到所述每一参数集合对应的第一压缩参数;其中,所述第一压缩参数用于指示所述非零参数的数值范围以及参数值为零的参数个数;以及,
所述获取单元,还用于根据所述非零参数得到所述每一参数集合对应的第二压缩参数以及第三压缩参数;其中,根据所述第二压缩参数与所述第一压缩参数指示的所述非零参数的数值范围能够得到所述非零参数的数值,所述第三压缩参数用于指示所述非零系数为正数或者负数;
编码单元,用于根据所述第一压缩参数、所述第二压缩参数以及所述第三压缩参数对所述每一参数集合进行编码,得到所述每一参数集合对应的压缩表示;
所述获取单元,还用于根据各个参数集合的压缩表示得到所述目标神经网络模型的模型参数的压缩包。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,
所述处理器执行所述计算机程序时实现权利要求1至8任一项所述方法的步骤。
11.一种计算机存储介质,其上存储有计算机程序指令,其特征在于,
该计算机程序指令被处理器执行时实现权利要求1至8任一项所述方法的步骤。
CN202011525006.2A 2020-12-22 2020-12-22 神经网络模型参数的压缩方法、装置、设备及存储介质 Pending CN114723035A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011525006.2A CN114723035A (zh) 2020-12-22 2020-12-22 神经网络模型参数的压缩方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011525006.2A CN114723035A (zh) 2020-12-22 2020-12-22 神经网络模型参数的压缩方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114723035A true CN114723035A (zh) 2022-07-08

Family

ID=82230145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011525006.2A Pending CN114723035A (zh) 2020-12-22 2020-12-22 神经网络模型参数的压缩方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114723035A (zh)

Similar Documents

Publication Publication Date Title
CN111699695B (zh) 用于对经编码数据集进行解码的方法、设备和存储介质
US10938413B2 (en) Processing core data compression and storage system
CN109409518B (zh) 神经网络模型处理方法、装置及终端
CN111093081B (zh) 一种图像无损压缩方法及系统
CN109859281B (zh) 一种稀疏神经网络的压缩编码方法
CN116303374B (zh) 基于sql数据库的多维度报表数据优化压缩方法
US11722148B2 (en) Systems and methods of data compression
US20220224947A1 (en) Coding method and related device
WO2019041918A1 (zh) 一种数据编码方法、装置以及存储介质
CN110545162B (zh) 基于码元可靠优势度节点子集划分准则的多元ldpc译码方法及装置
CN113111889A (zh) 用于边缘计算端的目标检测网络处理方法
CN110413580B (zh) 针对fpga配置码流的压缩方法、系统、装置
CN112332857B (zh) 一种用于ldpc码的循环移位网络系统及循环移位方法
Yeh et al. On the optimality of code options for a universal noiseless coder
CN111384972A (zh) 多进制ldpc解码算法的优化方法、装置及解码器
CN116505954B (zh) 一种霍夫曼编码方法、系统、装置及介质
CN114723035A (zh) 神经网络模型参数的压缩方法、装置、设备及存储介质
WO2021103013A1 (zh) 一种数据编码、数据解码方法、设备及存储介质
US11870467B2 (en) Data compression method and apparatus, and computer readable storage medium
US20220005229A1 (en) Point cloud attribute encoding method and device, and point cloud attribute decoding method and devcie
CN113297154B (zh) 一种网站日志压缩方法及装置
CN112101548A (zh) 数据压缩方法及装置、数据解压方法及装置、电子设备
CN111143641A (zh) 深度学习模型的训练方法、装置及电子设备
CN111224674B (zh) 多进制ldpc码的解码方法、装置及解码器
CN112800183A (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