CN111144562A - 压缩神经网络的激活图的系统、方法及其解压缩方法 - Google Patents
压缩神经网络的激活图的系统、方法及其解压缩方法 Download PDFInfo
- Publication number
- CN111144562A CN111144562A CN201911035382.0A CN201911035382A CN111144562A CN 111144562 A CN111144562 A CN 111144562A CN 201911035382 A CN201911035382 A CN 201911035382A CN 111144562 A CN111144562 A CN 111144562A
- Authority
- CN
- China
- Prior art keywords
- tensor
- block
- activation map
- coding
- compression mode
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/702—Software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Abstract
公开一种压缩神经网络的激活图的系统、方法及其解压缩方法。系统和方法提供神经网络的层的激活图的压缩和解压缩。对于压缩,激活图的值被稀疏化,并且激活图被配置为具有H×W×C的张量大小的张量,其中,H表示所述张量的高度,W表示所述张量的宽度,C表示所述张量的通道的数量。所述张量被格式化为具有值的至少一个块。使用至少一种无损压缩模式独立于所述张量的其他块对每个块进行编码。对于解压缩,使用与用于压缩所述块的所述至少一种压缩模式对应的至少一种解压缩模式,独立于其他块对每个块进行解码;以及将每个块解格式化为具有H×W×C的大小的张量。
Description
本专利申请要求于2018年11月5日提交的第62/756,067号美国临时专利申请和于2018年12月17日提交的第16/223,092号美国非临时专利申请的优先权权益,所述美国专利申请的公开通过完整引用包含于此。
技术领域
在此公开的主题总体涉及一种提供神经网络的激活图的有损编码/解码以减少存储器需求并加速神经网络的执行的方法和系统。
背景技术
近来,深度神经网络已经主导了从计算机视觉(图像分类、图像分割)、自然语言处理(词级(word-level)预测、语音识别和机器翻译)到医学成像等范围的广泛的应用。已经设计了专用硬件,以尽可能高效地运行深度神经网络。然而,在软件方面,一些研究已经集中于使这些网络在运行期间的存储器需求和计算需求最小化。
当试图在具有有限的存储器的嵌入式装置上训练神经网络时,尽可能使算法的存储器需求最小化是非常重要的。在训练期间,大部分的存储器实际上被激活图占用。例如,当前的深度神经网络系统的激活图消耗系统所需的总存储器的约60%和85%之间。因此,减少与激活图相关联的存储器占用(memory footprint)成为减少训练算法的全部存储器占用的重要部分。
在修正线性单元(ReLU)被用作激活函数的神经网络中,激活图趋于变得稀疏。例如,在Inception-V3模型中,大多数激活图具有大于50%的稀疏度,在一些情况下大多数激活图具有超过90%的稀疏度。因此,存在对可以以这种稀疏度为目标来减少训练算法的存储器需求的压缩系统的强烈市场需求。
发明内容
示例实施例提供一种用于压缩神经网络的层的激活图的系统,其中,所述系统可包括:处理器,被编程为启动可执行的操作,所述可执行的操作包括:使用处理器对激活图的若干个非零值进行稀疏化;将激活图配置为具有H×W×C的张量大小的张量,其中,H表示所述张量的高度,W表示所述张量的宽度,C表示所述张量的通道的数量;将所述张量格式化为具有值的至少一个块;以及使用至少一种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。在一个实施例中,所述至少一种无损压缩模式可从包括以下项的组选择:指数哥伦布编码、稀疏指数哥伦布编码、稀疏指数哥伦布去除最小编码、哥伦布赖斯编码、指数尾数编码、零编码、固定长度编码和稀疏固定长度编码。在另一实施例中,被选择用于对所述至少一个块进行编码的所述至少一种无损压缩模式可不同于被选择用于对所述张量的另一个块进行编码的无损压缩模式。在另一实施例中,可使用多种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。
另一示例实施例提供一种用于压缩神经网络的激活图的方法,所述方法可包括:使用处理器对激活图的多个非零值进行稀疏化;将激活图配置为具有H×W×C的张量大小的张量,其中,H表示所述张量的高度,W表示所述张量的宽度,C表示所述张量的通道的数量;将所述张量格式化为具有值的至少一个块;以及使用至少一种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。在一个实施例中,所述至少一种无损压缩模式可从包括以下项的组选择:指数哥伦布编码、稀疏指数哥伦布编码、稀疏指数哥伦布去除最小编码、哥伦布赖斯编码、指数尾数编码、零编码、固定长度编码和稀疏固定长度编码。在另一实施例中,被选择用于对所述至少一个块进行编码的所述至少一种无损压缩模式可不同于被选择用于对所述张量的另一个块进行压缩的无损压缩模式。在另一实施例中,对所述至少一个块进行编码的步骤还可包括使用多种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。在一个实施例中,所述方法还可包括输出被编码为比特流的所述至少一个块。
另一示例实施例提供一种用于解压缩神经网络的稀疏化激活图的方法,所述方法可包括:使用处理器对表示稀疏化激活图的值的比特流的具有值的压缩块进行解压缩,以形成具有值的至少一个解压缩块,具有值的解压缩块使用与用于压缩所述至少一个块的至少一种无损压缩模式对应的至少一种解压缩模式独立于激活图的其他块被解压缩;以及将解压缩的块解格式化为具有H×W×C的大小的张量的部分,其中,H表示所述张量的高度,W表示所述张量的宽度,C表示所述张量的通道的数量,所述张量是解压缩的激活图。在一个实施例中,所述至少一种无损压缩模式可从包括以下项的组选择:指数哥伦布编码、稀疏指数哥伦布编码、稀疏指数哥伦布去除最小编码、哥伦布赖斯编码、指数尾数编码、零编码、固定长度编码和稀疏固定长度编码。在一个实施例中,所述方法还可包括:使用处理器对激活图的若干个非零值进行稀疏化;将激活图配置为具有H×W×C的张量大小的张量;将所述张量格式化为具有值的至少一个块;以及使用至少一种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。在一个实施例中,被选择用于压缩所述至少一个块的所述至少一种无损压缩模式可不同于被选择用于压缩接收的所述至少一个激活图的张量的另一个块的无损压缩模式,并且压缩所述至少一个块的步骤还可包括:使用多种无损压缩模式独立于接收的至少一个激活图的张量的其他块压缩所述至少一个块。
附图说明
在下面的部分中,将参照在附图中示出的示例性实施例来描述在此公开的主题的方面,其中:
图1A描绘根据在此公开的主题的用于神经网络的激活图的有损压缩和解压缩的系统的示例实施例的功能框图;
图1B描绘根据在此公开的主题的压缩器的功能框图;
图1C描绘根据在此公开的主题的解压缩器的功能框图;
图2A和图2B分别描绘根据在此公开的主题的深度神经网络的激活图的编码方法和解码方法的示例实施例;以及
图3描绘根据在此公开的主题的在神经网络的层L的激活图的操作流程。
具体实施方式
在下面的具体实施方式中,阐述了许多具体细节以提供对本公开的透彻理解。然而,本领域技术人员将理解,可在没有这些具体细节的情况下实践公开的方面。在其他实例中,没有详细描述公知的方法、过程、组件和电路,以不模糊在此公开的主题。
在整个说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定的特征、结构或特性可包括在在此公开的至少一个实施例中。因此,在整个说明书中的不同地方出现的短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或具有类似含义的其他短语)可不一定都指示同一实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定的特征、结构或特性。就这一点而言,如在此使用的,词“示例性”意味着“用作示例、实例或说明”。在此描述为“示例性”的任何实施例不应被解释为一定比其他实施例优选或有利。此外,根据在此的讨论的上下文,单数术语可包括对应的复数形式,复数术语可包括对应的单数形式。还应注意,在此示出和讨论的各种附图(包括组件图)仅用于说明性目的,并且不按比例绘制。类似地,仅用于说明性目的而示出各种波形和时序图。例如,为了清楚起见,元件中的一些元件的尺寸可相对于其他元件被夸大。此外,如果认为合适,在附图中重复参考标号以指示对应的和/或类似的元件。
在此使用的术语仅用于描述特定的示例性实施例的目的,并不意图限制要求权利的主题。如在此使用的,除非上下文另外清楚地指出,否则单数形式也意图包括复数形式。还将理解,当在本说明书中使用术语“包含”和/或“包括”时,说明存在阐述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。除非明确如此定义,否则如在此使用的术语“第一”、“第二”等用作它们前面的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等)。此外,可以跨两个或更多个附图使用相同的参考标号来表示具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,这样的用法仅为了简化说明和易于讨论,并不意味着这样的组件或单元的构造或结构细节在所有实施例之间都是相同的或者这样共同引用的部件/模块是实现在此公开的特定实施例的教导的唯一方式。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与该主题所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在此明确如此定义,否则术语(诸如,在通用词典中定义的术语)应该被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且将不被解释为理想化或过于形式化意义。
在此公开的主题涉及一种提供神经网络激活图的有损压缩以减少存储器需求并加速神经网络的执行的系统和方法。在一个实施例中,使用三个一般阶段提供有损压缩流水线:稀疏化阶段(sparsification stage)、量化阶段(quantization stage)和熵编码阶段(entropy coding stage)。在稀疏化阶段中,神经网络的激活图可被稀疏化以减少激活图的非零值的数量。在量化阶段中,每个层的激活图被量化。在熵编码阶段中,量化的激活图可被划分为使用各种不同的压缩模式压缩的在此被称为压缩块的较小单元。在一个实施例中,压缩块被压缩以产生表示神经网络的层的压缩的激活图的比特流。压缩单元可被解压缩、解量化和重新格式化为稀疏化的激活图的原始形状。在此公开的技术可使用具有相对低的复杂性的硬件来执行。应当注意,即使稀疏化使处理有损,也可使用在此公开的技术来压缩神经网络的激活图,而不会降低精确度。
可独立于其他层的激活图的编码并且根据训练算法的需要,对神经网络的每个层的激活图执行编码和解码。虽然在此公开的无损编码/解码技术可压缩所有程度的稀疏度(包括0%和接近100%稀疏度),但是如果激活图中的零值的数量相对高,则在此公开的技术可被优化。也就是说,在此公开的系统和方法针对相应的更高程度的稀疏度实现更高程度的压缩。另外,在此公开的主题提供对现有压缩算法的若干修改,其中,该若干修改可用于利用激活图的数据的稀疏度来获得更大程度的压缩。
在一个实施例中,编码器可被配置为接收大小为H×W×C的张量作为输入,其中,H对应于输入张量的高度,W对应于输入张量的宽度,C对应于输入张量的通道的数量。接收到的张量可被格式化为在此被称为“压缩单元”的较小块。可使用各种不同的压缩模式独立地压缩压缩单元。由编码器产生的输出是压缩的压缩单元的比特流。当压缩单元被解压缩时,它被重新格式化为它的原始形状作为大小为H×W×C的张量的至少一部分。
在此公开的技术可应用于减少神经网络的激活图的存储器需求,其中,神经网络被配置为提供诸如但不限于计算机视觉(图像分类、图像分割)、自然语言处理(词级预测、语音识别和机器翻译)以及医学成像的应用。神经网络应用可用在自主车辆、移动装置、机器人和/或其他低功率装置(诸如,无人机)内。在此公开的技术减少了神经网络在训练期间和/或嵌入专用装置中时的存储器消耗。在此公开的技术可在通用处理装置上或者在专用装置中实现。
图1A描绘根据在此公开的主题的用于神经网络的激活图的有损压缩和解压缩的系统100的示例实施例的功能框图。系统100包括处理器101、存储器102、压缩器103和解压缩器104。在训练期间和/或在推断期间,压缩器103和解压缩器104分别压缩神经网络105的激活图106以形成比特流114和解压缩比特流114以重新形成激活图。在压缩激活图之前,压缩器103和解压缩器104被配置为使用相应的压缩模式和解压缩模式。系统100还可包括一个或多个额外的处理器(未示出)、大容量存储装置(未示出)和输入/输出装置(诸如,但不限于,键盘(未示出)、显示器(未示出)和指点装置(未示出))。
压缩器103和解压缩器104可被实现为模块。如在此使用的术语“模块”指的是被配置为提供与模块有关的在此描述的功能的软件、固件和/或硬件的任何组合。软件可被实现为软件包、代码和/或指令集或指令,并且如在此描述的任何实施方式中使用的术语“硬件”可单独地或以任何组合的方式包括例如硬连线电路、可编程电路、状态机电路和/或存储由可编程电路执行的指令的固件。模块可共同地或单独地被实现为形成较大的系统(例如,但不限于,集成电路(IC)、片上系统(SoC)等)的部分的电路。此外,处理器101和存储器102可以是形成压缩器103和/或解压缩器104的模块的组件。可选择地,处理器101和存储器102可由形成压缩器103和/或解压缩器104的模块使用。
图1B描绘根据在此公开的主题的压缩器103的功能框图。压缩器103可包括稀疏化器107、量化器108、格式化器109和无损编码器110。应当注意,尽管稀疏化器107和量化器108在图1B中被描绘为与压缩器103分离,但是在其他实施例中,稀疏化器107和/或量化器108可以是压缩器103的部分。
已经在神经网络105的层生成的激活图106可例如由处理器101和存储器102配置为预定大小的张量。在一个实施例中,激活图106可被配置为大小为H×W×C的张量,其中,H对应于输入张量的高度,W对应于输入张量的宽度,C对应于输入张量的通道的数量。激活图106可被形成并存储为大小为H×W×C的单个张量。
神经网络105的激活图106被稀疏化器107稀疏化,以形成具有增加的数量的等于零的值的稀疏激活图111,使得由编码器110执行的无损压缩将更有效。稀疏化器107使用代价函数中的附加正则化(additional regularization)来微调预先训练的神经网络。通常,当神经网络被训练时,代价函数L(w)相对于权重??被最小化。代价函数L(w)包含两项:数据项和正则化项。数据项通常是交叉熵损失(cross-entropy loss),而正则化项通常是关于网络权重的L2范数(L2norm)。在预先训练的网络的微调期间,通过添加新的正则化项来修改代价函数L(w):
L′(w)=L(W)+∑jλj||Aj||1 (1)
其中,Aj=Aj·(wj)是层j的激活图,wj是层j的权重,λj是控制稀疏量的拉格朗日乘子。
可选择拉格朗日乘子λj来控制层j的激活图的稀疏量。较大的λj将产生稀疏的Aj。直观地,将L1正则化添加在A上约束权重w,以产生稀疏的输出。通过反向传播调整权重w以形成更稀疏的A。微调从预先训练的网络开始,并最小化修改的代价函数L′(w)。微调持续若干个时期(epoch)(根据网络和数据集,通常在10至50个时期之间)。
如果在稀疏化之后,稀疏化激活图111的值还未从浮点数量化为整数,则稀疏化激活图111的非量化值可被量化器108量化为具有任何比特宽度q(即,8比特、12比特、16比特等)的整数值,以形成稀疏化和量化的激活图112。如果需要,由量化器108进行的量化也可被认为是引入额外的压缩的方式,但是以精度为代价。通常,线性(均匀)量化被使用,并且q可以是1比特与16比特之间的任何值。在一个实施例中,因为针对每个输入图像产生新的激活图,所以量化可在运行时间期间发生。
为了便于压缩,H×W×C的稀疏化和量化的激活图112可被格式化器109格式化为具有值的块,其中,每个块在此被称为“压缩单元”113。也就是说,张量大小为H×W×C的稀疏化和量化的激活图112可被划分为更小的压缩单元。压缩单元113可包括按通道主序(channel-major order)的K个元素(或者值),其中,K>0;扫描线(即,每个块可以是激活图的一个行);或者按行主序(row-major order)的K个元素(或者值),其中,K>0。用于形成压缩单元113的其他技术或方法也是可行的。例如,对应的神经网络硬件的激活图的加载模式可用作块(或压缩单元)格式化技术的基础。
每个压缩单元113可独立于其他的压缩单元被编码器110无损地编码或压缩,以形成比特流114。比特流114可存储在存储器102中或存储在与神经网络105相关联的存储器中。每个压缩单元113可使用在此被称为“压缩模式”或简称为“模式”的若干压缩技术中的任何一种来无损地编码或压缩。示例无损压缩模式包括但不限于:指数哥伦布编码(Exponential-Golomb encoding)、稀疏指数哥伦布编码(Sparse-Exponential-Golombencoding)、稀疏指数哥伦布去除最小编码(Sparse-Exponential-Golomb-RemoveMinencoding)、哥伦布赖斯编码(Golomb-Rice encoding)、指数尾数编码(Exponent-Mantissaencoding)、零编码(Zero-encoding)、固定长度编码和稀疏固定长度编码(Sparse fixedlength encoding)。应当理解,除了示例压缩模式以外,其他无损编码技术也可被使用,或者其他无损编码技术可用作示例压缩模式的替换模式。然而,还应注意,除了稀疏指数哥伦布压缩模式和稀疏指数哥伦布去除最小压缩模式之外,示例压缩模式中的许多是公开可用的或基于公开可用的压缩模式。在此提供稀疏指数哥伦布压缩模式和稀疏指数哥伦布去除最小压缩模式的细节。
指数哥伦布编码是公知的分配可变长度代码的压缩模式,其中,较小的数字被分配较短的代码。用于编码数字的比特的数量呈指数增加,并且通常被称为阶数(order)k参数的一个参数控制比特的数量增加的速率。下面的伪代码提供指数哥伦布压缩模式的示例细节。
设x,x>=0为输入,设k为参数(阶数)
生成输出比特流:<商代码><余数代码>:
商代码:
使用0阶指数哥伦布代码对q=floor(x/2^k)进行编码
z=binary(q+1)
numBits=len(z)
写入被z跟随的numBits-1个零比特,并由u表示
余数代码:
以二进制对r=x%2^k进行编码,并由f=binary(r)表示
级联u、f以产生输出比特流
指数哥伦布压缩模式的一个示例为:
x=23,k=3
q=floor(23/2^3)=2
z=binary(2+1)=binary(3)=11
numbits=Len(z)=2
u=011(被z跟随的2-1=1个零)
f=binary(r)=binary(23%8)=binary(7)=111
最终输出=011+111=011111
表1阐述了针对输入值x=0-29并针对阶数k=0-3的指数哥伦布压缩模式值。
表1
稀疏指数哥伦布压缩模式是指数哥伦布压缩模式的扩展或变型,其中,如果将被编码的值x是0,则值x由输出比特流中的“1”表示。否则,指数哥伦布编码添加“0”,然后使用标准指数哥伦布对x-1进行编码。在块(压缩单元)值为八比特的一个实施例中,阶数k=4可提供最佳结果。
稀疏指数哥伦布去除最小压缩模式是使用以下规则的稀疏指数哥伦布压缩模式的扩展或变形:(1)在以压缩单元对值进行编码之前,确定可由变量y表示的最小非零值。(2)然后使用指数哥伦布压缩模式对变量y进行编码。(3)如果将被编码的值x为0,则将其编码为“1”;(4)否则,将“0”添加到比特流,然后使用指数哥伦布压缩模式对x-y进行编码。
哥伦布赖斯压缩模式和指数尾数压缩模式是公知的压缩算法。下面的伪代码阐述了哥伦布赖斯压缩模式的示例细节。
设x,x>=0为输入,M为参数。M是2的幂。
q=floor(x/M)
r=x%M
生成输出比特流:<商代码><余数代码>:
商代码:
写入长度为q的比特1的字符串
写入比特0
余数代码:以log2(M)个比特的binary(r)
哥伦布赖斯压缩模式的一个示例是:
x=23,M=8,log2(M)=3
q=floor(23/8)=2
r=7
商代码:110
余数代码:111
输出=110111
零编码压缩模式检查压缩单元是否全部由零形成,如果是,则返回空比特流。应当注意,如果压缩单元包含至少一个非零值,则不能使用零压缩模式。
固定长度编码压缩模式是不执行压缩的基线或默认的压缩模式,并且使用固定数量的比特简单地对压缩单元的值进行编码。
最后,除了如果将被编码的值x是0,则将其编码为1,否则,添加0并使用固定数量的比特来对非零值进行编码以外,稀疏固定长度编码压缩模式与固定长度编码压缩模式相同。
返回参照图1B,在一个实施例中,编码器110可开始具有48比特的压缩比特流114,其中,16比特可分别用于表示输入张量的H、W和C。每个压缩单元113可针对可用的每个压缩模式被迭代地压缩。可用于每个压缩单元的压缩模式可在激活图的压缩期间被固定。在一个实施例中,可用压缩模式的整个范围可由L比特表示。例如,如果四个压缩模式可用,则两比特前缀可用于指示四个可用压缩模式的对应索引(即,00、01、10和11)。在可选的实施例中,前缀可变长度编码技术可用于节省一些比特。例如,编码器108最常用的压缩模式的索引可由“0”表示,并且第二最常用的压缩模式、第三最常用的压缩模式和第四最常用的压缩模式可分别由“10”、“110”和“111”表示。如果仅使用一种压缩模式,则没有必要将索引附加到压缩单元的比特流114的开头。
在一个实施例中,当压缩单元113被压缩时,可运行所有可用的压缩模式,并且可选择已经产生最短比特流的压缩模式。可将选择的压缩模式的对应索引作为前缀附加到特定的压缩单元的比特流的开头,然后可将压缩单元的结果比特流添加到整个激活图的比特流。然后,可针对激活图的所有压缩单元重复该处理。可使用与用于邻近或相邻的压缩单元的压缩模式不同的压缩模式来压缩激活图的每个各自的压缩单元。在一个实施例中,少量的压缩模式(诸如,两个压缩模式)可用于降低压缩激活图的复杂度。
图1C描绘根据在此公开的主题的解压缩器104的功能框图。解压缩器104对比特流114进行解压缩,以形成神经网络105'的激活图120(图1A),其中,激活图120是与原始的非稀疏化激活图106对应的有损解压缩。因此,神经网络105'可以是原始的神经网络105的修改版本。
解压缩器104可包括解码器115、解格式化器116和解量化器117。应当注意,尽管解量化器117在图1C中被描绘为与解压缩器104分离,但是在其他实施例中,解量化器117可以是解压缩器104的部分。
在一个实施例中,解压缩器104读取比特流114的前48比特以恢复H、W和C,然后一次处理比特流114的一个压缩单元。解压缩器104已得知用于模式的索引的比特的数量和压缩单元中的元素的数量(根据使用的压缩模式,W或K)二者。也就是说,与原始的(稀疏化)激活图106对应的比特流114被解码器115解压缩,以形成压缩单元118。压缩单元118被解格式化器116解格式化,以形成大小为H×W×C的张量的稀疏化和量化的激活图119。稀疏化和量化的激活图119可被解量化器117解量化,以形成对应于原始的非稀疏化激活图106的稀疏化激活图120。应当注意,稀疏化激活图120是对应的原始的非稀疏化激活图106的有损解压缩。
图2A和图2B分别描绘根据在此公开的主题的深度神经网络的激活图的编码方法200和解码方法210的示例实施例。神经网络的每个层的激活图可通过图2A和图2B的编码/解码方法对来进行处理。在压缩激活图之前,压缩器103和解压缩器104(诸如,在图1B和图1C中描绘的)被配置为使用相应的压缩模式和解压缩模式。
在图2A中,处理开始于201。在202,神经网络的激活图被稀疏化,以形成稀疏化激活图,其中,稀疏化激活图具有增加的数量的等于零的值,使得稍后执行的无损压缩将更有效。结合等式(1)描述了一个示例稀疏化技术。其他稀疏化技术可被使用。
在203,稀疏化激活图被配置为被编码。在一个实施例中,已在神经网络的层产生的稀疏化激活图被配置为大小为H×W×C的张量,其中,H对应于输入张量的高度,W对应于输入张量的宽度,C对应于输入张量的通道的数量。如果稀疏化激活图的值未从浮点数量化为整数,则在204,稀疏化激活图的非量化值可被量化为具有任何比特宽度的整数值,以形成稀疏化量化激活图。
在205,稀疏化量化激活图可被格式化为压缩单元。在206,每个压缩单元可独立于其他压缩单元被无损编码或压缩,以形成比特流。可使用若干种压缩模式中的任何一种对每个压缩单元进行无损编码或压缩。示例无损压缩模式包括但不限于:指数哥伦布编码、稀疏指数哥伦布编码、稀疏指数哥伦布去除最小编码、哥伦布赖斯编码、指数尾数编码、零编码、固定长度编码和稀疏固定长度编码。每个压缩单元可针对可用的每个压缩模式被迭代地压缩。在一个实施例中,当压缩单元被压缩时,可运行所有可用的压缩模式,并且可选择已经产生最短比特流的压缩模式。当激活图的所有压缩单元都已被编码时,针对激活图,处理在207结束。对于神经网络的每个激活图,图2A的处理200以相同的方式继续。
在图2B中,处理开始于211。在212,比特流被接收,并且前48比特被读取以恢复编码的压缩单元。在213,每个编码的压缩单元被解码以形成解码的压缩单元。在214,每个解码的压缩单元被解格式化以形成稀疏化和量化的激活图。在215,这些值(即,稀疏化和量化的激活图)被解量化以形成稀疏化去量化激活图。针对激活图,处理在216结束。图2B的处理210以相同的方式继续以解压缩神经网络的每个激活图。
下面的示例伪代码对应于方法200。
下面的示例伪代码对应于方法210。
图3描绘根据在此公开的主题的在神经网络的层L的激活图的操作流程300。操作流程300表示通过层L的前向处理方向和后向处理方向二者。也就是说,操作流程300表示用于训练神经网络和用于从到神经网络的输入形成推断的操作流程。神经网络的原始的激活图(未示出)的编码(稀疏化和压缩的)表示在它从存储器(诸如,图1A中的存储器102)被读出时被转换成比特流301。在解码器302处,比特流被解码以形成压缩单元303。在解格式化器304处,压缩单元303被解格式化以形成稀疏化量化激活图305。再次,应当注意,激活图的量化可以是可选的。在解量化器306处,稀疏化和量化的激活图305(即,稀疏化量化激活图305)被解量化以形成层L的稀疏化激活图307。
稀疏化激活图307被用在神经网络的层L以计算输出激活图308(即,稀疏化激活图308)。在309,输出激活图308(可选地)被量化以形成稀疏化和量化的激活图310。在311,稀疏化和量化的激活图310被格式化以形成压缩单元312。在313,压缩单元312被编码以形成比特流314,其中,比特流314被存储在存储器(诸如,图1A中的存储器102)中。
如本领域技术人员将认识到的,在此描述的创新构思可在广泛的应用范围内被修改和变化。因此,要求权利的主题的范围不应限于上面讨论的任何特定示例性教导,而是由所附权利要求限定。
Claims (20)
1.一种用于压缩神经网络的层的激活图的系统,所述系统包括:
处理器,被编程为启动可执行的操作,所述可执行的操作包括:
使用处理器对激活图的若干个非零值进行稀疏化;
将稀疏化激活图配置为具有H×W×C的张量大小的张量,其中,H表示所述张量的高度,W表示所述张量的宽度,C表示所述张量的通道的数量;
将所述张量格式化为具有值的至少一个块;以及
使用至少一种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。
2.根据权利要求1所述的系统,其中,所述至少一种无损压缩模式从包括以下项的组选择:指数哥伦布编码、稀疏指数哥伦布编码、稀疏指数哥伦布去除最小编码、哥伦布赖斯编码、指数尾数编码、零编码、固定长度编码和稀疏固定长度编码。
3.根据权利要求2所述的系统,其中,被选择用于对所述至少一个块进行编码的所述至少一种无损压缩模式不同于被选择用于对所述张量的另一个块进行编码的无损压缩模式。
4.根据权利要求1所述的系统,其中,对所述至少一个块进行编码的步骤包括使用多种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。
5.根据权利要求1所述的系统,其中,所述至少一个块包括48比特。
6.根据权利要求1所述的系统,其中,所述可执行的操作还包括:输出被编码为比特流的所述至少一个块。
7.根据权利要求6所述的系统,其中,所述可执行的操作还包括:
使用与用于压缩所述至少一个块的所述至少一种压缩模式对应的至少一种解压缩模式,独立于所述张量的其他块对所述至少一个块进行解码;以及
将所述至少一个块解格式化为具有H×W×C的大小的张量。
8.根据权利要求1所述的系统,其中,稀疏化激活图包括浮点值,
其中,所述可执行的操作还包括:将激活图的浮点值量化为整数值。
9.一种用于压缩神经网络的激活图的方法,所述方法包括:
使用处理器对激活图的若干个非零值进行稀疏化;
将激活图配置为具有H×W×C的张量大小的张量,其中,H表示所述张量的高度,W表示所述张量的宽度,C表示所述张量的通道的数量;
将所述张量格式化为具有值的至少一个块;以及
使用至少一种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。
10.根据权利要求9所述的方法,还包括:从包括以下项的组选择所述至少一种无损压缩模式:指数哥伦布编码、稀疏指数哥伦布编码、稀疏指数哥伦布去除最小编码、哥伦布赖斯编码、指数尾数编码、零编码、固定长度编码和稀疏固定长度编码。
11.根据权利要求10所述的方法,其中,被选择用于对所述至少一个块进行编码的所述至少一种无损压缩模式不同于被选择用于对所述张量的另一个块进行编码的无损压缩模式。
12.根据权利要求10所述的方法,其中,对所述至少一个块进行编码的步骤还包括使用多种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。
13.根据权利要求10所述的方法,其中,所述至少一个块包括48比特。
14.根据权利要求9所述的方法,还包括:输出被编码为比特流的所述至少一个块。
15.根据权利要求14所述的方法,还包括:
使用处理器,使用与用于压缩所述至少一个块的所述至少一种压缩模式对应的至少一种解压缩模式,独立于所述张量的其他块对所述至少一个块进行解压缩;以及
将所述至少一个块解格式化为具有H×W×C的大小的张量。
16.根据权利要求9所述的方法,其中,稀疏化激活图包括浮点值,
所述方法还包括将稀疏化激活图的浮点值量化为整数值。
17.一种用于解压缩神经网络的稀疏化激活图的方法,所述方法包括:
使用处理器对表示稀疏化激活图的值的比特流的具有值的压缩块进行解压缩,以形成具有值的至少一个解压缩块,所述至少一个解压缩块使用与用于压缩所述至少一个块的至少一种无损压缩模式对应的至少一种解压缩模式独立于稀疏化激活图的其他块被解压缩;以及
将所述至少一个解压缩的块解格式化为具有H×W×C的大小的张量的部分,其中,H表示所述张量的高度,W表示所述张量的宽度,C表示所述张量的通道的数量,所述张量是解压缩的激活图。
18.根据权利要求17所述的方法,其中,所述至少一种无损压缩模式从包括以下项的组选择:指数哥伦布编码、稀疏指数哥伦布编码、稀疏指数哥伦布去除最小编码、哥伦布赖斯编码、指数尾数编码、零编码、固定长度编码和稀疏固定长度编码。
19.根据权利要求18所述的方法,还包括:
使用处理器对激活图的若干个非零值进行稀疏化;
将稀疏化激活图配置为具有H×W×C的张量大小的张量;
将所述张量格式化为具有值的至少一个块;以及
使用所述至少一种无损压缩模式独立于所述张量的其他块对所述至少一个块进行编码。
20.根据权利要求19所述的方法,其中,被选择用于压缩所述至少一个块的所述至少一种无损压缩模式不同于被选择用于压缩所述张量的另一个块的无损压缩模式,以及
其中,压缩所述至少一个块的步骤还包括:使用多种无损压缩模式独立于所述张量的其他块压缩所述至少一个块。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862756067P | 2018-11-05 | 2018-11-05 | |
US62/756,067 | 2018-11-05 | ||
US16/223,092 US20200143226A1 (en) | 2018-11-05 | 2018-12-17 | Lossy compression of neural network activation maps |
US16/223,092 | 2018-12-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111144562A true CN111144562A (zh) | 2020-05-12 |
Family
ID=70458520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911035382.0A Pending CN111144562A (zh) | 2018-11-05 | 2019-10-29 | 压缩神经网络的激活图的系统、方法及其解压缩方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200143226A1 (zh) |
KR (1) | KR20200052201A (zh) |
CN (1) | CN111144562A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112332853A (zh) * | 2020-11-02 | 2021-02-05 | 重庆邮电大学 | 一种基于电力系统的时序数据压缩与恢复方法 |
WO2022134873A1 (zh) * | 2020-12-25 | 2022-06-30 | 中科寒武纪科技股份有限公司 | 数据处理装置、数据处理方法及相关产品 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11625585B1 (en) | 2019-05-21 | 2023-04-11 | Perceive Corporation | Compiler for optimizing filter sparsity for neural network implementation configuration |
US11615301B2 (en) * | 2019-09-03 | 2023-03-28 | Microsoft Technology Licensing, Llc | Lossless exponent and lossy mantissa weight compression for training deep neural networks |
US20210224191A1 (en) * | 2020-01-22 | 2021-07-22 | Alibaba Group Holding Limited | Compression and decompression module in a cache controller for reducing off-chip data traffic |
US11461625B1 (en) * | 2020-05-22 | 2022-10-04 | Xilinx, Inc. | Tensor compression |
KR102477533B1 (ko) * | 2020-08-06 | 2022-12-15 | 한국과학기술원 | 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법 |
KR102654690B1 (ko) * | 2020-08-27 | 2024-04-04 | 한국전자기술연구원 | 딥러닝 가속 장치 및 그 방법 |
US11750213B1 (en) * | 2022-08-31 | 2023-09-05 | Hong Kong Applied Science and Technology Research Institute Company Limited | Train-linking lossless compressor of numeric values |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2839560C (en) * | 2011-06-16 | 2016-10-04 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Entropy coding of motion vector differences |
JP5653328B2 (ja) * | 2011-09-26 | 2015-01-14 | 株式会社東芝 | 画像処理装置及び画像処理システム |
US9141885B2 (en) * | 2013-07-29 | 2015-09-22 | Adobe Systems Incorporated | Visual pattern recognition in an image |
-
2018
- 2018-12-17 US US16/223,092 patent/US20200143226A1/en active Pending
-
2019
- 2019-02-14 KR KR1020190017182A patent/KR20200052201A/ko active Search and Examination
- 2019-10-29 CN CN201911035382.0A patent/CN111144562A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112332853A (zh) * | 2020-11-02 | 2021-02-05 | 重庆邮电大学 | 一种基于电力系统的时序数据压缩与恢复方法 |
WO2022134873A1 (zh) * | 2020-12-25 | 2022-06-30 | 中科寒武纪科技股份有限公司 | 数据处理装置、数据处理方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
TW202036386A (zh) | 2020-10-01 |
KR20200052201A (ko) | 2020-05-14 |
US20200143226A1 (en) | 2020-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111144562A (zh) | 压缩神经网络的激活图的系统、方法及其解压缩方法 | |
US11588499B2 (en) | Lossless compression of neural network weights | |
US11403528B2 (en) | Self-tuning incremental model compression solution in deep neural network with guaranteed accuracy performance | |
CN110555521A (zh) | 神经网络稀疏激活映射的无损压缩 | |
RU2406222C1 (ru) | Способ кодирования и способ декодирования сигнала изображения, способ кодирования и декодирования источника информации, устройства для них и носители информации, на которых сохранены программы для них | |
US11869221B2 (en) | Data compression using integer neural networks | |
JP7408799B2 (ja) | ニューラルネットワークモデルの圧縮 | |
CN110663048A (zh) | 用于深度神经网络的执行方法、执行装置、学习方法、学习装置以及程序 | |
JP2002135131A (ja) | 可変サイズベクトルエントロピ符号化を実行するための方法および装置 | |
US20220114454A1 (en) | Electronic apparatus for decompressing a compressed artificial intelligence model and control method therefor | |
KR20210126102A (ko) | 신경망 모델 압축/압축해제를 위한 방법 및 장치 | |
Shi et al. | Transform-based feature map compression for cnn inference | |
WO2011097963A1 (zh) | 编码方法、解码方法、编码器和解码器 | |
US20210133570A1 (en) | Neural network method and apparatus | |
TWI840438B (zh) | 用於壓縮神經網路的激活映射的系統與方法以及用於對神經網路的經稀疏化的激活映射進行解壓縮的方法 | |
JP7394980B2 (ja) | ブロック分割を伴うニューラルネットワークを復号する方法、装置及びプログラム | |
WO2023278889A1 (en) | Compressing audio waveforms using neural networks and vector quantizers | |
CN115913245A (zh) | 数据编码方法、数据解码方法以及数据处理装置 | |
Hosny et al. | Sparse bitmap compression for memory-efficient training on the edge | |
KR102394951B1 (ko) | 인코딩, 디코딩 장치 및 방법 | |
US11742875B1 (en) | Compression of floating-point numbers for neural networks | |
US20220222865A1 (en) | System and method for image compression based on machine learning | |
US20220286711A1 (en) | Frequency specific compression and compensation technique in image processing | |
KR20230018976A (ko) | 오디오 신호의 부호화 및 복호화 방법 및 이를 수행하는 부호화기 및 복호화기 | |
Mohamed | Wireless Communication Systems: Compression and Decompression Algorithms |
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 |