一种用于稀疏神经网络模型的参数解压方法与流程

文档序号:16694535发布日期:2019-01-22 19:22阅读:213来源:国知局
一种用于稀疏神经网络模型的参数解压方法与流程

本发明涉及神经网络技术领域,尤其涉及一种用于稀疏神经网络模型的参数解压方法。



背景技术:

随着深度学习的火热发展,深度学习中的dnn、rnn等模型得到了广泛的应用,这些模型克服了传统技术的障碍,在语音识别、图像识别等很多领域取得了巨大的成就。无论是dnn还是rnn类神经网络,都会有全连接层的计算,全连接层的计算是将权值矩阵和相对应的向量相乘。在训练神经网络时,需要对模型使用合适的压缩算法,主要是对神经网络中的全连接层进行压缩处理,即对权值矩阵进行参数压缩,在不影响其精确度的情况下,可以大大提高神经网络推理的执行速度,在训练结束后,将训练后的参数存在存储器里,在需要的时候再解压成权值矩阵。

典型的模型压缩算法如图1所示,主要由剪枝、量化训练和可变长度编码组成,在初始化训练阶段后,通过移除权重低于阈值的连接实现模型的剪枝,这种剪枝将密集层转化为稀疏层,第一阶段需要学习网络的拓扑结构,并关注重要的连接而移除不重要的连接;量化训练是一个共享权重的过程,令多个连接共享相同的权重;剪枝和量化训练在互不影响的情况下,可以产生很高的压缩率,使得存储空间的需求减少。在训练结束后,将训练好的参数在不影响其精度的情况下,解压为准确的权值矩阵是很有必要的。

目前有很多硬件架构可以直接对模型压缩后的参数进行运算,但需要较复杂的硬件架构设计,实现复杂且成本高,如何避免使用复杂的硬件架构来实现稀疏神经网络模型参数的正确解压是亟待解决的问题,而要实现稀疏神经网络模型参数的正确解压,存在压缩后的参数以何种方式组织存储,以及存储的参数如何在保证其准确性的情况下解压为一个完整的稠密矩阵等问题,且目前通常压缩一次可以压缩多个矩阵,还需要能够实现一次解压多个矩阵。



技术实现要素:

本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现操作简单、解压效率及资源利用率高、应用范围广且灵活的用于稀疏神经网络模型的参数解压方法。

为解决上述技术问题,本发明提出的技术方案为:

一种用于稀疏神经网络模型的参数解压方法,其特征在于,步骤包括:

s1.压缩参数存储:将所需稀疏矩阵存储至指定位置,其中对矩阵中非零元素存储时,存储各非零元素对应的相对索引、权重量化值,所述相对索引用于标识两个非零元素之间零的个数,若两个非零元素之间的零个数大于预设阈值时存储一个零值;

s2.解压缩:获取所需解压的矩阵按照步骤s1存储的数据,提取出其中的所述相对索引以及权重量化值,并将所述相对索引恢复成与元素位置一一对应的绝对索引,根据恢复得到的所述绝对索引确定稠密矩阵中非零元素、零元素的位置以及确定各位置处的权重量化值,根据非零元素的位置重新构建权重向量表,将所述权重向量表中权重值进行恢复后,完成稠密矩阵的解压。

作为本发明的进一步改进,所述步骤s2中包括指令译码及数据获取步骤s21,具体步骤为:通过接收解压指令并进行解码,根据解码信息确定所需解压矩阵的长度、源地址以及存储解压后权值矩阵的目的地址,根据得到的所述源地址取出所需解压矩阵所存储的数据,提取出其中的所述相对索引。

作为本发明的进一步改进,所述步骤s2中包括将索引恢复步骤s22,具体步骤为:通过累加的方式将所述相对索引恢复成绝对索引。

作为本发明的进一步改进,所述步骤s2中包括重建权重量化表步骤s23,具体步骤为:根据恢复得到的每个所述绝对索引确定非零元素的位置,由各非零元素的位置重建权重量化表,所述权重量化表中非零元素对应位置为有效权重值。

作为本发明的进一步改进,所述步骤s2中包括反量化步骤s24,具体步骤为:将所述权重量化表中有效权重值进行恢复,得到完整的稠密矩阵。

作为本发明的进一步改进,所述步骤s24中具体通过查找表将所述权重量化表中有效权重值进行恢复。

作为本发明的进一步改进,还包括将多个所需矩阵按照跨边界的方式进行存储,并配置边界标志以标识跨行存储的状态,所述边界标志包括标识向量中没有矩阵边界的第一标志、标识向量中有矩阵边界,并且不在向量结尾处的第二标志、标识向量中有矩阵边界,并且在向量结尾处的第三标志,以及标识向量中有矩阵边界,并且抛弃边界之后的数据的第四标志。

作为本发明的进一步改进,执行多个矩阵解压时,所述步骤s2中将所述相对索引恢复成与元素位置一一对应的绝对索引的具体步骤为:

将存储的所有所述相对索引转化为绝对索引;

当获取到所述边界标志时进行判断,如果为所述第二标志、第四标志时,根据所述绝对索引判断矩阵边界,将相邻的所述绝对索引的高两位进行异或,若结果为1,则判定前一个位置为第一个矩阵的边界位置,后一个位置为下一个矩阵的开始位置,得到矩阵边界;

产生与各相对索引一一对应的索引有效信号以及判断矩阵是否结束的信号,并根据所述边界标志设置所述索引有效信号、矩阵是否结束的信号;

输出所述索引有效信号、绝对索引以及矩阵是否结束的信号。

作为本发明的进一步改进,所述根据所述边界标志设置所述索引有效信号、矩阵是否结束的信号的具体步骤为:

当所述边界标志为所述第一标志时,判定没有矩阵边界,且矩阵也未结束,将各个所述有效索引信号赋值为1,且所述矩阵未结束信号设置为0;

当所述边界标志为所述第三标志时,判定矩阵边界在向量末尾,将各个所述有效索引信号赋值为1,且将所述矩阵结束信号也设置为1;

当所述边界标志为所述第二标志时,判定矩阵边界在向量的中央,根据判断的所述矩阵边界分两拍进行,第一拍将所述矩阵边界前的所述索引有效信号设置为1,且所述矩阵结束信号设置为1,第二拍将所述矩阵边界后的所述索引有效信号设置为1,且所述矩阵结束信号设置为0;

当所述边界标志为所述第四标志时,判定已经到了向量的最后一行,根据判断到的最后一个矩阵的边界,将所述矩阵边界内的索引有效信号设置为1,抛弃不需要的数据。

作为本发明的进一步改进,所述步骤s2中将所述权重向量表中权重值进行恢复的具体步骤为:

根据所述绝对索引和所述索引有效信号,将权重量化值分配到对应的位置;

判断是否到达矩阵边界,如果矩阵未到达边界时,寄存相应位置的权重量化值,若矩阵到达边界,将矩阵的权重量化表输出。

与现有技术相比,本发明的优点在于:

1、本发明通过将压缩参数按照以将非零元素对应的相对索引、权重量化值的存储的方式,可以减少存储参数的存储空间,再通过将相对索引恢复成绝对索引以及基于绝对索引恢复权重向量表,最终可以解压得到正确的权值矩阵,在模型压缩完之后,无需硬件设计即可实现对压缩模型的解压处理,完成权值矩阵的重建,解压速度快、高效性且实现灵活。

2、本发明支持模型压缩中的稀疏矩阵和权重共享,不仅支持rnn类模型压缩算法的解压,也能够支持dnn类模型压缩的解压,具有很好的灵活性和可扩展性,且实现简单灵活,对解压的权值矩阵的维度没有要求。

3、本发明通过将多个压缩后矩阵进行连续存储,矩阵之间设置边界标志,当需要解压多个矩阵时,仅需发送对应的解压指令,由边界标志确定各矩阵之间的边界状态,则可以实现一次正确解压多个权值矩阵,有效提高解压的效率和速度,在每一行spv中,仅需2位的矩阵边界标志,所需要额外设置的辅助数据少,节约了存储空间和访存带宽,且通过连续存储压缩矩阵,可以进一步节约存储空间和访存带宽。解压矩阵的最大数量由spv中存放的参数数量和译码的长度确定。

附图说明

图1是典型的模型压缩算法的实现原理示意图。

图2是本实施例实现稀疏神经网络模型的参数解压的实现原理示意图。

图3是本实施例用于稀疏神经网络模型的参数解压方法的实现流程示意图。

图4是本实施例将压缩后的矩阵中非零元素存储在spv的实现原理示意图。

图5是本发明具体应用实施例中对三个待解压矩阵进行跨边界存储为spv跨边界存放的原理示意图。

图6是本实施例多矩阵解压时绝对索引恢复的具体实现流程示意图。

图7是本实施例多矩阵解压时重建权重量化表的实现流程示意图。

图8是本实施例中反量化的实现流程示意图。

具体实施方式

以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。

如图2、3所示,本实施例用于稀疏神经网络模型的参数解压方法,步骤包括:

s1.压缩参数存储:将所需稀疏矩阵存储至指定位置,其中对矩阵中非零元素存储时,存储各非零元素对应的相对索引、权重量化值,相对索引用于标识两个非零元素之间零的个数,若两个非零元素之间的零个数大于预设阈值时存储一个零值;

s2.解压缩:获取所需解压的矩阵按照步骤s1所存储的数据,提取出其中的相对索引以及权重量化值,并将相对索引恢复成与元素位置一一对应的绝对索引,根据恢复得到的绝对索引确定稠密矩阵中非零元素、零元素的位置以及确定各位置处的权重量化值,根据非零元素的位置重新构建权重向量表,将权重向量表中权重值进行恢复后,完成稠密矩阵的解压,该稠密矩阵也即是神经网络中的权值矩阵。

本实施例通过上述方法,在模型压缩完之后,无需硬件设计即可实现对压缩模型的解压处理,完成权值矩阵的重建,通过将压缩参数按照以将非零元素对应的相对索引、权重量化值的存储的方式,可以减少存储参数的存储空间,再通过将相对索引恢复成绝对索引以及基于绝对索引恢复权重向量表,最终可以解压得到正确的权值矩阵。

本实施例具体将压缩后的参数存储在向量存储器spv中,spv的宽度为32个字,解压后的权值矩阵存储到存储器spm中,spm宽度为1024个字,通过复用向量存储器spv存储压缩后的矩阵,可以使得硬件资源利用率高。本实施例上述解压方法支持的压缩技术有两种:稀疏矩阵和权值共享,其中对稀疏矩阵中非零元素的存储,通过存储一个相对索引和一个权值量化值,如果两个非零元素之间的零的个数大于预设阈值(具体取15),则存储一个零值,由相对索引表示在非零元素之前的零的个数;对于量化值的确定,由于压缩算法中的权重共享,权重量化值从16bit降低为5bit,因此只需要9bit存储一个非零元素。压缩后的参数按照上述方式存储在向量存储器spv中,一个向量存储器spv地址具体能够存储56个非零元素。

本实施例上述解压方法,支持模型压缩中的稀疏矩阵和权重共享,不仅支持rnn类模型压缩算法的解压,也能够支持dnn类模型压缩的解压,具有很好的灵活性和可扩展性,且实现简单灵活,对解压的权值矩阵的维度没有要求。

如图3所示,本实施例实现解压时,发送解压指令,当接收到解压指令后,开始对存储在spv中的参数进行包括索引恢复、确定权重量化表以及反量化操作的解压处理,将解压后的权值矩阵存储在存储器spm中。

本实施例步骤s2中包括指令译码及数据获取步骤s21,具体步骤为:通过接收解压指令并进行解码,根据解码信息确定所需解压矩阵的长度、源地址以及存储解压后权值矩阵的目的地址,根据得到的源地址取出所需解压矩阵所存储的数据,提取出其中的相对索引以及权重量化值。

本实施例步骤s2中包括将相对索引恢复成绝对索引的步骤s22,步骤s22具体通过累加的方式将相对索引恢复成绝对索引。

本实施例步骤s2中包括重新构建权重向量表步骤s23,具体步骤为:根据恢复得到的每个绝对索引确定非零元素的位置,由各非零元素的位置重建权重量化表,权重量化表中非零元素对应位置为有效权重值。具体在权重量化表中各位置处,若有对应的绝对索引,即对应为非零元素所在位置,将该位置赋值为对应的权重量化值,否则将该位置的权重量化值赋值为0。

本实施例步骤s2中包括反量化步骤s24,具体步骤为:将权重量化表中有效权重值进行恢复,得到完整的稠密矩阵,具体通过查找表将权重量化表中有效权重值进行恢复。

本实施例上述实现解压缩的详细流程包括:

s21.指令译码:根据所需解压的矩阵发送不同的解压指令,解压指令中包含spv源地址、spm的目的地址、解压spv的向量的长度len;接收到解压指令后进行译码,确定解压向量的长度、解压的源地址和存储权值矩阵的目的地址,。根据源地址从存储器spv中取出存储的参数,提取相对索引以及权重量化值;

s22.索引恢复:通过累加和的方法将相对索引恢复成绝对索引,根据绝对索引确定稠密矩阵中零元素和非零元素的位置,输出绝对索引和权重量化值;

s23.重新构建权重向量表:权重量化表中通过每个绝对索引确定非零元素的位置,根据非零元素的绝对索引确立相应非零元素位置所对应的权重量化值,若有对应的绝对索引,将该位置赋予相应的权重量化值,若无对应的绝对索引,则该位置的权重量化值应为0,重新构建得到矩阵的权重量化表;

s24.反量化:通过查找表将权重量化表所对应的有效权重值进行恢复,得到一个完整的稠密矩阵。

按照上述方法每解压完一个完整的稠密矩阵后,按照指令译码的目的地址,以将稠密矩阵存储在相应的spm中目的地址处。

本实施例中,将多个所需矩阵按照跨边界的方式进行存储,并配置边界标志以标识跨行存储的状态,由不同的边界标志代表着不同的跨行存储的状况,边界标志包括标识向量中没有矩阵边界的第一标志、标识向量中有矩阵边界,并且不在向量结尾处的第二标志、标识向量中有矩阵边界,并且在向量结尾处的第三标志,以及标识向量中有矩阵边界,并且抛弃边界之后的数据的第四标志。一个spv地址可以存储56个非零元素,压缩后权重矩阵的元素通常在一行之内不能全部存储完,会存在spv跨行存储的情况。

在进行模型压缩时,一次不会只压缩一个权值矩阵,本实施例通过将多个压缩后矩阵进行连续存储,矩阵之间设置边界标志,当需要解压多个矩阵时,仅需发送对应的解压指令,对各矩阵分别使用上述方法进行解压,由边界标志确定各矩阵之间的边界状态,则可以实现一次正确解压多个权值矩阵,有效提高解压的效率和速度,在每一行spv中,仅需2位的矩阵边界标志,所需要额外设置的辅助数据少,节约了存储空间和访存带宽,且通过连续存储压缩矩阵,可以进一步节约存储空间和访存带宽。解压矩阵的最大数量由spv中存放的参数数量和译码的长度确定。也可以将压缩后的参数按照一定方式跨矩阵边界存储在spv中,存储时不需要有矩阵边界区分,可以进一步节省大量的存储空间,仅需发送相应的指令,就可以将spv中地址相对应的参数取出,解压后得到权值矩阵。

本实施例将压缩后的矩阵中非零元素存放在spv如图4所示,其中低位存放压缩后非零元素的权重表,具体为5bit,高位存放相对索引,具体为4bit,最高两位存放边界标志,其中一个spv地址可以存储56个非零元素,压缩后权重矩阵的元素通常在一行之内不能全部存储完,会存在跨行存储的情况;spv中第29个元素的索引为绝对索引,且由于第29个元素索引为绝对索引,0-28和30-56这两部分的绝对索引的恢复可以并行进行。

如图5所示,本发明具体应用实施例中对三个待解压矩阵进行跨边界存储为spv跨边界存放,由不同的边界标志代表着不同的跨行存储的状况,其中第一标志00指该向量中没有矩阵边界;第二标志01指该向量中有矩阵边界,并且不在向量结尾处;第三标志10指该向量中有矩阵边界,并且在向量结尾处;第四标志11指该向量中有矩阵边界,并且抛弃边界之后的数据。

如图6所示,本实施例执行多个矩阵解压时,步骤s2中将相对索引恢复成与元素位置一一对应的绝对索引的具体步骤为:

①通过累加将存储的所有相对索引(具体为56个)转化为绝对索引,即为逐项相加得到绝对索引;本实施例将绝对索引多设置一位以便于处理矩阵边界;

②产生权重量化表;

③对spv中各矩阵之间配置边界标志;获取spv中参数时,当获取到边界标志时进行判断,如果为第二标志(01)、第四标志(11)时,转入执行步骤④,否则执行步骤⑤;

④根据绝对索引判断矩阵边界,将相邻的绝对索引的高两位进行异或,若结果为1,则判定前一个位置为第一个矩阵的边界位置,后一个位置为下一个矩阵的开始位置,得到矩阵边界;

⑤产生与各相对索引一一对应的索引有效信号(具体为56个)以及判断矩阵是否结束的信号,并根据边界标志设置索引有效信号、矩阵是否结束的信号;

⑥输出索引有效信号、绝对索引、权重向量表以及矩阵是否结束的信号。

本实施例上述步骤⑤中根据边界标志设置索引有效信号、矩阵是否结束的信号的具体步骤为:

5.1)当边界标志为第一标志(00)时,判定没有矩阵边界,且矩阵也未结束,将56个有效索引信号赋值为1,且矩阵未结束信号设置为0;

5.2)当边界标志为第三标志(10)时,判定矩阵边界在向量末尾,将56个有效索引信号赋值为1,且将矩阵结束信号也设置为1;

5.3)当边界标志为第二标志(01)时,判定矩阵边界在向量的中央,根据判断的矩阵边界分两拍进行,第一拍将矩阵边界前的索引有效信号设置为1,且矩阵结束信号设置为1,第二拍将矩阵边界后的索引有效信号设置为1,且矩阵结束信号设置为0;

5.4)当边界标志为第四标志(11)时,判定已经到了向量的最后一行,根据判断到的最后一个矩阵的边界,将矩阵边界内的索引有效信号设置为1,抛弃不需要的数据。

如图7所示,本实施例执行多个矩阵解压时,步骤s2中将权重向量表中权重值进行恢复的具体步骤为:

①根据绝对索引和索引有效信号,将权重量化值分配到对应的位置;

②判断是否到达矩阵边界,如果矩阵未到达边界时,寄存相应位置的权重量化值,若矩阵到达边界,将矩阵的权重量化表输出。

如图8所示,本实施例中执行反量化时,通过查找表的方式将每个权重量化值对应的有效权重恢复,判断矩阵的相应位置是否有对应的权重值,如果有,将权值恢复,如果无,将对应的位置赋值为0,最终得到一个完整的稠密矩阵。

通过上述解压方法,可以针对神经网络模型压缩算法进行解压处理,对压缩后数据按照上述方式进行存储组织方式,可以减少了存储参数的存储空间,且可一次解压多个矩阵,支持权重共享和稀疏矩阵,解压速度快、高效性且灵活。

上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

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