深度学习模型的压缩方法、系统及计算机可读介质与流程

文档序号:32103568发布日期:2022-11-09 03:53阅读:115来源:国知局
深度学习模型的压缩方法、系统及计算机可读介质与流程

1.本发明主要涉及深度学习模型超参数搜索领域,具体地涉及一种深度学习模型的压缩方法、系统及计算机可读介质。


背景技术:

2.随着人工智能技术的发展,计算机视觉领域的诸多任务均取得了一些革新的成果。伴随着深度学习模型的数据体量不断膨胀,深度学习模型算法的精度要求也越来越高,因此模型压缩技术在算法部署阶段必不可少。深度学习模型剪枝操作是深度学习模型压缩领域常用的技术,可以花费很小的代价来提升模型推断速度,提升模型推断速度在很多边缘计算的应用领域十分重要。目前通用的自动剪枝算法受到了广泛关注,但是在自动剪枝算法过程中如何高效地选择剪枝比例是目前行业面临的一个痛点。
3.在剪枝算法中,剪枝比例是个超参数,通常凭经验给出。随着剪枝算法种类越来越多、细分应用领域增加、数据量不断膨胀,目前已经很难通过人工经验给出精确的剪枝比例。若剪枝比例设置过大,则深度学习模型算法精度会有明显损失,若剪枝比例设置过小,则模型加速收益不足,所以自动搜索出合适的剪枝比例尤为重要。
4.目前主流的搜索算法有网格搜索(grid search)、随机搜索(random search)和贝叶斯优化(bayesian optimization)。
5.网格搜索,是一种简单尝试所有可能配置的方法。网格搜索定义一个n维的网格,网格中每一个映射都代表一个超参数,为每个维度定义可能的取值范围,搜索所有可能的结果,等待搜索结果以建立最佳配置。这种搜索方法要遍历预先设置的所有可能的剪枝比例,预设的剪枝比例均匀间隔,在预设的剪枝比例中选取结果最好的作为最终的剪枝比例。通过网格搜索方法来获得高精度的剪枝比例,需要遍历的剪枝比例数量是非常多的,消耗的计算成本过高,并且通过均匀采样来寻找合适的剪枝比例也不是较佳的策略。
6.随机搜索,是利用随机数生成随机点来进行搜索的方法,与网格搜索的暴力搜索方式不同。随机搜索在一定区间内,不断随机且无倾向性地产生随机点,并计算约束函数和目标函数值,对满足约束条件的点,逐个比较其目标函数值,将目标函数值不佳的点舍弃,最终得到最优解的近似解。随机搜索方法会存在搜索精度较差、搜索耗时过高的问题。随机搜索找到近似最优解的效率也仅仅略高于网格搜索,因此随机搜索一般用于粗选或普查。
7.标准的贝叶斯优化的定义可以用公式max
x∈a
f(x)where x∈rd表示,公式中的f(x)是目标函数也即目标模型,a为可行集,可以将可行集理解为超参数的备选集合。通过代理模型找到一组x来取得f(x)(黑盒模型)的极值。贝叶斯优化相比于网格搜索和随机搜索,网格搜索和随机搜索算法都是依靠暴力搜索方法不断实验来验证结果,最终选取结果最佳的点。而贝叶斯搜索通过代理模型(surrogate model)去近似表示当前的目标函数,以及通过获取函数或询问函数(acquisition function)在当前数据下找到下一个最有可能的最优输入x。贝叶斯搜索的搜索过程不是盲目的实验,而是利用已知信息通过最小验证次数找到极值点。贝叶斯优化的代理模型通常可以使用随机森林、高斯过程等方法,而获取函数可以
选择概率改进(probability improvement,pi)、期望改进(expected improvement,ei)、知识梯度(knowledge gradient,kg)、熵搜索(entropy search,es)等方法。
8.虽然贝叶斯搜索相比于网格搜索和随机搜索这两种方法取得了不错的效果,但是贝叶斯搜索在剪枝比例的搜索过程中消耗的资源依然很大。贝叶斯搜索的制约因素主要在获取函数(acquisition function)上,获取函数的主要功能是基于目前已知信息作为先验来寻找下一个最有可能取得最大值的点,通过不断的验证来获取目标点。但剪枝比例搜索的目的并不是要寻找最大值的点,而是要选取在可接受的模型精度损失范围内所能取得的最大剪枝比例,最大剪枝比例对应的点在整个函数上不会体现为最大值对应的点,因此通过贝叶斯搜索取得的最大值的点并不符合实际需求。后续即便采用主动学习的思路选取部分点来拟合真实曲线,再根据拟合的曲线选取所需要的点,整个搜索过程也非常耗时,一轮完整的验证可能花费数小时甚至数天。
9.综上所述,现有技术中存在剪枝比例超参数搜索消耗时间长,剪枝后的模型精度不佳,模型推断速度不佳,剪枝比例超参数搜索算法通用性不佳等问题。


技术实现要素:

10.本技术所要解决的技术问题是提供一种深度学习模型的压缩方法、系统及计算机可读介质,该压缩方法缩短了剪枝比例超参数搜索消耗的时间,并且剪枝比例超参数搜索算法适用于不同的深度学习任务,通用性好,剪枝后的模型精度高,模型推断速度快。
11.本技术为解决上述技术问题而采用的技术方案是一种深度学习模型的压缩方法,包括:根据当前剪枝比例对深度学习模型进行剪枝,获得剪枝后的深度学习模型;根据高斯过程回归计算下一轮剪枝比例;对剪枝后的深度学习模型进行重训练,并计算当前度量精度,当当前度量精度达到预设精度时,判断当前剪枝轮数是否达到预设剪枝轮数;若当前剪枝轮数未达到预设剪枝轮数,根据下一轮剪枝比例对剪枝后的深度学习模型进行再剪枝;当当前剪枝轮数达到预设剪枝轮数时,将当前剪枝后的深度学习模型作为最终深度学习模型。
12.在本技术的一实施例中,在根据当前剪枝比例对深度学习模型进行剪枝的步骤之前,还包括:构建剪枝比例列表和剪枝后的精度列表,剪枝比例列表用于存储每一轮计算的剪枝比例,剪枝后的精度列表用于存储每一轮深度学习模型剪枝后的度量精度;根据剪枝比例列表中的当前剪枝比例对深度学习模型进行剪枝。
13.在本技术的一实施例中,若当前剪枝轮数未达到预设剪枝轮数,还将下一轮剪枝比例加入剪枝比例列表以及将当前度量精度加入剪枝后的精度列表。
14.在本技术的一实施例中,对剪枝后的深度学习模型进行重训练,并计算当前度量精度的步骤包括:在重训练的过程中设置预设重训练轮数和预设精度来控制重训练的轮数,若当前度量精度未达到预设精度,重复重训练,当当前度量精度达到预设精度时,退出重训练并记录当前重训练轮数以及当前度量精度。
15.在本技术的一实施例中,根据高斯过程回归计算下一轮剪枝比例的步骤包括:采用下面的公式计算下一轮剪枝比例:
16.17.其中,acc为当前度量精度,preset acc为预设精度,σ为高斯过程回归的均值结果的中心化后的求累计分布函数的结果,t为取值范围在0到1之间的常数,p0为贝塞尔曲线拟合过程中应用的坐标p0=(0,0),p2为贝塞尔曲线拟合过程中应用的坐标p2=(1,0),earlystop为早停机制表示早停退出的当前重训练轮数与预设重训练轮数的比值,std为高斯过程回归的方差结果,(1-t)2p0+2t(1-t)((p0+earlystop),2)+t2p2整体为贝塞尔权重项。
18.在本技术的一实施例中,计算当前度量精度的步骤包括:采用下面的余弦距离公式计算当前度量精度:
[0019][0020]
其中,cos distance表示余弦距离,a和b分别表示经过重训练的剪枝后的深度学习模型的第一特征和预设的目标深度学习模型的第二特征,余弦距离用于将第一特征和第二特征映射到高维空间以衡量第一特征和第二特征之间的夹角差距。
[0021]
在本技术的一实施例中,计算当前度量精度的步骤包括:将余弦距离与wasserstein距离结合,获得复合加权指标,采用下面的复合加权指标公式计算当前度量精度:
[0022]
distance acc=1-((1-cos distance)*p+wasserstein distance*q)
[0023][0024]
其中,distance acc表示复合加权指标,wasserstein distance表示wasserstein距离,p为余弦距离的权重,q为wasserstein距离的权重,pr为特征r的概率分布,pg为特征g的概率分布,γ为联合分布,s(pr,pg)为特征r和特征g的所有可能的联合分布的集合,x和y表示在联合分布γ中采样出的x样本和y样本,e(x,y)γ[||x-y||]表示在联合分布γ下样本对距离的期望,inf表示最大下界。
[0025]
在本技术的一实施例中,在复合加权指标中,p取值0.9,q取值0.1,即余弦距离的权重与wasserstein距离的权重比值为9∶1。
[0026]
本技术为解决上述技术问题还提出一种深度学习模型的压缩系统,包括:存储器,用于存储可由处理器执行的指令;处理器,用于执行指令以实现如上的深度学习模型的压缩方法。
[0027]
本技术为解决上述技术问题还提出一种存储有计算机程序代码的计算机可读介质,计算机程序代码在由处理器执行时实现如上的深度学习模型的压缩方法。
[0028]
本技术的技术方案根据当前剪枝比例对深度学习模型剪枝,获得了剪枝后的深度学习模型,将深度学习模型压缩提升了模型的推断速度;根据高斯过程回归预先计算下一轮剪枝比例,可以获得合适的剪枝比例并且剪枝比例搜索速度快,通常在深度学习模型几轮迭代学习的过程中即可完成剪枝比例超参数的搜索,该剪枝比例搜索算法适用于不同的深度学习任务,通用性好;对剪枝后的深度学习模型进行重训练以提升模型的精度,在确保剪枝后的深度学习模型度量精度达到预设精度的前提下,根据预设剪枝轮数和下一轮剪枝比例对剪枝后的深度学习模型进行再剪枝,进一步压缩深度学习模型,以提升模型的推断速度;当剪枝轮数达到预设剪枝轮数时,获得了精度最高、推断速度最快的最终深度学习模型。
附图说明
[0029]
为让本技术的上述目的、特征和优点能更明显易懂,以下结合附图对本技术的具体实施方式作详细说明,其中:
[0030]
图1是本技术一实施例的深度学习模型的压缩方法的示例性流程图;
[0031]
图2是图1所示实施例的另一示例性流程图;
[0032]
图3是本技术一实施例的深度学习模型的压缩方法的另一示例性流程图;
[0033]
图4是本技术一实施例的深度学习模型的压缩系统的系统框图。
具体实施方式
[0034]
为让本技术的上述目的、特征和优点能更明显易懂,以下结合附图对本技术的具体实施方式作详细说明。
[0035]
在下面的描述中阐述了很多具体细节以便于充分理解本技术,但是本技术还可以采用其它不同于在此描述的其它方式来实施,因此本技术不受下面公开的具体实施例的限制。
[0036]
如本技术和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
[0037]
本技术中使用了流程图用来说明根据本技术的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
[0038]
传统的自动化剪枝算法,例如随机搜索和结构搜索,通常依赖先验经验,通过预设备选超参数来一一验证剪枝比例。目前深度学习模型具有结构多样的特性并且具有差异较大的参数量、数据量,很难通过预设参数的形式获得精确的剪枝比例。而另一类超参数搜索方法贝叶斯搜索,根据代理模型和获取函数通过少数几次验证搜索来获得可行域的极值,贝叶斯搜索不依赖先验经验,但是获取函数搜索的值为可行域的最大值,不适用常规的任务需求。使用贝叶斯搜索的方法来搜索剪枝比例需要经过更多的迭代次数,而每一次剪枝参数验证所消耗的计算成本很高。
[0039]
在自动化的剪枝流程中面对不同的应用任务,为了保证通用性,通常不会进行后处理操作,此时针对深度学习模型特征的度量就成为了深度学习模型精度的替代评估指标。最常用的度量方式为余弦距离,余弦距离指标的取值范围在0-1之间,度量结果更加直观,但是余弦距离作为度量指标并不严格,即便余弦距离度量的结果已经达到0.99,但是深度学习模型真实精度的差异仍然较大。在超参数搜索的流程中,如果度量指标不准确,会导致剪枝后的深度学习模型失效。
[0040]
综上所述,为了使深度学习模型的压缩更加有效,本技术提出了一种深度学习模型的压缩方法。下文将对该压缩方法进行详细描述。
[0041]
本技术提出一种深度学习模型的压缩方法,该压缩方法适用于图像分类、检测、分割等任务,支持不同算法或者不同的深度学习模型,无需针对特定算法任务和深度学习模型结构做调整、无需进行后处理。示例性地,以图像检测任务为例,后处理指的是需要根据
深度学习模型生成的多个特征向量计算物体框位置,涉及置信度对比,物体框去重、物体框位置偏移计算等复杂的处理流程。
[0042]
图1是本技术一实施例的深度学习模型的压缩方法的示例性流程图,参考图1所示,该实施例的深度学习模型的压缩方法包括以下步骤:
[0043]
步骤s110:根据当前剪枝比例对深度学习模型进行剪枝,获得剪枝后的深度学习模型。
[0044]
步骤s120:根据高斯过程回归计算下一轮剪枝比例。
[0045]
步骤s130:对剪枝后的深度学习模型进行重训练,并计算当前度量精度,当当前度量精度达到预设精度时,判断当前剪枝轮数是否达到预设剪枝轮数。
[0046]
步骤s140:若当前剪枝轮数未达到预设剪枝轮数,根据下一轮剪枝比例对剪枝后的深度学习模型进行再剪枝。
[0047]
步骤s150:当当前剪枝轮数达到预设剪枝轮数时,将当前剪枝后的深度学习模型作为最终深度学习模型。
[0048]
图2是图1所示实施例的另一示例性流程图,在此先根据图2对图1所示的实施例进行说明。
[0049]
参考图2所示,在步骤s210根据当前剪枝比例对深度学习模型进行剪枝,获得剪枝后的深度学习模型,若深度学习模型是第一轮剪枝,则该轮剪枝的当前剪枝比例是初始化的默认剪枝比例;在步骤s220根据本技术的高斯过程回归算法计算下一轮剪枝比例,该“下一轮剪枝比例”用于下一轮剪枝,本技术的高斯过程回归算法将在后文详细说明;在步骤s230对剪枝后的深度学习模型进行重训练并计算当前度量精度,当前度量精度的计算方法将在后文详细说明;在步骤s240判断是否达到预设精度,即判断当前度量精度是否达到预设精度;若步骤s240判断当前度量精度未达到预设精度,从步骤s240返回步骤s230继续重训练并计算当前度量精度;当步骤s240判断当前度量精度已达到预设精度时,从步骤s240来到步骤s250;在步骤s250判断是否达到预设剪枝轮数,即判断当前剪枝轮数是否达到预设剪枝轮数;若步骤s250判断当前剪枝轮数未达到预设剪枝轮数,从步骤s250返回步骤s210继续进行下一轮剪枝流程,需要说明的是,此时步骤s210中的“当前剪枝比例”是上一轮剪枝流程中步骤s220计算出的“下一轮剪枝比例”;当步骤s250判断当前剪枝轮数已达到预设剪枝轮数时,从步骤s250来到步骤s260;在步骤s260输出最终深度学习模型,此时输出的模型即经过剪枝压缩后需要的精度最高、推断速度最快的最终深度学习模型。
[0050]
下面详细说明前述的步骤s110至步骤s150:
[0051]
在步骤s110中,根据当前剪枝比例对深度学习模型进行剪枝,获得剪枝后的深度学习模型。
[0052]
示例性地,在深度学习模型剪枝的过程中,若深度学习模型是第一轮剪枝,则使用预设默认的剪枝比例来初始化剪枝比例,根据默认的剪枝比例对深度学习模型进行剪枝,获得剪枝后的深度学习模型,本技术对默认的剪枝比例不作限制,可根据实际应用自主设置;若深度学习模型不是第一轮剪枝,则根据当前已有的剪枝比例对深度学习模型进行剪枝,获得剪枝后的深度学习模型。
[0053]
在一些实施例中,该步骤s110中,在根据当前剪枝比例对深度学习模型进行剪枝的步骤之前,还包括:
[0054]
构建剪枝比例列表和剪枝后的精度列表,剪枝比例列表用于存储每一轮计算的剪枝比例,剪枝后的精度列表用于存储每一轮深度学习模型剪枝后的度量精度;
[0055]
根据剪枝比例列表中的当前剪枝比例对深度学习模型进行剪枝。
[0056]
通过构建剪枝比例列表和剪枝后的精度列表,利用两个列表完整地存储、更新每一轮深度学习模型压缩过程中计算的剪枝比例和剪枝后的深度学习模型的度量精度,方便本技术的高斯过程回归算法从列表中准确调取相关数据,保证了高斯过程回归算法计算的准确性。
[0057]
在步骤s120中,根据高斯过程回归计算下一轮剪枝比例。
[0058]
示例性地,高斯过程回归(gaussian process regression,gpr)是使用高斯过程(gaussian process,gp)先验对数据进行回归分析的非参数模型(non-parameteric model)。本技术根据改进后的高斯过程回归计算下一轮剪枝比例。
[0059]
在一些实施例中,根据高斯过程回归计算下一轮剪枝比例的步骤包括:采用下面的公式(1)计算下一轮剪枝比例:
[0060][0061]
其中,acc为当前度量精度,preset acc为预设精度,σ为高斯过程回归的均值结果的中心化后的求累计分布函数的结果,t为取值范围在0到1之间的常数,p0为贝塞尔曲线拟合过程中应用的坐标p0=(0,0,p2为贝塞尔曲线拟合过程中应用的坐标p2=(1,0,earlystop为早停机制表示早停退出的当前重训练轮数与预设重训练轮数的比值,std为高斯过程回归的方差结果,(1-t)2p0+2t(1-t)((p0+earlystop),2)+t2p2整体为贝塞尔权重项。
[0062]
示例性地,本技术将获得的度量精度存入剪枝后的精度列表,基于现有的度量精度以及早停退出的当前重训练轮数来计算下一个验证的剪枝比例(即下一轮剪枝比例)。参考上述公式(1)所示,如果剪枝后的深度学习模型的度量精度小于预设的度量精度,则直接求σ最大值所对应的剪枝比例。如果剪枝后的深度学习模型的度量精度满足预设的度量精度则在高斯过程回归的方差结果之前引入贝塞尔权重项,通过早停的程度(即早停退出的当前重训练轮数与预设重训练轮数的比值)来调整下一轮剪枝的比例,若停的越早则表明剩余的剪枝空间越大,若停的越晚则表明剩余的剪枝空间越小,也就越接近实际期望的剪枝。
[0063]
通过结合贝塞尔权重项(反映了基于目前的剪枝比例剩余模型的剪枝空间)以及高斯过程回归的方差结果(未验证点所包含的信息量)共同决定下一个要验证的点(即选取贝塞尔权重项与高斯过程回归的方差的乘积最大值对应的剪枝比例),可以更快地确定需要搜索的目标。示例性地,通常完成4轮剪枝比例超参数搜索即可得到精度较佳的剪枝后的深度学习模型。
[0064]
在步骤s130中,对剪枝后的深度学习模型进行重训练,并计算当前度量精度,当当前度量精度达到预设精度时,判断当前剪枝轮数是否达到预设剪枝轮数。
[0065]
示例性地,重训练指的是在深度学习模型进行剪枝操作后重新训练模型,在重训练的过程中对剪枝后的深度学习模型进行参数微调,以提高剪枝后的深度学习模型的模型精度,避免剪枝操作后对模型性能产生影响。计算当前度量精度并与预设精度进行比较可以很好地评估模型性能以便后续根据需要进行模型剪枝、重训练的调整。
[0066]
在一些实施例中,对剪枝后的深度学习模型进行重训练,并计算当前度量精度的步骤包括:在重训练的过程中设置预设重训练轮数和预设精度来控制重训练的轮数,若当前度量精度未达到预设精度,重复重训练,当当前度量精度达到预设精度时,退出重训练并记录当前重训练轮数以及当前度量精度。
[0067]
示例性地,预设重训练轮数可以设置为20轮,本技术对预设重训练轮数不作限制。当当前重训练轮数达到预设重训练轮数时,即便没有达到预设精度要求也会停止重训练,并记录当前重训练轮数以及当前度量精度,这样设置避免剪枝后的深度学习模型一直在重复重训练而使本技术的模型压缩方法无法进入后续流程影响正常运行。
[0068]
在一些实施例中,计算当前度量精度的步骤包括:采用下面的余弦距离公式(2)计算当前度量精度:
[0069][0070]
其中,cos distance表示余弦距离,a和b分别表示经过重训练的剪枝后的深度学习模型的第一特征和预设的目标深度学习模型的第二特征,余弦距离用于将第一特征和第二特征映射到高维空间以衡量第一特征和第二特征之间的夹角差距。
[0071]
在超参数搜索过程中,度量指标起到了反映模型精度的作用,但是在实际应用中,目前常用的一些度量指标并不能在超参数搜索过程中准确地反映剪枝后的深度学习模型的真实精度。例如马氏距离,其在欧式空间下进行精度度量,但是计算量较大导致度量过程过于缓慢;例如皮尔森相关系数、kl散度(kullback-leibler divergence)、余弦距离,此类度量指标不够严格而不能精确地反映剪枝后的深度学习模型的真实精度,可能导致度量指标的度量精度已经很高,但是剪枝后的深度学习模型与真实精度之间还存在一定差距。因此为了解决上述问题,本技术提出了一种新的度量指标,在度量的过程中引入wasserstein距离,本技术的度量指标在多数任务的剪枝模型上的度量精度结果,可以更加准确地反映剪枝后的深度学习模型的真实精度。
[0072]
在一些实施例中,计算当前度量精度的步骤包括:将余弦距离与wasserstein距离结合,获得复合加权指标,采用下面的复合加权指标公式(3)、(4)计算当前度量精度:
[0073]
distance acc=1-((1-cos distance)*p+wasserstein distance*q)
ꢀꢀ
(3)
[0074][0075]
其中,distance acc表示复合加权指标,wasserstein distance表示wasserstein距离,p为余弦距离的权重,q为wasserstein距离的权重,pr为特征r的概率分布,pg为特征g的概率分布,γ为联合分布,s(pr,pg)为特征r和特征g的所有可能的联合分布的集合,x和y表示在联合分布γ中采样出的x样本和y样本,e(x,y)γ[||x-y||]表示在联合分布γ下样本对距离的期望,inf表示最大下界。
[0076]
示例性地,使用本技术的复合加权指标计算当前度量精度,预设精度可以设置为0.965,本技术对预设精度值不作限制。
[0077]
余弦距离广泛应用在诸多相似度度量任务中,但是余弦距离在度量过程中忽略了模对相似度的影响,并且在高维空间上,某些维度差异在度量指标上并不能很好地体现,导致在某些尺寸很大的特征度量任务种存在一定缺陷,而wasserstein距离可以在其他方面克服这些缺陷。
[0078]
大多数度量指标的度量方式都是将对应点的概率密度函数相比较,这会忽略其几何特性,而基于wasserstein距离可以找出wasserstein平均,相比于欧式平均(eulidean average)来说,wasserstein平均更能够描述对应点的形态特征。因此在度量指标中引入wasserstein距离可以提升度量指标的精确度,进而更好地反映特征之间的差异以及剪枝后的深度学习模型的真实精度。
[0079]
在一些实施例中,在复合加权指标中,p取值0.9,q取值0.1,即余弦距离的权重与wasserstein距离的权重比值为9∶1。本技术对p和q的选择不作限制。
[0080]
在步骤s140中,若当前剪枝轮数未达到预设剪枝轮数,根据下一轮剪枝比例对剪枝后的深度学习模型进行再剪枝。
[0081]
示例性地,若当前剪枝轮数未达到预设剪枝轮数,则根据剪枝比例列表中的当前剪枝比例(即上一轮剪枝过程中计算出的“下一轮剪枝比例”)对剪枝后的深度学习模型进行再剪枝,进一步压缩深度学习模型,提升模型的推断速度。
[0082]
在一些实施例中,若当前剪枝轮数未达到预设剪枝轮数,还将下一轮剪枝比例加入剪枝比例列表以及将当前度量精度加入剪枝后的精度列表。
[0083]
示例性地,在进行每一轮模型压缩流程后,及时地将下一轮剪枝比例加入剪枝比例列表以及将当前度量精度加入剪枝后的精度列表,便于在后续模型压缩流程中根据列表中已有的数据正确地计算剪枝比例。
[0084]
在步骤s150中,当当前剪枝轮数达到预设剪枝轮数时,将当前剪枝后的深度学习模型作为最终深度学习模型。
[0085]
示例性地,若当前剪枝轮数已达到预设剪枝轮数,则输出剪枝后的深度学习模型,即将当前剪枝后的深度学习模型作为最终深度学习模型,该最终深度学习模型是期望的推断速度最快、精度最高的深度学习模型。
[0086]
图3是本技术一实施例的深度学习模型的压缩方法的另一示例性流程图。下面结合图3对本技术的深度学习模型的压缩方法的一个实施例进行说明。
[0087]
参考图3所示,若深度学习模型是第一轮剪枝,在步骤s310初始化剪枝比例,初始化的剪枝比例可以是默认设置的剪枝比例;在步骤s320构建剪枝比例列表和剪枝后的精度列表,构建出的两个列表初始状态为空,即两个列表中没有数据;在步骤s330更新剪枝比例列表,即将第一轮剪枝时初始化的剪枝比例加入剪枝比例列表;在步骤s340判断精度列表是否为空,由于深度学习模型是第一轮剪枝,步骤s340判断精度列表为空,所以从步骤s340来到步骤s3410;在步骤s3410根据当前剪枝比例对深度学习模型进行剪枝,获得剪枝后的深度学习模型,当前剪枝比例即剪枝比例列表中当前最新的剪枝比例;在步骤s3411对剪枝后的深度学习模型进行重训练并计算当前度量精度;在步骤s3412判断是否达到预设精度,即判断当前度量精度是否达到预设精度,若步骤s3412判断当前度量精度未达到预设精度,从步骤s3412返回步骤s3411继续重训练并计算当前度量精度;当步骤s3412判断当前度量精度已达到预设精度时,从步骤s3412来到步骤s350;在步骤s350判断是否达到预设剪枝轮数,即判断当前剪枝轮数是否达到预设剪枝轮数;若步骤s350判断当前剪枝轮数未达到预设剪枝轮数,从步骤s350来到步骤s360;在步骤s360加入新的剪枝比例和度量精度,即将新的剪枝比例加入剪枝比例列表,以及将当前度量精度加入剪枝后的精度列表;在步骤s370更新剪枝后的精度列表;在步骤s330更新剪枝比例列表;此时深度学习模型第一轮剪枝结
束,进入下一轮剪枝。
[0088]
参考图3所示,若深度学习模型不是第一轮剪枝,在步骤s340判断精度列表是否为空,此时步骤s340判断精度列表不为空,即剪枝后的精度列表中当前已存在度量精度数据,所以从步骤s340来到步骤s3420;在步骤s3420根据本技术的高斯过程回归算法计算下一轮剪枝比例,该“下一轮剪枝比例”用于下一轮剪枝;在步骤s3421根据当前剪枝比例对深度学习模型进行剪枝,此时的当前剪枝比例即剪枝比例列表中当前最新的剪枝比例;在步骤s3422对剪枝后的深度学习模型进行重训练并计算当前度量精度;在步骤s3423判断是否达到预设精度,若步骤s3423判断当前度量精度未达到预设精度,从步骤s3423返回步骤s3422继续重训练并计算当前度量精度;当步骤s3423判断当前度量精度已达到预设精度时,从步骤s3423来到步骤s350;在步骤s350判断是否达到预设剪枝轮数;若步骤s350判断当前剪枝轮数未达到预设剪枝轮数,从步骤s350来到步骤s360;在步骤s360加入新的剪枝比例和度量精度,即将“下一轮剪枝比例”加入剪枝比例列表,以及将当前度量精度加入剪枝后的精度列表;在步骤s370更新剪枝后的精度列表;在步骤s330更新剪枝比例列表;深度学习模型继续进入下一轮剪枝流程;当步骤s350判断当前剪枝轮数已达到预设剪枝轮数时,从步骤s350来到步骤s380;在步骤s380输出最终深度学习模型,此时输出的模型即经过剪枝压缩后需要的精度最高、推断速度最快的最终深度学习模型。
[0089]
需要说明的是,在实际应用中,图3中的部分步骤无需按照时间先后顺序依次执行,例如步骤s370和步骤s330可以同时执行,即可以同时更新剪枝比例列表和剪枝后的精度列表,本技术对图3中部分步骤的执行顺序不作限制,可以根据实际需要自主设置。
[0090]
本技术还包括一种深度学习模型的压缩系统,包括存储器和处理器。其中,该存储器用于存储可由处理器执行的指令;处理器用于执行该指令以实现前文所述的深度学习模型的压缩方法。
[0091]
图4是本技术一实施例的深度学习模型的压缩系统的系统框图。参考图4所示,该深度学习模型的压缩系统400可包括内部通信总线401、处理器402、只读存储器(rom)403、随机存取存储器(ram)404以及通信端口405。当应用在个人计算机上时,该深度学习模型的压缩系统400还可以包括硬盘406。内部通信总线401可以实现该深度学习模型的压缩系统400组件间的数据通信。处理器402可以进行判断和发出提示。在一些实施例中,处理器402可以由一个或多个处理器组成。通信端口405可以实现该深度学习模型的压缩系统400与外部的数据通信。在一些实施例中,该深度学习模型的压缩系统400可以通过通信端口405从网络发送和接受信息及数据。该深度学习模型的压缩系统400还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘406,只读存储器(rom)403和随机存取存储器(ram)404,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给用户设备,在用户界面上显示。
[0092]
上述的深度学习模型的压缩方法可以实施为计算机程序,保存在硬盘406中,并可加载到处理器402中执行,以实施本技术的深度学习模型的压缩方法。
[0093]
本技术还包括一种存储有计算机程序代码的计算机可读介质,该计算机程序代码在由处理器执行时实现前文所述的深度学习模型的压缩方法。
[0094]
深度学习模型的压缩方法实施为计算机程序时,也可以存储在计算机可读存储介
质中作为制品。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(cd)、数字多功能盘(dvd))、智能卡和闪存设备(例如,电可擦除可编程只读存储器(eprom)、卡、棒、键驱动)。此外,本文描述的各种存储介质能代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于能存储、包含和/或承载代码和/或指令和/或数据的无线信道和各种其它介质(和/或存储介质)。
[0095]
应该理解,上文所描述的实施例仅是示意。本文描述的实施例可在硬件、软件、固件、中间件、微码或者其任意组合中实现。对于硬件实现,处理器可以在一个或者多个特定用途集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器和/或设计为执行本文所述功能的其它电子单元或者其结合内实现。
[0096]
本技术的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理器件(dapd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器或者其组合。此外,本技术的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带
……
)、光盘(例如,压缩盘cd、数字多功能盘dvd
……
)、智能卡以及闪存设备(例如,卡、棒、键驱动器
……
)。
[0097]
计算机可读介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。
[0098]
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述申请披露仅仅作为示例,而并不构成对本技术的限定。虽然此处并没有明确说明,本领域技术人员可能会对本技术进行各种修改、改进和修正。该类修改、改进和修正在本技术中被建议,所以该类修改、改进、修正仍属于本技术示范实施例的精神和范围。
[0099]
同时,本技术使用了特定词语来描述本技术的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本技术至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本技术的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
[0100]
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有
±
20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点
可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本技术一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1