本发明属于计算机,特别是涉及一种卷积神经网络加速方法及卷积神经网络加速器。
背景技术:
1、卷积神经网络(convolution neural network,简称cnn)作为一种典型的前馈深度神经网络,在文字识别、图像识别、目标跟踪、人脸检测等领域获得了广泛的应用。卷积神经网络性能的改进通常与深度和参数数量的增加相关,由此导致了过多的计算和内存访问。鉴于当前卷积神经网络趋向于更深、更大的模型以获得更高的精度,有效地处理大规模卷积神经网络仍然是一个重大的挑战。
2、卷积神经网络加速器设计主要表现在两个方面:一是通过剪枝等方式构建稀疏的网络架构,稀疏性已经成为减少cnn中数据和计算的有效方法,论文“deep compression:compressing deep neural networks with pruning,trained quantization andhuffman coding”中提出了一种网络稀疏化处理的方式,主要是小于阈值的权重被修剪为零,然后重新进行训练以保持原始精度,从而显著减少数据访问和计算量;然而,这种方法存在的问题在于稀疏性会导致计算不规则,进而影响密集加速器在计算过程中的性能。二是利用结构化矩阵表示网络以降低权重存储成本,论文“circnn:accelerating andcompressing deep neural networks using block-circulant weight matrices,”使用块循环矩阵表示网络,这种方法存在的问题是在该结构中需要复杂的硬件,并且涉及复数运算,其成本远高于实数运算。
技术实现思路
1、本发明的目的在于克服现有技术的不足,提供一种卷积神经网络加速方法及卷积神经网络加速器。
2、本发明的目的是通过以下技术方案来实现的:
3、根据本发明的第一方面,一种卷积神经网络加速方法,包括:
4、s100.获取预先训练的卷积神经网络的模型参数,所述模型参数包括各卷积层中的卷积核参数;
5、s200.根据各卷积层中的卷积核参数求出各层卷积核中心对称元素的平均值,并将其替代为各卷积层中卷积核的参数;
6、s300.给定输入/输出样本对,基于所述输入/输出样本对对所述卷积神经网络进行训练,并在达到指定的误差范围或者最大次数时结束训练过程。
7、进一步地,所述s300包括以下步骤:
8、s310.给定输入/输出样本对;
9、s320.判断所述卷积神经网络是否达到最大训练次数,若是,则结束训练流程,若否,则执行s330;
10、s330.将输入样本对作为输入向量使卷积神经网络进行前向传播,并逐次地计算隐层单元的输出;
11、s340.将s330中得到的隐层单元的输出作为输入向量来计算输出单元的输出;
12、s350.计算输出单元的误差;
13、s360.判断所述输出单元的误差是否满足预设条件,若是,则结束训练过程,若否,则执行s370;
14、s370.计算隐层单元的误差;
15、s380.判断当前计算误差的隐层单元是否是卷积层,若是,则计算中心对称误差梯度,若否,则计算误差梯度;
16、s390.根据s380中计算得到的梯度卷积核的对权重进行调整,然后执行s320。
17、进一步地,所述输出单元的误差为输出单元的输出与给定的输出样本对之间的差异。
18、进一步地,计算隐层单元的误差,包括:
19、基于输出单元的误差,按照链式法则计算隐层单元误差。
20、根据本发明的第二方面,一种卷积神经网络加速器,包括:
21、全局缓存模块;
22、多个计算引擎,所述计算引擎用于完成卷积运算;
23、控制单元,用于从外部的dram中读取计算所需要的权重数据及偏置数据,并将权重数据缓存到所述全局缓存模块中的权重缓存,将偏置数据缓存到所述全局缓存模块中的权重缓存,将给定输入对缓存到所述全局缓存模块中的输入特征缓存;以及用于控制所述计算引擎读取全局缓存模块中的权重数据、偏置数据及输入特征,并在计算引擎单元中完成卷积运算得到输出特征,并将输出特征缓存到全局缓存模块中的输出特征缓存,以及将输出特征缓存中的输出特征写回到外部的dram存储器中。
24、进一步地,所述计算引擎包括:
25、权重编码单元,用于接受权重缓存中的权重数据,并对权重数据进行稀疏编码,选取px个权重向量来表示权重数据,即得到稀疏权重;
26、输入特征编码单元,用于接受输入特征缓存中的输入特征,并对输入特征进行稀疏编码,选取py个输入激活向量来表示输入特征,即得到稀疏输入特征;
27、乘法器阵列,用于接受来自稀疏权重的px个权重向量和来自稀疏输入特征的py个输入激活向量,然后执行权重向量和输入激活向量的笛卡尔乘积、并生成乘法器阵列输出;
28、坐标计算单元,用于接受权重编码单元提供的权重索引和输入特征编码单元提供的输入特征索引,并根据权重索引和输入特征索引计算乘法器输出的坐标;
29、寻址单元,用于接受来所述笛卡尔乘积和所述乘法器输出的坐标,并根据所述乘法器输出的坐标将所述笛卡尔乘积累加到所述的缓存空间0和1中对应的地址,其中,缓存空间0和1是指加速器内部的累加缓存器0和1;
30、非线性运算单元,用于接受缓存空间0和1的输出数据,对缓存空间0和1的输出数据进行非线性运算,并将非线性运算的结果输出到输出特征缓存中进行缓存。
31、进一步地,所述权重索引的生成方式为:
32、计算权重数据中非零元素的个数;
33、将权重数据中非零元素的个数作为权重索引的第一个元素;
34、计算权重中非零值和相邻非零值之间的零元素个数;
35、将权重中非零值和相邻非零值之间的零元素个数依次作为权重索引除第一个元素外的其他元素。
36、进一步地,稀疏权重中所存储的是依次排序的非零权重。
37、进一步地,所述输入特征索引的生成方式为:
38、计算输入特征中的非零元素的个数;
39、将输入特征中的非零元素的个数作为输入特征索引的第一个元素
40、计算输入特征中非零值和相邻非零值之间的零元素个数;
41、将输入特征中非零值和相邻非零值之间的零元素个数依次作为输入特征索引除第一个元素外的其他元素。
42、进一步地,稀疏输入特征中所存储的是非零输入特征元素。
43、本发明的有益效果是:本发明提供了一种优化卷积核的方法,即中心化处理卷积核的神经网络加速方法,用于对计算密集型和存储密集型的深度学习网络进行加速。在整个迭代运算的过程中,通过均值化中心对称位置元素的反向传播误差的方式,保持卷积核元素的中心对称性。在此基础上,设计了适合卷积核中心化对称处理运算的卷积神经网络加速器。该加速器主要由外部存储器dram、控制单元、全局缓存、多个计算引擎组成。本发明采用的卷积核中心化的处理方式,减少了权重存储所需要的空间和外部存储器的访问次数,使得卷积神经网络的加速具备运算效率较高而所需存储空间较少的目的。
1.一种卷积神经网络加速方法,其特征在于,包括:
2.根据权利要求1所述的一种卷积神经网络加速方法,其特征在于,所述s300包括以下步骤:
3.根据权利要求2所述的一种卷积神经网络加速方法,其特征在于,所述输出单元的误差为输出单元的输出与给定的输出样本对之间的差异。
4.根据权利要求2所述的一种卷积神经网络加速方法,其特征在于,计算隐层单元的误差,包括:
5.一种卷积神经网络加速器,其特征在于,包括:
6.根据权利要求5所述的一种卷积神经网络加速器,其特征在于,所述计算引擎包括:
7.根据权利要求6所述的一种卷积神经网络加速器,其特征在于,所述权重索引的生成方式为:
8.根据权利要求7所述的一种卷积神经网络加速器,其特征在于,稀疏权重中所存储的是依次排序的非零权重。
9.根据权利要求6所述的一种卷积神经网络加速器,其特征在于,所述输入特征索引的生成方式为:
10.根据权利要求9所述的一种卷积神经网络加速器,其特征在于,稀疏输入特征中所存储的是非零输入特征元素。该加速器是在上述卷积神经网络加速方法的基础上设计出来的,该加速方法对卷积核进行中心化对称处理,相当于将卷积核参数压缩了一半,减少了权重存储所需要的空间和外部存储器的访问次数,但压缩后想要通过后续的乘法器阵列进行运算,就必须要经过稀疏编码得到权重及输入特征索引,该加速器通过编码单元将整个神经网络加速流程连接起来,使得卷积神经网络的加速具备运算效率较高而所需存储空间较少的特点。