CN110796238B - 基于arm架构fpga硬件系统的卷积神经网络权重压缩方法及其装置 - Google Patents
基于arm架构fpga硬件系统的卷积神经网络权重压缩方法及其装置 Download PDFInfo
- Publication number
- CN110796238B CN110796238B CN201911037605.7A CN201911037605A CN110796238B CN 110796238 B CN110796238 B CN 110796238B CN 201911037605 A CN201911037605 A CN 201911037605A CN 110796238 B CN110796238 B CN 110796238B
- Authority
- CN
- China
- Prior art keywords
- offset
- zero element
- depth
- neural network
- zero
- 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.)
- Active
Links
Images
Classifications
-
- 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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Abstract
本申请涉及神经网络提速,公开了一种卷积神经网络权重压缩方法及其装置。该方法包括获取该卷积神经网络的所有卷积核;针对任一卷积核的各权重矩阵按照深度从小到大依次叠层排列,并对排列后的多层权重矩阵中除第一个以外的任一非零元素:计算当前非零元素相对于前一个非零元素的深度偏移量以及计算该当前非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量,以及根据预设压缩规则对该当前非零元素的值、该深度偏移量、该高度偏移量和该宽度偏移量进行压缩得到对应的压缩结果。本申请的实施方式使得压缩结果能够在FPGA上加快后续的神经网络运算。
Description
技术领域
本申请涉及神经网络提速领域,特别涉及卷积神经网络权重压缩技术。
背景技术
对于非均匀分布的信息,霍夫曼编码是理论最优的无损压缩方案。但是,霍夫曼编码并不是针对庞大稀疏矩阵的,对于具有庞大稀疏矩阵的卷积神经网络的卷积计算过程,霍夫曼编码需要统计各个权值的数量,然后才能计算霍夫曼树得到长编码,这无疑增加了计算系统的负担。目前,霍夫曼编码与解码的过程,没有将硬件特性考虑进去,在FPGA上实现效果不佳。
发明内容
本申请的目的在于提供一种卷积神经网络权重压缩方法及其装置,使得压缩结果能够在FPGA上加快后续的神经网络运算。
本申请公开了一种卷积神经网络权重压缩方法,包括:
获取所述卷积神经网络的所有卷积核;
针对任一卷积核的各权重矩阵按照深度从小到大依次叠层排列,并对排列后的多层权重矩阵中除第一个以外的任一非零元素执行以下操作:
计算当前非零元素相对于前一个非零元素的深度偏移量以及计算所述当前非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量;
所述根据预设压缩规则对所述当前非零元素的值、所述深度偏移量、所述高度偏移量和所述宽度偏移量进行压缩得到对应的压缩结果。
在一个优选例中,所述针对任一卷积核的各权重矩阵按照深度从小到大依次排列之后,还对排列后的多层权重矩阵中第一个非零元素:
计算该第一个非零元素相对于第一层权重矩阵的深度偏移量作为其深度偏移量,以及计算该第一个非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量作为其高度偏移量和宽度偏移量。
在一个优选例中,计算当前非零元素相对于前一个非零元素的深度偏移量时,还包括:
判断所述当前非零元素相对于前一个非零元素的深度偏移量是否大于最大可跳跃深度值;
若大于所述最大可跳跃深度值,则根据所述最大可跳跃深度值在所述当前非零元素与所述前一个非零元素之间写入一个或多个零值,每个零值的深度偏移量为所述最大可跳跃深度值,以及所述当前非零元素的深度偏移量等于所述当前非零元素相对于前一个非零元素的深度偏移量减去所述一个或多个零值对应的深度偏移量;
若不大于所述最大可跳跃深度值,则所述深度偏移量为所述当前非零元素的深度偏移量。
在一个优选例中,所述根据预设压缩规则对所述当前非零元素的值、所述深度偏移量、所述高度偏移量和所述宽度偏移量进行压缩得到对应的压缩结果,进一步包括:
按照公式weightbin=w<<cshift+yshift+xshift|coff<<yshift+ xshift|yoff<<xshift|xoff<<0对所述当前非零元素进行压缩得到对应的压缩结果,其中w为所述当前非零元素的值,coff、yoff、xoff分别为所述深度偏移量、所述高度偏移量、所述宽度偏移量,cshift、 yshift、xshift分别为coff、yoff、xoff占用的最大比特数,且2cshift表示所诉最大可跳跃深度值。
在一个优选例中,所述卷积核为K×K卷积核,则xshift=yshift=S,且S是满足2S>K的最小整数,cshift可以根据存储系统的剩余数据位调整。
在一个优选例中,所述卷积神经网络基于32位ARM架构FPGA硬件处理时,使用3×3卷积核,则K=3,xshift=yshift=2,cshift=2。
在一个优选例中,在得到所述卷积神经网络的所有卷积核的各多层权重矩阵对应的压缩结果之后,还包括:
将所有卷积核的各多层权重矩阵对应的压缩结果写成一维数组的形式进行存储,并把每一个卷积核的起始地址指针存储在所述一维数组中,以方便着色器去读取。
本申请还公开了一种卷积神经网络权重压缩装置包括:
获取模块,用于获取所述卷积神经网络的所有卷积核;
计算模块,用于针对任一卷积核的各权重矩阵按照深度从小到大依次排列,并对排列后的多层权重矩阵中除第一个以外的任一非零元素执行以下操作:计算当前非零元素相对于前一个非零元素的深度偏移量,以及计算所述当前非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量;
压缩模块,用于所述根据预设压缩规则对所述当前非零元素的值、所述深度偏移量、所述高度偏移量和所述宽度偏移量进行压缩得到对应的压缩结果。
在一个优选例中,所述计算模块还用于计算该第一个非零元素相对于第一层权重矩阵的深度偏移量作为其深度偏移量,以及计算该第一个非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量作为其高度偏移量和宽度偏移量。
在一个优选例中,所述计算模块还用于判断所述当前非零元素相对于前一个非零元素的深度偏移量是否大于最大可跳跃深度值,若大于所述最大可跳跃深度值,则根据所述最大可跳跃深度值在所述当前非零元素与所述前一个非零元素之间写入一个或多个零值,每个零值的深度偏移量为所述最大可跳跃深度值,以及所述当前非零元素的深度偏移量等于所述当前非零元素相对于前一个非零元素的深度偏移量减去所述一个或多个零值对应的深度偏移量,以及若不大于所述最大可跳跃深度值,则所述深度偏移量为所述当前非零元素的深度偏移量。
在一个优选例中,所述压缩模块还用于所述压缩模块还用于按照公式 weightbin=w<<cshift+yshift+xshift|coff<<yshift+xshift|yoff<< xshift|xoff<<0对所述当前非零元素进行压缩得到对应的压缩结果 weightbin,其中w为所述当前非零元素的值,coff、yoff、xoff分别为所述深度偏移量、所述高度偏移量、所述宽度偏移量,cshift、yshift、xshift分别为coff、yoff、xoff占用的最大比特数,且2cshift表示所诉最大可跳跃深度值。
在一个优选例中,所述卷积核为K×K卷积核时,xshift=yshift=S,且S是满足2S>K的最小整数,cshift可以根据存储系统的剩余数据位调整。
在一个优选例中,所述卷积神经网络基于32位ARM架构FPGA硬件处理时,使用3×3卷积核,则K=3,xshift=yshift=2,cshift=2。
本申请还公开了一种计算机可读存储介质所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。
本申请实施方式与现有技术相比,至少具有以下区别和效果:
针对卷积神经网络中的大量卷积核权重稀疏矩阵,首先对于卷积层的各卷积核的权重矩阵,识别所有非零元素,并按照顺序,计算相邻两个非零元素之间的深度偏移量,以及计算各非零元素相对应第一行第一列的高度偏移量和宽度偏移量,将每一个非零元素的深度偏移量、高度偏移量、宽度偏移量作为其位置信息加入编码信息,并基于特定处理系统设定各偏移量占用比特数,例如对于32位ARM架构FPGA硬件,可以设定各偏移量占用比特数分别为2比特,则每个权值都由10比特的定点数和6比特的深度、高度和宽度偏移量,充分利用了32位ARM架构FPGA硬件的存储空间。本申请实施方式对用于存储的硬件情况进行充分考量,合理并最大限度地优化了卷积权重的存储,并且及减少了需要存储的权重数量,进而减少了后续卷积神经网络运算(包括乘法和累加)时乘法次数,使得计算效率大大提高。
同时,考虑到卷积神经网络的权重矩阵可能非常稀疏,相邻的非零元素有效权值之间的层级(深度值)很有可能大于深度偏移量最大存储值,例如上述32位ARM架构FPGA硬件的存储空间,深度偏移量占用了2比特,对应的最大存储值为3,那么当超过这个层级后写入一个零值的编码即可。进一步减少了权重数量,进而大大减少了后续卷积神经网络运算时乘法次数,使得计算效率大大提高。
进一步地,在压缩过程中,利用weightbin=w<<cshift+yshift+ xshift|coff<<yshift+xshift|yoff<<xshift|xoff<<0的压缩规则对每个各非零元素或上述写入的零值进行压缩处理,进一步根据存储数据位合理存储各非零元素或上述零值,得到最终的每个非零元素和零值的压缩结果,压缩结果准确、可靠。
本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而 A+B+C+E的方案应当视为已经被记载。
附图说明
图1是根据本申请第一实施方式的卷积神经网络权重压缩方法流程示意图
图2是根据本申请第一实施方式的示例卷积核三个维度的数据排列示意图
图3是根据本申请第一实施方式的示例卷积核压缩过程结果示意图
图4是根据本申请第二实施方式的卷积神经网络权重压缩装置结构示意图
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
部分概念的说明:
稀疏矩阵(Sparse Matrix):矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律,通常认为矩阵中非零元素的总数比上矩阵所有元素总数的值小于等于0.05时,则称该矩阵为稀疏矩阵。
霍夫曼编码(Huffman Encoding):是一种用于无损数据压缩的熵编码(权编码)贪心算法。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
本申请的第一实施方式涉及一种卷积神经网络权重压缩方法,其流程如图1所示,该方法包括以下步骤:
在步骤101中,获取该卷积神经网络的所有卷积核。
之后进入步骤102,针对任一卷积核的各权重矩阵按照深度从小到大依次叠层排列,并对排列后的多层权重矩阵中除第一个以外的任一非零元素执行以下操作:
计算当前非零元素相对于前一个非零元素的深度偏移量以及计算所述当前非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量,以及该根据预设压缩规则对该当前非零元素的值、该深度偏移量、该高度偏移量和该宽度偏移量进行压缩得到对应的压缩结果。
可选地,该步骤102中,在针对任一卷积核的各权重矩阵按照深度从小到大依次排列之后,还对排列后的多层权重矩阵中第一个非零元素:计算该第一个非零元素相对于第一层权重矩阵的深度偏移量作为其深度偏移量,以及计算该第一个非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量作为其高度偏移量和宽度偏移量。
可选地,该步骤102中计算当前非零元素相对于前一个非零元素的深度偏移量,进一步包括以下步骤a、b和c,具体的:
a判断该当前非零元素相对于前一个非零元素的深度偏移量是否大于最大可跳跃深度值;
b若大于该最大可跳跃深度值,则根据该最大可跳跃深度值在该当前非零元素与该前一个非零元素之间写入一个或多个零值,每个零值的深度偏移量为该最大可跳跃深度值,以及该当前非零元素的深度偏移量等于该当前非零元素相对于前一个非零元素的深度偏移量减去该一个或多个零值对应的深度偏移量;
c若不大于该最大可跳跃深度值,则该深度偏移量为该当前非零元素的深度偏移量。
可选地,该步骤102中根据预设压缩规则对该当前非零元素的值、该深度偏移量、该高度偏移量和该宽度偏移量进行压缩得到对应的压缩结果,进一步包括以下步骤:
按照公式weightbin=w<<cshift+yshift+xshift|coff<<yshift+ xshift|yoff<<xshift|xoff<<0对该当前非零元素进行压缩得到对应的压缩结果,其中w为该当前非零元素的值,coff、yoff、xoff分别为该深度偏移量、该高度偏移量、该宽度偏移量,cshift、 yshift、xshift分别为coff、yoff、xoff占用的最大比特数,且2cshift表示所诉最大可跳跃深度值。
需要指出:可以根据卷积神经网络的卷积核的大小及存储系统的存储数据位数设置进行设定cshift、yshift、xshift的大小。在一个实施例中,该卷积核为K×K卷积核,则xshift=yshift=S,且S是满足2S>K的最小整数, cshift可以根据存储系统的剩余数据位调整;进一步地,例如该卷积神经网络基于32位ARM架构FPGA硬件处理时,使用3×3卷积核,则K=3, xshift=yshift=2,cshift=2。
可选地,根据步骤102得到该卷积神经网络的所有卷积核的各多层权重矩阵对应的压缩结果之后,还包括以下步骤:
将所有卷积核的各多层权重矩阵对应的压缩结果写成一维数组的形式进行存储,并把每一个卷积核的起始地址指针存储在该一维数组中,以方便着色器去读取。
为了能够更好地理解本申请的技术方案,下面结合一个具体的例子来进行说明,该例子中罗列的细节主要是为了便于理解,不作为对本申请保护范围的限制。
下表1为一个示例卷积层,其中,需要压缩的权重维度是1024×512× 3×3,总计乘法计算次数是1024×512×3×3×13×13,基于32位ARM 架构FPGA硬件系统进行存储、计算,则xshift=yshift=2,cshift=2。
表1示例卷积层信息
类型 | 卷积核个数 | 卷积核尺寸/步长 | 输入图像尺寸×维度 | 输出尺寸×维度 | 计算量 |
卷积 | 1024个 | 3×3/1 | 13×13×512 | 13×13×1024 | 1.595BF |
以一个卷积核为例,权重维度是512×3×3,三个维度分别记作c、y、x,原始排列方式如图2所示的原始日志所示,可以看到:
第一个非零数值“-74”的c、y、x的偏移量分别为1、0、0,为了方便描述,对应的位置索引为[1,0,0],依据压缩规则“weightbin=w<<cshift+ yshift+xshift|coff<<yshift+xshift|yoff<<xshift|xoff<<0”第一个非零值位移后做或运算,变换为-4720,注:上述过程涉及的所有过程结果在图3所示的压缩日志里。
第二个非零数值“-272”的c、y、x的偏移量分别为是0、0、1,对应的位置索引为[0,0,1],根据上述压缩规则变换为-17407;以此类推,可以得到如图3所述的所有压缩结果。由于空间限制,图2和图3虽然省略了部分数据内容,但是不影响本示例的说明。
在同时考虑省略部分数据的情况下,经过验证:这样压缩后,第一个卷积核的权重数量缩减到了348,大约是原来的7.55%。假设每一个卷积核都是一样的压缩率,乘法次数就减少到了1024×348×13×13,大大较少了运算量,提高了运算效率。
本申请的第二实施方式涉及一种卷积神经网络权重压缩装置,其结构如图2所示,该卷积神经网络权重压缩装置包括获取模块、计算模块和压缩模块。
具体的,该获取模块,用于获取该卷积神经网络的所有卷积核。
该计算模块,用于针对任一卷积核的各权重矩阵按照深度从小到大依次排列,并对排列后的多层权重矩阵中除第一个以外的任一非零元素执行以下操作:计算当前非零元素相对于前一个非零元素的深度偏移量,以及计算该当前非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量。
可选地,该计算模块还用于计算该第一个非零元素相对于第一层权重矩阵的深度偏移量作为其深度偏移量,以及计算该第一个非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量作为其高度偏移量和宽度偏移量。
可选地,该计算模块还用于判断该当前非零元素相对于前一个非零元素的深度偏移量是否大于最大可跳跃深度值,若大于该最大可跳跃深度值,则根据该最大可跳跃深度值在该当前非零元素与该前一个非零元素之间写入一个或多个零值,每个零值的深度偏移量为该最大可跳跃深度值,以及该当前非零元素的深度偏移量等于该当前非零元素相对于前一个非零元素的深度偏移量减去该一个或多个零值对应的深度偏移量,以及若不大于该最大可跳跃深度值,则该深度偏移量为该当前非零元素的深度偏移量。
需要指出:可以根据卷积神经网络的卷积核的大小及存储系统的存储数据位数设置进行设定cshift、yshift、xshift的大小。在一个实施例中,该卷积核为K×K卷积核时,xshift=yshift=S,且S是满足2S>K的最小整数,cshift可以根据存储系统的剩余数据位调整;进一步地,例如该卷积神经网络基于32位ARM架构FPGA硬件处理时,使用3×3卷积核,则K=3, xshift=yshift=2,cshift=2。
该压缩模块,用于该根据预设压缩规则对该当前非零元素的值、该深度偏移量、该高度偏移量和该宽度偏移量进行压缩得到对应的压缩结果。
可选地,该压缩模块还用于该压缩模块还用于按照公式weightbin=w<< cshift+yshift+xshift|coff<<yshift+xshift|yoff<<xshift|xoff<<0 对该当前非零元素进行压缩得到对应的压缩结果weightbin,其中w为该当前非零元素的值,coff、yoff、xoff分别为该深度偏移量、该高度偏移量、该宽度偏移量,cshift、yshift、xshift分别为coff、yoff、xoff占用的最大比特数,且2cshift表示所诉最大可跳跃深度值。
该可选地,该压缩模块还用于将所有卷积核的各多层权重矩阵对应的压缩结果写成一维数组的形式进行存储,并把每一个卷积核的起始地址指针存储在该一维数组中,以方便着色器去读取。
第一实施方式是与本实施方式相对应的方法实施方式,第一实施方式中的技术细节可以应用于本实施方式,本实施方式中的技术细节也可以应用于第一实施方式。
下面是对本申请实施方式(实施例)中涉及的部分相关技术的简单介绍:
输入层对卷积层输送数据,由卷积层进行处理。卷积层作为神经网络中运算的核心层,可以增强特征信息,过滤无用信息。卷积层通常采用二维卷积计算对图像进行卷积,在以每个像素为中心的邻域中进行卷积计算,每个神经元对每个像素进行邻域加权求和后输出结果,并加上偏置使得最终结果调整至合适的范围,这个最终的结果称为特征值。卷积层中多个神经元的输出特征值构成特征图像(Feature Map)。
卷积过程中的加权求和会用到卷积核,卷积核也称为滤波器(Filter)。单个卷积核通常是三维矩阵,需要用三个参数来描述,分别是宽度(Width)、高度(Height)和深度(Depth)。深度与输入特征数据的通道数(Channel) 保持一致。
卷积核的值以二维权重矩阵的形式来存放。权重矩阵的数量与卷积核的深度保持一致,即与输入特征图的通道数相等。卷积核针对特征图像上一次滑动的距离称为步长。卷积核一般采用1x1,3x3或者7x7这样的大小的矩阵。每一个卷积核的权重会对输入特征图上的所有卷积窗口共享。同一层卷积核大小一样,但是不同卷积层的卷积核大小可以不同。
卷积核作用的卷积窗口,其对应于特征图的部分称为感受野,是一个矩形区域。
卷积计算之前,会对输入特征图补零(Padding)。针对3x3的卷积核而言,上下左右补一个零,可以保证输出特征图的大小不变。补零可以有效保护输入特征图的边缘特征信息。
下面,定义了所需的一些数据结构:
(1)卷积神经网络的相关数据结构,具体描述如下:
int filter_count,描述使用的滤波器个数。
int filter_total_size,一个滤波器中的权重个数,等同于XYC三个维度的乘积。
int bits,描述用于权重数值的位数,通常小于12。
int bits_dr,描述权重分布的动态范围,可以理解为权重最大最小值的整数位。
int filter_segment_count;描述把每个滤波器均分成几份。
int*filter_base[filter_count];存储每个滤波器的基指针。
int segment_offsets[filter_count][filter_segment_count];描述每个滤波器每个切片的基础位移。
int filter_weights[];描述序列存储的权重。
(2)权重的数据结构,描述如下:
int weight:12;最大为12位的权重数值。
uint xoff:2;描述X位置,需要两位,0、1、2是有效数值,3代表滤波器的结尾处。
uint yoff:2;描述Y位置,如上。
uint coff:2;描述Channel上的相对位置,相对于上一个coff。
(3)偏置的数据结构,描述如下:
int bits;描述偏置的数值位数,通常小于等于16。
int bits_dr;描述偏置的动态范围。
short bias[filter_count];描述偏置,个数等同于滤波器的个数。
需要说明的是,本领域技术人员应当理解,上述卷积神经网络权重压缩装置的实施方式中所示的各模块的实现功能可参照前述卷积神经网络权重压缩方法的相关描述而理解。上述卷积神经网络权重压缩装置的实施方式中所示的各模块的功能可通过运行于处理器上的程序(可执行指令)而实现,也可通过具体的逻辑电路而实现。本申请实施例上述卷积神经网络权重压缩装置如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应地,本申请实施方式还提供一种计算机可读存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本申请的各方法实施方式。计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于,相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
此外,本申请实施方式还提供一种卷积神经网络权重压缩装置,其中包括用于存储计算机可执行指令的存储器,以及,处理器;该处理器用于在执行该存储器中的计算机可执行指令时实现上述各方法实施方式中的步骤。其中,该处理器可以是中央处理单元(Central Processing Unit,简称“CPU”),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,简称“DSP”)、专用集成电路(Application SpecificIntegrated Circuit,简称“ASIC”) 等。前述的存储器可以是只读存储器(read-onlymemory,简称“ROM”)、随机存取存储器(random access memory,简称“RAM”)、快闪存储器(Flash)、硬盘或者固态硬盘等。本发明各实施方式所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
在本申请提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
Claims (10)
1.一种基于ARM架构FPGA硬件系统的卷积神经网络权重压缩方法,其特征在于,包括:
所述系统获取所述卷积神经网络的所有卷积核;
所述系统针对任一卷积核的各权重矩阵按照深度从小到大依次叠层排列,并对排列后的多层权重矩阵中除第一个以外的任一非零元素执行以下操作:
计算当前非零元素相对于前一个非零元素的深度偏移量以及计算所述当前非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量;
根据预设压缩规则对所述当前非零元素的值、所述深度偏移量、所述高度偏移量和所述宽度偏移量进行压缩得到对应的压缩结果,其中,本步骤进一步包括以下子步骤:按照公式weight_bin=w<<cshift+yshift+xshift|coff<<yshift+xshift|yoff<<xshift|xoff<<0对所述当前非零元素进行压缩得到对应的压缩结果,其中w为所述当前非零元素的值,coff、yoff、xoff分别为所述深度偏移量、所述高度偏移量、所述宽度偏移量,cshift、yshift、xshift分别为coff、yoff、xoff占用的最大比特数,且2cshift表示最大可跳跃深度值;
其中,所述卷积核为K×K卷积核时,xshift=yshift=S,且S是满足2S>K的最小整数,cshift根据存储系统的剩余数据位调整。
2.如权利要求1所述的基于ARM架构FPGA硬件系统的卷积神经网络权重压缩方法,其特征在于,所述针对任一卷积核的各权重矩阵按照深度从小到大依次排列之后,还包括:
计算排列后的多层权重矩阵中第一个非零元素相对于第一层权重矩阵的深度偏移量作为其深度偏移量,以及计算该第一个非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量作为其高度偏移量和宽度偏移量。
3.如权利要求1或2所述的基于ARM架构FPGA硬件系统的卷积神经网络权重压缩方法,其特征在于,所述计算当前非零元素相对于前一个非零元素的深度偏移量,进一步包括:
判断所述当前非零元素相对于前一个非零元素的深度偏移量是否大于最大可跳跃深度值;
若大于所述最大可跳跃深度值,则根据所述最大可跳跃深度值在所述当前非零元素与所述前一个非零元素之间写入一个或多个零值,每个零值的深度偏移量为所述最大可跳跃深度值,以及所述当前非零元素的深度偏移量等于所述当前非零元素相对于前一个非零元素的深度偏移量减去所述一个或多个零值对应的深度偏移量;
若不大于所述最大可跳跃深度值,则所述深度偏移量为所述当前非零元素的深度偏移量。
4.如权利要求1所述的基于ARM架构FPGA硬件系统的卷积神经网络权重压缩方法,其特征在于,所述卷积神经网络基于32位ARM架构FPGA硬件处理时,使用3×3卷积核,则K=3,xshift=yshift=2,cshift=2。
5.如权利要求1所述的基于ARM架构FPGA硬件系统的卷积神经网络权重压缩方法,其特征在于,在得到所述卷积神经网络的所有卷积核的各多层权重矩阵对应的压缩结果之后,还包括:
所述系统将所有卷积核的各多层权重矩阵对应的压缩结果写成一维数组的形式进行存储,并把每一个卷积核的起始地址指针存储在所述一维数组中,以方便着色器去读取。
6.一种基于ARM架构FPGA硬件系统的卷积神经网络权重压缩装置,其特征在于,包括:
获取模块,用于获取所述卷积神经网络的所有卷积核;
计算模块,用于针对任一卷积核的各权重矩阵按照深度从小到大依次排列,并对排列后的多层权重矩阵中除第一个以外的任一非零元素执行以下操作:计算当前非零元素相对于前一个非零元素的深度偏移量,以及计算所述当前非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量;
压缩模块,用于根据预设压缩规则对所述当前非零元素的值、所述深度偏移量、所述高度偏移量和所述宽度偏移量进行压缩得到对应的压缩结果,其中,所述压缩模块还用于按照公式weight_bin=w<<cshift+yshift+xshift|coff<<yshift+xshift|yoff<<xshift|xoff<<0对所述当前非零元素进行压缩得到对应的压缩结果weight_bin,其中w为所述当前非零元素的值,coff、yoff、xoff分别为所述深度偏移量、所述高度偏移量、所述宽度偏移量,cshift、yshift、xshift分别为coff、yoff、xoff占用的最大比特数,且2cshift表示最大可跳跃深度值,其中,所述卷积核为K×K卷积核时,xshift=yshift=S,且S是满足2S>K的最小整数,cshift根据存储系统的剩余数据位调整。
7.如权利要求6所述的基于ARM架构FPGA硬件系统的卷积神经网络权重压缩装置,其特征在于,所述计算模块还用于计算该第一个非零元素相对于第一层权重矩阵的深度偏移量作为其深度偏移量,以及计算该第一个非零元素相对于当前层权重矩阵的第一行第一列元素的高度偏移量和宽度偏移量作为其高度偏移量和宽度偏移量。
8.如权利要求6或7所述的基于ARM架构FPGA硬件系统的卷积神经网络权重压缩装置,其特征在于,所述计算模块还用于判断所述当前非零元素相对于前一个非零元素的深度偏移量是否大于最大可跳跃深度值,若大于所述最大可跳跃深度值,则根据所述最大可跳跃深度值在所述当前非零元素与所述前一个非零元素之间写入一个或多个零值,每个零值的深度偏移量为所述最大可跳跃深度值,以及所述当前非零元素的深度偏移量等于所述当前非零元素相对于前一个非零元素的深度偏移量减去所述一个或多个零值对应的深度偏移量,以及若不大于所述最大可跳跃深度值,则所述深度偏移量为所述当前非零元素的深度偏移量。
9.如权利要求6所述的基于ARM架构FPGA硬件系统的卷积神经网络权重压缩装置,其特征在于,所述卷积神经网络基于32位ARM架构FPGA硬件处理时,使用3×3卷积核,则K=3,xshift=yshift=2,cshift=2。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如权利要求1至5中任意一项所述的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911037605.7A CN110796238B (zh) | 2019-10-29 | 2019-10-29 | 基于arm架构fpga硬件系统的卷积神经网络权重压缩方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911037605.7A CN110796238B (zh) | 2019-10-29 | 2019-10-29 | 基于arm架构fpga硬件系统的卷积神经网络权重压缩方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110796238A CN110796238A (zh) | 2020-02-14 |
CN110796238B true CN110796238B (zh) | 2020-12-08 |
Family
ID=69441787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911037605.7A Active CN110796238B (zh) | 2019-10-29 | 2019-10-29 | 基于arm架构fpga硬件系统的卷积神经网络权重压缩方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110796238B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111415004B (zh) * | 2020-03-17 | 2023-11-03 | 阿波罗智联(北京)科技有限公司 | 用于输出信息的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108322221A (zh) * | 2017-01-18 | 2018-07-24 | 华南理工大学 | 一种用于深度卷积神经网络模型压缩的方法 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6869676B2 (ja) * | 2016-09-27 | 2021-05-12 | キヤノン株式会社 | 情報処理装置、情報処理方法及びプログラム |
KR102457463B1 (ko) * | 2017-01-16 | 2022-10-21 | 한국전자통신연구원 | 희소 파라미터를 사용하는 압축 신경망 시스템 및 그것의 설계 방법 |
US11037330B2 (en) * | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
CN108932548A (zh) * | 2018-05-22 | 2018-12-04 | 中国科学技术大学苏州研究院 | 一种基于fpga的稀疏度神经网络加速系统 |
CN109766995A (zh) * | 2018-12-28 | 2019-05-17 | 钟祥博谦信息科技有限公司 | 深度神经网络的压缩方法与装置 |
CN109978137B (zh) * | 2019-03-20 | 2021-03-16 | 厦门美图之家科技有限公司 | 一种卷积神经网络的处理方法 |
CN110378468B (zh) * | 2019-07-08 | 2020-11-20 | 浙江大学 | 一种基于结构化剪枝和低比特量化的神经网络加速器 |
-
2019
- 2019-10-29 CN CN201911037605.7A patent/CN110796238B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108322221A (zh) * | 2017-01-18 | 2018-07-24 | 华南理工大学 | 一种用于深度卷积神经网络模型压缩的方法 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110796238A (zh) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109409518B (zh) | 神经网络模型处理方法、装置及终端 | |
WO2019002934A1 (en) | METHODS AND DEVICES FOR DECODING QUANTUM STATES | |
US7392461B2 (en) | Decoding for algebraic geometric code associated with a fiber product | |
CN111966649B (zh) | 一种高效去重的轻量级在线文件存储方法及装置 | |
CN103150260A (zh) | 重复数据删除方法和装置 | |
CN107735783A (zh) | 用于搜索图像的方法和设备 | |
CN111064471B (zh) | 数据处理方法、装置及电子设备 | |
JP2016536947A (ja) | データブロックを再構築する方法及び装置 | |
CN110796238B (zh) | 基于arm架构fpga硬件系统的卷积神经网络权重压缩方法及其装置 | |
CN113687975A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111106840A (zh) | 一种纠删码解码加速的方法、系统、介质及计算机设备 | |
CN102356554A (zh) | Turbo码数据交织处理方法和用于交织Turbo码数据的交织器 | |
CN114048061A (zh) | 校验块的生成方法及装置 | |
CN114640354A (zh) | 数据压缩方法、装置、电子设备及计算机可读存储介质 | |
CN112131202B (zh) | 一种分布式文件存储和读取方法、终端设备及存储介质 | |
CN111162796B (zh) | 基于ldpc编码器的数据处理方法、装置及终端 | |
CN111079082B (zh) | 一种提高涉及稀疏矩阵计算速率的方法和系统 | |
CN113126879B (zh) | 一种数据存储方法、装置和电子设备 | |
CN111104092A (zh) | 一种快速除法器和除法运算方法 | |
US20220224947A1 (en) | Coding method and related device | |
CN115862653A (zh) | 音频去噪方法、装置、计算机设备和存储介质 | |
CN111107375B (zh) | 一种视频编码方法、解码方法及装置 | |
CN114691414A (zh) | 一种校验块生成方法及一种数据恢复方法 | |
WO2004112307A2 (en) | Multiplication in a finite field | |
CN103092716A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 200434 Room 202, building 5, No. 500, Memorial Road, Hongkou District, Shanghai Patentee after: Shanghai Anlu Information Technology Co.,Ltd. Address before: Floor 4, no.391-393, dongdaming Road, Hongkou District, Shanghai 200080 (centralized registration place) Patentee before: SHANGHAI ANLOGIC INFORMATION TECHNOLOGY Co.,Ltd. |
|
CP03 | Change of name, title or address |