CN108510063B - 一种应用于卷积神经网络的加速方法和加速器 - Google Patents
一种应用于卷积神经网络的加速方法和加速器 Download PDFInfo
- Publication number
- CN108510063B CN108510063B CN201810306577.3A CN201810306577A CN108510063B CN 108510063 B CN108510063 B CN 108510063B CN 201810306577 A CN201810306577 A CN 201810306577A CN 108510063 B CN108510063 B CN 108510063B
- Authority
- CN
- China
- Prior art keywords
- feature map
- preset threshold
- density
- neural network
- convolution kernel
- 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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
-
- 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/048—Activation functions
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种应用于卷积神经网络的加速方法和加速器,所述方法包括:S1,对于卷积神经网络中的任一层,分别计算该层输出的各特征图的稠密度;S2,将该层输出的各所述特征图的稠密度与多个预设阈值进行比较,根据比较结果将各所述特征图进行稀疏编码;其中,不同的比较结果对应不同的稀疏编码方式;S3,基于该层下一层的卷积层对稀疏编码后的各所述特征图和预先稀疏编码的所述卷积神经网络中的各卷积核进行卷积。本发明减少卷积神经网络中卷积运算的计算量,提高了运算速度。
Description
技术领域
本发明属于运算优化技术领域,更具体地,涉及一种应用于卷积神经网络的加速方法和加速器。
背景技术
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,其人工神经元可以响应一部分覆盖范围内的周围单元,适用于对大型图像的处理。卷积神经网络广泛应用于图像识别、语音识别等领域,但计算量非常大。
由于卷积神经网络中的激活函数ReLU(Rectified linear unit,修正线性单元)会造成大量稀疏的特征图(feature map);同时,采用剪枝等方法训练卷积神经网络会造成大量稀疏的权重数据(weight data)。利用特征图和权重数据的稀疏性可以大幅提高卷积神经网络的计算效率。目前,已有很多方法基于卷积神经网络中特征图和权重数据的稀疏性提高计算速度。这些方法大致可以分为两类,一类着眼于跳过0值。例如有的方法去除输入中的0值,从而减少输入为0的无效计算。另一类采取忽略零值的方法。例如有的方法在输入数据为0时,不执行乘法操作,从而减少运算。但这些方法都着眼于处理稀疏神经网络本身,假定神经网络稀疏是前提。然而实际上卷积神经网络中各层输出特征图可能是稀疏的,可能是非稀疏的。实际运用中卷积神经网络各层的权重数据和特征图的稠密度一般在5%-90%之间分布。
稀疏矩阵是指数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律的矩阵。现有技术中一方面只能对稀疏的卷积神经网络进行处理,在卷积神经网络不是稀疏的情况下计算量很大,运算速度低;另一方面现有技术只能处理卷积神经中权重数据或特征图是稀疏的情况,不能处理权重数据和特征图都是稀疏的情况。
发明内容
为克服上述卷积神经网络运算速度低的问题或者至少部分地解决上述问题,本发明提供了一种应用于卷积神经网络的加速方法和加速器。
根据本发明的第一方面,提供一种应用于卷积神经网络的加速方法,包括:
S1,对于卷积神经网络中的任一层,分别计算该层输出的各特征图的稠密度;
S2,将该层输出的各所述特征图的稠密度与多个预设阈值进行比较,根据比较结果将各所述特征图进行稀疏编码;其中,不同的比较结果对应不同的稀疏编码方式;
S3,基于该层下一层的卷积层对稀疏编码后的各所述特征图和预先稀疏编码的所述卷积神经网络中的各卷积核进行卷积。
具体地,所述步骤S1具体包括:
对于任一所述特征图,统计该特征图中非0元素的个数和该特征图中所有元素的总个数;
将该特征图中非0元素的个数与该特征图中所有元素的总个数之间的比值作为该特征图的稠密度。
具体地,所述预设阈值包括第一预设阈值和第二预设阈值;其中,所述第一预设阈值小于所述第二预设阈值;
相应地,所述步骤S2具体包括:
若各所述特征图的稠密度小于所述第一预设阈值,则将各所述特征图编码为稀疏矩阵存储格式;
若各所述特征图的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述特征图中的0元素进行标记;
若各所述特征图的稠密度大于或等于所述第二预设阈值,则不对各所述特征图进行稀疏编码。
具体地,所述步骤S3之前还包括:
计算训练好的卷积网络中各卷积核的稠密度;
若各所述卷积核的稠密度小于所述第一预设阈值,则将各所述卷积核编码为稀疏矩阵存储格式;
若各所述卷积核的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述卷积核中的0元素进行标记;
若各所述卷积核的稠密度大于或等于所述第二预设阈值,则不对各所述卷积核进行稀疏编码。
具体地,所述步骤S3具体包括:
当各所述特征图或各所述卷积核中存在所述标记时,对各所述特征图或各所述卷积核中标记对应的元素不进行计算。
根据本发明另一方面提供一种应用于卷积神经网络的加速器,包括:神经网络计算阵列模块和动态稀疏调整模块;
其中,所述动态稀疏调整模块用于计算卷积神经网络各层输出的各特征图的稠密度,将各所述特征图的稠密度与多个预设阈值进行比较,根据比较结果对各所述特征图进行稀疏编码;其中,不同的比较结果对应的不同稀疏编码方式;
所述神经网络计算阵列模块用于对稀疏编码后的各所述特征图和预先稀疏编码的所述卷积神经网络中的各卷积核进行卷积操作。
具体地,所述动态稀疏调整模块包括线上稠密度识别模块、输出临时寄存模块、动态编码模块和动态稀疏控制模块;
其中,所述线上稠密度识别模块用于对于任一所述特征图,统计该特征图中0元素的个数和该特征图中所有元素的总个数;将该特征图中0元素的个数与该特征图中所有元素的总个数之间的比值作为该特征图的稠密度;
所述输出临时寄存模块用于存储卷积神经网络中各层输出的各所述特征图;
所述动态稀疏控制模块用于将所述线上稠密度识别模块输出的各所述特征图的稠密度与多个预设阈值进行比较;
所述动态编码模块用于根据比较结果将所述输出临时寄存模块中各所述特征图进行稀疏编码。
具体地,所述预设阈值包括第一预设阈值和第二预设阈值;其中,所述第一预设阈值小于所述第二预设阈值;
相应地,所述动态编码模块具体用于:
若各所述特征图的稠密度小于所述第一预设阈值,则将各所述特征图编码为稀疏矩阵存储格式;
若各所述特征图的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述特征图中的0元素进行标记;
若各所述特征图的稠密度大于或等于所述第二预设阈值,则不对各所述特征图进行稀疏编码。
具体地,所述动态编码模块还用于:
若预先计算的各所述卷积核的稠密度小于所述第一预设阈值,则将各所述卷积核编码为稀疏矩阵存储格式;
若各所述卷积核的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述卷积核中的0元素进行标记;
若各所述卷积核的稠密度大于或等于所述第二预设阈值,则不对各所述卷积核进行稀疏编码。
具体地,所述神经网络计算阵列模块具体用于:
当各所述特征图或各所述卷积核中存在所述标记时,对各所述特征图或各所述卷积核中标记对应的元素不进行计算。
本发明提供一种应用于卷积神经网络的加速方法和加速器,该方法通过将卷积神经网络中各层输出的各特征图的稠密度与多个预设阈值进行比较,获取各所述特征图的稀疏状态,将不同稀疏状态的特征图进行不同方式的稀疏编码,然后基于各层下一层的卷积层对稀疏编码后的各特征图和预先稀疏编码的卷积神经网络中的卷积核进行卷积操作,减少卷积神经网络中卷积运算的计算量,提高运算速度。
附图说明
图1为本发明实施例提供的应用于卷积神经网络的加速方法整体流程示意图;
图2为本发明实施例提供的应用于卷积神经网络的加速器整体结构示意图;
图3为本发明实施例提供的应用于卷积神经网络的加速器中极限能量效率测试结果示意图;
图4为本发明实施例提供的应用于卷积神经网络的加速器中极限能量效率测试结果对比示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
在本发明的一个实施例中提供一种应用于卷积神经网络的加速方法,图1为本发明实施例提供的应用于卷积神经网络的加速方法整体流程示意图,该方法包括:
S1,对于卷积神经网络中的任一层,分别计算该层输出的各特征图的稠密度;
具体地,所述卷积神经网络中可以包括池化层或不包括池化层。首先对所述卷积神经网络进行训练,训练完成后卷积神经网络中的卷积核不再变动,因此卷积神经网络中的卷积核不需要线上动态稀疏编码,直接线下稀疏编码一次即可。所述线上是指位于加速器的芯片上,所述线下是指不位于所述加速器的芯片上。在每次卷积运算时直接读取稀疏编码的卷积核进行卷积计算。当输入原始图像数据时,对原始图像数据进行稀疏编码,然后将稀疏编码的原始数据和稀疏编码的卷积核输入所述卷积神经网络的第一层卷积层进行卷积计算。由于原始图像数据一般不是稀疏的,也可以不对所述原始图像数据进行稀疏编码,直接输入所述原始图像数据。所述稀疏编码是将数据以稀疏格式存储。
S1中,由于卷积神经网络中每层输出的各特征图的稠密度不一样,不同层输出的特征图也是动态变化的,因此稠密度也是动态变化的。所述稠密度表示各所述特征图的稀疏程度。为了更好地提高所述卷积神经网络的运算速度,计算每一层输出的各特征图的稠密度,以根据每一层输出的各特征图的稠密度对每一层输出的各特征图进行稀疏编码。
S2,将该层输出的各所述特征图的稠密度与多个预设阈值进行比较,根据比较结果将各所述特征图进行稀疏编码;其中,不同的比较结果对应不同的稀疏编码方式;
S2中,现有技术中将各层输出的特征图全部进行稀疏编码,计算量大。本实施例根据所述预设阈值获取该层输出的各所述特征图的稀疏状态。从而将不同稀疏状态的特征图进行不同形式的稀疏编码。
S3,基于该层下一层的卷积层对稀疏编码后的各所述特征图和预先稀疏编码的所述卷积神经网络中的各卷积核进行卷积。
S3中,将稀疏编码后的各所述特征图和预先稀疏编码的所述卷积神经网络中的各卷积核作为该层下一层的卷积层的输入,进行卷积操作。然后,将所述卷积操作的结果作为所述卷积层下一层的输入,将所述卷积层下一层输出的特征图继续执行上述稀疏编码和卷积操作,直到所述卷积神经网络中最后一层输出各特征图为止。本实施例中不限于卷积核的稀疏编码方式。
本实施例将卷积神经网络中各层输出的各特征图的稠密度与多个预设阈值进行比较,获取各所述特征图的稀疏状态,将不同稀疏状态的特征图进行不同方式的稀疏编码,然后基于各层下一层的卷积层对稀疏编码后的各特征图和预先稀疏编码的卷积神经网络中的卷积核进行卷积操作,减少卷积神经网络中卷积运算的计算量,提高运算速度。
在上述实施例的基础上,本实施例中,所述步骤S1具体包括:对于任一所述特征图,统计该特征图中非0元素的个数和该特征图中所有元素的总个数;将该特征图中非0元素的个数与该特征图中所有元素的总个数之间的比值作为该特征图的稠密度。
具体地,各特征图的稠密度为各特征图中非0元素的个数与各特征图中所有元素的总个数之间的比值。例如,一个特征图中非0元素的个数为10,该特征图中所有元素的总个数为100,则该特征图的稠密度为0.1。
在上述实施例的基础上,本实施例中所述预设阈值包括第一预设阈值和第二预设阈值;所述预设阈值包括第一预设阈值和第二预设阈值;相应地,所述步骤S2具体包括:若各所述特征图的稠密度小于所述第一预设阈值,则将各所述特征图编码为稀疏矩阵存储格式;若各所述特征图的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述特征图中的0元素进行标记;若各所述特征图的稠密度大于或等于所述第二预设阈值,则不对各所述特征图进行稀疏编码。
具体地,本实施例中所述预设阈值包括第一预设阈值th1和第二预设阈值th2。根据所述第一预设阈值和所述第二预设阈值将各所述特征图的特征状态AS分为三种状态,即将稠密度小于所述第一预设阈值的特征图分为完全稀疏状态S,将稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值的特征图分为中等稀疏状态M,将稠密度大于或等于所述第二预设阈值的特征图分为完全非稀疏状态D。若各特征图为稀疏状态S,则将各所述特征图编码为稀疏矩阵存储格式,所述稀疏矩阵存储格式包括各所述特征图中的非0数据activ和稀疏索引index,例如坐标编码和压缩稀疏行编码。通过将特征图编码为稀疏矩阵存储格式,可以节省大量存储空间,同时节省大量计算时间。若各特征图为中等稀疏状态M,则将各特征图中的0元素添加标记guard,所述标记用于标识0元素。对于标记的元素可以不参与计算和存储,从而降低功耗。将各特征图中的0元素进行标记也是一种稀疏编码方式。若各特征图为完全非稀疏状态D,则不需要动态编码,直接输出各特征图的非稀疏数据。
在上述实施例的基础上,本实施例中所述步骤S3之前还包括:计算训练好的卷积网络中各卷积核的稠密度;若各所述卷积核的稠密度小于所述第一预设阈值,则将各所述卷积核编码为稀疏矩阵存储格式;若各所述卷积核的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述卷积核中的0元素进行标记;若各所述卷积核的稠密度大于或等于所述第二预设阈值,则不对各所述卷积核进行编码。
具体地,各卷积核的稠密度为各卷积核中非0元素的个数与各卷积核中所有元素的总个数之间的比值。将各卷积核的状态WS与特征图一样分为三种状态。每种状态对应不同的稀疏编码方式。由于特征图和卷积核各存在三种状态,组合后共有9种状态,从而对卷积神经网络的稠密度进行更细粒度的划分。
在上述各实施例的基础上,本实施例中所述步骤S3具体包括:当各所述特征图或各所述卷积核中存在所述标记时,对各所述特征图或各所述卷积核中标记对应的元素不进行计算。
具体地,当各所述特征图或各所述卷积核为完全稀疏状态S时,在输入前去除0,减少存储空间,同时不用对0元素进行计算;当各所述特征图或各所述卷积核为中等稀疏状态M时,各所述特征图或各所述卷积核中的0元素虽然存储,但对标记对应的元素不进行计算,从而减少计算。
在本发明的另一个实施例中提供一种应用于卷积神经网络的加速器,图2为本发明实施例提供的应用于卷积神经网络的加速器整体结构示意图,包括:神经网络计算阵列模块和动态稀疏调整模块;其中,所述动态稀疏调整模块用于计算卷积神经网络中各层输出的各特征图的稠密度,将各所述特征图的稠密度与多个预设阈值进行比较,根据比较结果对各所述特征图进行稀疏编码;其中,不同的比较结果对应的不同稀疏编码方式;所述神经网络计算阵列模块用于对稀疏编码后的各所述特征图和预先稀疏编码的所述卷积神经网络中的各卷积核进行卷积操作。
具体地,所述卷积神经网络中可以包括池化层或不包括池化层。首先对卷积神经网络进行训练,训练完成后卷积神经网络中的卷积核不再变动,因此卷积神经网络中的卷积核不需要线上动态稀疏编码,直接线下稀疏编码一次即可。在每次卷积运算时所述神经网络计算阵列模块直接读取线下稀疏编码的卷积核进行卷积计算。当卷积神经网络输入原始图像数据时,动态稀疏调整模块对原始图像数据进行稀疏编码,然后神经网络计算阵列模块根据稀疏编码的原始数据和稀疏编码的卷积核进行卷积计算。由于原始图像数据一般不是稀疏的,也可以不对所述原始图像数据进行稀疏编码,直接输入所述原始图像数据。所述稀疏编码是将数据以稀疏格式存储。
由于卷积神经网络中各层输出的各特征图的稠密度不一样,不同层输出的特征图也是动态变化的,因此稠密度也是动态变化的。所述稠密度表示各所述特征图的稀疏程度。为了更好地提高所述卷积神经网络的运算速度,所述动态稀疏调整模块计算每一层输出的各特征图的稠密度,以根据每一层输出的各特征图的稠密度对每一层输出的各特征图进行稀疏编码。
所述动态稀疏调整模块根据多个预设阈值获取该层输出的各所述特征图的稀疏状态。从而将不同稀疏状态的特征图进行不同形式的稀疏编码,而不仅限于一种稀疏编码。现有技术中将各层输出的特证图全部进行稀疏编码,计算量大。
所述神经网络计算阵列模块根据稀疏编码后的各所述特征图和预先稀疏编码的所述卷积神经网络中的各卷积核进行卷积操作。如果包括池化模块,所述池化模块将所述卷积操作的结果进行池化操作。此外,所述加速器还包括中间数据存储器模块、主芯片控制器和芯片上下数据交流模块。其中,所述主控制器控制加速器整个芯片的运行动作与时序。芯片上下数据交流模块用于从所述芯片外部存储器读取数据或将芯片计算好的数据写入外部存储。例如,初始化后,芯片在所述主控制器的控制下通过所述芯片上下数据交流模块从外部存储器读取原始图像数据和初始卷积核。所述中间数据存储器模块用于存储所述神经网络计算阵列模块计算过程中的中间结果。
本实施例动态稀疏调整模块将卷积神经网络各层输出的各特征图的稠密度与多个预设阈值进行比较,获取各所述特征图的稀疏状态,将不同稀疏状态的特征图进行不同方式的稀疏编码,以供神经网络计算阵列模块对稀疏编码后的各特征图和预先稀疏编码的卷积神经网络中的卷积核进行卷积操作,一方面,减少卷积神经网络中卷积运算的计算量,提高运算速度;另一方面,根据稀疏状态的不同,动态切换加速器的处理状态,提高了加速器的灵活性。
在上述实施例的基础上,本实施例中所述动态稀疏调整模块包括线上稠密度识别模块、输出临时寄存模块、动态编码模块和动态稀疏控制模块;其中,所述线上稠密度识别模块用于对于任一所述特征图,统计该特征图中0元素的个数和该特征图中所有元素的总个数;将该特征图中0元素的个数与该特征图中所有元素的总个数之间的比值作为该特征图的稠密度;所述输出临时寄存模块用于存储卷积神经网络中各层输出的各所述特征图;所述动态稀疏控制模块用于将所述线上稠密度识别模块输出的各所述特征图的稠密度与多个预设阈值进行比较;所述动态编码模块用于根据比较结果将所述输出临时寄存模块中各所述特征图进行稀疏编码。
具体地,所述动态稀疏调整模块具体包括四个模块。所述线上稠密度识别模块用于统计计算过程中各特征图中非0元素的个数,以计算各特征图的稠密度。所述输出临时寄存模块用于将卷积神经网络中各层输出的特征图以非稀疏格式进行暂存。所述动态稀疏控制模块用于通过预设的多个预设阈值控制所述特征图的稀疏状态。所述动态编码模块根据各所述特征图的稀疏状态将所述输出临时寄存模块中各所述特征图进行稀疏编码,从而提高卷积运算的速度。
在上述实施例的基础上,本实施例中所述预设阈值包括第一预设阈值和第二预设阈值;所述预设阈值包括第一预设阈值和第二预设阈值;相应地,所述动态编码模块具体用于:若各所述特征图的稠密度小于所述第一预设阈值,则将各所述特征图编码为稀疏矩阵存储格式;若各所述特征图的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述特征图中的0元素进行标记;若各所述特征图的稠密度大于或等于所述第二预设阈值,则不对各所述特征图进行编码。
具体地,本实施例中所述预设阈值包括第一预设阈值th1和第二预设阈值th2。所述动态稀疏控制模块根据所述第一预设阈值和所述第二预设阈值将各所述特征图的特征状态AS分为三种状态,即将稠密度小于所述第一预设阈值的特征图分为完全稀疏状态S,将稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值的特征图分为中等稀疏状态M,将稠密度大于或等于所述第二预设阈值的特征图分为完全非稀疏状态D。
若各特征图为稀疏状态S,则所述动态编码模块将所述输出临时寄存模块中各所述特征图编码为稀疏矩阵存储格式,所述稀疏矩阵存储格式包括各所述特征图中的非0数据activ和稀疏索引index,例如坐标编码和压缩稀疏行编码。通过将特征图编码为稀疏矩阵存储格式,可以节省大量存储空间,同时节省大量计算时间。若各特征图为中等稀疏状态M,则所述动态编码模块将所述输出临时寄存模块中各特征图中的0元素添加标记guard,对于标记的元素可以不参与计算和存储,从而降低功耗。若各特征图为完全非稀疏状态D,则不需要动态编码,所述动态编码模块直接输出各特征图的非稀疏数据。
在上述实施例的基础上,本实施例中所述动态编码模块还用于:若预先计算的各所述卷积核的稠密度小于所述第一预设阈值,则将各所述卷积核编码为稀疏矩阵存储格式;若各所述卷积核的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述卷积核中的0元素进行标记;若各所述卷积核的稠密度大于或等于所述第二预设阈值,则不对各所述卷积核进行编码。
具体地,各卷积核的稠密度为各卷积核中非0元素的个数与各卷积核中所有元素的总个数之间的比值。各卷积核的状态WS与特征图一样有三种状态。每种状态对应不同的稀疏编码方式。由于特征图和卷积核各存在三种状态,组合后共有9种状态,从而对卷积神经网络的稠密度进行更细粒度的划分。
在上述各实施例的基础上,本实施例中所述神经网络计算阵列模块具体用于:当各所述特征图或各所述卷积核中存在所述标记时,对各所述特征图或各所述卷积核中标记对应的元素不进行计算。
具体地,当各所述特征图或各所述卷积核为完全稀疏状态S时,在将各所述特征图或各所述卷积核输入所述神经网络计算阵列模块前去除0,减少存储空间,同时不用对0元素进行计算;当各所述特征图或各所述卷积核为中等稀疏状态M时,各所述特征图或各所述卷积核中的0元素虽然存储,但对标记对应的元素不进行计算,从而减少计算。
例如,采用台积电65nm工艺制作所述加速器的芯片,所述芯片的面积为3mm*4mm,运行频率为20-200MHz,功耗为20.5-248.4毫瓦。本实施例中极限能量效率会随着特征图和卷积核稠密度的下降而快速上升,如图3所示。当特征图和卷积核的稠密度均为5%时,极限能量效率可达到62.1TOPS/W,是不采用本实施例加速器时极限能量效率的6.2倍。如图4所示,相比于只支持特征数据稀疏的实现,本实施例能量效率可提升4.3倍。相比于无自适应稀疏控制的实现,本发明能量效率可提升2.8倍。相比于无稠密度控制但量化精度可变的实现,本发明能量效率可提升2倍。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种应用于卷积神经网络的加速方法,其特征在于,包括:
S1,对于卷积神经网络中的任一层,分别计算该层输出的各特征图的稠密度;
S2,将该层输出的各所述特征图的稠密度与多个预设阈值进行比较,根据比较结果将各所述特征图进行稀疏编码;其中,不同的比较结果对应不同的稀疏编码方式;
S3,基于该层下一层的卷积层对稀疏编码后的各所述特征图和预先稀疏编码的所述卷积神经网络中的各卷积核进行卷积;
其中,所述预设阈值包括第一预设阈值和第二预设阈值;其中,所述第一预设阈值小于所述第二预设阈值;
相应地,所述步骤S2具体包括:
若各所述特征图的稠密度小于所述第一预设阈值,则将各所述特征图编码为稀疏矩阵存储格式;
若各所述特征图的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述特征图中的0元素进行标记;
若各所述特征图的稠密度大于或等于所述第二预设阈值,则不对各所述特征图进行稀疏编码;
所述步骤S3具体包括:
当各所述特征图中存在所述标记时,对各所述特征图中标记对应的元素不进行计算。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1具体包括:
对于任一所述特征图,统计该特征图中非0元素的个数和该特征图中所有元素的总个数;
将该特征图中非0元素的个数与该特征图中所有元素的总个数之间的比值作为该特征图的稠密度。
3.根据权利要求1所述的方法,其特征在于,所述步骤S3之前还包括:
计算训练好的卷积网络中各卷积核的稠密度;
若各所述卷积核的稠密度小于所述第一预设阈值,则将各所述卷积核编码为稀疏矩阵存储格式;
若各所述卷积核的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述卷积核中的0元素进行标记;
若各所述卷积核的稠密度大于或等于所述第二预设阈值,则不对各所述卷积核进行稀疏编码。
4.根据权利要求3所述的方法,其特征在于,所述步骤S3具体包括:
当各所述卷积核中存在所述标记时,对各所述卷积核中标记对应的元素不进行计算。
5.一种应用于卷积神经网络的加速器,其特征在于,包括:神经网络计算阵列模块和动态稀疏调整模块;
其中,所述动态稀疏调整模块用于计算卷积神经网络中各层输出的各特征图的稠密度,将各所述特征图的稠密度与多个预设阈值进行比较,根据比较结果对各所述特征图进行稀疏编码;其中,不同的比较结果对应的不同稀疏编码方式;
所述神经网络计算阵列模块用于对稀疏编码后的各所述特征图和预先稀疏编码的所述卷积神经网络中的各卷积核进行卷积操作;
其中,所述预设阈值包括第一预设阈值和第二预设阈值;其中,所述第一预设阈值小于所述第二预设阈值;
相应地,所述动态稀疏调整模块包括动态编码模块,所述动态编码模块具体用于:
若各所述特征图的稠密度小于所述第一预设阈值,则将各所述特征图编码为稀疏矩阵存储格式;
若各所述特征图的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述特征图中的0元素进行标记;
若各所述特征图的稠密度大于或等于所述第二预设阈值,则不对各所述特征图进行稀疏编码;
所述神经网络计算阵列模块具体用于:
当各所述特征图中存在所述标记时,对各所述特征图中标记对应的元素不进行计算。
6.根据权利要求5所述的加速器,其特征在于,所述动态稀疏调整模块包括线上稠密度识别模块、输出临时寄存模块、动态编码模块和动态稀疏控制模块;
其中,所述线上稠密度识别模块用于对于任一所述特征图,统计该特征图中0元素的个数和该特征图中所有元素的总个数;将该特征图中0元素的个数与该特征图中所有元素的总个数之间的比值作为该特征图的稠密度;
所述输出临时寄存模块用于存储卷积神经网络中各层输出的各所述特征图;
所述动态稀疏控制模块用于将所述线上稠密度识别模块输出的各所述特征图的稠密度与多个预设阈值进行比较;
所述动态编码模块用于根据比较结果将所述输出临时寄存模块中各所述特征图进行稀疏编码。
7.根据权利要求5所述的加速器,其特征在于,所述动态编码模块还用于:
若预先计算的各所述卷积核的稠密度小于所述第一预设阈值,则将各所述卷积核编码为稀疏矩阵存储格式;
若各所述卷积核的稠密度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则将各所述卷积核中的0元素进行标记;
若各所述卷积核的稠密度大于或等于所述第二预设阈值,则不对各所述卷积核进行稀疏编码。
8.根据权利要求7所述的加速器,其特征在于,所述神经网络计算阵列模块具体用于:
当各所述卷积核中存在所述标记时,对各所述卷积核中标记对应的元素不进行计算。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810306577.3A CN108510063B (zh) | 2018-04-08 | 2018-04-08 | 一种应用于卷积神经网络的加速方法和加速器 |
PCT/CN2018/095365 WO2019196223A1 (zh) | 2018-04-08 | 2018-07-12 | 一种应用于卷积神经网络的加速方法和加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810306577.3A CN108510063B (zh) | 2018-04-08 | 2018-04-08 | 一种应用于卷积神经网络的加速方法和加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108510063A CN108510063A (zh) | 2018-09-07 |
CN108510063B true CN108510063B (zh) | 2020-03-20 |
Family
ID=63380995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810306577.3A Active CN108510063B (zh) | 2018-04-08 | 2018-04-08 | 一种应用于卷积神经网络的加速方法和加速器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108510063B (zh) |
WO (1) | WO2019196223A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109389043B (zh) * | 2018-09-10 | 2021-11-23 | 中国人民解放军陆军工程大学 | 一种无人机航拍图片的人群密度估计方法 |
CN109409518B (zh) * | 2018-10-11 | 2021-05-04 | 北京旷视科技有限公司 | 神经网络模型处理方法、装置及终端 |
CN109784484A (zh) * | 2019-01-31 | 2019-05-21 | 深兰科技(上海)有限公司 | 神经网络加速方法、装置、神经网络加速芯片及存储介质 |
CN110097172B (zh) * | 2019-03-18 | 2021-10-29 | 中国科学院计算技术研究所 | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 |
CN109858575B (zh) * | 2019-03-19 | 2024-01-05 | 苏州市爱生生物技术有限公司 | 基于卷积神经网络的数据分类方法 |
CN110443357B (zh) * | 2019-08-07 | 2020-09-15 | 上海燧原智能科技有限公司 | 卷积神经网络计算优化方法、装置、计算机设备及介质 |
CN110909801B (zh) * | 2019-11-26 | 2020-10-09 | 山东师范大学 | 基于卷积神经网络的数据分类方法、***、介质及设备 |
CN111291230B (zh) * | 2020-02-06 | 2023-09-15 | 北京奇艺世纪科技有限公司 | 特征处理方法、装置、电子设备及计算机可读存储介质 |
CN111401554B (zh) * | 2020-03-12 | 2023-03-24 | 交叉信息核心技术研究院(西安)有限公司 | 支持多粒度稀疏与多模式量化的卷积神经网络的加速器 |
CN113537465A (zh) * | 2021-07-07 | 2021-10-22 | 深圳市易成自动驾驶技术有限公司 | Lstm模型优化方法、加速器、装置及介质 |
WO2023164855A1 (en) * | 2022-03-03 | 2023-09-07 | Intel Corporation | Apparatus and method for 3d dynamic sparse convolution |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184362B (zh) * | 2015-08-21 | 2018-02-02 | 中国科学院自动化研究所 | 基于参数量化的深度卷积神经网络的加速与压缩方法 |
US10380479B2 (en) * | 2015-10-08 | 2019-08-13 | International Business Machines Corporation | Acceleration of convolutional neural network training using stochastic perforation |
CN107679617B (zh) * | 2016-08-22 | 2021-04-09 | 赛灵思电子科技(北京)有限公司 | 多次迭代的深度神经网络压缩方法 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN107609641B (zh) * | 2017-08-30 | 2020-07-03 | 清华大学 | 稀疏神经网络架构及其实现方法 |
-
2018
- 2018-04-08 CN CN201810306577.3A patent/CN108510063B/zh active Active
- 2018-07-12 WO PCT/CN2018/095365 patent/WO2019196223A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN108510063A (zh) | 2018-09-07 |
WO2019196223A1 (zh) | 2019-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108510063B (zh) | 一种应用于卷积神经网络的加速方法和加速器 | |
Zhou et al. | Understanding the robustness in vision transformers | |
CN111368662B (zh) | 一种人脸图像属性编辑方法、装置、存储介质及设备 | |
CN111160523B (zh) | 基于特征值区域的动态量化方法、***及介质 | |
WO2019127362A1 (zh) | 神经网络模型分块压缩方法、训练方法、计算装置及*** | |
CN105718943A (zh) | 基于粒子群优化算法的特征选择方法 | |
CN109886391B (zh) | 一种基于空间正反对角卷积的神经网络压缩方法 | |
Bruske et al. | Dynamic cell structures | |
CN113657421B (zh) | 卷积神经网络压缩方法和装置、图像分类方法和装置 | |
CN112257844B (zh) | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 | |
CN111814973A (zh) | 一种适用于神经常微分方程网络计算的存内计算*** | |
CN112215298A (zh) | 模型训练方法、装置、设备及可读存储介质 | |
CN112288046B (zh) | 一种用于神经网络的基于混合粒度的联合稀疏方法 | |
Wei et al. | Automatic group-based structured pruning for deep convolutional networks | |
CN109670582A (zh) | 一种全定点化神经网络的设计方法 | |
CN116894189A (zh) | 一种模型训练方法、装置、设备及可读存储介质 | |
US20210397962A1 (en) | Effective network compression using simulation-guided iterative pruning | |
Shymyrbay et al. | Training-aware low precision quantization in spiking neural networks | |
CN111602145A (zh) | 卷积神经网络的优化方法及相关产品 | |
CN113705784A (zh) | 一种基于矩阵共享的神经网络权重编码方法及硬件*** | |
CN114065920A (zh) | 一种基于通道级剪枝神经网络的图像识别方法及*** | |
CN113222142A (zh) | 一种通道剪枝和快捷连接层剪枝方法及*** | |
Ho et al. | MiCE: an ANN-to-SNN conversion technique to Enable High Accuracy and Low Latency | |
Li et al. | Non-negative matrix-set factorization | |
EP4007173A1 (en) | Data storage method, and data acquisition method and apparatus therefor |
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 |