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

一种深度神经网络量化方法及系统及装置及介质与流程

2022-02-20 20:20:54 来源:中国专利 TAG:


1.本发明涉及神经网络量化领域,具体地,涉及一种深度神经网络量化方法及系统及装置及介质。


背景技术:

2.深度神经网络模型被广泛应用在图像分类、目标检测等机器视觉任务中,并取得了巨大成功。然而,由于存储资源和计算资源的限制,深度神经网络模型在移动端或嵌入式设备上的存储与计算仍然面临巨大挑战,因此深度神经网络的压缩和轻量化是一个亟待解决的问题。近年来,研究者们已经在深度神经网络的压缩方向取得了很多研究成果,其中,量化是压缩深度神经网络的方法之一。
3.一般的,深度神经网络使用float32位数字表示的参数进行卷积、激活、批归一化等计算。在推理阶段,深度神经网络只需要进行一次前向传播,可能不需要很高的数字计算精度。float32位数字占4个字节,表示的精度过高,显得有些冗余,因此可将网络参数以占2个字节的float16位或1个字节的int8(8位整数型)位进行表示,分别称为fp16(float point 16-16位浮点型数字)量化和int8量化。
4.大量的研究和实验表明,fp16量化可以在不损失深度神经网络精度的条件下提升其推理速度,并且可以减少推理时的运行内存。位数更少的int8量化相比于fp16量化有更快的推理速度,然而由于int8量化是将原本卷积神经网络中的fp32(float point 32-32位浮点型数字)位的特征层和权重参数均匀的分到[-127, 127]的整数区间内,这些参数损失的精度更高,使得某些模型进行int8量化以后推理精度降低。
[0005]
部分量化是恢复int8量化模型损失精度的方法之一。部分量化是在int8量化的深度神经网络模型中,选择若干个神经网络层的参数以float32位数字表示,这样的神经网络层称为非量化层,这种同时有int8量化参数和fp32参数表示的模型称为混合精度量化模型。相比于int8量化模型,混合精度量化模型推理速度会降低,但是可以一定程度恢复int8量化模型损失的精度。
[0006]
可以看出,混合精度量化模型的推理速度和精度恢复程度是一个权衡问题,一般来说,fp32精度的层数越多,推理速度越慢,精度相对会更高。因此,部分量化的目的是使混合精度量化模型的精度损失在一定范围内,找到最少的非量化层;即优化以下公式:(1)其中,m为fp32位深度神经网络模型,s为m中的int8量化层集合,表示m中将s表示的层进行int8量化所得到的混合精度量化模型。和分别表示模型m和的推理精度,为用户设定可接受的最大精度损失阈值,如0.01,其中,“s.t.”,指 subject to,受限制于,通常指约束条件。该优化问题的全局最优解法是遍历搜索其中所有的量化层和非量化层组合,然而其算法复杂度为),n是该模型的神经网络层数。在实际
应用中,如此低效的解法肯定不可取,如何更快更准地进行部分量化,是恢复int8量化模型损失精度的难点之一。


技术实现要素:

[0007]
本发明目的是降低量化的时间复杂度并且能够同时找到一个局部最优的量化层组合。
[0008]
为实现上述目的,本发明提供了一种深度神经网络量化方法,所述方法包括:获得第一深度神经网络,所述包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述的准确率为,设定量化深度神经网络最高可接受的准确率损失阈值;基于所述和所述,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
[0009]
其中,本方法使用二分法,针对fp32位神经网络在全部量化int8表示的神经网络以后模型精度损失严重的问题,本方法意图在int8位量化的神经网络中找到对网络准确率影响最大的若干个层,本发明称这些层为非量化层(其余层称为量化层),将这些层还原成fp32位表示,而其余层依旧进行int8位的量化,使整个fp32位和int8位混合精度表示的神经网络在给定测试任务上的准确率相比于原始的fp32位神经网络准确率下降程度在一定阈值之内,同时使得非量化层数尽可能少,量化层数尽可能多。
[0010]
本发明查找非量化层的思路为:int8位量化模型精度损失主要是因为神经网络中某些层对精度比较敏感,这些层被量化后精度损失较大;而有些层相对不敏感,这些不敏感的层被量化后不会明显降低模型精度。因此,本发明在进行部分量化时,默认平均量化一层神经网络至多只能产生的精度损失,为精度损失阈值,n为神经网络层数。若量化b层精度损失小或等于,则说明这b层都属于不敏感层,均可被量化;否则,这b层中一定存在若干个敏感层,本方案的目的即是找到这些敏感层。
[0011]
优选的,所述基于所述和所述,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化,具体包括:定义qi表示所述中第1至第i层所述神经网络层之间的量化层集合,将所述中的第i至第j层以及所述qi对应的所述神经网络层均量化后获得第二深度神经网络,表示所述第二深度神经网络的准确率;设定初始条件并执行预设查找步骤查找所述中第i至第j层所述神经网络层之间的量化层,初始条件为,;所述预设查找步骤包括:步骤1:若,则所述中第i至第j层所述神经网络层之间的量化层查找结果为空;若,且,则所述中第i至第j
层所述神经网络层之间的量化层查找结果为第i层;若,且,则所述中第i至第j层所述神经网络层之间的量化层查找结果为空;步骤2:若,且,则所述中第i至第j层所述神经网络层之间的量化层查找结果为第i至第j层;若,且,则令,并执行步骤3;步骤3:更新所述初始条件,令,,并返回执行步骤1,获得所述第一神经网络在第i至第mid层之间的第一量化层集合,并执行步骤4;步骤4:更新所述初始条件,令,,并返回执行步骤1,获得所述第一神经网络在第mid 1层至第j层之间的第二量化层集合;步骤5:基于所述第一量化层集合和所述第二量化层集合,获得所述中第i至第j层所述神经网络层之间的量化层查找结果;步骤6:将所述中第i至第j层所述神经网络层之间的量化层查找结果中的所有量化层均量化。
[0012]
优选的,本方法中量化前所述中每个所述神经网络层的参数均采用32位浮点型数据表示。float32位数字占4个字节,表示的精度过高,显得有些冗余,因此需要进行量化。
[0013]
优选的,本方法中将所述量化层量化具体为:将量化层的参数采用8位整数型数据表示。8位整数型数据与32位浮点型数据相比占用空间小,能够有效实现模型的量化。
[0014]
优选的,本方法中深度神经网络的准确率获取方式为:利用测试集数据测试深度神经网络,获得深度神经网络的准确率。
[0015]
优选的,本方法在图形处理器端使用所述在所述测试集上进行推理得到所述。
[0016]
优选的,所述的获得方式为:从所述测试集中随机选择若干批次数据对所述第二深度神经网络的激活层定标以确定每一个激活层的量化尺度,利用所述测试集对所述第二深度神经网络进行多次推理分别获得多个推理准确率,求取所述多个推理准确率的平均值获得所述。为了确保鲁棒性,定标传入的若干批次测试数据集选取需要有随机性,每一套参数(i, j)的神经网络要以随机定标的方法进行5次int8量化推理,以5次推理准确率的平均值作为的结果。
[0017]
本发明还提供了一种深度神经网络量化系统,所述系统包括:网络准确率及准确率损失阈值获得单元,用于获得第一深度神经网络,所述
包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述的准确率为,设定量化深度神经网络最高可接受的准确率损失阈值;量化单元,用于基于所述和所述,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
[0018]
本发明还提供了一种深度神经网络量化装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述深度神经网络量化方法的步骤。
[0019]
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述深度神经网络量化方法的步骤。
[0020]
本发明提供的一个或多个技术方案,至少具有如下技术效果或优点:本发明提出的使用二分算法进行部分量化的方法具有相当低的时间复杂度。从算法流程中很容易计算本方案的时间复杂度为o(log(n))。具体地,若有k个非量化层,则时间复杂度近似为o(k*log(n))。在实际应用中,一般几个非量化层就可以将精度损失控制在一定范围内,因此k值一般比较小,o(k*log(n))的复杂度可近似为o(log(n))。一些深层的神经网络模型进行部分量化时,如yolov4,该方案有绝对的速度优势,并且此方案能同时找到一个局部最优的量化层组合。
[0021]
本发明应用普适性强,效率高。体现在模型评价标准简单(只使用模型推理准确率),没有多余的超参数(只有一个自定义的精度损失阈值),进行部分量化的算法也是端到端的,算法执行完毕即可以输出满足条件的最优的量化层组合,并可以同时计算出这个最优量化层组合的混合精度量化模型准确率。
附图说明
[0022]
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本发明的一部分,并不构成对本发明实施例的限定;图1为深度神经网络量化方法的流程示意图;图2为深度神经网络量化系统的组成示意图。
具体实施方式
[0023]
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
[0024]
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0025]
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
[0026]
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
[0027]
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
[0028]
实施例一请参考图1,图1为深度神经网络量化方法的流程示意图,本发明实施例一提供了一种深度神经网络量化方法,所述方法包括:获得第一深度神经网络,所述包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述的准确率为,设定量化深度神经网络最高可接受的准确率损失阈值;基于所述和所述,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
[0029]
下面结合具体的例子和现有的深度神经网络优化方法对本方法进行详细的介绍:本实施例首先介绍与本发明相关的现有技术,目的是凸显本方法的区别和进步:现有技术1:此技术对深度神经网络所有层进行敏感度分析,优先选择敏感度更高的层作为非量化层。第i个神经网络层的敏感度定义为:fp32位深度神经网络中只将第i层进行int8量化,得到的混合精度量化神经网络推理精度相较于原始fp32位网络推理精度的损失值。其具体的算法流程为:(1)用原始的fp32位深度神经网络在测试集数据上进行推理,得到基础准确率;(2)在fp32位深度神经网络中,取第i(i=1)层量化为int8位,其余层依旧以fp32位表示,用该混合精度量化神经网络进行推理得到准确率,则第i(i=1)层的敏感度为(2)(3)分别取i=2,3,4,...,n(n为深度神经网络总层数),重复步骤(2)n-1次,得到其余神经网络层的敏感度,。
[0030]
(4)按照敏感度从大到小对神经网络层进行排序,取前k个层作为非量化层,其余层作为量化层进行int8量化,k为满足混合精度量化模型精度要求的最小值。
[0031]
现有技术1方案的缺点是:(1)此方案用控制变量的思想独立分析每一层的敏感度,随后选择敏感度最高的几层作为非量化层,思路合理,但是其并未同时对多个层做非量化分析推理精度,因此可能
会失去一些具有高精度的非量化层的组合。
[0032]
(2)此方案时间复杂度为o(n),n为深度神经网络的层数。在一些比较复杂的网络上,如目标检测网络或目标分割网络等,网络层数多,推理时间长,该方案会很耗时。
[0033]
现有技术2:此技术方案是对现有技术1方案的改进,首先自定义一个目标函数:(3)其中,s表示混合精度量化神经网络中的量化层集合,该方案以一个参数来权衡网络的精度和速度。越大,公式(3)更倾向于最小化右边的量化层s参数量部分,参数量越多,量化层越多,网络推理速度更快;越小,公式(3)更倾向于最小化左边的精度部分,一个极端情况,时,网络为全fp32位表示,即s为空集时公式(3)取得最优解。
[0034]
此技术方案寻找量化层的算法流程为:(1)初始化v为神经网络所有层的集合,s为空集;(2)令k=1,在v中分别将每一层添加到s中,计算,从v中选择使最大的层,令。
[0035]
(3)令k=2,3,4,

,n,重复执行第二步n-1次,每一次不加或选择一层加入到。
[0036]
(4)即是满足条件的量化层集合方案缺点:(1)此方案作为对现有技术1方案的改进,以最大化目标函数的方法代替敏感度分析,并且通过贪心算法一步步迭代找到了一个局部最优的量化层组合。然而该方案的时间复杂度过高,从算法流程中易知其时间复杂度为o(n2),n为深度神经网络的层数,对超过百层的深度神经网络,该方案的时间消耗是难以接受的。
[0037]
(2)此方案的核心是目标函数,也是唯一的模型评价指标。其中的超参数的选择过于抽象,在不同的模型,不同的任务,不同的精度损失阈值中,选择都有很大差异,很难选定到一个非常合适的值去度量。原方案中也并未介绍如何去选择一个适当的方法。
[0038]
现有技术3:此技术方案参考darts的方法,使用神经网络架构自动搜索技术(nas),去搜索每一个神经网络层的量化位数(8位,4位,2位,1位)。该方案首先定义一个超网络,表示其中一个混合精度量化网络,表示混合精度量化网络结构,表明了每一层的量化位数,表示网络权重参数,和都是可导的。接着定义一个包含推理准确率,各层参数量和量化位数的一个目标函数:
(4)其中,表示混合精度量化神经网络推理准确率,表示中神经网络层数,表示第层参数量,表示第层量化位数,是一个常数系数。
[0039]
定义搜索空间之后,即可以梯度下降的方法进行优化,先固定不变优化超网络中的权重参数,迭代一定次数以后再固定不变,优化结构参数。迭代若干轮后采样几组网络结构在数据集上重新进行训练和验证,从其中选取较好的网络结构。
[0040]
此技术方案寻找量化层的算法流程为:(1)初始化超网络,参数,,定义损失函数,网络结构集合qa为空集;(2)暂时固定参数不变,训练(优化)n轮。
[0041]
(3)暂时固定参数不变,训练(优化)。
[0042]
(4)从中采样若干个混合精度量化神经网络结构存入qa中。
[0043]
(5)qa中每一个网络结构都在数据集上重新训练至收敛后在测试集上进行验证,从中选出需要的网络结构和权重参数。
[0044]
方案缺点:(1)此方案使用nas直接去搜索每一层神经网络的量化位数,而非固定的8位量化,最后能搜索出一个精度尚可的混合精度量化神经网络,推理速度快,模型压缩空间大。然而本方案设计复杂程度过高,目标函数参数量多,使用门槛高,实用性和适用性不强。
[0045]
(2)此方案搜索空间大,待优化参数多,结构复杂,nas搜索策略中,搜索时间是一个巨大的消耗。如resnet18,只有30个卷积层和激活层,此方案搜索resnet18的一个混合精度量化网络结构使用了8个gpu(图形处理器),花费了5个小时。在一些几百层的网络结构上,该方案的搜索时间可能让人难以接受。
[0046]
与上述3种方案不同的是,本实施例中的深度神经网络量化方法此发明方案要解决现有的部分量化方法的高时间复杂度问题,同时也能找到一个局部最优量化层组合,具体地:本方法能够解决高时间复杂度问题。现有的部分量化方法都要在fp32位表示的神经网络中逐个对每一层神经网络层进行int8量化,复杂度为o(n)或o(n2),n为神经网络的层数,即深度神经网络需要该测试数据集上推理至少n次或n2次,才能得到这n层神经网络中的量化层组合。
[0047]
本方法能够选择一个局部最优量化层组合。全局最优量化层组合时间复杂度为o(2n),因此只能设计启发式方法寻找局部最优组合。现有技术1中逐层遍历得到每个神经网
络层对int8量化的敏感度只是选择单层非量化网络层的最优解,以多个这样的局部最优解来决定哪些层要进行非量化会错失可能较好的量化层组合。
[0048]
本方法使用二分法,针对fp32位神经网络在全部量化int8表示的神经网络以后模型精度损失严重的问题,我们意图在int8位量化的神经网络中找到对网络准确率影响最大的若干个层,我们称这些层为非量化层(其余层称为量化层),将这些层还原成fp32位表示,而其余层依旧进行int8位的量化,使整个fp32位和int8位混合精度表示的神经网络在给定测试任务上的准确率相比于原始的fp32位神经网络准确率下降程度在一定阈值之内,同时使得非量化层数尽可能少,量化层数尽可能多。
[0049]
本方案查找非量化层的思路为:int8位量化模型精度损失主要是因为神经网络中某些层对精度比较敏感,这些层被量化后精度损失较大;而有些层相对不敏感,这些不敏感的层被量化后不会明显降低模型精度。因此,本方案在进行部分量化时,默认平均量化一层神经网络至多只能产生的精度损失,为精度损失阈值,n为神经网络层数。若量化b层精度损失小或等于,则说明这b层都属于不敏感层,均可被量化;否则,这b层中一定存在若干个敏感层,本方案的目的即是找到这些敏感层。
[0050]
具体地,对于n层fp32位量化的神经网络:首先取第1至第n/2个神经网络层,只将这n/2个神经网络层进行int8位量化,用整个神经网络在测试集上进行测试,若准确率相比于原始的fp32位神经网络下降值小于或等于某个阈值,则说明这n/2个神经网络层中不存在非量化层,在后续过程中均可以用int8量化进行神经网络的推理;若精度率下降值大于阈值,则说明这n/2个神经网络层中存在非量化层,这时候要继续对这n/2个神经层使用二分法寻找非量化层,直到被二分的神经网络只剩一层,不能继续执行二分法为止。
[0051]
随后寻找第n/2至第n个神经网络层,由于第1至第n/2个神经网络层中的量化层已经找到,将这些层量化成int8位,再以上述流程判断第n/2至第n层中是否存在非量化层,若不存在,则算法结束;若存在,再对第n/2至第n层继续二分寻找非量化层。
[0052]
本发明目标是找到非量化层集合,而实际上量化层集合就是非量化层集合关于全集的补集,找到量化层集合就相当于找到了非量化层集合。为了计算和说明方便,以下方案步骤均以寻找量化层集合为目的,本方案使用的递归算法也以量化层集合为返回值。
[0053]
假设整个神经网络有n层,定义find_layer(i, j)为算法在网络第i层至第j层之间寻找到的量化层集合。qi表示神经网络在第i层之前找到的量化层集合,m(i, j)表示神经网络量化第i层至第j层以及qi层的推理准确率。
[0054]
网络的int8量化推理时需要将每一个被激活后的特征层(以下简称激活层)和卷积网络参数都进行int8量化,每一层卷积网络参数的int8量化可以在获取到原始的float32位网络参数之后统计其最大值和最小值进行,但是每个特征层的数据只有在网络进行推理时才能生成,如果在int8量化推理过程中统计每一个激活层的最大最小值或其分布情况再对激活层进行int8量化,势必会影响量化推理速度。因此,在生成int8量化模型之前,要从测试数据随机选取几个批次送入网络中,提前统计每个激活层的最大最小值和分布情况,确定激活层的量化尺度,称为定标。根据现有技术1,常用的定标方法分为最大值定标,百分位定标,交叉熵定标三种方法。本方案中采用99.999%百分位定标的方法,即将每一
个特征层中最大0.001%的值视为极值,量化时直接映射到int8位的最大整数。
[0055]
为了确保鲁棒性,定标传入的若干批次测试数据集选取需要有随机性,每一套参数(i, j)的神经网络要以随机定标的方法进行5次int8量化推理,以5次推理准确率的平均值作为m(i, j)的结果。
[0056]
本方法要先给定一个基础的fp32位表示的神经网络,测试集,在gpu端使用在上进行推理得到基础神经网络准确率,以及将神经网络进行int8量化或int8部分量化后最高接受的准确率损失阈值。中有n个神经网络层。
[0057]
使用递归算法二分的进行查找,算法的输入为神经网络,测试集,基础准确率,可接受损失阈值,算法的输出为中的量化层集合。
[0058]
根据以上算法,首先执行以下初始化步骤:给定一个基础的fp32位表示的n层神经网络,测试集,在gpu端使用在上进行推理得到基础神经网络准确率,设定一个量化模型最高接受的准确率损失阈值。定义为:中取第i至第j,以及集合qi所表示的层进行int8量化)以随机定标的方法量化并推理5次,这5次推理准确率的平均值作为该参数(i,j)量化模型的准确率。初始化,,。
[0059]
本方案的整体流程如下:(1)如果,说明初始条件异常,直接返回。
[0060]
(2)如果:如果,说明神经网络第i层可被量化,返回;否则说明第i层位非量化层,返回。
[0061]
(3)否则(的情况),如果,说明在神经网络第i层至第j层没有非量化层,可全部被量化,返回。否则,令。
[0062]
(4)令,,递归的调用本方案算法流程,返回的结果即为在神经网络第i层至第mid层找到的量化层集合。
[0063]
(5)令,,递归的调用本方案算法流程,返回的结果即为在神经网络mid 1层至第j层找到的量化层集合。
[0064]
(6)令,返回。其中,为量化层集合。
[0065]
本方案提出的使用二分算法进行部分量化的方法具有相当低的时间复杂度。从算
法流程中很容易计算本方案的时间复杂度为o(log(n))。具体地,若有k个非量化层,则时间复杂度近似为o(k*log(n))。在实际应用中,一般几个非量化层就可以将精度损失控制在一定范围内,因此k值一般比较小,o(k*log(n))的复杂度可近似为o(log(n))。一些深层的神经网络模型进行部分量化时,如yolov4,该方案有绝对的速度优势,并且此方案能同时找到一个局部最优的量化层组合。
[0066]
本方案应用普适性强,效率高。体现在模型评价标准简单(只使用模型推理准确率),没有多余的超参数(只有一个自定义的精度损失阈值),进行部分量化的算法也是端到端的,算法执行完毕即可以输出满足条件的最优的量化层组合,并可以同时计算出这个最优量化层组合的混合精度量化模型准确率。
[0067]
本方案以yolov4在pascal voc2012数据集(测试集)上的目标检测模型为基准fp32网络模型,有399个神经网络层(只计算卷积层和激活层,因为量化只对这两种层实施)。在gpu端使用在上进行推理得到基础神经网络准确率(map),对进行全int8量化之后准确率为,准确率损失为3.6%。设定量化模型最高接受的准确率损失阈值。本小节的量化和部分量化实验均在tensorrt(深度学习框架)架构上进行。
[0068]
本实施示例中展示了本方案的部分量化过程和结果,并对比了现有技术1的部分量化结果。现有技术2和现有技术3由于时间复杂度过高未进行实验。
[0069]
本方案的实施步骤如下:(1)将区间[1, 399]二分为[1, 200]和[201, 399]两个区间,只将[1, 200]的所有层进行量化得到准确率78.31%,准确率损失为2.85%,大于阈值0.501%,因此在[1, 200]区间内继续二分区间为[1, 100]和[101, 200]。
[0070]
(2)只将区间[1, 100]的所有层进行量化得到准确率78.82%,准确率损失为2.34%,大于阈值0.25%,因此继续对二分区间[1, 100]为[1, 50]和[51, 100]。
[0071]
(3)只将区间[1, 50]的所有层进行量化,得到准确率79.89%,准确率损失为1.27%,大于阈值0.125%,在区间[1, 50]中继续进行二分,只量化[1, 25]层的准确率为81.14%,准确率损失为0.02%,小于阈值0.0625%,满足精度要求,因此区间[1, 25]中各层均可被量化,在寻找后面的量化层时区间[1, 25]中的层一直处于量化状态。
[0072]
(4)在区间[26, 50]中继续二分查找可找到一个非量化层第45层tanh层(tanh-双曲正切函数)。
[0073]
(5)在区间[51, 100]中查找时,区间[1, 50]中除第45层之外的其余49层均进行量化操作,在区间[51, 100]中能找到两个非量化层,第80层tanh层和第84层tanh层。
[0074]
(6)在区间[101, 200]中查找时,区间[1, 100]中除第45,80,84层之外的其余97层均进行量化操作,再将区间[101, 200]中所有层进行量化推理准确率为80.85%,精度损失为0.31%,小于阈值197/399*1%=0.49%,因此区间[101, 200]中所有层全部为量化层。
[0075]
(7)在区间[201, 399]中查找时,区间[1, 200]中除第45,80,84层之外的其余197层均进行量化操作,再量化区间[201, 399]中所有层推理精度为78.23%,准确率损失为
2.93%,大于阈值0.5%,因此需继续划分区间[201, 399]为区间[201, 300]和区间[301, 399]。
[0076]
(8)在区间[201, 300]中寻找到非量化层第270层tanh层,在区间[301, 399]中找到非量化层第397层conv层、398层leakyrelu层、399层conv层(conv-卷积、leakyrelu-带泄露的修正线性单元函数)。
[0077]
该方案最终找到392个量化层和7个非量化层,混合精度量化模型推理准确率为80.31%,准确率损失为0.85%。这7个非量化层为:45_tanh、80_tanh、84_tanh、270_tanh、397_conv、398_leakyrelu、399_conv。
[0078]
两种方案的部分量化实验结果见表1。
[0079]
表1两种方案在yolov4上的部分量化实验结果上述示例中,本方案在执行时间,找到的非量化层数和部分量化模型准确率三个指标上都优于现有技术1,体现了本方案的优越性。
[0080]
实施例二请参考图2,图2为深度神经网络量化系统的组成示意图,本发明实施例二提供了一种深度神经网络量化系统,所述系统包括:网络准确率及准确率损失阈值获得单元,用于获得第一深度神经网络,所述包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述的准确率为,设定量化深度神经网络最高可接受的准确率损失阈值;量化单元,用于基于所述和所述,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
[0081]
实施例三本发明实施例三提供了一种深度神经网络量化装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述深度神经网络量化方法的步骤。
[0082]
实施例四本发明实施例四提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述深度神经网络量化方法的步骤。
[0083]
其中,所述处理器可以是中央处理器(cpu,central processing unit),还可以是其他通用处理器、数字信号处理器(digital signal processor)、专用集成电路(application specific integrated circuit)、现成可编程门阵列(fieldprogrammable gate array)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0084]
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的数据,实现发明中深度神经网络量化装置的各种功能。所述存储器
可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等。此外,存储器可以包括高速随机存取存储器、还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡,安全数字卡,闪存卡、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0085]
所述深度神经网络量化装置如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序可存储于一计算机可读存介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码、对象代码形式、可执行文件或某些中间形式等。所述计算机可读取介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存储器、点载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
[0086]
本发明已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
[0087]
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
[0088]
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
[0089]
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、rf、或类似介质,或任何上述介质的组合。
[0090]
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如java、scala、smalltalk、eiffel、jade、emerald、c 、c#、vb.net、python等,常规程序化编程语言如c语言、visual basic、fortran 2003、perl、cobol 2002、php、abap,动态编程语言如python、ruby和groovy,或其他编程语言等。该程序
编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(saas)。
[0091]
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
[0092]
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
[0093]
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
[0094]
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0095]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

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

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

相关文献