深度卷积神经网络的混合精度量化方法及相关设备
未命名
09-11
阅读:116
评论:0

1.本发明涉及深度卷积神经网络技术领域,尤其是指一种深度卷积神经网络的混合精度量化方法及相关设备。
背景技术:
2.近些年来,随着数据样本的不断丰富,计算单元性能的快速提升,卷积神经网络(convolutional neural network,cnn)凭借着其强大的特征提取和表达能力,在图像分类、目标检测和语义分割等计算机视觉领域,都获得了显著的应用成效。得益于网络模型的加深加巨,cnn的众多拓展模型在众多任务中超越了很多传统技术方法,甚至堪比人类的识别能力,可适用于广泛的行业应用,如智能驾驶、人脸识别等。
3.然而,在卷积神经网络如此华丽的外表之下,往往是以牺牲巨大的内存存储,繁多的计算量,冗长的训练时间为代价,这使其在许多资源受限的嵌入式设备和对实时性要求较高的移动端的部署带来了许多阻碍。现如今像城市智能安防,城市交通管理,无人驾驶,人机交互等此类应用场景无一不在运算的实时性方面对网络模型提出了极高的要求。这些应用模型在借助深度卷积神经网络(deep convolutional neural network,dcnn)强大的特征提取和处理能力的同时,也不得不需要面对dcnn为部署平台带来的高昂的存储和计算成本,这也导致这些深度模型虽然己达到了满足任务性能的指标需求,却仍然难以被部署在移动设备或嵌入式平台上运行,限制了其进一步推广。
4.为使得复杂的网络模型能更好的应用于移动设备与嵌入式平台中,有些研究学者通过设计新的深度学习框架和专用型硬件芯片,以加快深度学习的训练和测试过程,但是这些框架和工具必须针对特定的硬件和应用场景,对于很多的应用场景缺乏适用性。进而更多学者选择从软件方向来加速深度神经网络,设计优化算法来解决深度学习的庞大计算量和较大内存空间的需求以及耗时长的问题。经过不断的发展与更迭,现如今学术界dcnn的轻量化方法主要可以分为五大类:网络剪枝(network pruning),参数量化(parameter quantification),低秩分解(low-rank decomposition),知识蒸馏(knowledge distillation),轻量化网络设计(compact structure design)。不管哪一种方法,都有一个共同的目标,即在保持高精度的同时减少神经网络的大小或复杂性。而如何保持网络模型的轻量化和精度损失之间的平衡一直是该研究的重难点。
5.在如今的神经网络里,不论是输入还是权重,使用的基本都是32位的浮点数,而在实际应用的过程当中会发现这个精度是存在冗余的,尤其是对于目前一些小型设备在实现一些较为简单的分类或识别任务时,该情况更为明显,这无疑是一种资源浪费。
技术实现要素:
6.本发明所要解决的技术问题是:提供一种深度卷积神经网络的混合精度量化方法及相关设备,旨在不影响性能的前提下,降低深度卷积神经网络的精度冗余。
7.为了解决上述技术问题,本发明采用的技术方案为:一种深度卷积神经网络的混
合精度量化方法,包括步骤:
8.s11、加载经过样本训练后的全精度深度卷积神经网络模型,获取其输入层、各个卷积层和各个全连接层用浮点数表示的权重与偏置的最大值与最小值;
9.s12、根据输入层、各个卷积层和各个全连接层用浮点数表示的权重和偏置的最大值、最小值以及需要量化的精度,计算出输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点;
10.s13、根据输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点,计算出量化后用实数表示的权重与偏置取代原有用浮点数表示的权重与偏置;
11.s14、利用全精度深度卷积神经网络模型的训练数据进行前向传播,得到每层网络的权重与偏置被取代后,全精度深度卷积神经网络模型的每层网络输出浮点数表示的最大值和最小值;
12.s15、根据每层网络输出用浮点数表示的最大值、最小值以及需要量化的精度,计算每层网络输出值对应的缩放系数和量化零点;
13.s16、根据每层网络输出值对应的缩放系数和量化零点,计算出量化后用实数表示的每层网络的输出值取代原有的每层网络用浮点数表示的输出值,完成全精度深度卷积神经网络模型量化框架的搭建;
14.s17、对搭建好的深度卷积神经网络量化框架设置不同的精度组合进行模型测试,从测试准确率结果中选出最佳的量化精度组合。
15.进一步的,步骤s17具体包括,
16.s171、将搭建好的深度卷积神经网络量化框架中的所有网络层量化精度设置为8比特,记录下准确率结果,随后选择其中一层网络层的量化精度从8比特遍历到1比特,而其他网络层的量化精度保持8比特不变进行模型测试,记录量化后的深度卷积神经网络模型的各网络层的量化精度及对应的测试准确率结果,直到所有网络层的量化精度都从8比特到1比特遍历,记录下各网络层的量化精度及对应的测试准确率结果;
17.s172、对所有的测试准确率结果进行排序;
18.s173、根据模型需要压缩的程度,从排好序的测试准确率结果中选择一个作为阈值,并从每一层网络层的量化精度从8比特下降到1比特过程中所得到的8个测试准确率结果当中找到最接近该阈值所对应的比特位,以确定一组最佳的量化精度组合。
19.进一步的,在步骤s172中,在对所有的测试准确率结果进行排序之前还包括,
20.对测试准确率结果进行筛选,将采用较高量化精度但测试准确率结果却不如较低量化精度的测试准确率结果删除。
21.进一步的,步骤s12中,计算缩放系数采用的公式为:
[0022][0023]
计算量化零点采用的公式为:
[0024][0025]
其中,z代表量化后的零点;s代表量化的缩放系数;r
max
和r
min
表示浮点数的最大值和最小值;q
max
和q
min
表示量化精度的最大值和最小值;round为按指定的位数对数值进行四
舍五入。
[0026]
进一步的,根据输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点,计算出量化后用实数表示的权重与偏置取代原有用浮点数表示的权重与偏置采用的公式为:
[0027]
r=sq-z
[0028][0029]
其中,r代表量化前的浮点数;q代表量化后的实数。
[0030]
进一步的,深度卷积神经网络的混合精度量化方法,还包括步骤:
[0031]
s10、通过训练样本对全精度深度卷积神经网络模型进行模型训练,得到训练完成的全精度深度卷积神经网络模型。
[0032]
进一步的,采用的全精度深度卷积神经网络模型为vgg16网络模型和alxnet网络模型,vgg16网络模型一共16层,包括13个卷积层和3个全连接层;alxnet网络模型一共8层,包括5个卷积层和3个全连接层。
[0033]
本发明还提供了一种深度卷积神经网络的混合精度量化装置,包括:
[0034]
网络模型加载模块,用于加载经过样本训练后的全精度深度卷积神经网络模型,获取其输入层、各个卷积层和各个全连接层用浮点数表示的权重与偏置的最大值与最小值;
[0035]
权重与偏置量化系数计算模块,用于根据输入层、各个卷积层和各个全连接层用浮点数表示的权重和偏置的最大值、最小值以及需要量化的精度,计算出输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点;
[0036]
权重与偏置量化模块,用于根据输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点,计算出量化后用实数表示的权重与偏置取代原有用浮点数表示的权重与偏置;
[0037]
权重与偏置取代模块,用于利用全精度深度卷积神经网络模型的训练数据进行前向传播,得到每层网络的权重与偏置被取代后,全精度深度卷积神经网络模型的每层网络输出浮点数表示的最大值和最小值;
[0038]
网络输出量化系数计算模块,用于根据每层网络输出用浮点数表示的最大值、最小值以及需要量化的精度,计算每层网络输出值对应的缩放系数和量化零点;
[0039]
网络输出取代模块,用于根据每层网络输出值对应的缩放系数和量化零点,计算出量化后用实数表示的每层网络的输出值取代原有的每层网络输出的浮点数表示的输出值,完成全精度深度卷积神经网络模型量化框架的搭建;
[0040]
量化精度组合筛选模块,用于对搭建好的深度卷积神经网络量化框架设置不同的精度组合进行模型测试,从测试准确率结果中选出最佳的量化精度组合。
[0041]
本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的深度卷积神经网络的混合精度量化方法。
[0042]
本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如上所述的深度卷积神经网络的混合精度量化方法。
[0043]
本发明的有益效果在于:混合精度量化会根据每一层网络对参数精度的敏感性不同设置不同的精度,最大限度的在减小网络所占用的内存与加快推理速度的同时,保证网络的性能。
附图说明
[0044]
下面结合附图详述本发明的具体结构。
[0045]
图1为本发明实施例的深度卷积神经网络的混合精度量化方法流程图;
[0046]
图2为本发明实施例的深度卷积神经网络的混合精度量化装置框图;
[0047]
图3为本发明实施例的量化精度组合筛选流程图;
[0048]
图4为本发明实施例的量化精度组合筛选模块框图;
[0049]
图5为本发明实施例的数据排列散点图;
[0050]
图6为本发明实施例的计算机设备的示意性框图。
具体实施方式
[0051]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0052]
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0053]
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0054]
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0055]
如图1所示,本发明第一实施例为:一种深度卷积神经网络的混合精度量化方法,包括步骤:
[0056]
s11、加载经过样本训练后的全精度深度卷积神经网络模型,获取其输入层、各个卷积层和各个全连接层用浮点数表示的权重与偏置的最大值与最小值;
[0057]
s12、根据输入层、各个卷积层和各个全连接层用浮点数表示的权重和偏置的最大值、最小值以及需要量化的精度,计算出输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点;
[0058]
s13、根据输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点,计算出量化后用实数表示的权重与偏置取代原有用浮点数表示的权重与偏置;
[0059]
s14、利用全精度深度卷积神经网络模型的训练数据进行前向传播,得到每层网络的权重与偏置被取代后,全精度深度卷积神经网络模型的每层网络输出浮点数表示的最大值和最小值;
[0060]
s15、根据每层网络输出用浮点数表示的最大值、最小值以及需要量化的精度,计
算每层网络输出值对应的缩放系数和量化零点;
[0061]
s16、根据每层网络输出值对应的缩放系数和量化零点,计算出量化后用实数表示的每层网络的输出值取代原有的每层网络用浮点数表示的输出值,完成全精度深度卷积神经网络模型量化框架的搭建;
[0062]
在步骤s14-s16中,全精度深度卷积神经网络模型卷积操作会使得每一层卷积网络输出的featurmap的精度发生改变,因此需要利用该全精度网络的部分训练数据进行前向传播,得到每层网络输出的最大值和最小值,随后再次利用公式1和公式2计算出对应的s和z,代入公式4中得到量化后的每层网络输出值,取代原有浮点数,完成量化操作,从而保证参数的精度不变。
[0063]
s17、对搭建好的深度卷积神经网络量化框架设置不同的精度组合进行模型测试,从测试准确率结果中选出最佳的量化精度组合。
[0064]
量化感知训练唯一的不同就在于权重从浮点数量化为低精度后需要反量化为浮点数,再进行前向传播,最后再根据更新后的权重与featuremap值计算scale和zero-point进行量化,通过上述操作可以使网络有机会根据量化的值进行调整和学习,从而降低量化带来的误差。因此,两种量化方法的应用场景各不相同,后训练量化由于过程较为简单,训练时间短更加适合功能简单的网络模型。量化感知训练由于误差小,量化后的网络性能稳定,更加适合功能复杂,有着高精度要求的网络模型。
[0065]
本实施例中,混合精度量化会根据每一层网络对参数精度的敏感性不同设置不同的精度,最大限度的在减小网络所占用的内存与加快推理速度的同时,保证网络的性能。
[0066]
如图3所示,在一具体实施例中,步骤s17具体包括,
[0067]
s171、将搭建好的深度卷积神经网络量化框架中的所有网络层量化精度设置为8比特,记录下准确率结果,随后选择其中一层网络层的量化精度从8比特遍历到1比特,而其他网络层的量化精度保持8比特不变进行模型测试,记录量化后的深度卷积神经网络模型的各网络层的量化精度及对应的测试准确率结果,直到所有网络层的量化精度都从8比特到1比特遍历,记录下各网络层的量化精度及对应的测试准确率结果;
[0068]
s172、对所有的测试准确率结果进行排序;
[0069]
s173、根据模型需要压缩的程度,从排好序的测试准确率结果中选择一个作为阈值,并从每一层网络层的量化精度从8比特下降到1比特过程中所得到的8个测试准确率结果当中找到最接近该阈值所对应的比特位,以确定一组最佳的量化精度组合。当需要将整个深度卷积神经网络降到平均4比特也就是整个网络压缩50%的时候,只需在排序好的数据中选择一个中位数作为阈值,随后在每一层网络的数据当中找到最接近这个阈值的值,即可确定每一层的最佳精度,虽然组合起来的效果会存在一定的差异,但是每一层对于参数精度的敏感性却是确认无疑的。
[0070]
本实施例中,遍历深度卷积神经网络模型中各个层的不同精度组合,从而找出效果最好的那一种。但是对于深度卷积神经网络模型来说,将每一种排列组合都遍历一遍再去对比效果无疑是耗时且繁琐的。因此在该环节中找到一个合适的遍历方法,既能从中判断出各层对参数精度的敏感性又能花费较少的时间完成训练得到一个最优的精度组合。
[0071]
在一具体实施例中,在步骤s172中,在对所有的测试准确率结果进行排序之前还包括,
[0072]
对测试准确率结果进行筛选,将采用较高量化精度但测试准确率结果却不如较低量化精度的测试准确率结果删除。
[0073]
在一具体实施例中,步骤s12中,计算缩放系数采用的公式为:
[0074][0075]
计算量化零点采用的公式为:
[0076][0077]
其中,z代表量化后的零点;s代表量化的缩放系数;r
max
和r
min
表示浮点数的最大值和最小值;q
max
和q
min
表示量化精度的最大值和最小值;round为按指定的位数对数值进行四舍五入。
[0078]
其中,根据输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点,计算出量化后用实数表示的权重与偏置取代原有用浮点数表示的权重与偏置采用的公式为:
[0079]
r=s(q-z)
ꢀꢀꢀꢀꢀ
(3)
[0080][0081]
其中,r代表量化前的浮点数;q代表量化后的实数。
[0082]
本实施例中,q
max
和q
min
的大小则取决于选择的量化精度,当量化精度设置为8比特时,q
max
和q
min
即分别为255和0。r代表量化前的浮点数,r
max
和r
min
则代表浮点数的最大值和最小值。公式1和公式2是量化前必须完成的操作,当获取到网络中每一层权重与偏差的数据范围即r
max
和r
min
以及量化的精度q
max
和q
min
时便能计算出每一层网络对应的s和z,其后代入到公式4中,便可实现对应的量化,或是代入到公式3中实现对应的反量化。
[0083]
在一具体实施例中,深度卷积神经网络的混合精度量化方法,还包括步骤:
[0084]
s10、通过训练样本对全精度深度卷积神经网络模型进行模型训练,得到训练完成的全精度深度卷积神经网络模型。
[0085]
在一具体实施例中,采用的全精度深度卷积神经网络模型为vgg16网络模型和alxnet网络模型,vgg16网络模型一共16层,包括13个卷积层和3个全连接层;alxnet网络模型一共8层,包括5个卷积层和3个全连接层。
[0086]
为验证本发明技术方案在面对大型网络时的优越性,下面通过实验来对比混合精度量化与统一精度量化在面对相同网络时的效果。
[0087]
本次实验选择的数据集为cifar-10,该数据集由60000张大小为32
×
32的rgb彩色图像组成,分为10类。有50,000张图片作为训练集,10,000张图片作为测试集。
[0088]
实验使用的模型是vgg16网络模型和alxnet网络模型。vgg16网络模型总共有16层,包含13个卷积层和3个全连接层。alxnet网络模型总共有8层,包含5个卷积层和3个全连接层。卷积层负责提取特征,全连接层负责实现分类任务。
[0089]
经过微调后,alxnet网络模型在全精度下的识别正确率可以达到72.49%,vgg16网络模型可以达到90.47%。
[0090]
下表为vgg16模型通过混合精度量化算法训练cifar10数据集得到的准确率结果。
[0091]
表1:
[0092]
layer\bit8765432110.000.120.251.004.7238.9573.9980.4720.000.04-0.080.535.4747.6778.0980.4730.000.12-0.010.510.6748.1978.2580.4740.000.110.180.170.382.8752.1780.4750.000.170.030.060.111.4255.3680.4760.000.040.050.100.200.5914.0480.4770.000.070.150.120.250.898.4580.4780.000.200.030.190.200.3120.2980.4790.000.070.100.150.112.4671.2180.47100.000.160.090.050.150.7357.3180.47110.000.070.110.090.031.1255.2380.47120.000.050.100.000.090.012.1880.47130.000.120.060.090.160.071.2880.47140.000.020.130.100.210.090.3380.47150.000.130.020.080.290.110.6760.86160.000.040.170.240.481.235.0869.17
[0093]
表格最上方代表的是vgg网络模型的层数,最左侧代表的是该层的量化精度,对应格子内的数据则代表的是该层网络模型使用当前量化精度,其余层固定在8bit时,网络模型识别准确率相较于全部层都使用8bit量化的差值。此时,便可以根据表格中数据的大小来推断出每一层网络对于参数精度下降的敏感性,差值越大,代表越敏感,差值越小,则反之。
[0094]
随后,需要对表格中的数据进行筛选,将同一列中(即同一层网络)位于更靠上位置(更高精度)的值却比较低位置的值(更低精度)还要高的数据删除。此时,表格中的每一列都将是单调递增的。如下表2为筛选后的表格,共有105个数据。
[0095]
表2:
[0096]
bit\layer8765432110.000.120.251.004.7238.9573.9980.4720.00
ꢀ‑
0.080.535.4747.6778.0980.4730.00
ꢀ‑
0.010.510.6748.1978.2580.4740.000.11 0.170.382.8752.1780.4750.00 0.030.060.111.4255.3680.4760.000.040.050.100.200.5914.0480.4770.000.07 0.120.250.898.4580.4780.00 0.030.190.200.3120.2980.4790.000.070.10 0.112.4671.2180.47100.00
ꢀꢀ
0.050.150.7357.3180.47110.00
ꢀꢀꢀ
0.031.1255.2380.47120.00
ꢀꢀ
0.00 0.012.1880.47
130.00 0.06
ꢀꢀ
0.071.2880.47140.000.02
ꢀꢀꢀ
0.090.3380.47150.00 0.020.08 0.110.6760.86160.000.040.170.240.481.235.0869.17
[0097]
将筛选后得到的数据按照从小到大排序可以得到图5所示的散点图。
[0098]
最后,根据量化的要求来设置不同的阈值从而筛选出最适合每一层网络的量化精度。例如,当模型需要下降到6比特时,即需要找到排序后处于第32位的值,即0.06。将该值设为阈值,去表格中的每一列(每一层网络)找到不大于该阈值,且处于更下方位置(更低精度)的值。如第一层的8bit,第二层的6bit,第三层的6bit
…
。最终就可以根据每一层网络对参数精度的敏感性找到最适合的量化精度,尽可能轻量化网络的同时,保证网络的性能。
[0099]
如下表3为vgg16网络模型混合精度量化与统一精度量化的准确率对比。
[0100]
表3:
[0101][0102][0103]
当网络的参数精度下降到3比特以下时,两种量化方法的准确率都下降严重,无法形成对比,因此在表格未给予展示。从表格中可以看出当使用统一精度量化时,参数精度下降到4比特后,模型的准确率下降严重,而混合精度量化在4比特时模型效果依然保持良好。此外,在模型的计算量方面,由于vgg16网络模型中的卷积核大小会随着层数的加深而变大,因此网络中越靠后的层计算量更多。通过比较可以发现混合精度量化越往后的层采用的参数精度更小,所以混合精度整体的计算量也小于统一精度量化。
[0104]
如下表4为alxnet网络模型通过相同方法得到的准确率结果。
[0105]
表4:
[0106]
bit\layer1234567880.000.000.000.000.000.000.000.0070.13-0.08-0.160.110.080.090.060.2760.230.200.030.150.000.240.200.3950.810.310.310.290.450.040.152.0045.691.802.141.870.720.584.926.46313.129.366.635.135.415.1723.8816.25245.9339.4924.1025.4028.6341.7361.3739.32162.3662.0362.2962.7662.2961.7062.3662.36
[0107]
通过同样的筛选,排序,设置阈值后,可以得到如下表5所示的alxnet网络模型混
合精度量化与统一精度量化的准确率对比结果。
[0108]
表5:
[0109][0110][0111]
从表格中可以看出混合精度量化在alxnet网络模型中依然存在优势,但由于该网络在全精度下的准确率本就不非常理想,只有72.49%,导致混合精度量化的优势无法完全展现,因此该方法更加适合深层的网络。综上所述,本发明提出了的一种深度卷积神经网络的混合精度量化方法。该方法与传统的统一精度量化不同的地方在于,混合精度量化会根据每一层网络对参数精度的敏感性不同设置不同的精度,最大限度的在减小网络所占用的内存与加快推理速度的同时,保证网络的性能。实验结果也表明,混合精度量化算法在面对大型网络模型时,不论是计算量还是模型的性能都要优于统一精度量化。在未来,该算法还可以应用在目标检测领域中的yolo网络当中,通过混合精度量化降低其占用的内存,使其得以部署在一些小型设备中。
[0112]
如图2所示,本发明的另一实施例为:一种深度卷积神经网络的混合精度量化装置,包括:
[0113]
网络模型加载模块11,用于加载经过样本训练后的全精度深度卷积神经网络模型,获取其输入层、各个卷积层和各个全连接层用浮点数表示的权重与偏置的最大值与最小值;
[0114]
权重与偏置量化系数计算模块12,用于根据输入层、各个卷积层和各个全连接层用浮点数表示的权重和偏置的最大值、最小值以及需要量化的精度,计算出输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点;
[0115]
权重与偏置量化模块13,用于根据输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点,计算出量化后用实数表示的权重与偏置取代原有用浮点数表示的权重与偏置;
[0116]
权重与偏置取代模块14,用于利用全精度深度卷积神经网络模型的训练数据进行前向传播,得到每层网络的权重与偏置被取代后,全精度深度卷积神经网络模型的每层网络输出浮点数表示的最大值和最小值;
[0117]
网络输出量化系数计算模块15,用于根据每层网络输出用浮点数表示的最大值、最小值以及需要量化的精度,计算每层网络输出值对应的缩放系数和量化零点;
[0118]
网络输出取代模块16,用于根据每层网络输出值对应的缩放系数和量化零点,计算出量化后用实数表示的每层网络的输出值取代原有的每层网络输出的浮点数表示的输出值,完成全精度深度卷积神经网络模型量化框架的搭建;
[0119]
量化精度组合筛选模块17,用于对搭建好的深度卷积神经网络量化框架设置不同
的精度组合进行模型测试,从测试准确率结果中选出最佳的量化精度组合。
[0120]
如图4所示,量化精度组合筛选模块17具体包括,
[0121]
量化精度组合测试单元171,用于将搭建好的深度卷积神经网络量化框架中的所有网络层量化精度设置为8比特,记录下准确率结果,随后选择其中一层网络层的量化精度从8比特遍历到1比特,而其他网络层的量化精度保持8比特不变进行模型测试,记录量化后的深度卷积神经网络模型的各网络层的量化精度及对应的测试准确率结果,直到所有网络层的量化精度都从8比特到1比特遍历,记录下各网络层的量化精度及对应的测试准确率结果;
[0122]
排序单元172,用于对所有的测试准确率结果进行排序;
[0123]
最佳量化精度组合筛选单元173,用于根据模型需要压缩的程度,从排好序的测试准确率结果中选择一个作为阈值,并从每一层网络层的量化精度从8比特下降到1比特过程中所得到的8个测试准确率结果当中找到最接近该阈值所对应的比特位,以确定一组最佳的量化精度组合。
[0124]
在一具体实施例中,在排序单元中,对所有的测试准确率结果进行排序之前还包括,
[0125]
对测试准确率结果进行筛选,将采用较高量化精度但测试准确率结果却不如较低量化精度的测试准确率结果删除。
[0126]
在一具体实施例中,权重与偏置量化系数计算模块中,计算缩放系数采用的公式为:
[0127][0128]
计算量化零点采用的公式为:
[0129][0130]
其中,z代表量化后的零点;s代表量化的缩放系数;r
max
和r
min
表示浮点数的最大值和最小值;q
max
和q
min
表示量化精度的最大值和最小值;round为按指定的位数对数值进行四舍五入。
[0131]
在一具体实施例中,权重与偏置量化模块中,根据输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点,计算出量化后用实数表示的权重与偏置取代原有用浮点数表示的权重与偏置采用的公式为:
[0132]
r=sq-z
[0133][0134]
其中,r代表量化前的浮点数;q代表量化后的实数。
[0135]
在一具体实施例中,深度卷积神经网络的混合精度量化装置,还包括:
[0136]
模型训练模块,用于通过训练样本对全精度深度卷积神经网络模型进行模型训练,得到训练完成的全精度深度卷积神经网络模型。
[0137]
需要说明的是,所属领域的技术人员可以清楚地了解到,上述深度卷积神经网络的混合精度量化装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
[0138]
上述深度卷积神经网络的混合精度量化装置可以实现为一种计算机程序的形式,该计算机程序可以在如图6所示的计算机设备上运行。
[0139]
请参阅图6,图6是本技术实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
[0140]
参阅图6,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
[0141]
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种深度卷积神经网络的混合精度量化方法。
[0142]
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
[0143]
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种深度卷积神经网络的混合精度量化方法。
[0144]
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0145]
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如上所述的深度卷积神经网络的混合精度量化方法。
[0146]
应当理解,在本技术实施例中,处理器502可以是中央处理单元(central processing unit,cpu),该处理器502还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0147]
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
[0148]
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中计算机程序包括程序指令。该程序指令被处理器执行时使处理器执行如上所述的深度卷积神经网络的混合精度量化方法。
[0149]
所述存储介质可以是u盘、移动硬盘、只读存储器(read-onlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
[0150]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这
些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0151]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0152]
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
[0153]
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
[0154]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
技术特征:
1.一种深度卷积神经网络的混合精度量化方法,其特征在于,包括步骤:s11、加载经过样本训练后的全精度深度卷积神经网络模型,获取其输入层、各个卷积层和各个全连接层用浮点数表示的权重与偏置的最大值与最小值;s12、根据输入层、各个卷积层和各个全连接层用浮点数表示的权重和偏置的最大值、最小值以及需要量化的精度,计算出输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点;s13、根据输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点,计算出量化后用实数表示的权重与偏置取代原有用浮点数表示的权重与偏置;s14、利用全精度深度卷积神经网络模型的训练数据进行前向传播,得到每层网络的权重与偏置被取代后,全精度深度卷积神经网络模型的每层网络输出浮点数表示的最大值和最小值;s15、根据每层网络输出用浮点数表示的最大值、最小值以及需要量化的精度,计算每层网络输出值对应的缩放系数和量化零点;s16、根据每层网络输出值对应的缩放系数和量化零点,计算出量化后用实数表示的每层网络的输出值取代原有的每层网络用浮点数表示的输出值,完成全精度深度卷积神经网络模型量化框架的搭建;s17、对搭建好的深度卷积神经网络量化框架设置不同的精度组合进行模型测试,从测试准确率结果中选出最佳的量化精度组合。2.如权利要求1所述的深度卷积神经网络的混合精度量化方法,其特征在于,步骤s17具体包括,s171、将搭建好的深度卷积神经网络量化框架中的所有网络层量化精度设置为8比特,记录下准确率结果,随后选择其中一层网络层的量化精度从8比特遍历到1比特,而其他网络层的量化精度保持8比特不变进行模型测试,记录量化后的深度卷积神经网络模型的各网络层的量化精度及对应的测试准确率结果,直到所有网络层的量化精度都从8比特到1比特遍历,记录下各网络层的量化精度及对应的测试准确率结果;s172、对所有的测试准确率结果进行排序;s173、根据模型需要压缩的程度,从排好序的测试准确率结果中选择一个作为阈值,并从每一层网络层的量化精度从8比特下降到1比特过程中所得到的8个测试准确率结果当中找到最接近该阈值所对应的比特位,以确定一组最佳的量化精度组合。3.如权利要求2所述的深度卷积神经网络的混合精度量化方法,其特征在于,在步骤s172中,在对所有的测试准确率结果进行排序之前还包括,对测试准确率结果进行筛选,将采用较高量化精度但测试准确率结果却不如较低量化精度的测试准确率结果删除。4.如权利要求1所述的深度卷积神经网络的混合精度量化方法,其特征在于,步骤s12中,计算缩放系数采用的公式为:计算量化零点采用的公式为:
其中,z代表量化后的零点;s代表量化的缩放系数;r
max
和r
min
表示浮点数的最大值和最小值;q
max
和q
min
表示量化精度的最大值和最小值;round为按指定的位数对数值进行四舍五入。5.如权利要求4所述的深度卷积神经网络的混合精度量化方法,其特征在于,计算出输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点采用的公式为:r=s(q-z)其中,r代表量化前的浮点数;q代表量化后的实数。6.如权利要求1所述的深度卷积神经网络的混合精度量化方法,其特征在于,还包括步骤:s10、通过训练样本对全精度深度卷积神经网络模型进行模型训练,得到训练完成的全精度深度卷积神经网络模型。7.如权利要求6所述的深度卷积神经网络的混合精度量化方法,其特征在于,采用的全精度深度卷积神经网络模型为vgg16网络模型和alxnet网络模型,vgg16网络模型一共16层,包括13个卷积层和3个全连接层;alxnet网络模型一共8层,包括5个卷积层和3个全连接层。8.一种深度卷积神经网络的混合精度量化装置,其特征在于,包括:网络模型加载模块,用于加载经过样本训练后的全精度深度卷积神经网络模型,获取其输入层、各个卷积层和各个全连接层用浮点数表示的权重与偏置的最大值与最小值;权重与偏置量化系数计算模块,用于根据输入层、各个卷积层和各个全连接层用浮点数表示的权重和偏置的最大值、最小值以及需要量化的精度,计算出输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点;权重与偏置量化模块,用于根据输入层、各个卷积层和各个全连接层的权重与偏置对应的缩放系数和量化零点,计算出量化后用实数表示的权重与偏置取代原有用浮点数表示的权重与偏置;权重与偏置取代模块,用于利用全精度深度卷积神经网络模型的训练数据进行前向传播,得到每层网络的权重与偏置被取代后,全精度深度卷积神经网络模型的每层网络输出浮点数表示的最大值和最小值;网络输出量化系数计算模块,用于根据每层网络输出用浮点数表示的最大值、最小值以及需要量化的精度,计算每层网络输出值对应的缩放系数和量化零点;网络输出取代模块,用于根据每层网络输出值对应的缩放系数和量化零点,计算出量化后用实数表示的每层网络的输出值取代原有的每层网络输出的浮点数表示的输出值,完成全精度深度卷积神经网络模型量化框架的搭建;量化精度组合筛选模块,用于对搭建好的深度卷积神经网络量化框架设置不同的精度组合进行模型测试,从测试准确率结果中选出最佳的量化精度组合。
9.一种计算机设备,其特征在于:所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的深度卷积神经网络的混合精度量化方法。10.一种存储介质,其特征在于:所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如权利要求1至7中任一项所述的深度卷积神经网络的混合精度量化方法。
技术总结
本发明提供了一种深度卷积神经网络的混合精度量化方法及相关设备,方法包括,对经过样本训练后的全精度深度卷积神经网络模型输入层、各个卷积层和各个全连接层浮点数表示的权重与偏置进行缩放为实数表示的权重与偏置,并对应地对全精度深度卷积神经网络模型各层的网络输出值进行量化,对量化后的深度卷积神经网络模型的不同精度组合进行模型测试,从测试准确率结果中选出最佳的量化精度组合。本发明的有益效果在于:最大限度的在减小网络所占用的内存与加快推理速度的同时,保证网络的性能。能。能。
技术研发人员:孙维泽 熊旭伦 黄磊 陈少武 陈贵童
受保护的技术使用者:深圳大学
技术研发日:2023.07.14
技术公布日:2023/9/9
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/