压缩方法及压缩系统与流程

文档序号:22320366发布日期:2020-09-23 01:53阅读:115来源:国知局
压缩方法及压缩系统与流程

本发明涉及卷积神经网络技术领域,尤其涉及一种压缩方法及压缩系统。



背景技术:

深度神经网络算法被广泛应用于计算机视觉和语音识别等人工智能应用中,而卷积神经网络是深度神经网络算法中非常重要的一种算法,但由于卷积神经网络算法对访问存储器的带宽要求高,限制了卷积神经网络加速器的发展。

麻省理工学院(massachusettsinstituteoftechnology,mit)在的eyriess卷积神经网络加速器中提出了权重与中间特征数据通用的数据压缩方法rlc(run-lenthcompression,rlc),但该压缩方法只能动态压缩一维线性排布数据,无法适用于二维和三维排布特征数据的压缩,且压缩率与零值的排布有关,导致压缩率不稳定。

英伟达(nvidia)公司推出的英伟达深度学习加速器(nvidiadeeplearningaccelerator,nvdla)中,特征地址能够以二维和三维格式排布,但只能静态压缩权重,不能对大量中间特征数据进行压缩,压缩率较低,从而无法有效节省带宽,导致压缩损耗率高。

因此,有必要提供一种新型的压缩方法及压缩系统以解决现有技术中存在的上述问题。



技术实现要素:

本发明的目的在于提供一种压缩方法及压缩系统,以支持多维数据的压缩,并能够在提高压缩率的同时降低压缩损耗,并保证了压缩率的稳定性。

为实现上述目的,本发明的所述压缩方法,包括以下步骤:

s1:将未压缩数据从第一位到最后一位按分割字节阈值依次分割为m个连续的未压缩子数据,所述m为大于0的自然数;

s2:读取第一个所述未压缩子数据,然后对所述未压缩子数据中的零值进行去除处理,以得到压缩子数据、标志位数据和个数信息;

s3:根据个数信息阈值、标志位数据存储空间值和地址偏移量阈值计算地址偏移量;

s4:根据所述地址偏移量和地址阈值计算压缩子数据存储地址,并根据所述压缩子数据存储地址存储所述压缩子数据;

s5:根据所述地址阈值、所述地址偏移量和所述个数信息计算标志位数据存储地址,并根据所述标志位数据存储地址存储所述标志位数据;

s6:根据所述压缩信息地址阈值和偏移值计算压缩信息存储地址,并根据所述压缩信息地址存储压缩信息,其中所述压缩信息包括所述个数信息和所述地址偏移量。

本发明的有益效果在于:将未压缩数据按分割字节阈值依次分割为m个未压缩子数据,使得每个所述未压缩子数据具有独立的地址,使所述未压缩子数据间无需一维线性排布,能够从而支持多维数据的压缩;读取第一个所述未压缩子数据,然后对所述未压缩子数据中的零值进行去除处理,以得到压缩子数据、标志位数据和个数信息,所述标志位数据能使压缩受零值排布的影响变小,从提高了压缩率和压缩率的稳定性;通过所述地址偏移量和地址阈值计算压缩子数据存储地址,根据所述压缩信息地址存储压缩信息,其中所述压缩信息包括所述个数信息和所述地址偏移量,只储存了所述地址偏移量,而没有存储额外的地址信息,能有效降低压缩损耗率。

优选地,对第二个至第m个所述未压缩子数据分别依次执行所述步骤s2至所述步骤s6,以完成所述未压缩数据的压缩。其有益效果在于:依次完成m个所述未压缩子数据的压缩,从而完成所述未压缩数据的压缩。

进一步优选地,第n个所述未压缩子数据执行所述步骤s3时,根据第n个所述未压缩子数据的个数信息、标志位数据存储空间值和第n-1个所述未压缩子数据的地址偏移量计算第n个所述未压缩子数据的地址偏移量,所述n为大于1且小于等于m的自然数。

优选地,所述分割字节阈值为32字节的正整数倍。其有益效果在于:便于所述未压缩子数据的压缩处理。

优选地,所述未压缩子数据包括子数据点。

进一步优选地,所述子数据点为零值时,所述标志位数据中与所述子数据点对应的比特位的值为0。

进一步优选地,所述子数据点不为零值时,所述标志位数据中与所述子数据点对应的比特位的值为1。

进一步优选地,根据所述子数据点的位数和所述分割字节阈值计算所述标志位数据存储空间值。

进一步优选地,所述个数信息为所述标志位数据中值为1的比特位的个数。

优选地,根据所述步骤s5的执行次数和偏移计算阈值计算所述偏移值。其有益效果在于:通过执行次数得到的偏移值,能得到准确的所述压缩信息存储地址,避免所述压缩信息存储时地址产生冲突。

本发明还提供了一种压缩系统,所述压缩系统包括压缩模块和外存储模块,所述压缩模块包括分割单元、压缩单元、第一压缩计算单元、第二压缩计算单元、第三压缩计算单元、第四压缩计算单元和存储单元,所述分割单元用于从第一个位到最后一位按分割字节阈值分割未压缩数据,以得到未压缩子数据,所述压缩单元用于对所述未压缩子数据中的零值进行去除处理,以得到压缩子数据、标志位数据和个数信息,所述第一压缩计算单元用于根据个数信息阈值、标志位数据存储空间值和地址偏移量阈值计算地址偏移量,所述第二压缩计算单元用于根据所述地址偏移量和地址阈值计算压缩子数据存储地址,所述第三压缩计算单元用于根据所述地址阈值、所述地址偏移量和所述个数信息计算标志位数据存储地址,所述第四压缩计算单元用于根据所述压缩信息地址阈值和偏移值计算压缩信息存储地址,所述外存储模块用于根据所述压缩子数据存储地址存储压缩子数据、根据所述标志位数据存储地址存储标志位数据和根据所述压缩信息存储地址存储压缩信息,其中所述压缩信息包括所述个数信息和所述地址偏移量。

本发明所述压缩系统的有益效果在于:通过所述分割单元按分割字节阈值分割未压缩数据,以得到未压缩子数据,使得每个所述未压缩子数据具有独立的地址,使所述未压缩子数据间无需一维线性排布,从而支持任意维数数据的压缩;所述压缩单元读取第一个所述未压缩子数据,然后对所述未压缩子数据中的零值进行去除处理,以得到压缩子数据、标志位数据和个数信息,所述标志位数据能使压缩受零值的排布影响变小,从提高了压缩率和压缩率的稳定性;所述第二压缩计算单元通过所述地址偏移量和地址阈值计算压缩子数据存储地址,而且所述压缩信息中包括所述个数信息,能有效降低压缩损耗率。

附图说明

图1为本发明的压缩方法的流程图;

图2为本发明的未压缩子数据的前16字节数据的示意图;

图3为本发明一些实施例的压缩子数据的示意图;

图4为本发明一些实施例的标志位数据的示意图;

图5为本发明一些实施例的压缩信息的示意图;

图6为本发明的压缩系统的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。除非另外定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本文中使用的“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。

针对现有技术存在的问题,本发明的实施例提供了一种压缩方法,参照图1,包括以下步骤:

s1:将未压缩数据从第一位到最后一位按分割字节阈值依次分割为m个连续的未压缩子数据,所述m为大于0的自然数;

s2:读取第一个所述未压缩子数据,然后对所述未压缩子数据中的零值进行去除处理,以得到压缩子数据、标志位数据和个数信息;

s3:根据个数信息阈值、标志位数据存储空间值和地址偏移量阈值计算地址偏移量;

s4:根据所述地址偏移量和地址阈值计算压缩子数据存储地址,并根据所述压缩子数据存储地址存储所述压缩子数据;

s5:根据所述地址阈值、所述地址偏移量和所述个数信息计算标志位数据存储地址,并根据所述标志位数据存储地址存储所述标志位数据;

s6:根据所述压缩信息地址阈值和偏移值计算压缩信息存储地址,并根据所述压缩信息地址存储压缩信息,其中所述压缩信息包括所述个数信息和所述地址偏移量。

本发明的一些实施例中,所述未压缩子数据和所述压缩子数据均一维线性排布。

本发明的一些实施例中,对第二个至第m个所述未压缩子数据分别依次执行所述步骤s2至所述步骤s6,以完成所述未压缩数据的压缩。

本发明的一些实施例中,所述m个所述未压缩子数据完成压缩后,所述压缩信息形成链表,对所述链表中的所述压缩信息进行非线性排布以生成多维排布的压缩信息,在解压时,则可以通过所述链表访问所述多维排布的压缩信息,可以有效的简化压缩硬件的设计。

本发明的一些实施例中,第n个所述未压缩子数据执行所述步骤s3时,根据第n-1个所述未压缩子数据的个数信息、标志位数据存储空间值和第n-1个所述未压缩子数据的地址偏移量计算第n个所述未压缩子数据的地址偏移量,所述n为大于1且小于等于m的自然数。

本发明的一些实施例中,第n-1个所述未压缩子数据的个数信息加第n-1个所述未压缩子数据的地址偏移量等于第一值,所述第一值加所述标志位数据存储空间值等于第n个压缩子数据的地址偏移量。

本发明的一些实施例中,所述压缩子数据、所述标志位数据和所述压缩信息均储存于外部存储器,所述外部存储器为动态随机存取存储器(dynamicrandomaccessmemory,dram)。

本发明的一些实施例中,第一个所述压缩子数据的地址偏移量等于标志位数据存储空间值。

本发明的一些实施例中,所述分割字节阈值为32字节的正整数倍。

本发明的一些实施例中,所述未压缩子数据包括子数据点。

本发明的一些实施例中,所述子数据点为零值时,所述标志位数据中与所述子数据点对应的比特位的值为0。

本发明的一些实施例中,所述子数据点不为零值时,所述标志位数据中与所述子数据点对应的比特位的值为1。

本发明的一些实施例中,根据所述子数据点的位数和所述分割字节阈值计算所述标志位数据存储空间值。

本发明的一些实施例中,所述分割字节阈值除以所述子数据点的位数等于所述标志位数据存储空间值。

本发明的一些实施例中,所述个数信息为所述标志位数据中值为1的比特位的个数。

本发明的一些实施例中,所述地址阈值和所述地址偏移量进行加法运算得到所述压缩子数据存储地址。

本发明的一些实施例中,所述地址阈值和所述地址偏移量进行加法运算得到第二值,所述第二值和所述个数信息进行加法运算得到所述标志位数据存储地址。

本发明的一些实施例中,根据所述步骤s5的执行次数和偏移计算阈值计算所述偏移值。

本发明的一些实施例中,所述执行次数和所述偏移计算阈值进行乘法运算得到所述偏移值。

本发明的一些实施例中,所述偏移值和所述压缩信息地址阈值进行加法运算得到所述压缩信息存储地址。

图2为本发明的一些具体实施例中未压缩子数据的前16字节数据的示意图。参照图2,所述未压缩子数据20为16进制,以所述未压缩子数据20的前16字节数据为例,图2中显示的是所述未压缩子数据20的前16字节数据,所述未压缩子数据20包括8个子数据点,8个所述子数据点均为16位整型数据,即所述第一子数据点201为7eff,所述第二子数据点202为0000,所述第三子数据点203为a350,所述第四子数据点204为0000,所述第五子数据点205为0000,所述第六子数据点206为686d,所述第七子数据点207为1b76,所述第八子数据点208为0000。

本发明的一些实施例中,所述零值具体为0000。

图3为本发明的一些具体实施例中压缩子数据的示意图。参照图2和图3,所述压缩子数据30为16进制,所述未压缩子数据20去除零值后得到所述压缩子数据30,所述第二子数据点202、所述第四子数据点204、所述第五子数据点205和所述第八子数据点208均为0000,去除零值后,所述压缩子数据30具有所述第一子数据点201、所述第三子数据点203、所述第六子数据点206和所述第七子数据点207,则所述压缩子数据30为7effa350686d1b76。

图4为本发明的一些具体实施例中标志位数据的示意图。参照图2和图4,所述子数据点为零值时,所述标志位数据40中与所述子数据点对应的比特位的值为0,所述子数据点不为零值时,所述标志位数据40中与所述子数据点对应的比特位的值为1。具体的,所述标志位数据40为二进制,所述第一子数据点201为7eff,由于7eff不为零值,则所述标志位数据中的第一比特位的值为1,所述第二子数据点202为0000,由于0000为零值,则所述标志位数据中的第二比特位的值为0,所述第三子数据点203为a350,由于a350不为零值,则所述标志位数据中的第三比特位的值为1,所述第四子数据点204为0000,由于0000为零值,则所述标志位数据中的第四比特位的值为0,所述第五子数据点205为0000,由于0000为零值,则所述标志位数据中的第五比特位的值为0,所述第六子数据点206为686d,由于686d不为零值,则所述标志位数据中的第六比特位的值为1,所述第七子数据点207为1b76,由于1b76不为零值,则所述标志位数据中的第七比特位的值为1,所述第八子数据点208为0000,由于0000为零值,则所述标志位数据中的第八比特位的值为0,所述标志位数据40为10100110。

图5为本发明的一些具体实施例中压缩信息的示意图。参照图4和图5,所述压缩信息50包括所述个数信息501和所述地址偏移量502,所述压缩信息50为16进制,所述压缩信息50为32位,所述压缩信息50的高8位为所述个数信息501,所述压缩信息50的低24位为所述地址偏移量502,所述标志位数据40为10100110,10100110中1的个数为4,则所述个数信息501为04,所述地址偏移量502为001020,所述压缩信息50为04001020。

图6为本发明一些实施例中压缩系统的结构框图。参照图6,所述压缩系统60具有压缩模块601和外存储模块602,所述压缩模块具有分割单元6011、压缩单元6012、第一压缩计算单元6013、第二压缩计算单元6014、第三压缩计算单元6015、第四压缩计算单元6016,所述分割单元601用于从第一个位到最后一位按分割字节阈值分割未压缩数据,以得到未压缩子数据,所述压缩单元602用于对所述未压缩子数据中的零值进行去除处理,以得到压缩子数据、标志位数据和个数信息,所述第一压缩计算单元603用于根据个数信息阈值、标志位数据存储空间值和地址偏移量阈值计算地址偏移量,所述第二压缩计算单元604用于根据所述地址偏移量和地址阈值计算压缩子数据存储地址,所述第三压缩计算单元605用于根据所述地址阈值、所述地址偏移量和所述个数信息计算标志位数据存储地址,所述第四压缩计算单元606用于根据所述压缩信息地址阈值和偏移值计算压缩信息存储地址,所述外存储模块602用于根据所述压缩子数据存储地址存储压缩子数据、根据所述标志位数据存储地址存储标志位数据和根据所述压缩信息存储地址存储压缩信息,其中所述压缩信息包括所述个数信息和所述地址偏移量。

本发明的一些实施例中,所述压缩子数据进行逆运算还原为所述未压缩子数据,所述未压缩子数据按所述压缩子数据的排列方式进行排列,得到所述未压缩数据。

本发明的一些实施例中,理论压缩率的具体计算方法为:压缩前权重大小减压缩后权重大小,得到第一数据;所述第一数据乘以权重搬运次数,得到第二数据;压缩前特征数据大小减压缩后特征数据大小,得到第三数据;所述第三数据乘以特征数据搬运次数,得到第四数据;所述第二数据加所述第四数据,得到第五数据;所述压缩前权重大小乘以所述权重搬运次数,得到第六数据;所述压缩前特征数据大小乘以所述特征数据搬运次数,得到第七数据;所述第六数据加所述第七数据,得到第八数据;所述第五数据除以所述第八数据,得到理论压缩率。

本发明的一些实施例中,所述权重中被去除零值的数量即为所述第一数据,所述特征数据中被去除零值的数量即为第三数据。。

本发明的一些实施例中,压缩损耗率的具体计算方法为:权重压缩信息大小乘以所述权重搬运次数,得到第九数据;特征数据压缩信息大小乘以所述特征数据搬运次数,得到第十数据;所述第九数据加所述第十数据,得到第十一数据;所述压缩前权重大小乘以所述权重搬运次数,得到第十二数据;所述压缩前特征数据大小乘以所述特征数据搬运次数,得到第十三数据;所述第十二数据加所述第十三数据,得到第十四数据;所述第十一数据除以所述第十四数据,得到压缩损耗率。

本发明的一些实施例中,所述压缩方法应用于神经网络。

本发明的一些实施例中,运行一次所述神经网路,所述权重搬运次数为1,所述特征数据搬运次数为2。

本发明的一些实施例中,所述未压缩数据为特征数据,以cifar10网络为例,初始输入特征数据,所述特征数据中的特征数据点为16位整型数据,以数量代表所述理论压缩率的计算方法和所述压缩损耗率的计算方法中各值的大小,特征数据的数量为46160个,所述特征数据中零值的数量为35080个,权重的数量为292540个,所述权重中零值的数量为16646个,英伟达深度学习加速器(nvidiadeeplearningaccelerator,nvdla)中每32位对应一个含64个16位的特征数据点,所述nvdla中所述第一数据为166446,所述第三数据为0,所述压缩前权重大小为292540,所述压缩前特征数据大小为46160,所述权重压缩信息大小为27425.625,所述特征数据压缩信息大小为0,因此所述nvdla的理论压缩率为4.3%,压缩损率为7.09%,7.09%>4.3%,损耗过大,因此计算实际压缩率无意义。而本发明中所述第一数据为166446,所述第三数据为35080,所述压缩前权重大小为292540,所述压缩前特征数据大小为46160,所述权重压缩信息大小为27425.625,所述特征数据压缩信息大小为4327.5,因此本发明的理论压缩率为22.5%,压缩损率为9.3%,实际压缩率为13.2%。

本发明的一些实施例中,所述未压缩数据为特征数据,以cifar10网络为例,初始输入特征数据,所述特征数据中的特征数据点为16位整型数据,以数量代表所述理论压缩率的计算方法和所述压缩损耗率的计算方法中各值的大小,特征数据的数量为22711808个,所述特征数据中零值的数量为14456404个,权重的数量为30279628个,所述权重中零值的数量为7330788个,英伟达深度学习加速器(nvidiadeeplearningaccelerator,nvdla)中每32位对应一个含64个16位的特征数据点,所述nvdla中所述第一数据为7330788,所述第三数据为0,所述压缩前权重大小为30279628,所述压缩前特征数据大小为22711808,所述权重压缩信息大小为2838715.125,所述特征数据压缩信息大小为0,因此所述nvdla的理论压缩率为9.7%,压缩损率为3.7%,实际压缩率为6%。而本发明中所述第一数据为7330788,所述第三数据为14456404,所述压缩前权重大小为30279628,所述压缩前特征数据大小为22711808,所述权重压缩信息大小为2838715.125,所述特征数据压缩信息大小为2129232,因此本发明的理论压缩率为47.9%,压缩损率为9.3%,实际压缩率为38.5%。本发明的实际压缩率38.5%明显高于nvdla的实际压缩率6%,因此本发明具有更好的压缩率。

虽然在上文中详细说明了本发明的实施方式,但是对于本领域的技术人员来说显而易见的是,能够对这些实施方式进行各种修改和变化。但是,应理解,这种修改和变化都属于权利要求书中所述的本发明的范围和精神之内。而且,在此说明的本发明可有其它的实施方式,并且可通过多种方式实施或实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1