CN112529165A - 深度神经网络剪枝方法、装置、终端及存储介质 - Google Patents
深度神经网络剪枝方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN112529165A CN112529165A CN202011529589.6A CN202011529589A CN112529165A CN 112529165 A CN112529165 A CN 112529165A CN 202011529589 A CN202011529589 A CN 202011529589A CN 112529165 A CN112529165 A CN 112529165A
- Authority
- CN
- China
- Prior art keywords
- neural network
- deep neural
- convolution
- layer
- calculation
- 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.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 97
- 238000013138 pruning Methods 0.000 title claims abstract description 72
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000003860 storage Methods 0.000 title claims description 9
- 238000004364 calculation method Methods 0.000 claims abstract description 63
- 238000012549 training Methods 0.000 claims abstract description 34
- 238000003062 neural network model Methods 0.000 claims abstract description 20
- 238000005096 rolling process Methods 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 55
- 238000010606 normalization Methods 0.000 claims description 33
- 230000004913 activation Effects 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 10
- 238000012217 deletion Methods 0.000 claims description 6
- 230000037430 deletion Effects 0.000 claims description 6
- 230000014759 maintenance of location Effects 0.000 claims description 6
- 238000011478 gradient descent method Methods 0.000 claims description 3
- 230000010354 integration Effects 0.000 claims description 3
- 230000002596 correlated effect Effects 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000000875 corresponding effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开一种深度神经网络剪枝方法,包括以下步骤:以堆叠多个卷积块的方式构建全卷积深度神经网络模型;计算每个卷积块的计算强度;设计损失函数,对深度神经网络进行稀疏化训练,获得网络模型参数;提取出每个卷积块的的gamma值,进行剪枝操作;根据Mask的值重新整合深度神经网络,得到新的参数结构,并应用到边缘端GPU计算。本发明提供的深度神经网络剪枝方法,对每个卷积层分别进行计算强度的计算,从计算强度的角度出发设计剪枝惩罚系数函数,每层卷积块的剪枝惩罚系数与该卷积块的计算强度正相关,计算强度越大的卷积块,惩罚系数越大,明显的降低了计算耗时,提升了边缘端的计算速度以及模型预测的准确率。
Description
【技术领域】
本发明涉及模型剪枝技术领域,尤其涉及一种深度神经网络剪枝方法、装置、终端及存储介质。
【背景技术】
随着人工智能技术的发展,深度神经网络的普及,对设备的算力需求激增。例如,越来越多的机器人等边缘端设备会挂载或集成微型图形计算单元GPU,通常,这类边缘端微型GPU算力与带宽有限,在一些对计算实时性要求较高的场景,GPU无法及时完成深度神经网络的计算,因此,需要对深度神经网络进行优化。神经网络剪枝,是人工智能领域中一种常见的技术,其中通道剪枝技术(channel prune)应用最广,该技术对深度神经网络中一些特定层施加统一的约束条件,可以达到对网络“瘦身”目的。
然而,在深度神经网络中,不同位置的卷积层,所需计算量和数据访存量也不同,统一处理并不能高效地对网络“瘦身”,尤其在边缘端资源有限的GPU设备上,一般的通道剪枝技术修剪的深度神经网络往往与GPU不适配,导致深度神经网络计算消耗的时间下降不明显。
鉴于此,实有必要提供一种深度神经网络剪枝方法、装置、终端及存储介质以克服上述缺陷。
【发明内容】
本发明的目的是提供一种深度神经网络剪枝方法、装置、终端及存储介质,旨在解决现有的通道剪枝技术中对不同卷积层进行统一处理时并不能高效地网络“瘦身”的问题,根据每层卷积层的计算强度设定权重、加权的剪枝策略,能让深度神经网络性能速度达到最优,计算消耗的时间下降明显。
为了实现上述目的,本发明第一方面是提供一种深度神经网络剪枝方法,应用于边缘端GPU计算,包括以下步骤:
以堆叠多个卷积块的方式构建全卷积深度神经网络模型;其中,每个卷积块均包括卷积层、批归一化层及激活层;
计算每个卷积块的计算强度;
设计损失函数,对所述深度神经网络进行稀疏化训练,获得网络模型参数;其中,所述损失函数定义为:Loss=Loss_ce+ΣWeight[i]*||gamma[i]||,其中,Weight[i]=alpha*sqrt(Intensity[i]/Intensity_base),Weight[i]为第i个卷积块的惩罚系数(i=1,2,3,4,…,N,N为卷积块的数量),Alpha为惩罚系数常量,Intensity[i]为第i个卷积块的计算强度,Intensity_base为最后一层卷积块的计算强度,Loss_ce为交叉熵损失函数,gamma[i]为第i个卷积块的gamma值;
提取出所述每个卷积块的的gamma值,根据下列公式进行剪枝操作:Mask[i]=||gamma[i]||>0.0001;其中,Mask=1表示保留通道;Mask=0表示删除通道;
根据Mask的值重新整合所述深度神经网络,得到新的参数结构,并应用到所述边缘端GPU计算。
在一个优选实施方式中,所述以堆叠多个卷积块的方式搭建全卷积深度神经网络步骤中包括:
设置训练数据集;
采用预设的属性参数配置卷积层;其中,所述属性参数包括卷积窗口、卷积跨度、输入通道数及输出通道数;
将所述卷积层、所述批归一化层及所述激活层组合成卷积块;
将多个所述卷积块堆叠,构建全卷积的深度神经网络模型。
在一个优选实施方式中,所述计算每个卷积块的计算强度步骤中包括:
根据计算公式计算卷积层的计算强度,获得对应卷积块的计算强度;计算公式为:I=Flops/Mems=H*W*K^2*Cin/(4*(H*W+K^2*Cin));其中,Flops为卷积层计算量,通过公式Flops=H*W*K^2*Cin*Cout计算可得;Mems为卷积层访存量,通过公式Mems=4*(H*W*Cout+K^2*Cin*Cout)计算可得;其中,H、W为卷积层输出的特征图尺寸,K为卷积层卷积窗口大小,Cin为卷积层输入通道数目,Cout为卷积层输出通道数目。
在一个优选实施方式中,所述设计损失函数,对所述深度神经网络进行稀疏化训练,获得网络模型参数步骤中包括:
获取稀疏参数组;
定义交叉熵损失函数;其中,首先定义交叉熵CE(y1,y2)=y1*log(y2)+(1-y1)*log(1-y2),然后将Y_true与Y_pred分别代入y1与y2,即得所述交叉熵损失函数Loss_ce=CE(Y_true,Y_pred);其中,Y_true为真实的数据类别标签,Y_pred为深度神经网络预测的类别;
利用L1损失函数公式,构建最终的损失函数;其中,首先定义L1损失函数Loss_L1=weight*||gamma||,Weight为gamma参数惩罚系数;则最终的损失函数定义为Loss=Loss_ce+Loss_L1;
根据最终的损失函数训练所述深度神经网络模型,并保存网络模型参数。
在一个优选实施方式中,所述稀疏参数组由批归一化层定义;每个卷积块的批归一化层通道i输出由下列公式计算可得:Yi=Gamma_i*Xi_avg+Beta_i;其中,Yi为批归一化层通道i输出,Xi_avg为通道i输入的归一化处理值,Gamma_i与Beta_i均为通道i的批归一化参数;
在一个优选实施方式中,所述根据最终的损失函数训练所述深度神经网络模型,并保存训练模型参数步骤中包括:
采用公开数据集CIFAR10训练网络,根据最终的的损失函数,以反向传播的方式回传全卷积神经网络,更新网络参数;训练方式采用随机梯度下降法及动量法,学习动量参数设定为0.9,学习率为多项式缓慢下降,训练预设的次数后终止训练并保存网络模型参数。
本发明第二方面提供一种深度神经网络剪枝装置,包括:
网络模型构建模块,用于以堆叠多个卷积块的方式构建全卷积深度神经网络模型;其中,每个卷积块均包括卷积层、批归一化层及激活层;
计算强度计算模块,用于计算每个卷积块的计算强度;
稀疏训练模块,用于设计损失函数,对所述深度神经网络进行稀疏化训练,获得网络模型参数;其中,所述损失函数定义为:Loss=Loss_ce+ΣWeight[i]*||gamma[i]||,其中,Weight[i]=alpha*sqrt(Intensity[i]/Intensity_base),Weight[i]为第i个卷积块的惩罚系数(i=1,2,3,4,…,N,N为卷积块的数量),Alpha为惩罚系数常量,Intensity[i]为第i个卷积块的计算强度,Intensity_base为最后一层卷积块的计算强度,Loss_ce为交叉熵损失函数,gamma[i]为第i个卷积块的gamma值;
网络模型剪枝模块,用于提取出所述每个卷积块的的gamma值,根据下列公式进行剪枝操作:Mask[i]=||gamma[i]||>0.0001;其中,Mask=1表示保留通道;Mask=0表示删除通道;
模型整合应用模块,用于根据Mask的值重新整合所述深度神经网络,得到新的参数结构,并应用到所述边缘端GPU计算。
在一个优选实施方式中,所述网络模型构建模块包括:
数据集获取单元,用于设置训练数据集;
卷积层配置单元,用于采用预设的属性参数配置卷积层;其中,所述属性参数包括卷积窗口、卷积跨度、输入通道数及输出通道数;
卷积块生成单元,用于将所述卷积层、所述批归一化层及所述激活层组合成卷积块;
网络模型构建单元,用于将多个所述卷积块堆叠,构建全卷积的深度神经网络模型。
本发明第三方面提供了一种终端,所述终端包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的深度神经网络剪枝程序,所述深度神经网络剪枝程序被所述处理器执行时实现如上述实施方式任一项所述的深度神经网络剪枝方法的各个步骤。
本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有深度神经网络剪枝程序,所述深度神经网络剪枝程序被处理器执行时实现如上述实施方式任一项所述的深度神经网络剪枝方法的各个步骤。
本发明提供的深度神经网络剪枝方法,对每个卷积层分别进行计算强度的计算,从计算强度的角度出发设计剪枝惩罚系数函数,每层卷积块的剪枝惩罚系数与该卷积块的计算强度正相关,计算强度越大的卷积块,惩罚系数越大,即根据每层卷积层的计算强度设定权重、加权的剪枝策略。通过对不同位置的卷积层分别优化,明显的降低了计算耗时,提升了边缘端的计算速度以及模型预测的准确率。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明提供的深度神经网络剪枝方法的流程图;
图2为图1所示深度神经网络剪枝方法中步骤S101的子步骤流程图;
图3为本发明的一个实施例中深度神经网络模型的示意图;
图4为图1所示深度神经网络剪枝方法中步骤S103的子步骤流程图;
图5为深度神经网络剪枝装置的框架图;
图6为图5所示深度神经网络剪枝装置中网络模型构建模块的框架图。
【具体实施方式】
为了使本发明的目的、技术方案和有益技术效果更加清晰明白,以下结合附图和具体实施方式,对本发明进行进一步详细说明。应当理解的是,本说明书中描述的具体实施方式仅仅是为了解释本发明,并不是为了限定本发明。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
需要先说明的是,通道剪枝技术(channel prune):即直接对通道(channel)做剪枝处理,移除掉一些冗余的channel,相当于给网络结构“瘦身”,而且各个卷积层的形状还比较统一。
卷积:在计算机视觉领域,卷积核、滤波器通常为较小尺寸的矩阵,比如3×3、5×5等,数字图像是相对较大尺寸的2维(多维)矩阵(张量),通过卷积神经网络逐层学到由简单到复杂的特征(模式)。
在本发明的实施例中,第一方面是提供一种深度神经网络剪枝方法,应用于边缘端GPU(Graphics Processing Unit,图形处理器)计算,让机器人等边缘端设备通过挂载或集成的微型图形计算单元GPU来处理一些实时性要求较高的图形处理问题。
如图1所示,深度神经网络剪枝方法包括以下步骤S101-S105。
在步骤S101中,以堆叠多个卷积块的方式构建全卷积深度神经网络模型;其中,每个卷积块均包括卷积层、批归一化层及激活层。
在本步骤中,首先是搭建全卷积的深度神经网络模型。具体的,如图2所示,步骤S101包括步骤S1011-S1014。
在步骤S1011中,设置训练数据集。在本实施例中,采用公开数据集CIFAR-10,该数据集为带有标签的数据集,共有60000张彩色图像,这些图像是32*32,分为10个类,每类6000张图。
在步骤S1012中,采用预设的属性参数配置卷积层;其中,属性参数包括卷积窗口、卷积跨度、输入通道数及输出通道数。
具体的,卷积层(Convolution Layer)是视觉深度神经网络组成的基本单元,具有卷积窗口(Kernel,简写为K),卷积跨度(Stride,简写为S),输入输出通道数(Cin,Cout)等属性,其通常与批归一化层(Batch Normalization),激活层(Relu)组合成卷积块。即,每层卷积层根据预设的属性参数进行配置,表示成卷积层(Cin,Cout,K,S)。如图3所示,每个卷积块括号中的数字对应着卷积层中的属性参数。
在步骤S1013中,将卷积层、批归一化层及激活层组合成卷积块。进一步的,在一些位置相近的通道中,若干个卷积块组合形成卷积块组。
在步骤S1014中,将多个卷积块堆叠,构建全卷积的深度神经网络模型。如图3所示,为本实施例的一个定义示例。
需要说明的是,将卷积层、批归一化层及激活层组合成卷积块以及将多个卷积块堆叠的方法可参考现有技术,本发明在此不做限定。
在步骤S102中,计算每个卷积块的计算强度。
需要说明的是,在深度神经网络进行推理计算时,主要占据边缘端计算设备的算术逻辑单元和存储器带宽资源。计算设备的算术逻辑单元数目直接影响了深度神经网络的大量的并行卷积运算效率,同时,存储器的带宽也影响着深度神经网络参数拷贝速度。因此在设计深度神经网络架构时,这两个方面都因考虑,否则会出现计算量不大,实际运算速度并不达到预期的情况。
其中。根据计算公式计算卷积层的计算强度,获得对应卷积块的计算强度。具体的,计算公式为:计算强度(Intensity,简写为I),I=Flops/Mems=H*W*K^2*Cin/(4*(H*W+K^2*Cin));其中,Flops为卷积层计算量,通过公式Flops=H*W*K^2*Cin*Cout计算可得;Mems为卷积层访存量,通过公式Mems=4*(H*W*Cout+K^2*Cin*Cout)计算可得;其中,H、W为卷积层输出的特征图尺寸,K为卷积层卷积窗口大小,Cin为卷积层输入通道数目,Cout为卷积层输出通道数目。
需要说明的是,计算量Flops指的是输入单个样本(例如一张图像),模型进行一次完整的前向传播所发生的浮点运算个数,也即模型的时间复杂度;访存量Mems指的是输入单个样本,模型完成一次前向传播过程中所发生的内存交换总量,也即模型的空间复杂度。由计算量除以访存量就可以得到卷积层的计算强度,它表示该卷积层模型在计算过程中,每Byte内存交换到底用于进行多少次浮点运算,可以看到,计算强度越大,其内存使用效率越高。
在步骤S103中,设计损失函数,对深度神经网络进行稀疏化训练,获得网络模型参数;其中,损失函数定义为:Loss=Loss_ce+ΣWeight[i]*||gamma[i]||,其中,Weight[i]=alpha*sqrt(Intensity[i]/Intensity_base),Weight[i]为第i个卷积块的惩罚系数(i=1,2,3,4,…,N,N为卷积块的数量),Alpha为惩罚系数常量,Intensity[i]为第i个卷积块的计算强度,Intensity_base为最后一层卷积块的计算强度,Loss_ce为交叉熵损失函数,gamma[i]为第i个卷积块的gamma值。
具体的,如图4所示,步骤S103包括以下步骤S1031-S1034。
在步骤S1031中,获取稀疏参数组。稀疏参数组由批归一化层(BatchNormalization Layer)定义;每个卷积块的批归一化层通道i输出由下列公式计算可得:Yi=Gamma_i*Xi_avg+Beta_i;其中,Yi为批归一化层通道i输出,Xi_avg为通道i输入的归一化处理值,Gamma_i与Beta_i均为通道i的批归一化参数。
由公式不难得出,在批归一化层中,参数Gamma值对该通道的数值贡献影响较大,具体来说,Gamma值越接近零值表示该通道对深度神经网络预测结果影响越小,因此从这一点出发,通道剪枝(channelprune)是一种通过对参数添加L1范数稀疏化训练的方式抑制深度神经网络中部分通道的Gamma值。具体来说可以通过以下步骤S1032与S1033的公式表述。
在步骤S1032中,定义交叉熵损失函数(cross entropy)。其中,首先定义交叉熵CE(y1,y2)=y1*log(y2)+(1-y1)*log(1-y2),然后将Y_true与Y_pred分别代入y1与y2,即得交叉熵损失函数Loss_ce=CE(Y_true,Y_pred);其中,Y_true为真实的数据类别标签,Y_pred为深度神经网络预测的类别;
在步骤S1033中,利用L1损失函数公式,构建最终的损失函数。其中,首先定义L1损失函数Loss_L1=weight*||gamma||,Weight为gamma参数惩罚系数,通常取0.001;则最终的损失函数定义为Loss=Loss_ce+Loss_L1。将L1损失函数的表达式代入到最终的损失函数中并进行加权计算,则最终的损失函数变形为Loss=Loss_ce+ΣWeight[i]*||gamma[i]||。其中,Weight[i]=alpha*sqrt(Intensity[i]/Intensity_base),Weight[i]为第i个卷积块的惩罚系数(i=1,2,3,4,…,N,N为卷积块的数量);Alpha为惩罚系数常量,取0.001;Intensity[i]为第i个卷积块的计算强度,Intensity_base为最后一层卷积块的计算强度,Loss_ce为交叉熵损失函数,gamma[i]为第i个卷积块的gamma值。
因此,在上述的最终的损失函数中,gamma参数惩罚系数不再是一个统一的固定的系数,是由每一层卷积块的计算强度决定。
在步骤S1034中,根据最终的损失函数训练深度神经网络模型,并保存网络模型参数。
在本步骤中,采用公开数据集CIFAR10训练网络,根据最终的的损失函数,以反向传播的方式回传全卷积神经网络,更新网络参数;训练方式采用随机梯度下降法SGD(Stochastic Gradient Descent)及动量法,学习动量参数设定为0.9,学习率为多项式缓慢下降,训练预设的次数(例如100次)后终止训练并保存网络模型参数。
在步骤S104中,提取出每个卷积块的批归一化层中的的gamma值,根据下列公式进行剪枝操作:Mask[i]=||gamma[i]||>0.0001;其中,Mask=1表示保留通道;Mask=0表示删除通道。Mask即为掩膜,也称掩模,对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。因此,通过对每个卷积层的gamma值进行有效数值的筛选,抑制深度神经网络中部分通道的Gamma值,提升了计算效率。同时,通过筛选出加权值较高的Gamma值,提升了图形计算的准确率。
在步骤S105中,根据Mask的值重新整合深度神经网络,得到新的参数结构,并应用到边缘端GPU计算。
表1为原深度神经网络、经一般剪枝操作后的深度神经网络以及本发明实施例中的深度神经网络在边缘端GPU进行计算的参数对比:
由表格数据可以明显看出,不论是哪种剪枝策略,都可以明显的减少计算耗时,但一般剪枝策略,虽然减少了大量的参数,但同时也带来了少许准确率的损失。而本发明提出的剪枝策略,参数量上虽然是一般剪枝策略的3倍,但是在边缘端计算速度,以及模型预测准确率上,都明显优于一般的剪枝策略。
综上所述,本发明提供的深度神经网络剪枝方法,对每个卷积层分别进行计算强度的计算,从计算强度的角度出发设计剪枝惩罚系数函数,每层卷积块的剪枝惩罚系数与该卷积块的计算强度正相关,计算强度越大的卷积块,惩罚系数越大,即根据每层卷积层的计算强度设定权重、加权的剪枝策略。通过对不同位置的卷积层分别优化,明显的降低了计算耗时,提升了边缘端的计算速度以及模型预测的准确率。
本发明第二方面提供一种深度神经网络剪枝装置100,应用于边缘端GPU上。需要说明的是,深度神经网络剪枝装置100的实现原理及实施方式均与深度神经网络剪枝方法相一致,故以下不再赘述。
如图5所示,深度神经网络剪枝装置100包括:
网络模型构建模块10,用于以堆叠多个卷积块的方式构建全卷积深度神经网络模型;其中,每个卷积块均包括卷积层、批归一化层及激活层;
计算强度计算模块20,用于计算每个卷积块的计算强度;
稀疏训练模块30,用于设计损失函数,对深度神经网络进行稀疏化训练,获得网络模型参数;其中,损失函数定义为:Loss=Loss_ce+ΣWeight[i]*||gamma[i]||,其中,Weight[i]=alpha*sqrt(Intensity[i]/Intensity_base),Weight[i]为第i个卷积块的惩罚系数(i=1,2,3,4,…,N,N为卷积块的数量),Alpha为惩罚系数常量,Intensity[i]为第i个卷积块的计算强度,Intensity_base为最后一层卷积块的计算强度,Loss_ce为交叉熵损失函数,gamma[i]为第i个卷积块的gamma值;
网络模型剪枝模块40,用于提取出每个卷积块的的gamma值,根据下列公式进行剪枝操作:Mask[i]=||gamma[i]||>0.0001;其中,Mask=1表示保留通道;Mask=0表示删除通道;
模型整合应用模块50,用于根据Mask的值重新整合深度神经网络,得到新的参数结构,并应用到边缘端GPU计算。
进一步的,在一个实施例中,如图6所示,网络模型构建模块10包括:
数据集获取单元11,用于设置训练数据集;
卷积层配置单元12,用于采用预设的属性参数配置卷积层;其中,所述属性参数包括卷积窗口、卷积跨度、输入通道数及输出通道数;
卷积块生成单元13,用于将卷积层、批归一化层及激活层组合成卷积块;
网络模型构建单元14,用于将多个卷积块堆叠,构建全卷积的深度神经网络模型。
本发明再一方面是提供一种终端(图中未示出),终端包括存储器、处理器以及存储在存储器并可在处理器上运行的深度神经网络剪枝程序,深度神经网络剪枝程序被所述处理器执行时实现如上述实施方式任一项所述的深度神经网络剪枝方法的各个步骤。
本发明还提供一种计算机可读存储介质(图中未示出),计算机可读存储介质存储有深度神经网络剪枝程序,深度神经网络剪枝程序被处理器执行时实现如上述实施方式任一项所述的深度神经网络剪枝方法的各个步骤。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的***或装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的***或装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本发明并不仅仅限于说明书和实施方式中所描述,因此对于熟悉领域的人员而言可容易地实现另外的优点和修改,故在不背离权利要求及等同范围所限定的一般概念的精神和范围的情况下,本发明并不限于特定的细节、代表性的设备和这里示出与描述的图示示例。
Claims (10)
1.一种深度神经网络剪枝方法,应用于边缘端GPU计算,其特征在于,包括以下步骤:
以堆叠多个卷积块的方式构建全卷积深度神经网络模型;其中,每个卷积块均包括卷积层、批归一化层及激活层;
计算每个卷积块的计算强度;
设计损失函数,对所述深度神经网络进行稀疏化训练,获得网络模型参数;其中,所述损失函数定义为:Loss=Loss_ce+ΣWeight[i]*||gamma[i]||,其中,Weight[i]=alpha*sqrt(Intensity[i]/Intensity_base),Weight[i]为第i个卷积块的惩罚系数(i=1,2,3,4,…,N,N为卷积块的数量),Alpha为惩罚系数常量,Intensity[i]为第i个卷积块的计算强度,Intensity_base为最后一层卷积块的计算强度,Loss_ce为交叉熵损失函数,gamma[i]为第i个卷积块的gamma值;
提取出所述每个卷积块的的gamma值,根据下列公式进行剪枝操作:Mask[i]=||gamma[i]||>0.0001;其中,Mask=1表示保留通道;Mask=0表示删除通道;
根据Mask的值重新整合所述深度神经网络,得到新的参数结构,并应用到所述边缘端GPU计算。
2.如权利要求1所述的深度神经网络剪枝方法,其特征在于,所述以堆叠多个卷积块的方式搭建全卷积深度神经网络步骤中包括:
设置训练数据集;
采用预设的属性参数配置卷积层;其中,所述属性参数包括卷积窗口、卷积跨度、输入通道数及输出通道数;
将所述卷积层、所述批归一化层及所述激活层组合成卷积块;
将多个所述卷积块堆叠,构建全卷积的深度神经网络模型。
3.如权利要求1所述的深度神经网络剪枝方法,其特征在于,所述计算每个卷积块的计算强度步骤中包括:
根据计算公式计算卷积层的计算强度,获得对应卷积块的计算强度;计算公式为:I=Flops/Mems=H*W*K^2*Cin/(4*(H*W+K^2*Cin));其中,Flops为卷积层计算量,通过公式Flops=H*W*K^2*Cin*Cout计算可得;Mems为卷积层访存量,通过公式Mems=4*(H*W*Cout+K^2*Cin*Cout)计算可得;其中,H、W为卷积层输出的特征图尺寸,K为卷积层卷积窗口大小,Cin为卷积层输入通道数目,Cout为卷积层输出通道数目。
4.如权利要求1所述的深度神经网络剪枝方法,其特征在于,所述设计损失函数,对所述深度神经网络进行稀疏化训练,获得网络模型参数步骤中包括:
获取稀疏参数组;
定义交叉熵损失函数;其中,首先定义交叉熵CE(y1,y2)=y1*log(y2)+(1-y1)*log(1-y2),然后将Y_true与Y_pred分别代入y1与y2,即得所述交叉熵损失函数Loss_ce=CE(Y_true,Y_pred);其中,Y_true为真实的数据类别标签,Y_pred为深度神经网络预测的类别;
利用L1损失函数公式,构建最终的损失函数;其中,首先定义L1损失函数Loss_L1=weight*||gamma||,Weight为gamma参数惩罚系数;则最终的损失函数定义为Loss=Loss_ce+Loss_L1;
根据最终的损失函数训练所述深度神经网络模型,并保存网络模型参数。
5.如权利要求4所述的深度神经网络剪枝方法,其特征在于,所述稀疏参数组由批归一化层定义;每个卷积块的批归一化层通道i输出由下列公式计算可得:Yi=Gamma_i*Xi_avg+Beta_i;其中,Yi为批归一化层通道i输出,Xi_avg为通道i输入的归一化处理值,Gamma_i与Beta_i均为通道i的批归一化参数。
6.如权利要求4所述的深度神经网络剪枝方法,其特征在于,所述根据最终的损失函数训练所述深度神经网络模型,并保存训练模型参数步骤中包括:
采用公开数据集CIFAR10训练网络,根据最终的的损失函数,以反向传播的方式回传全卷积神经网络,更新网络参数;训练方式采用随机梯度下降法及动量法,学习动量参数设定为0.9,学习率为多项式缓慢下降,训练预设的次数后终止训练并保存网络模型参数。
7.一种深度神经网络剪枝装置,其特征在于,包括:
网络模型构建模块,用于以堆叠多个卷积块的方式构建全卷积深度神经网络模型;其中,每个卷积块均包括卷积层、批归一化层及激活层;
计算强度计算模块,用于计算每个卷积块的计算强度;
稀疏训练模块,用于设计损失函数,对所述深度神经网络进行稀疏化训练,获得网络模型参数;其中,所述损失函数定义为:Loss=Loss_ce+ΣWeight[i]*||gamma[i]||,其中,Weight[i]=alpha*sqrt(Intensity[i]/Intensity_base),Weight[i]为第i个卷积块的惩罚系数(i=1,2,3,4,…,N,N为卷积块的数量),Alpha为惩罚系数常量,Intensity[i]为第i个卷积块的计算强度,Intensity_base为最后一层卷积块的计算强度,Loss_ce为交叉熵损失函数,gamma[i]为第i个卷积块的gamma值;
网络模型剪枝模块,用于提取出所述每个卷积块的的gamma值,根据下列公式进行剪枝操作:Mask[i]=||gamma[i]||>0.0001;其中,Mask=1表示保留通道;Mask=0表示删除通道;
模型整合应用模块,用于根据Mask的值重新整合所述深度神经网络,得到新的参数结构,并应用到所述边缘端GPU计算。
8.如权利要求7所述的深度神经网络剪枝装置,其特征在于,所述网络模型构建模块包括:
数据集获取单元,用于设置训练数据集;
卷积层配置单元,用于采用预设的属性参数配置卷积层;其中,所述属性参数包括卷积窗口、卷积跨度、输入通道数及输出通道数;
卷积块生成单元,用于将所述卷积层、所述批归一化层及所述激活层组合成卷积块;
网络模型构建单元,用于将多个所述卷积块堆叠,构建全卷积的深度神经网络模型。
9.一种终端,其特征在于,所述终端包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的深度神经网络剪枝程序,所述深度神经网络剪枝程序被所述处理器执行时实现如权利要求1-6任一项所述的深度神经网络剪枝方法的各个步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有深度神经网络剪枝程序,所述深度神经网络剪枝程序被处理器执行时实现如权利要求1-6任一项所述的深度神经网络剪枝方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011529589.6A CN112529165B (zh) | 2020-12-22 | 2020-12-22 | 深度神经网络剪枝方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011529589.6A CN112529165B (zh) | 2020-12-22 | 2020-12-22 | 深度神经网络剪枝方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112529165A true CN112529165A (zh) | 2021-03-19 |
CN112529165B CN112529165B (zh) | 2024-02-02 |
Family
ID=75002419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011529589.6A Active CN112529165B (zh) | 2020-12-22 | 2020-12-22 | 深度神经网络剪枝方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112529165B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113657896A (zh) * | 2021-08-20 | 2021-11-16 | 成都链安科技有限公司 | 一种基于图神经网络的区块链交易拓扑图分析方法和装置 |
CN114780910A (zh) * | 2022-06-16 | 2022-07-22 | 千芯半导体科技(北京)有限公司 | 用于稀疏化卷积计算的硬件***和计算方法 |
WO2023035221A1 (en) * | 2021-09-10 | 2023-03-16 | Intel Corporation | Sample-adaptive cross-layer norm calibration and relay neural network |
WO2023197460A1 (zh) * | 2022-04-15 | 2023-10-19 | 浪潮(北京)电子信息产业有限公司 | 一种图像识别方法、装置及电子设备和存储介质 |
CN117173446A (zh) * | 2023-06-26 | 2023-12-05 | 北京百度网讯科技有限公司 | 图像分类与训练方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180107925A1 (en) * | 2016-10-19 | 2018-04-19 | Samsung Electronics Co., Ltd. | Method and apparatus for neural network quantization |
CN110147834A (zh) * | 2019-05-10 | 2019-08-20 | 上海理工大学 | 基于稀疏化双线性卷积神经网络的细粒度图像分类方法 |
CN110874631A (zh) * | 2020-01-20 | 2020-03-10 | 浙江大学 | 一种基于特征图稀疏化的卷积神经网络剪枝方法 |
CN111199282A (zh) * | 2019-12-31 | 2020-05-26 | 的卢技术有限公司 | 一种卷积神经网络模型的剪枝方法及装置 |
CN111461322A (zh) * | 2020-03-13 | 2020-07-28 | 中国科学院计算技术研究所 | 一种深度神经网络模型压缩方法 |
-
2020
- 2020-12-22 CN CN202011529589.6A patent/CN112529165B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180107925A1 (en) * | 2016-10-19 | 2018-04-19 | Samsung Electronics Co., Ltd. | Method and apparatus for neural network quantization |
CN110147834A (zh) * | 2019-05-10 | 2019-08-20 | 上海理工大学 | 基于稀疏化双线性卷积神经网络的细粒度图像分类方法 |
CN111199282A (zh) * | 2019-12-31 | 2020-05-26 | 的卢技术有限公司 | 一种卷积神经网络模型的剪枝方法及装置 |
CN110874631A (zh) * | 2020-01-20 | 2020-03-10 | 浙江大学 | 一种基于特征图稀疏化的卷积神经网络剪枝方法 |
CN111461322A (zh) * | 2020-03-13 | 2020-07-28 | 中国科学院计算技术研究所 | 一种深度神经网络模型压缩方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113657896A (zh) * | 2021-08-20 | 2021-11-16 | 成都链安科技有限公司 | 一种基于图神经网络的区块链交易拓扑图分析方法和装置 |
WO2023035221A1 (en) * | 2021-09-10 | 2023-03-16 | Intel Corporation | Sample-adaptive cross-layer norm calibration and relay neural network |
WO2023197460A1 (zh) * | 2022-04-15 | 2023-10-19 | 浪潮(北京)电子信息产业有限公司 | 一种图像识别方法、装置及电子设备和存储介质 |
CN114780910A (zh) * | 2022-06-16 | 2022-07-22 | 千芯半导体科技(北京)有限公司 | 用于稀疏化卷积计算的硬件***和计算方法 |
CN117173446A (zh) * | 2023-06-26 | 2023-12-05 | 北京百度网讯科技有限公司 | 图像分类与训练方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112529165B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112529165A (zh) | 深度神经网络剪枝方法、装置、终端及存储介质 | |
Guo et al. | Software-hardware codesign for efficient neural network acceleration | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
CN107844828B (zh) | 神经网络中的卷积计算方法和电子设备 | |
CN108280514B (zh) | 基于fpga的稀疏神经网络加速***和设计方法 | |
CN108108811B (zh) | 神经网络中的卷积计算方法和电子设备 | |
US8131659B2 (en) | Field-programmable gate array based accelerator system | |
EP3627397A1 (en) | Processing method and apparatus | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN112163601B (zh) | 图像分类方法、***、计算机设备及存储介质 | |
WO2022067508A1 (zh) | 一种神经网络加速器、加速方法以及装置 | |
CN111832437A (zh) | 建筑图纸识别方法、电子设备及相关产品 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN107944545A (zh) | 应用于神经网络的计算方法及计算装置 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN113554084A (zh) | 基于剪枝和轻量卷积的车辆再辨识模型压缩方法及*** | |
CN116075821A (zh) | 表格卷积和加速 | |
CN111882053B (zh) | 一种基于拼接卷积的神经网络模型压缩方法 | |
EP4170547A1 (en) | Method for extracting data features, and related apparatus | |
CN113850365A (zh) | 卷积神经网络的压缩和移植方法、装置、设备及存储介质 | |
CN117808659A (zh) | 用于执行多维卷积运算方法、***、设备和介质 | |
Zhou et al. | Sagitta: An energy-efficient sparse 3D-CNN accelerator for real-time 3D understanding | |
CN115130672B (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN111914867A (zh) | 一种基于fpga的卷积神经网络ip核设计 | |
CN116524180A (zh) | 基于轻量级主干结构的戏曲舞台场景分割方法 |
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 |