一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于ReRAM的权值矩阵处理方法及装置与流程

2022-03-16 00:27:06 来源:中国专利 TAG:

一种基于reram的权值矩阵处理方法及装置
技术领域
1.本技术涉及神经网络领域,尤其涉及一种基于reram的权值矩阵处理方法及装置。


背景技术:

2.神经网络由于模型本身尺寸较大,而神经网络的模型尺寸的大小通常受到神经网络的权值矩阵的大小的影响,常采用剪枝算法对神经网络的权值矩阵进行剪枝操作以删除权值矩阵中冗余的元素(例如,小于预设阈值的权重),可以实现在保证网络精度不下降的情况下减小网络的模型尺寸达到压缩模型的效果,以加速网络的推理过程。
3.常采用可变电阻式随机存储器(resistive random-access memory,reram)存储神经网络的权值矩阵,相关技术中对权值矩阵进行剪枝时未考虑reram激活行列数的硬件限制,导致经剪枝后的权值矩阵无法与基于reram的加速器匹配应用。


技术实现要素:

4.本技术公开了一种基于reram的权值矩阵处理方法及装置,能够实现压缩矩阵与可变存储器reram的匹配应用,提高了reram的利用效率,有助于加速神经网络的运算。
5.第一方面,本技术提供了一种基于reram的权值矩阵处理方法,该方法包括:获取忆阻器reram的激活行数和激活列数;对权值矩阵进行非结构剪枝和压缩,获得压缩矩阵块,压缩矩阵块的行数小于等于激活行数,压缩矩阵块的列数小于等于激活列数,压缩矩阵块中同一行的每个权值对应的权值矩阵的行位置相同,压缩矩阵块中同一列的每个权值对应的权值矩阵的列位置相同。
6.上述方法中,对权值矩阵进行非结构剪枝和压缩时考虑到忆阻器reram的激活行数和激活列数,使得获得的压缩矩阵块的行数小于等于reram的激活行数以及压缩矩阵块的列数小于等于reram的激活列数,压缩矩阵块可与基于reram的加速器匹配应用,提高了reram的利用效率,有效减小了权值矩阵的尺寸,有助于加速神经网络的运算。
7.在第一方面的一种可能的实现方式中,在压缩矩阵块的数量为多个时,对权值矩阵进行非结构剪枝和压缩,获得压缩矩阵块,包括:对权值矩阵进行非结构剪枝获得稀疏矩阵,稀疏矩阵中每列的非零权值的个数与压缩矩阵块的行数相同;对稀疏矩阵的各列进行处理,获得掩码矩阵,掩码矩阵由0和1组成,掩码矩阵中的各列属于多类,多类中的每类包括的列的数量相同,属于同一类的各列中非零元素的行位置相同;根据掩码矩阵训练权值矩阵,获得目标矩阵;目标矩阵在掩码矩阵的非零元素对应的位置上有非零权值;提取目标矩阵中属于每类中的各列的非零权值,获得多个压缩矩阵块。
8.实施上述实现方式,对权值矩阵进行非结构剪枝获得稀疏矩阵,根据稀疏矩阵的列方向上的非零权值的行位置分布的相似度对稀疏矩阵的各列进行分类等处理获得掩码矩阵,且掩码矩阵中的各列属于多类,每类包括的列的数量相同,且属于同一类的各列的非零元素具有相同的行位置分布。基于掩码矩阵训练权值矩阵得到目标矩阵,掩码矩阵指示了目标矩阵中权值的位置分布,因此,目标矩阵的各列与掩码矩阵的各列具有相同的特性。
从行列方向两个维度对目标矩阵进行列重排和行压缩,即可获得多个压缩矩阵块,提高了权值矩阵的压缩率,减小了权值矩阵的尺寸,且可利用分时复用的技术实现多个压缩矩阵块在基于reram的加速器上的应用,因此,由此方法获得的压缩矩阵块能较好地适应reram的硬件限制。
9.在第一方面的一种可能的实现方式中,对稀疏矩阵的各列进行处理后,还获得行索引信息和列索引信息,列索引信息包括每类中的各列在掩码矩阵中的列位置;行索引信息包括每类中的各列的非零元素在掩码矩阵中的行位置;提取目标矩阵中属于每类中的各列的非零权值,获得多个压缩矩阵块,包括:基于列索引信息将目标矩阵的各列进行重排,以使重排后的目标矩阵中属于同一类的各列排列在一起;根据行索引信息分别提取重排后的目标矩阵中每类中的非全零行,获得多个压缩矩阵块,压缩矩阵块的数量等于类的数量。
10.实施上述实现方式,从行列方向两个维度对目标矩阵进行列重排和行压缩,所谓列重排是指将目标矩阵中属于同一类的各列排列在一起,属于同一类的各列中权值的行位置相同,所谓行压缩是指剔除每类中各列组成的矩阵中的全零行,即可获得压缩矩阵块,提高了权值矩阵的压缩率。
11.在第一方面的一种可能的实现方式中,对稀疏矩阵的处理次数越多,每类包括的各列的非零权值的行位置分布的相似度越高。
12.稀疏矩阵的某些列在权值的行位置分布上具有相似性,通过对稀疏矩阵的聚类等处理,以使稀疏矩阵中权值的行位置分布相似的各列归类到一类,处理次数越多,每类中各列的非零权值的行位置分布越相似,能有效提高权值矩阵的压缩率,减小权值矩阵的尺寸。
13.在第一方面的一种可能的实现方式中,稀疏矩阵中权值为零的个数的占比大于等于稀疏度,稀疏度指示对权值矩阵进行非结构剪枝的程度。
14.对权值矩阵进行非结构剪枝时,还可以考虑稀疏度,使得获得的压缩矩阵块既能适应reram的硬件限制,又能达到良好的压缩率。
15.第二方面,本技术提供了一种基于reram的权值矩阵处理方法,该方法包括:存储压缩矩阵块至忆阻器reram,压缩矩阵块的行数小于等于reram的激活行数,压缩矩阵块的列数小于等于reram的激活列数;压缩矩阵块是基于对权值矩阵进行非结构剪枝和压缩获得的;获取索引信息,索引信息包括压缩矩阵块中权值的位置映射信息;从图像数据中提取索引信息指示的行位置上的数据,以获得压缩矩阵块的每列对应的输入数据;图像数据为权值矩阵的每列对应的输入数据;将输入数据输入基于reram的加速器中,获得压缩矩阵块的每列对应的输出数据;将每列对应的输出数据还原至索引信息指示的权值矩阵中正确的列位置。
16.上述方法中,压缩矩阵块是基于对权值矩阵进行非结构剪枝和压缩获得的,除此之外,还获取有索引信息,索引信息指示了压缩矩阵块中权值的位置映射信息,基于索引信息不仅可以确定压缩矩阵块对应的输入数据以及将基于reram的加速器输出的压缩矩阵块每列对应的输出数据还原到正确的列位置,使得压缩矩阵块能较好地适应reram的硬件限制,实现了压缩矩阵块在基于reram的加速器的应用,提高了神经网络的运算效率。
17.在第二方面的一种可能的实现方式中,压缩矩阵块中同一行的每个权值对应的权值矩阵的行位置相同,压缩矩阵块中同一列的每个权值对应的权值矩阵的列位置相同。
18.可以看出,同一压缩矩阵块中的各列的权值的行位置分布相同,压缩矩阵块的同
一列的权值对应的原始列位置也相同,即压缩矩阵是从行、列两个维度上进行压缩得到的,有效提高了权值矩阵的压缩率,较小了权值矩阵的尺寸,提高了神经网络的运算效率。
19.在第二方面的一种可能的实现方式中,索引信息包括行索引信息和列索引信息,行索引信息包括压缩矩阵块中每列中每个权值对应权值矩阵的行位置,列索引信息包括压缩矩阵中每列对应权值矩阵的列位置;从图像数据中提取索引信息指示的行位置上的数据,以获得压缩矩阵块的每列对应的输入数据,包括:从图像数据中提取行索引信息指示的行位置上的数据,以获得压缩矩阵块的每列对应的输入数据;将每列对应的输出数据还原至索引信息指示的权值矩阵中正确的列位置,包括:将每列对应的输出数据还原至列索引信息指示的权值矩阵中正确的列位置。
20.通过行索引信息和图像数据确定压缩矩阵块每列对应的正确的输入数据,通过列索引信息使得压缩矩阵块每列对应的输出结果对应正确的列位置,以使压缩矩阵块匹配适应reram的硬件限制,实现了压缩矩阵快在基于reram的加速器上的应用。
21.第三方面,本技术提供了一种装置,该装置包括:获取单元,用于获取忆阻器reram的激活行数和激活列数;处理单元,用于对权值矩阵进行非结构剪枝和压缩,获得压缩矩阵块,压缩矩阵块的行数小于等于激活行数,压缩矩阵块的列数小于等于激活列数,压缩矩阵块中同一行的每个权值对应的权值矩阵的行位置相同,压缩矩阵块中同一列的每个权值对应的权值矩阵的列位置相同。
22.在第三方面的一种可能的实现方式中,压缩矩阵块的数量为多个,处理单元具体用于:对权值矩阵进行非结构剪枝获得稀疏矩阵,稀疏矩阵中每列的非零权值的个数与压缩矩阵块的行数相同;对稀疏矩阵的各列进行处理,获得掩码矩阵,掩码矩阵由0和1组成,掩码矩阵中的各列属于多类,多类中的每类包括的列数量相同,属于同一类的各列中非零元素的行位置相同;根据掩码矩阵训练权值矩阵,获得目标矩阵;目标矩阵在掩码矩阵的非零元素对应的位置上有非零权值;提取目标矩阵中属于每类中的各列的非零权值,获得多个压缩矩阵块。
23.在第三方面的一种可能的实现方式中,处理单元还用于获得行索引信息和列索引信息,列索引信息包括每类中的各列在掩码矩阵中的列位置;行索引信息包括每类中的各列的非零元素在掩码矩阵中的行位置;处理单元还用于:基于列索引信息将目标矩阵的各列进行重排,以使重排后的目标矩阵中属于同一类的各列排列在一起;根据行索引信息分别提取重排后的目标矩阵中每类中的非全零行,获得多个压缩矩阵块,压缩矩阵块的数量等于类的数量。
24.在第三方面的一种可能的实现方式中,对稀疏矩阵的处理次数越多,每类包括的各列的非零权值的行位置分布的相似度越高。
25.在第三方面的一种可能的实现方式中,稀疏矩阵中权值为零的个数的占比大于等于稀疏度,稀疏度指示对权值矩阵进行非结构剪枝的程度。
26.第四方面,本技术提供了一种装置,该装置包括:存储单元,用于存储压缩矩阵块至忆阻器reram,压缩矩阵块的行数小于等于reram的激活行数,压缩矩阵块的列数小于等于reram的激活列数;压缩矩阵块是基于对权值矩阵进行非结构剪枝和压缩获得的;获取单元,用于获取索引信息,索引信息包括压缩矩阵块中权值的位置映射信息;行转换单元,用于从图像数据中提取索引信息指示的行位置上的数据,以获得压缩矩阵块的每列对应的输
入数据;图像数据为权值矩阵的每列对应的输入数据;加速单元,用于将输入数据输入基于reram的加速器中,获得压缩矩阵块的每列对应的输出数据;列转换单元,用于将每列对应的输出数据还原至索引信息指示的权值矩阵中正确的列位置。
27.在第四方面的一种可能的实现方式中,压缩矩阵块中同一行的每个权值对应的权值矩阵的行位置相同,压缩矩阵块中同一列的每个权值对应的权值矩阵的列位置相同。
28.在第四方面的一种可能的实现方式中,索引信息包括行索引信息和列索引信息,行索引信息包括压缩矩阵块中每列中每个权值对应权值矩阵的行位置,列索引信息包括压缩矩阵中每列对应权值矩阵的列位置;行转换单元具体用于:从图像数据中提取行索引信息指示的行位置上的数据,以获得压缩矩阵块的每列对应的输入数据;列转换单元具体用于:将每列对应的输出数据还原至列索引信息指示的权值矩阵中正确的列位置。
29.第五方面,本技术提供了一种计算机可读存储介质,所述计算机可读介质存储用于装置执行的程序代码,所述程序代码包括用于执行第一方面或者第一方面的任一可能的实现方式中的方法的指令。
30.第六方面,本技术提供了一种计算机可读存储介质,所述计算机可读介质存储用于装置执行的程序代码,所述程序代码包括用于执行第二方面或者第二方面的任一可能的实现方式中的方法的指令。
31.第七方面,本技术提供了一种计算机软件产品,该计算机程序软件产品包括程序指令,当该计算机软件产品被装置执行时,该装置执行前述第一方面或者第一方面的任一可能的实施例中的所述方法。该计算机软件产品可以为一个软件安装包,在需要使用前述第一方面的任一种可能的设计提供的方法的情况下,可以下载该计算机软件产品并在装置上执行该计算机软件产品,以实现第一方面或者第一方面的任一可能的实施例中的所述方法。
32.第八方面,本技术提供了一种计算机软件产品,该计算机程序软件产品包括程序指令,当该计算机软件产品被装置执行时,该装置执行前述第二方面或者第二方面的任一可能的实施例中的所述方法。该计算机软件产品可以为一个软件安装包,在需要使用前述第二方面的任一种可能的设计提供的方法的情况下,可以下载该计算机软件产品并在装置上执行该计算机软件产品,以实现第二方面或者第二方面的任一可能的实施例中的所述方法。
附图说明
33.为了更清楚地说明本技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1a是一种基于reram的加速器的结构图;
35.图1b是一种基于reram的加速器完成卷积计算的示意图;
36.图2是一些基于crossbar中列的剪枝示意图;
37.图3是本技术实施例提供的一种应用的系统架构;
38.图4是本技术实施例提供的一种基于reram的权值矩阵处理方法流程图;
39.图5是本技术实施例提供的一种权值矩阵的压缩方法流程图;
40.图6是本技术实施例提供的一些权值矩阵在非结构剪枝前后的示意图;
41.图7a是本技术实施例提供的一种稀疏矩阵聚类后的效果示意图;
42.图7b是本技术实施例提供的一种聚类后的稀疏矩阵经处理后的效果示意图;
43.图8a是本技术本实施例提供的一种目标矩阵经列重排后的示意图;
44.图8b是本技术实施例提供的一种列重排后的目标矩阵经行压缩后的示意图;
45.图9是本技术本实施例提供的一种获得压缩矩阵每个矩阵块对应的输入数据的示意图;
46.图10是本技术本实施例提供的一种确定每个矩阵块的输出结果对应实际输出位置的示意图;
47.图11是本技术本实施例提供的一种装置的结构示意图;
48.图12是本技术本实施例提供的一种装置的功能结构示意图。
具体实施方式
49.在本技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。本技术实施例中的说明书和权利要求书中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
50.为了便于理解,下面先对本技术实施例可能涉及的相关术语等进行介绍。
51.(1)可变电阻式随机存储器reram
52.可变电阻式随机存储器(resistive random access memory,reram),也可以称作忆阻器。reram具有很高的集成密度,是一种非易失性存储器,具有这零静功耗、读写速度快、单元尺寸次等优点,可实现存储与计算的融合,以减小访存开销。另外,reram存储单元利用阻值可变特性可以表示多个值,而不再是传统存储单元一样只能表示0和1两个值。reram以交叉点阵列结构构成的存储阵列,可以使面积使用效率达到最大化。
53.基于reram的加速器主要由交叉阵列crossbar构成。参见图1a,图1a是一种基于reram的加速器的结构图,可以看到,reram是由字线和位线组成的交叉阵列,其中,字线(wordline)为图1a中的水平线,用于接收输入信号;字线和位线之间跨接的电阻称之为单元(cell),用于存储权值,例如,每个权值可以用一个单元存储,在一些可能的实施例中,每个权值也可以用两个或其他数量的单元存储;位线(bitline)为图1a中的垂直线,位线的电流表示输入信号与该条位线对应的权值的乘积。除此之外,基于reram的加速器还包括数模转换器(digitalto analog conversion,dac)、采样保持(sample and hold,s&h)单元、模数转换器(analog to digital conversion,adc)和转换相加(shift and add,s&a)单元,其中,dac与交叉阵列的每条字线相连,用于将输入数据转换为模拟信号输入;位线上的累积电流(模拟信号与单元内权值的点积结果)由s&h单元读出并馈送到共享的adc,adc用于将位线的累积电流转换为数字信号,s&a单元用于将每列位线上的各点积结果累加。由此可以看出,crossbar的每个单元都可以同时完成一次乘法运算,同一列上的乘法结果可以被累加,以此架构用于神经网络可以加速卷积层或者全连接层的计算,从而加速神经网络的推理过程。
54.下面简单说明基于reram的加速器的工作原理,参见图1b,图1b是一种基于reram的加速器完成卷积计算的示意图,如图1b所示,假设这个卷积层有2个2*2的滤波器
(filter),在img2col转换之后得到一个4*2的权值矩阵,权值矩阵的每一列代表一个滤波器(filter)。另外假设这里有一个4*4的交叉阵列(crossbar),每个单元(cell)可以表示2比特,因此权值矩阵的每个权值均可以用4比特来表示(即两个cell),所以这个权值矩阵可以按照图1b中的方式被映射到交叉阵列(crossbar)上。每一个权值会用两个单元(cell)来存储,属于同一个滤波器(filter)会根据对应关系被存储在交叉阵列(crossbar)中相同的列上。而这些滤波器(filter)的输入是相同的,比如这些滤波器(filter)第一个周期的输入是特征图(feature map)中的2*2的框内的内容,则其对应输入也会被转换为一个4*1的向量,该向量被输入交叉阵列(crossbar)中,该向量与交叉阵列中每一列中的对应单元(cell)进行乘法运算且同一列上的计算结果可以被累加,并将每列的累加结果输出至该列所在的位置。由此可以看出,对于reram的crossbar来说,数据从行方向输入,累积运算结果从列方向输出。这种crossbar架构的神经网络加速器可以利用卷积层计算的并行性从而加速卷积计算。
55.(2)reram激活行列数的硬件限制
56.reram芯片在实际激活过程中并不是理想的全部行列均同时被激活,而是只能同时激活部分的行与列,这是由于reram在行方向和列方向上存在硬件本身的限制。
57.在行方向上,crossbar被激活时本身存在漏电现象。当过多的行被激活时,会导致积累误差过大,从而使输出结果的精度降低。在列方向上,由于模拟数字转换器(analog to digital converter,adc)的面积较大,为了避免每个列匹配一个adc造成芯片面积资源的浪费,在实际reram中,采用多个列共享一个低频的adc,但adc个数的限制造成了芯片运行时吞吐量的限制,从而使得多个列无法同时启动。
58.(3)网络剪枝
59.网络剪枝是小型化神经网络和加速神经网络的一种有效方法。网络剪枝能够在维持神经网络精度不变的情况下去除网络中的冗余参数,剪枝后的神经网络可以在现有的神经网络推理框架中获得实际加速收益。根据剪枝后权值矩阵的结构特点,网络剪枝方法可以分为结构化剪枝和非结构化剪枝。其中,结构化剪枝是指删除权值矩阵中冗余的行或列,例如,权值矩阵的大小为10*10,剪去权值矩阵的第一列、第四列以及第三行、第六行,得到的是一个大小为8*8的规整矩阵;非结构剪枝是指删除权值矩阵中任何冗余的元素,例如,权值矩阵的大小为10*10,将权值矩阵中小于预设阈值的权值(冗余元素)置0,经过此操作后权值矩阵的大小仍然为10*10,由于被置0的权值在权值矩阵中的位置随机,故非结构化剪枝后得到的权值矩阵是一个稀疏化矩。
60.相关技术中,有人提出基于神经网络权值矩阵列方向上的稀疏性以列为单位对权值矩阵进行剪枝以减小网络模型的尺寸。参见图2,图2是一种基于crossbar中列的剪枝示意图,原始的权值矩阵可以映射到reram中的9个crossbar中,以crossbar中的每一列的权值作为基本的剪枝粒度进行剪枝,如图2中的(1),被剪枝去除的列即为图2的(1)中白色的部分,通过将剩下的列进行左移补齐可以得到图2中的(2)所示的剪枝效果,由图2的(2)可以看到,经剪枝后权值矩阵仅占用了reram中的4个crossbar,相较于原始矩阵节省了5个crossbar。
61.一方面,该方法只利用了权值矩阵列方向上的稀疏性,但没有利用权值矩阵行方向的稀疏性,因此导致权值矩阵的压缩率被限制,权值矩阵的压缩率低;另一方面,该方法
未考虑reram中crossbar的激活行列数,由图2中的(2)可以看出,压缩后的权值矩阵在reram中消耗5个crossbar,且每个crossbar中的行数均被占用,但占用的列的数量参差不齐,由于没有考虑到reram中crossbar的激活行列数,crossbar中被激活的行列数小于crossbar的行列数,导致crossbar中权值矩阵的某些行或者某些列无法参与卷积层或者全连接层的计算,也就是说,通过该方法进行压缩获得的权值矩阵与硬件reram直接结合进行应用的难度大。
62.下面描述本技术实施例所应用的一种系统架构。参见图3,图3示例性地给出了本技术实施例所应用的权值矩阵压缩系统的示意性框图。如图3所示,该系统10包括计算模块、基于忆阻器reram的加速器、存储模块、行转换模块和列转换模块。其中,存储模块、基于忆阻器reram的加速器与计算模块通过总线连接或耦合,行转换模块、列转换模块和基于忆阻器reram的加速器通过总线连接或耦合。
63.计算模块可以是处理器,用于根据reram的硬件条件对神经网络的权值矩阵进行非结构剪枝,对剪枝后的权值矩阵进行训练获得目标矩阵,最后对目标矩阵进行压缩获得压缩矩阵,压缩矩阵包括多个压缩矩阵块,每个压缩矩阵块的大小相同,每个压缩矩阵块的行数小于等于reram的激活行数,每个压缩矩阵块的列数小于等于reram的激活列数,并将压缩矩阵存储在基于忆阻器reram的加速器中。可以理解,压缩矩阵相较于权值矩阵,不仅矩阵的大小发生了改变,且权值在行列方向上的权值分布也发生了变化。
64.存储模块用于存储待处理的数据,例如,图像、图像的特征图等,该待处理数据用于与存储于基于忆阻器reram的加速器中的压缩矩阵进行乘法运算。
65.行转换模块用于存储压缩矩阵的每个压缩矩阵块的每一行对应权值矩阵的行位置,在存储模块中的待处理数据与压缩矩阵进行乘法等运算时,根据每个压缩矩阵块对应的行位置信息和待处理数据确定每个压缩矩阵块对应的输入数据。
66.基于忆阻器reram的加速器用于接收压缩矩阵的每个压缩矩阵块对应的输入数据,将输入数据与每个压缩矩阵块的每一列中的各权值进行乘法运算,并将每一列中各权值对应的乘法结果进行累加,获得压缩矩阵中每个压缩矩阵块的每一列对应的累加结果。
67.列转换模块用于存储压缩矩阵的每个压缩矩阵块的每一列对应权值矩阵的列位置,并在基于忆阻器reram的加速器输出压缩矩阵的每个压缩矩阵块的每一列对应的累加结果时,根据列位置信息将每一列对应的累加结果作为该列对应的权值矩阵中那一列的结果,也就是说,将压缩矩阵中每一列对应的累加结果还原到其原始列位置上。
68.参见图4,基于上文实施所描述的系统架构,先描述本技术实施例提供的一种基于reram的权值矩阵处理方法,该方法包括但不限于以下步骤:
69.s101、获取reram的激活行数和激活列数。
70.本技术实施例中,获取reram的激活行数和激活列数。其中,reram是用于存储神经网络的权值矩阵经非结构剪枝和压缩后的压缩矩阵,reram的激活行数是指reram中交叉阵列crossbar(或称为xb)每周期可被激活的字线的行数,reram的激活列数是指reram中交叉阵列crossbar(或称为xb)每周期可被激活的位线的列数。
71.需要说明的是,reram的激活行/列数和后续存储在reram上的压缩矩阵被激活的行列/数之间有对应关系。权值矩阵对应的压缩矩阵存储于reram上,关于reram的介绍可参考上述相关描述,在此不再赘述。压缩矩阵可被激活的行数最多为reram的激活行数,压缩
矩阵可被激活的列数取决于reram的单元与权值的映射关系,其中,每个单元表示2bit。例如,若reram的单元与权值的映射关系为2:1,即一个权值需要2个单元来表示,即一个权值需要4bit表示,若reram的激活列数为l,则压缩矩阵可被激活的列数最多为l/2。又例如,若reram的单元与权值的映射关系为1:1,若reram的激活列数为l,则压缩矩阵可被激活的列数最多为l。
72.需要说明的是,reram的激活行数和激活列数的获取可以是用户通过键盘或者触摸显示屏输入的,也可以是程序预先设置的,本技术不做具体限定。
73.在一些可能的实施例中,还需要获取稀疏度,稀疏度用于指示期望获得的压缩矩阵未经压缩前的目标矩阵的稀疏度,也可以用于指示权值矩阵的剪枝程度。稀疏度可以是用户输入的,也可以是预先设置的,本技术不做具体限定。
74.s102、根据激活行数和激活列数对权值矩阵进行非结构剪枝和压缩,获得压缩矩阵和索引信息。
75.本技术实施例中,根据激活行数和激活列数对神经网络的权值矩阵进行非结构剪枝和压缩,获得压缩矩阵和索引信息。其中,压缩矩阵包括至少一个压缩矩阵块,每个压缩矩阵块对应的矩阵大小相等。每个压缩矩阵块的行数小于等于reram的激活行数,每个压缩矩阵块的列数小于等于reram的激活列数。索引信息包括压缩矩阵中权值的位置映射信息。
76.由于reram上每周期激活的行数和列数是固定的,因此利用时分复用的方法可启动reram上一定数量的行与列以激活压缩矩阵中的每个压缩矩阵块。
77.在一些可能的实施例中,索引信息包括行索引信息和列索引信息,索引信息包括行索引信息和列索引信息,行索引信息包括每个压缩矩阵块的每一行对应权值矩阵的行位置;列索引信息包括每个压缩矩阵块的每一列对应权值矩阵的列位置。
78.为了提高reram的利用率,每个压缩矩阵块的行数与reram的激活行数相等,每个压缩矩阵块的列数与reram的激活列数之间具有相同的映射关系。具体地,压缩矩阵中每个压缩矩阵块的列数为reram的激活权值列数。激活权值列数与reram的激活列数之间的转换关系可参考s101中的相关描述,在此不再赘述。
79.为了清除地说明获得压缩矩阵以及索引信息的过程,参见图5,图5是本技术提供的一种权值矩阵的压缩方法。图5实施例是对图4实施例所述方法的补充。s102又进一步包括但不限于以下步骤:
80.s1021、根据激活行数对权值矩阵进行非结构剪枝,获得稀疏矩阵。
81.具体地,根据激活行数对神经网络的权值矩阵进行非结构剪枝,获得稀疏矩阵。其中,稀疏矩阵的大小与权值矩阵的大小相同,且稀疏矩阵中每列的非零权值的个数为激活行数。可以理解,由于经过非结构剪枝,获得的稀疏矩阵是权值分布稀疏的矩阵,稀疏矩阵由0和权值组成。
82.在一些可能的实施例中,根据激活行数对权值矩阵的每列进行非结构剪枝可以是:对于权值矩阵的每一列,保留该列中前r个最大的权值,删除该列中其余位置上的权值(即将该列中其余位置上的权值置0),由此获得稀疏矩阵,稀疏矩阵中每列权值的数量为激活行数,且稀疏矩阵的大小与权值矩阵的大小相同。
83.参见图6,图6是本技术提供的一种非结构剪枝示意图。如图6所示,深色方格表示有权值,浅色方格表示无权值。图6中的(1)即为权值矩阵,图6中的(2)即为权值矩阵经过非
结构剪枝后获得的稀疏矩阵,激活行数为5,权值矩阵的行数为15,满足稀疏度66%。由此可以看出,稀疏矩阵的权值分布相较于权值矩阵的权值分布更稀疏,且稀疏矩阵的每列只有5个权值,即每列权值的数量与激活行数相等。
84.需要说明的是,稀疏矩阵中每列的权值可以是来自权值矩阵中该列的前r个最大的权值,也可以是来自权值矩阵中该列的前r个最小的权值,还可以通过其他方法从权值矩阵的列中获取的,本技术不做具体限定。
85.在一些可能的实施例中,对权值矩阵进行非结构剪枝时还需考虑稀疏度,获得的稀疏矩阵的行数是由稀疏度和激活行数确定的。稀疏矩阵的行数、稀疏度和激活行数之间的关系可表示为公式(1):
[0086][0087]
其中,xr表示稀疏矩阵的行数,r表示激活行数,p表示稀疏度,(1-p)表示压缩率。因此,稀疏矩阵的行数为激活行数与压缩率的商向上取整,稀疏矩阵的列数为权值矩阵的列数。
[0088]
在一些可能的实施例中,根据稀疏度和激活行数对权值矩阵进行非结构剪枝。例如,权值矩阵的大小为25*25,根据稀疏度(例如,66%)和激活行数(例如,5)确定的稀疏矩阵的行数为15,即稀疏矩阵的行数小于权值矩阵的行数,在此情况下,先对权值矩阵的前15行构成的矩阵(15*25)的每一列进行剪枝以保留每列中的前5个最大的权值,以获得第一剪枝结果;为保证稀疏度一致,再对权值矩阵的后10行构成的矩阵(10*25)的每一列进行剪枝以保留每列中的前3个最大的权值,以获得第二剪枝结果,由第一剪枝结果对应的矩阵和第二剪枝结果对应的矩阵进行拼接,即可获得稀疏矩阵。
[0089]
s1022、对稀疏矩阵的各列进行处理,获得掩码矩阵。
[0090]
具体地,根据激活列数和行位置分布的相似度对稀疏矩阵的各列聚类,获得多类,每类中的各列的非零权值的行位置的分布相似,且聚类次数越多,每类中的各列的非零权值的行位置的分布越相似;对所述每类中各列的行位置分布进行处理,以获得掩码矩阵,掩码矩阵中属于所述同一类的各列的行位置分布相同。
[0091]
其中,掩码矩阵是0-1组成的矩阵,“1”表示激活位置,“0”表示未激活位置,掩码矩阵中的各列属于多类,多类中每类包括的列的数量相同,且属于同一类的各列中非零元素的行位置相同。
[0092]
一方面,所谓根据激活列数和行位置分布的相似度对稀疏矩阵的各列聚类,获得多类是指,即以列为单位,根据激活列数和稀疏矩阵在列方向上权值位置分布的相似度对稀疏矩阵的各列进行聚类获得聚类结果,以实现将稀疏矩阵中行位置分布最相似的列归并到同一类中。聚类结果的每一类对应一种分布模式,也就是说,聚类结果包括上述多类分布模式。每类分布模式包括的列的数量相等,且每类分布模式包括的列的数量与激活列数之间具有相同的数量关系。
[0093]
例如,若reram的激活列数为l,且reram上存储一个权值需要用2个单元,每个单元表示2bit,即占用4bit,则为了提高reram的利用效率,reram最大可激活的权值列数为l/2,则每类包括的列的数量为reram最大可激活的权值列数(例如,l/2)。由于稀疏矩阵的大小与权值矩阵的大小相等,则对稀疏矩阵的各列进行聚类时,获得的聚类结果中的类别数为
稀疏矩阵的列数与reram最大可激活的权值列数的比值。
[0094]
在一些可能的实施例中,稀疏矩阵中有多个列具有相同的分布模式,但由于激活列数的限制,导致聚类结果中存在至少两类对应的分布模式相同。
[0095]
举例来说,假设稀疏矩阵的列数为n,reram的激活列数l,根据reram的激活列数l得到reram最大可激活的权值列数为l’,则稀疏矩阵依据列方向上权值位置分布的相似度被划分的类别数为k,其中,k为n与l’的比值。即将稀疏矩阵的n个列划分成k个类,每类包括的列的数量为l’。需要说明的是,稀疏矩阵中的每个列可以称作权值列。
[0096]
示例性地,可以采用k-means聚类方法对稀疏矩阵进行聚类,其过程具体为下述步骤a1-步骤a3:
[0097]
步骤a1:从稀疏矩阵中随机选择k个权值列作为k个聚类中心。
[0098]
步骤a2:比较稀疏矩阵中剩余的每个权值列与k个聚类中心的第一距离,根据第一距离将每个权值列划分至与该列中权值的行位置分布最接近的聚类中心。
[0099]
需要说明的是,第一距离用于衡量稀疏矩阵中待比较的权值列中权值的行位置分布与某聚类中心表示的行位置分布之间的差距。第一距离越小,则说明待比较权值列中权值的行位置分布与该聚类中心表示的行位置分布越相似。
[0100]
示例性地,可以将稀疏矩阵的每个权值列用0-1表示,以显示每个权值列的行位置分布。其中,1表示对应位置有权值,0表示对应位置无权值。例如,参见图6中的(2),稀疏矩阵的第一列的行位置分布可以表示成“001010100100100”,即意味着该列仅有第3、5、7、10和13行有权值,若第一列作为k个聚类中心中的一个。以稀疏矩阵的第二列(非聚类中心)的归类为例,稀疏矩阵的第二列的行位置分布可以表示成“100100010001001”,计算第二列与第一列(聚类中心)之间的第一距离,在此情况下,将第二列对应的“100100010001001”和第一列对应的“001010100100100”进行与运算得到“101110110101001”,再将“101110110101001”做和即可获得第一距离为9,根据此方法,计算第二列与剩余(k-1)个聚类中心之间的第一距离,比较第二列对应的k个第一距离,将第二列划分到k个第一距离中最小的第一距离对应的聚类中心。
[0101]
示例性地,也可以记录每个权值列中权值所在行的行坐标。例如,参见图6中的(2),稀疏矩阵的第一列的权值所在的行坐标标记为(3,5,7,10,13),若第一列作为k个聚类中心中的一个。以稀疏矩阵的第二列(非聚类中心)的归类为例,稀疏矩阵的第二列的权值所在的行坐标标记为(1,4,8,12,15),计算第二列与第一列(聚类中心)之间的第一距离,在此情况下,计算第二列对应的(1,4,8,12,15)和第一列对应的(3,5,7,10,13)之间行坐标的绝对误差值之和得到第一距离为8,根据此方法,计算第二列与剩余(k-1)个聚类中心之间的第一距离,比较第二列对应的k个第一距离,将第二列划分到k个第一距离中最小的第一距离对应的聚类中心。
[0102]
步骤a3:更新每一类的聚类中心,判断每一类的聚类中心是否改变。
[0103]
具体地,将稀疏矩阵中每个权值列划分至k个聚类中心中,重新计算每个类的聚类中心以实现聚类中心的更新,判断每一类的聚类中心是否改变,若均未改变,则分类结束。若存在某一类的聚类中心发生改变,则更新当前的聚类中心,继续执行步骤a2-步骤a3直至每一类的聚类中心不再改变,以使最终获得的聚类结果中每类包括的权值列的列数与reram最大可激活的权值列数相等。为了叙述方便,下述中reram最大可激活的权值列数可
以简称为激活权值列数。
[0104]
例如,如图7a所示,图7a是本技术实施例提供的一种聚类结果示意图,为了清除地显示稀疏矩阵的聚类结果,将属于同一类(即同一种分布模式)的各列排列在一起,可以看出,稀疏矩阵被分成6类,每类包含的权值列的数量为4,且同一类中的各列具有相似的行位置分布。从左至右,以第四类为例,第四类对应的权值位置分布模式为“010001010010100”,即对于第四类中来说,每个权值列的权值集中位于第2、6、8、11和13行。
[0105]
在一些可能的实施例中,需要对稀疏矩阵的各列进行多次聚类才能使聚类结果中每类包括的列的数量相同。也就是说,在对稀疏矩阵进行一次聚类后,聚类结果中每类包括的权值列的数量是不一致的,即有的类包括的权值列的数量多,有的类包括的权值列的数量少,在此情况下,需要对聚类结果中每类包括的权值列的数量进行统一,即对权值列的数量大于或者小于预设阈值的类进行抽取和/或再聚类等处理,以使聚类结果中每类包括的权值列的数量相等且为激活权值列数。需要说明的是,预设阈值即为激活权值列数,假设为l’。
[0106]
具体地,上述对聚类结果的每类所包括的权值列的数量进行判断的过程,不妨以第i类为例进行示例性阐述,其中,i=1,2,

,k,判断过程具体如下:
[0107]
b1、统计聚类结果中第i类包括的权值列的列数。
[0108]
b2、判断第i类当前包括的权值列的列数是否大于激活权值列数l’。
[0109]
具体地,判断聚类结果中第i类当前包括的权值列的列数是否大于激活权值列数l’,当第i类当前包括的权值列的列数大于l’时,执行b3;当第i类包括的权值列的列数小于等于l’时,执行b4。
[0110]
b3、抽取第i类中与该类的聚类中心之间的第一距离最小的前l’个权值列作为一类,并将其存储至类别集合。
[0111]
具体地,在第i类当前包括的权值列的列数大于l’时,从第i类中抽取l’个权值列作为一类存储至类别集合,被抽取的l’个权值列的行位置分布与第i类的聚类中心对应的行位置分布最相似,因此,被抽取的l’个权值列是第i类中与第i类的聚类中心之间的第一距离最小的前l’个权值列。
[0112]
需要说明的是,第i类中的权值列经抽取操作后,还需执行b2直至第i类当前包括的权值列的列数小于等于激活权值列数l’。
[0113]
b4、判断第i类当前包括的权值列的列数是否等于激活权值列数l’。
[0114]
具体地,判断第i类当前包括的权值列的列数是否等于激活权值列数l’,当第i类当前包括的权值列的列数等于l’时,执行b5;当第i类包括的权值列的列数小于l’时,执行b6。
[0115]
b5、将第i类当前包括的权值列作为一类,并将其存储至类别集合。
[0116]
b6、将第i类当前包括的权值列加入剩余列集合。
[0117]
具体地,当第i类当前包括的权值列的列数小于激活权值列数l’时,将第i类当前包括的权值列加入剩余列集合。
[0118]
在对聚类结果中的每一类进行上述b1-b6的处理后即可获得剩余列集合,再依据上述步骤a1-步骤a3中的相关描述对剩余列集合中的权值列进行聚类,将重新聚类后的聚类结果进行上述b1-b6的处理,如此循环,以获得图7a所示的聚类效果,则该类别集合即可
作为稀疏矩阵最终的聚类结果,该类别集合中的每类包括的权值列的数量为激活权值列数l’,从而实现使聚类结果中的每类包括的权值列的数量一致。可以理解,对剩余列集合进行聚类时,为了保证对稀疏矩阵聚类的总类别数一致,剩余列集合对应的类别数小于等于总类别数。
[0119]
举例来说,对稀疏矩阵(矩阵大小为15*24)进行聚类,假设激活权值列数为4,则期望目标是每类包括的权值列的数量为4。但实际上,稀疏矩阵经一次聚类后,稀疏矩阵中的各列被分成6类,从第一类至第六类每类包括的权值列的数量依次为7、3、4、4、4和2,可以看出,每类包括的权值列的数量不一致,参照上述b1-b6的处理流程,可以知晓,需要从第一类中抽取4列作为一类存储至类别集合中,第一类中剩余的3列加入至剩余列集合;由于第二类包括的列的数量以及第六类包括的列的数量均小于4,故第二类中的3列以及第六类中的2列均加入至剩余列集合,而第三类、第四类和第五类包括的列的数量均为4,等于激活权值列数,故将第三类、第四类和第五类存储至类别集合。综上,类别集合中包括的类别数为4,每种类别对应一种分布模式,剩余列集合中包括的列的数量为8,对剩余列集合中的各列进行聚类,即依据列方向的权值的行位置分布的相似度将剩余列集合中的8列分成2类,且使每类包括的列的数量为4,即可将再次聚类获得的这两类加入至类别集合,该类别集合可作为最终的聚类结果,该类别集合中包括6类,每类包括的列的数量为4。
[0120]
需要说明的是,无论对稀疏矩阵的各列进行了几次聚类,其最终目标均是使聚类结果中每类包括的权值列的数量相等,且属于同一类中的列的非零权值的行位置分布最相似。
[0121]
另一方面,所谓对所述每类中各列的行位置分布进行处理,以获得掩码矩阵是指:由于稀疏矩阵中非零权值分布的随机性,每类中有的列的非零权值的行位置分布与该类对应的分布模式并非完全相同,在此情况下,对每类中不同于该类对应的分布模式的列进行处理以统一每类的各列中的非零权值所在的行位置相同,以使每类中各列的行位置分布与该类对应的位置分布相同,以获得掩码矩阵。
[0122]
例如,参见图7a,图7a是一种稀疏矩阵被聚类后的效果显示图,属于同一类的列被排列在一起,以方便显示聚类效果。稀疏矩阵被分成了6类,每类包括的列的数量均为4,但对于每类来说,均存在至少一列的行位置分布与该类对应的位置分布不同,不妨以从左至右的第四类为例进行示例性阐述,第四类对应的权值位置分布模式为“010001010010100”,即每列在第2、6、8、11和13行的位置上有非零权值,但第四类中的第一列在第2、6、8、12和13行的位置上有非零权值,与第四类对应的位置分布模式不相同。在此情况下,删除第四类中第一列的第12行的权值,同时标记第四类第一列的第11行有权值。对图7a中每类中各列的行位置分布进行统一处理后可得到图7b,图7b中属于同一类的各列具有相同的分布模式。需要说明的是,类似于图7a,图7b中每类中的各列排列在一起以方面显示聚类效果,但实际上,每类中的各列的列位置并不是图7b所示,每类中的各列有实际对应的稀疏矩阵的列位置,例如,图7b中的从左至右的第二列实际对应图6的(2)中稀疏矩阵的第六列,即图7b的第二列是由图6中的(2)的第六列变化得到的。
[0123]
掩码矩阵的获取方式可以是:创建一个与稀疏矩阵大小相同的全零的标记矩阵,根据处理后的每类中各列的权值的行位置分布以及每列对应稀疏矩阵的列位置,在标记矩阵中对应的列中将该列对应有权值的位置处的值由“0”标记为“1”,标记完成后获得的标记
矩阵即为掩码矩阵。
[0124]
例如,参见图7a、图7b和图6中(2),图7a可以看作是对图6中(2)所示稀疏矩阵的聚类效果显示图,图7b是对图7a中每类中各列的位置分布进行统一后的效果图,图7b中的各列与图7a中的各列是从左至右一一对应的,即图7b中的第1列对应图7a中的第1列,图7b中的第24列对应图7a中的第24列。但对于图7a和图6中(2),可以看出,图7a从左至右的第13列(即第四类的第一列)实际对应图6中(2)所示稀疏矩阵的第15列,即图7b从左至右的第13列也对应图6中(2)所示稀疏矩阵的第15列,因此,参照图7b中第13列,在标记矩阵的第15列中将图7b中第13列中有权值对应的位置的值标记为“1”,依据此方式,对标记矩阵的各列进行标记以获得掩码矩阵。
[0125]
需要说明的是,掩码矩阵中的元素由0和1组成,其中,“1”表示激活位置,“0”表示未激活位置(即权值为0),掩码矩阵表示权值矩阵经非结构剪枝和列聚类等处理后的权值位置分布。
[0126]
s1023、获取索引信息。
[0127]
本技术实施例中,在对稀疏矩阵进行聚类等一系列处理得到掩码矩阵的过程中,还需获得索引信息,索引信息包括行索引信息和列索引信息。具体地,存储掩码矩阵中属于每类的各列对应掩码矩阵的列位置,以获得列索引信息;存储掩码矩阵中每类对应的各非零行在掩码矩阵中的行位置,以获得行索引信息。
[0128]
可以理解,每类中的各列可组成一个子矩阵,且子矩阵的列数为reram的激活权值列数,子矩阵的行数与稀疏矩阵的行数相等,因此,每类对应的各非零行相当于是该类对应的子矩阵的各非零行。子矩阵的同一行的每个非零元素对应掩码矩阵(或者权值矩阵)的行位置相同,子矩阵的同一列的每个非零元素对应掩码矩阵(或者权值矩阵)的列位置相同。
[0129]
在一些可能的实施例中,行索引信息和列索引信息可以是类似于表1和表2所示的映射表,如表1所示,表1是一种列索引信息的示例,记录了每类的各列对应掩码矩阵的列位置,不妨以表1中的类别一为例,类别一对应的列位置为“100001000000000010000010”即类别一包括的列对应的列位置依次为第1、6、17、23列;如表2所示,表2是一种行索引信息的示例,记录了每类对应的各非零行对应掩码矩阵的行位置,且同一类的各列具有相同的非零元素的行位置分布,不妨以类别一为例,类别一对应的行位置,以行向量表示为“010010100100100”,即说明类别一中的各列均在第2、5、7、10、13行有权值。
[0130]
表1
[0131][0132]
[0133]
表2
[0134][0135]
s1024、根据掩码矩阵训练权值矩阵以获得目标矩阵。
[0136]
本技术实施例中,根据掩码矩阵训练权值矩阵以获得目标矩阵,目标矩阵中对应掩码矩阵的激活位置上有权值,目标矩阵中对应掩码矩阵的未激活位置上无权值。可以理解,目标矩阵、掩码矩阵和权值矩阵这三个矩阵的大小均相同。
[0137]
需要说明的是,可以采用交替方向乘子法(alternating direction method of multipliers,admm)基于掩码矩阵逐步训练权值矩阵,以使权值矩阵中对应掩码矩阵的非激活位置上的权值逐步迭代减小到0,以及使权值矩阵中对应掩码矩阵的激活位置上的权值不断调整以弥补剪枝等带来的精度损失,最终获得目标矩阵,目标矩阵即为完成训练的权值矩阵。
[0138]
可以理解,目标矩阵相较于掩码矩阵,相同之处在于目标矩阵中非零元素的位置分布与掩码矩阵中非零元素的位置分布相同;不同之处在于,掩码矩阵中非零元素均为“1”,而目标矩阵中的非零元素包括不同数值的权值。
[0139]
需要说明的是,在一些可能的实施例中,还可以采用反向传播算法等基于掩码矩阵训练权值矩阵以获得目标矩阵,本技术不做具体限定。
[0140]
s1025、根据索引信息对目标矩阵进行压缩,获得压缩矩阵。
[0141]
本技术实施例中,索引信息包括行索引信息和列索引信息,根据索引信息对目标矩阵进行压缩获得压缩矩阵是指:根据列索引信息对目标矩阵的各列重排,以使重排后的目标矩阵中属于同一类的各列排列在一起;然后根据行索引信息分别提取重排后的目标矩阵中每类中的非全零行,获得多个压缩矩阵块,多个压缩矩阵块组成压缩矩阵。
[0142]
具体地,由于列索引信息记录了属于每类中的各列在掩码矩阵中的列位置,根据列索引信息对目标矩阵的各列进行重排,重排结果如图8a所示,可以看到,目标矩阵中属于
同一类的各列排列在一列,图8a以不同的灰度区分不同的类以显示列重排后的目标矩阵;接着,根据行索引信息对重排后的目标矩阵进行行方向上的压缩以删除每类对应的全零行,获得压缩矩阵,如图8b所示,在图8b中,压缩矩阵包括6个压缩矩阵块,每个压缩矩阵块的大小均为5*4,每个压缩矩阵块的行数5为reram的激活行数,每个压缩矩阵块的列数4为激活权值列数(其不同于reram的激活列数)。
[0143]
需要说明的是,每个类别在压缩矩阵中对应一个压缩矩阵块,在获得压缩矩阵后,将压缩矩阵映射到reram上,即将压缩矩阵中的每个权值映射到reram的交叉阵列的单元中,且每个压缩矩阵块的行列数满足reram的硬件限制,故基于reram的加速器每周期可激活存储在reram中的压缩矩阵中的一个压缩矩阵块。即通过时分复用的方法,基于reram的加速器通过导通特定数量的行和列所组成的矩阵(即压缩矩阵中的一个压缩矩阵块),从而提高了reram的利用效率。
[0144]
压缩矩阵在reram中的映射可根据reram中交叉阵列的行列数改变。若每个权值消耗reram的一个单元存储,说明reram的每行对应可存储的权值数量充足,因此,图8b中压缩矩阵的6个压缩矩阵块可以以图8b所示的样子映射到reram的交叉阵列的单元中,即6个压缩矩阵块可以依次沿着水平方向(字线方向)映射;若每个权值消耗reram的四个单元存储,则说明reram的每行对应可存储的权值的数量有限,在此情况下,图8b所示的6个压缩矩阵块可以依次沿垂直方向(位线方向)映射,本技术不做具体限定。
[0145]
可以看到,实施本技术实施例,基于reram的硬件限制(即限制激活行数和激活列数)对神经网络的权值矩阵进行非结构剪枝、聚类等处理获得目标矩阵,再利用目标矩阵在列方向和行方向上的稀疏性对目标矩阵进行压缩,不仅提高了权值矩阵的压缩率,也使得压缩矩阵匹配reram的硬件条件,提高了reram的行列利用率。
[0146]
s103、根据索引信息和图像数据获得压缩矩阵中每个压缩矩阵块的每列对应的输入数据。
[0147]
本技术实施例中,根据行索引信息和图像数据获得压缩矩阵中每个压缩矩阵块的每列对应的输入数据是指:从图像数据中提取行索引信息指示的行位置上的数据,以获得每个压缩矩阵块的每列对应的输入数据。其中,图像数据为权值矩阵的每列对应的输入数据,图像数据可以是图像的特征图、图像的灰度图、图像的彩色图或者图像处理的中间结果等,本技术不做具体限定。图像数据也可以称作压缩矩阵块的每列对应的原始输入数据。
[0148]
一方面,压缩矩阵中每个压缩矩阵块的各列中的权值具有相同的行位置分布,因此,每个压缩矩阵块对应的输入数据是相同的;另一方面,每个压缩矩阵块的每列相当于是一个经过压缩处理后的滤波器,可以理解,经过压缩处理后的滤波器对应的输入数据不同于原始滤波器(未经压缩)对应的输入数据,因此,需要根据索引信息和图像数据确定每个压缩矩阵块的每列对应的输入数据。
[0149]
举例来说,参见图9,图9是一种确定压缩矩阵块对应的输入数据的示意图,权值矩阵的每列相当于是一个原始滤波器,假设原始滤波器的大小为5*3,则与原始滤波器对应的原始输入数据如图9所示,以行向量表示为“428967653434253”,根据行索引信息确定第一矩阵块(压缩矩阵块)对应的行位置如图9所示,以行向量表示为“010010100100100”,则依据第一矩阵块对应的行位置从原始输入数据的第2、5、7、10、13行取出对应的权值组成的列向量即为第一矩阵块对应的输入数据,以行向量表示为“26642”。
[0150]
s104、将输入数据输入基于reram的加速器中,获得每个压缩矩阵块中每列对应的输出数据。
[0151]
本技术实施例中,将获得的输入数据输入基于reram的加速器中,基于reram的加速器中存储有压缩矩阵,压缩矩阵包括多个压缩矩阵块,以使基于reram的加速器根据输入数据和每个压缩矩阵块计算每个压缩矩阵块的每列对应的输出数据。
[0152]
对于基于reram的加速器来说,将接收到的输入数据分别与每个压缩矩阵块的每一列中的各权值相乘,再将每列的各权值对应的乘积结果进行求和,从而得到每个压缩矩阵块中每列对应的输出数据。其中,输入数据与每个压缩矩阵块中的每一列的各权值一一对应。上述加速过程具体可参考图1b中的相关描述,在此不再赘述。
[0153]
需要说明的是,reram是一个具有字线和位线的交叉阵列,只需将输入数据以模拟电压的方式输入reram的字线,reram中的各字线的模拟电压分别与每条位线对应的单元中的权值相乘,基于reram的加速器输出每列位线对应的累积结果。
[0154]
需要说明的是,若reram上每个单元存储一个权值时,则每列位线对应的累积结果即为本技术中每个压缩矩阵块中每列对应的输出数据;若reram上每两个单元存储一个权值时,需要根据该列对应的两条位线之间的转换关系对这两条位线的各单元对应的点积结果进行处理以获得累积结果,该累积结果即为该列对应的输出数据。
[0155]
利用基于reram的加速器的并行运算特点,通过非结构剪枝、聚类、压缩等方法减小权值矩阵的尺寸,不仅提高了权值矩阵的压缩率,还减少了卷积运算中每列参与运算的权值数量,有效提高了运算速度。
[0156]
s105、根据索引信息使每个压缩矩阵块中每列对应的输出数据对应权值矩阵中正确的列。
[0157]
本技术实施例中,根据索引信息使每个压缩矩阵块中每列对应的输出结果对应权值矩阵中正确的列是指:将每列对应的输出数据还原至列索引信息指示的权值矩阵中正确的列位置。
[0158]
需要说明的是,压缩矩阵块是经过压缩获得的,即将目标矩阵进行列重排和行压缩获得,可以看出,压缩矩阵块中每列的列位置是发生过变化的,压缩矩阵块中的每列实际对应的列位置为该列对应目标矩阵的列位置,也为该列在列重排操作前的位置,也为列索引信息指示的权值矩阵中正确的列位置。
[0159]
举例来说,参见图10,图10是一种确定压缩矩阵块每列的输出数据的实际输出位置的示意图,以第一矩阵块(压缩矩阵块)为例,假设第一矩阵块的大小为5*4,即有四列,假设第一矩阵块中四列对应的输出为(15,26,32,28),根据上述表1中列索引信息获得第一矩阵块(即类别一)对应的列位置为“100001000000000010000010”,由此可以知道,第一矩阵块中,输出结果15应对应输出至第1列,输出结果26应对应输出至第6列,输出结果32应对应输出至第17列,输出结果28应对应输出至第23列。
[0160]
可以看到,实施本技术实施例,在对权值矩阵进行非结构剪枝和压缩时考虑reram的硬件限制(激活行数和激活列数)以获得压缩矩阵和索引信息,使得压缩矩阵匹配适应reram的硬件限制,不仅减小了权值矩阵的尺寸,提高了压缩率,还提高了reram的使用效率,压缩矩阵基于索引信息可以最大化利用reram的行与列,从而加速神经网络的运算速度。
[0161]
参见图11,图11是本技术提供的一种装置的结构示意图,装置20至少包括处理器110、存储器111、接收器112、行转换模块113、列转换模块114和基于忆阻器reram的加速器115。可选的,存储器111、接收器112、行转换模块113、列转换模块114和基于忆阻器reram的加速器115和处理器110通过总线连接或耦合,行转换模块113和列转换模块114还与基于忆阻器reram的加速器115连接或耦合。在一些可能的实施例中,基于忆阻器reram的加速器115也可以独立于装置20。
[0162]
需要说明的是,行转换模块113和列转换模块114也可以独立于处理器110,行转换模块113和列转换模块114也可以集成于处理器110内,以使处理器110具有行转换模块113和列转换模块114的功能,本技术不做具体限定。
[0163]
接收器112用于获取reram的激活行数和激活列数,接收器112可以是有线接口或者无线接口。有线接口可以是以太网接口、局域互联网络(local interconnect network,lin)等,无线接口可以是蜂窝网络接口或无线局域网接口等。
[0164]
处理器110执行各操作的具体实现可参考上述方法实施例中对权值矩阵进行非结构剪枝、对稀疏矩阵进行聚类处理以及对目标矩阵进行压缩处理等具体操作。处理器110可以由一个或者多个通用处理器构成,例如中央处理器(central processing unit,cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,asic)、可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld)、现场可编程门阵列(field-programmable gate array,fpga)、通用阵列逻辑(generic array logic,gal)或其任意组合。
[0165]
行转换模块113用于根据行索引信息和图像数据确定压缩矩阵中每个压缩矩阵块对应的输入数据,并将该输入数据发送给基于忆阻器reram的加速器115。可选地,行转换模块113至少包括第一多路选择器、第二多路选择器和第一解码器,其中,第一多路选择器用于从行索引信息中选择压缩矩阵中目标压缩矩阵块对应的行位置信息,第二多路选择器用于获取目标压缩矩阵块对应的原始输入数据,第一解码器用于根据第一多路选择器输出的行位置信息和第二多路选择器输出的原始输入数据确定目标压缩矩阵块对应的输入数据,目标压缩矩阵块为压缩矩阵中多个压缩矩阵块中的任意一个。
[0166]
基于忆阻器reram的加速器115用于存储压缩矩阵,另外,基于忆阻器reram的加速器115还用于接收行转换模块113发送的目标压缩矩阵块对应的输入数据,并输出目标压缩矩阵块中每列对应的输出数据。
[0167]
列转换模块114用于将基于忆阻器reram的加速器115输出的目标矩阵中每一列对应的输出数据与权值矩阵中初始列位置对应。可选地,列转换模块114至少包括第三多路选择器、第四多路选择器和第二解码器,其中,第三多路选择器用于从列索引信息中选择压缩矩阵中目标压缩矩阵块对应的列位置信息,第四多路选择器用于获取目标压缩矩阵块每列对应的输出数据,第二解码器用于根据第三多路选择器输出的列位置信息和第四多路选择器输出的目标矩阵每列对应的输出数据将每列对应的输出数据还原到对应的初始列位置。
[0168]
存储器111可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram);存储器111也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom)、快闪存储器(flash memory)、硬盘
(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);存储器111还可以包括上述种类的组合。存储器111可以存储程序以及数据,其中,存储的程序包括:非结构剪枝算法、聚类算法等,存储的数据包括:权值矩阵、掩码矩阵、目标矩阵等。存储器111可以单独存在,也可以集成于处理器110内部。
[0169]
可以看出,装置20既可以实现对权值矩阵的压缩获得压缩矩阵,又可以实现压缩矩阵与基于reram的加速器的匹配应用。在一些可能的实施例中,装置20的功能也可以拆分至两个不同的装置中,例如第一装置和第二装置,其中,第二装置用于实现对权值矩阵的非结构剪枝以及压缩操作获得压缩矩阵,第一装置用于实现压缩矩阵与基于reram的加速器的匹配应用。具体地,第一装置将权值矩阵、reram的激活行数和reram的激活列数发送给第二装置,第二装置根据reram的激活行数和激活列数对权值矩阵进行处理获得压缩矩阵以及行/列索引信息,第二装置将压缩矩阵和行/列索引信息发送给第一装置,第一装置将接收到的压缩矩阵存储在基于reram的加速器中、行索引信息存储于行转换模块中、列索引信息存储于列转换模块中,第一装置利用行转换模块和列转换模块实现压缩矩阵与基于reram的加速器的匹配应用。有关第一装置中各部分的功能实现以及第二装置中各部分的功能实现具体可参考图11中的相关描述,为了说明书的简洁,在此不再赘述。
[0170]
本技术实施例中,装置20用于实现上述图4和图5实施例所描述的方法。
[0171]
参见图12,图12是本技术实施例提供的一种装置的功能结构示意图,装置22包括获取单元220、处理单元221、第一转换单元222、加速单元223和第二转换单元224。该装置22可以通过硬件、软件或者软硬件结合的方式来实现。
[0172]
其中,获取单元220,用于获取忆阻器reram的激活行数和激活列数;处理单元221,用于对权值矩阵进行非结构剪枝和压缩,获得压缩矩阵块,压缩矩阵块的行数小于等于激活行数,压缩矩阵块的列数小于等于激活列数,压缩矩阵块中同一行的每个权值对应的权值矩阵的行位置相同,压缩矩阵块中同一列的每个权值对应的权值矩阵的列位置相同;第一转换单元222,用于从图像数据中提取索引信息指示的行位置上的数据,以获得压缩矩阵块的每列对应的输入数据;图像数据为权值矩阵的每列对应的输入数据;加速单元223,用于将输入数据输入基于reram的加速器中,获得压缩矩阵块的每列对应的输出数据;第二转换单元224,用于将每列对应的输出数据还原至索引信息指示的权值矩阵中正确的列位置。
[0173]
该装置22的各功能模块可用于实现图4实施例所描述的方法。在图4实施例中,获取单元220可用于执行s101,处理单元221可用于执行s102,第一转换单元222可用于执行s103,加速单元223可用于执行s104,第二转换单元224可用于执行s105。除此之外,处理单元221还用于实现图5实施例所描述的方法,处理单元221可用于执行s1021-s1025。
[0174]
在本文上述的实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
[0175]
需要说明的是,本领域普通技术人员可以看到上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(read-only memory,rom)、随机存储器(random access memory,ram)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、一次可编程只读存储器(one-time programmable read-only memory,otprom)、电子抹除式可复写只读存储
(electrically-erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
[0176]
本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是个人计算机,服务器,或者网络设备、机器人、单片机、芯片、机器人等)执行本技术各个实施例所述方法的全部或部分步骤。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献