三值神经网络稀疏性权重的压缩计算单元

文档序号:515583 发布日期:2021-05-28 浏览:1次 >En<

阅读说明:本技术 三值神经网络稀疏性权重的压缩计算单元 (Compression calculation unit for three-value neural network sparsity weight ) 是由 刘波 杨海川 钱俊逸 王梓羽 蔡浩 龚宇 杨军 于 2021-01-12 设计创作,主要内容包括:本发明公开了一种三值神经网络稀疏性权重的压缩计算单元,涉及神经网络硬件加速领域,包括依次连接的权重近似处理单元、哈夫曼编码单元、权重整合单元、序列检测译码模块和计算优化配置模块;本发明的近似压缩计算单元,通过对权重进行近似处理获得更高的稀疏性,通过对网络中大量重复出现的权重进行压缩编码,通过卷积计算结果的复用以及针对三值神经网络近似计算降低计算工作量,从而减少系统整体面积与功耗。(The invention discloses a compression calculation unit for the sparsity weight of a ternary neural network, which relates to the field of neural network hardware acceleration and comprises a weight approximation processing unit, a Huffman coding unit, a weight integration unit, a sequence detection decoding module and a calculation optimization configuration module which are sequentially connected; the approximate compression calculation unit obtains higher sparsity by carrying out approximate processing on the weights, reduces calculation workload by carrying out compression coding on a large number of repeated weights in the network, and reduces the whole area and power consumption of the system by multiplexing convolution calculation results and carrying out approximate calculation aiming at the ternary neural network.)

三值神经网络稀疏性权重的压缩计算单元

技术领域

本发明涉及神经网络硬件加速领域,尤其是三值神经网络稀疏性权重的压缩计算单元。

背景技术

目前在关键词识别的技术领域中深度神经网络、循环神经网络、卷积神经网络是几个比较主流的方向。其中卷积神经网络较为主流,这是因为卷积神经网络的特性与语音关键词识别的需求较为符合。在语音音频中,想要提高语音识别率就需要克服语音信号中各种各样的干扰。而卷积神经网络能提供时间和空间上的不变性,可以利用卷积的不变性来克服语音信号本身的多样性。

卷积神经网络存在较大的问题是,乘法操作过多导致数据计算量过大。于是又有了二值化权重卷积神经网络,它将卷积神经网络中的权重量化为1bit,这样可以将网络中的乘法操作替换为反向和移位操作,这在硬件实现上带来了巨大的便利性,相比于乘法操作将节省许多执行周期与功耗。而二值化权重卷积神经网络也因为权重量化过多导致对于多种场景以及高噪声环境下的适应性不好。因此可以又有三值化权重神经网络,它在二值权重神经网络中增加了0权重,带来了权重数据信息量的提升可以提高对于多种场景以及高噪声环境下的适应性。并且新增加的0权重也不会带来乘法操作,但也带来了新的问题,就是三值化权重神经网络的权重存储至少需要2bit,比二值化的权重多了一倍。

发明内容

发明目的:本发明是为了解决三值化权重神经网络中权重存储所需要的存储空间过大以及计算单元中对于三值化权重神经网络的优化问题。本发明对三值神经网络稀疏性权重的压缩计算单元,主要用于对三值化权重神经网络的权重进行压缩存储,以降低整体存储单元的静态功耗,并且通过对计算单元的优化,采用减少数据读取、近似存储等方法来减少功耗,以降低计算单元的动态功耗。

本发明的三值神经网络稀疏性权重的压缩计算单元,包括权重近似处理单元和计算优化配置模块;权重近似处理单元的输出端连接计算优化配置模块的输入端。

所述的权重近似处理单元用于对权重矩阵进行近似处理,形成近似权重矩阵;输入待处理数据矩阵和处理后的权重矩阵到计算优化配置模块,所述计算优化配置模块包括近似计算单元,近似计算单元对输入的权重矩阵进行读取,读取到权重矩阵中权重数据是‘0’时,不再读取输入待处理数据矩阵中的数据,在对应的计算结果存储单元中直接写‘0’;读取到权重是‘1’时,读取输入待处理数据矩阵中的数据,在对应的计算结果存储单元中直接写待处理数据矩阵中对应的数据;读取到权重是‘-1’时,读取输入待处理数据矩阵中的数据,对待处理数据矩阵中对应的数据取反后写到对应的存储单元中。所述近似计算单元用于减少数据读取次数和加法器的翻转次数来实现跳0操作,在对于三值权重中的负值进行计算中采用近似计算以减少计算功耗和信号翻转。

优选的,在权重近似处理单元和计算优化配置模块之间还依次连接有哈夫曼编码单元、权重整合单元和序列检测译码模块;权重近似处理单元的输出端连接哈夫曼编码单元的输入端,序列检测译码模块的输出端连接计算优化配置模块的输入端;权重近似处理单元的输出端连接哈夫曼编码单元的输入端,序列检测译码模块的输出端连接计算优化配置模块的输入端;所述的权重近似处理单元用于对权重矩阵进行近似处理,形成近似权重矩阵,具有更高的稀疏性;所述哈夫曼编码单元用于对近似权重矩阵中的重复权重数据进行哈夫曼编码,所述的哈夫曼编码是属于对重复权重数据的不定长编码。

权重整合单元用于对重复权重数据的哈夫曼编码不定长编码结果与非重复权重数据的定长编码结果整合,形成编码权重矩阵,存储在序列检测译码模块中;所述序列检测译码模块用于对编码权重矩阵进行译码恢复,将所编的定长与不定长的编码进行解码。

优选的,在权重近似处理单元中,如果权重数据出现第一连续权重数据、间隔权重数据和第二权重数据的依次排列的方式,则将间隔权重数据修改为与第一连续权重数据相同大小的数据;得到近似权重矩阵;以提高权重的稀疏性。

所述第一连续权重数据是指连续三个及以上相同权重数据,间隔权重数据是指两个及以下不同于连续权重数据的数据,所述第二连续权重数据是指连续三个及以上相同权重数据,第一连续权重数据和第二连续权重数据的数据大小相同、数量可以不同。

所述的哈夫曼编码单元,用于对相同权重数据的重复次数进行哈夫曼编码,从而减少权重的整体位宽。具体方法为:设待编码重复出现的权重有5种符号u1、u2、u3、u4、u5,分别代表重复出现相同权重的次数。其对应概率为p1=0.4、p2=0.1、p3=p4=0.2、p5=0.1,假设这5种类型共出现了10次,则代表u1类型重复出现4次,u2类型重复出现1次,u3、u4类型重复出现2次,u5类型重复出现1次。首先,将符号按照概率由大到小排序。编码时,从最小概率的两个符号开始,选上支路为0,下支路为1。再将已编码的两支路的概率合并,并重新排序。多次重复使用上述方法直至合并概率归一时为止。由于哈夫曼码的码字(各符号的代码)是异前置码字,即任一码字不会是另一码字的前面部分,这使各码字可以连在一起传送,中间不需另加隔离符号即为唯一可译码。

优选的,所述序列检测译码模块包括查找表、标志判断模块和序列检测模块;在哈夫曼编码单元中对近似处理后的权重矩阵进行哈夫曼编码,将编码规则记录在查找表中,标志判断模块用于记录编码标志位和对编码码标志位进行判断,序列检验模块用于对输入的编码权重矩阵进行扫描。

优选的,序列检测译码模块对输入的编码权重矩阵进行译码包括如下步骤:

步骤201:将编码权重矩阵中未使用的‘10’作为编码标志位,序列检测模块对权重矩阵中的权重数据进行扫描,通过标志判断模块将扫描到的权重数据与记录编码标志位进行对比,当序列检测模块扫描到编码标志位时进入哈夫曼译码状态。

步骤202:进入哈夫曼译码状态后,序列检测模块扫描到的编码标志位后的2bit数据代表之后译码的权重数据。

步骤203:使用序列检测模块与查找表相结合,继续逐位向后扫描,当已扫描的数据和查找表中的编码数据相同时译码,停止扫描,结束哈夫曼译码状态,进入普通译码状态,所述普通译码状态是指使用查找表进行译码。

优选的,计算优化配置模块包括计算结果复用单元。

所述的计算结果复用单元用于判断输入的权重矩阵中是否存在复用单元,如果判断当前权重矩阵中存在复用单元,则优先使用计算结果复用单元对输入的待处理数据矩阵及权重矩阵进行卷积运算,可以通过复用单元来减少网络的运算量。如果判断当前权重矩阵中不存在复用单元,则采用近似计算单元对输入的待处理数据矩阵及权重矩阵进行卷积运算。

所述的复用单元是指权重矩阵中存在至少两行相同的权重数据,每行相同的权重数据均被称为复用单元。

在计算结果复用单元中,输入待处理数据矩阵与权重矩阵做卷积运算时,待处理数据矩阵中同一行数据与权重矩阵中的复用单元只做一次运算,并将运算结果存在缓存中,当输入数据滑动后,同一行的输入数据与权重矩阵的复用单元不再进行卷积运算,而是直接调用缓存中的计算结果,记录到输入数据滑动后与权重矩阵的运算结果中。

有益效果:本发明的近似压缩计算单元,通过对权重进行近似处理获得更高的稀疏性,通过对网络中大量重复出现的权重进行压缩编码,通过卷积计算结果的复用以及针对三值神经网络近似计算降低计算工作量,从而减少系统整体面积与功耗。

附图说明

图1为权重近似压缩编码方法流程图;

图2为权重近似编码方法示意图;

图3为权重压缩编码方法示意图;

图4为序列检测译码模块电路图;

图5为计算结果复用单元示意方法;

图6为三值神经网络近似计算单元流程图。

具体实施方式

下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

三值神经网络稀疏性权重的压缩计算单元,包括依次连接的权重近似处理单元、哈夫曼编码单元、权重整合单元、序列检测译码模块、计算优化配置模块;

如图2所示,在权重近似处理单元中对权重矩阵进行近似处理的方法,包括如下步骤:

步骤101:遍历权重矩阵,如果出现第一连续权重数据、间隔权重数据和第二权重数据的依次排列的方式,所述第一连续权重数据是指连续三个及以上相同权重数据,间隔权重数据是指两个及以下不同于连续权重数据的数据,所述第二连续权重数据是指连续三个及以上相同权重数据,第一连续权重数据和第二连续权重数据的数据大小相同、数量可以不同;进入步骤102。从图2中可以看出第一连续权重数据为5个‘-1’,间隔数据为‘0’和‘1’,第二连续权重数据为3个‘-1’。

步骤102:将间隔权重数据修改为与第一连续权重数据相同大小的数据,也就是修改为与第二连续权重数据相同大小的数据,以提高权重的稀疏性。图2中将间隔权重数据‘0’、‘1’近似为两个‘-1’。

步骤103:得到近似权重矩阵,并将其保存。

具体的,以三值网络的权重矩阵为例,输入权重近似处理单元中,整体流程如图1所示。输入权重矩阵,读取权重数据,判断权重矩阵中是否存在第一连续权重数据、间隔权重数据和第二权重数据的形式,如果存在,就判定为可以进行可近似编码,进行权重近似编码,形成近似经过步骤101-103得到近似权重矩阵。

以具体的权重矩阵数据为例进行说明,首先通过修改少量权重数据,来提高权重的稀疏性,便于在哈夫曼编码后,数据的压缩度可以更高,所述三值网络的权重矩阵是:

对于上述权重矩阵具体操作如下:

遍历权重矩阵,遍历发现出现有3个连续的‘0’和3个连续的‘0’中间间隔有1个‘1’的情况,根据设定的近似条件,将中间间隔的‘1’修改成‘0’。

同时遍历发现出现有3个连续的‘1’和3个连续的‘1’中间间隔有‘0’和‘-1’的情况,根据设定的近似条件,将中间间隔的‘-1’和‘0’都修改成‘1’。

遍历结束发现再无同种情况,权重近似处理单元运行结束,权重矩阵修改为近似权重矩阵:

在权重矩阵在权重近似处理单元中处理好之后,对近似处理后的权重矩阵进行是否可压缩的判断,当存在重复权重数据时,输入哈夫曼编码单元,进行哈夫曼不定长编码压缩,如果没有重复权重数据时,仅使用定长编码,示意方法如图3所示。

以上述近似权重矩阵为例,进行哈夫曼不定长编码压缩:

对数据遍历可得如下信息:

出现连续6个‘0’、3个‘0’、7个‘0’、6个‘1’、4个‘1’、8个‘1’、3个‘-1’的情况有一次,出现连续4个‘-1’的情况有两次。

本实施例中近似权重矩阵经哈夫曼编码单元,进行哈夫曼编码压缩,形成的编码规则为:

6个‘0’:101;

3个‘0’:100;

7个‘0’:111;

6个‘1’:110;

4个‘1’:0001;

8个‘1’:0000;

3个‘-1’:001;

4个‘-1’:01;

权重矩阵经权重近似处理单元近似处理、哈夫曼编码单元压缩处理后,通过权重整合单元将重复权重的哈夫曼编码不定长编码结果与非重复权重的定长编码结果整合为一串码,形成编码权重矩阵存储在序列检测译码模块中。

当神经网络开始运算时,序列检测译码模块对所编的定长与不定长的编码进行解码,序列检测译码模块电路如图4所示,包括查找表、标志判断模块和序列检验模块,查找表用于记载哈夫曼编码的编码规则,标志判断模块用于记录编码标志位和判断编码标志位,序列检验模块用于对输入的编码权重矩阵进行扫描。

序列检测译码模块对输入的编码权重矩阵进行译码的方法,包括如下步骤:

步骤201:如图3所示,将三值神经网络权重数据中未使用的‘10’作为编码标志位,序列检测模块对编码权重矩阵中的权重数据进行扫描,通过标志判断模块将扫描到的权重数据与记录编码标志位进行对比,当序列检测模块检测到‘10’时进入哈夫曼译码状态。

步骤202:当进入译码状态后,序列检测模块检测到的2bit数据代表之后译码的权重数据,例如图中‘11’代表对‘-1’出现的次数进行译码。

步骤203:使用序列检测模块与查找表相结合,逐位向后扫描,当已扫描码可以译码时停止扫描,结束哈夫曼译码状态,进入普通译码状态。例如图中‘100’代表‘-1’出现5次。

以前述的编码规则为例,前述的编码规则是:

6个‘0’:101;

3个‘0’:100;

7个‘0’:111;

6个‘1’:110;

4个‘1’:0001;

8个‘1’:0000;

3个‘-1’:001;

4个‘-1’:01;

检测出一个‘0’,无法解码;向后检测出一个‘1’,根据查找表解得,‘01’为4个‘-1’;检测出一个‘1’,无法解码;向后检测出一个‘1’,无法解码;再向后检测出一个‘0’,根据查找表解得,‘110’为6个‘1’。

译码后的权重矩阵,进入三值网络的运算环节。权重矩阵需要先输入三值化权重神经网络计算结果复用单元,判断当前是否可以计算结果复用单元来减少网络的运算量,示意方法如图5所示。设输入待处理数据矩阵形式上为具体为权重矩阵为3*3矩阵

计算结果复用单元判断出权重矩阵中存在两行复用单元(111),采用计算结果复用单元对输入的待处理数据矩阵和权重矩阵进行卷积运算。

将权重矩阵对准第一组矩阵进行卷积运算,运算出第一组结果,在结果存储单元中写入运算结果:第一组运算结束。并将(0.5 0.25 1.25)与复用单元(111)的运算结果‘0.5 0.25 1.25’写入缓存中。

权重矩阵向下滑动一行对准第二组矩阵,第二组矩阵为:权重矩阵与第二组矩阵进行卷积运算,得到第二组结果根据之前复用单元判断的结果,第二组结果数据中的第一行不经过具体计算,从缓存中直接调取(0.5 0.25 1.25)与复用计算单元(1 1 1)的运算结果‘0.50.25 1.25’,写入第二组结果的第一行,剩下的存储单元则在其余的数据与权重具体计算后再写入存储单元。在权重不变的情况下,所有的输入数据运算结果的第一行都直接读取上一组运算结果的第二行数据,减少了此类权重运算三分之一的计算量。

复用单元判断无法复用时,则将待处理数据矩阵和权重矩阵输入三值神经网络近似计算单元计算,流程如图6所示。读取到权重是‘0’的情况时,不读取输入数据,在对应的存储单元中直接写‘0’;读取到权重是‘1’时,把输入数据写到对应的存储单元;读取到权重是‘-1’时,采取近似手段,仅对数据进行取反操作不加‘1’,取反结果写到对应的存储单元;完成所有的网络运算,输出最终结果。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据传输电路、显示设备和数据传输方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类