一种卷积神经网络模型低比特推理优化的方法与流程

文档序号:27832030发布日期:2021-12-07 22:31阅读:228来源:国知局
一种卷积神经网络模型低比特推理优化的方法与流程

1.本发明涉及神经网络加速技术领域,特别涉及一种卷积神经网络模型低比特推理优化的方法。


背景技术:

2.近年来,随着科技的飞速发展,大数据时代也已经到来。随着计算机技术的快速发展,基于卷积神经网络的算法成功应用于各个识别领域。深度学习以深度神经网络(dnn)作为模型,在许多人工智能的关键领域取得了十分显著的成果,如图像识别、增强学习、语义分析等。卷积神经网络(cnn)作为一种典型的dnn结构,能有效提取出图像的隐层特征,并对图像进行准确分类,在近几年的图像识别和检测领域得到了广泛的应用。
3.特别地,基于全精度模型微调低比特模型日益成熟:其技术方案是先用数据集训练一版全精度模型达到目标精度,然后基于全精度模型微调训练一版低比特模型。
4.然而,现有技术中在训练全精度模型多采用的时relu函数,由于全精度数表示的实数范围很广,可以满足训练过程中需要的数值范围,可是在训练低比特时,由于位宽的限制,所有其表示范围是有有限的,导致训练过程中模型无法有效的收敛,最终模型的精度并不理想。
5.此外,现有技术中的常用术语如下:
6.卷积神经网络(convolutional neural networks,cnn):是一类包含卷积计算且具有深度结构的前馈神经网络。
7.量化:量化指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。
8.低比特:将数据量化为位宽为8bit,4bit或者2bit的数据。
9.激活函数(relu函数),神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数),如图1所示,relu=max(0,x),relu函数及其导数的图像。
10.bn(batch normalization)批归一化(bn)就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。其可以抑制梯度爆炸/消失并加快训练速度。通过归一化操作使网络的每层特征的分布尽可能的稳定。


技术实现要素:

11.为了解决上述问题,本发明的目的在于:克服上述现有技术中存在的缺陷,提出一种提高模型精度的方法,解决现有低比特模型在训练过程中精度损失严重的问题。
12.本方法在训练低比特模型之前就考虑到了位宽限制,所以在训练全精度模型的时候会根据量化模型的位宽选择一个合适的激活函数,使其在微调低比特模型阶段,模型可
以有效的收敛从而提高模型的精度。
13.具体地,本发明提供一种卷积神经网络模型低比特推理优化的方法,所述方法包括以下步骤:
14.s1,卷积神经网络训练:用全精度算法训练模型,得到一个用于目标分类的网络,即获得模型推理过程中的相关参数;
15.s2,feature map值域的确定:
16.当模型的feature map之后需要量化到8bit,量化后的模型相当于有28=256个数表示feature map,所以选择relu6作为激活函数;
17.如果需要量化到4bit,量化后的模型相当于有24=16个数表示featuremap,此时在训练全精度模型的时候应该将feature map的范围限制在0到4即0<x<4;
18.如果需要量化到2bit,量化后的模型相当于只有22=4个数来表示feature map,此时应该将feature map的范围限制在0到3即0<x<3。
19.所述方法s1用全精度算法训练模型进一步包括以下步骤:
20.s1.1,确定训练数据:
21.训练模型的数据集是imagenet1000,该数据集是imagenet数据集的一个子集,有训练集,验证集,测试集和1000个类别;
22.s1.2,设立模型:
23.本步骤中训练采用的基础神经网络模型是mobilenetv1,该网络是一种基于深度可分离卷积的模型;
24.s1.3,选择激活函数:
25.所述mobilenetv1模型,在每一层卷积后面会进行bn操作然后是relu操作;
26.s1.4,训练网络:
27.对于网络的训练基本步骤是:先采用adam优化器训练60个epoch,然后再用sgd优化器直至训练结束;
28.s1.5,测试网络效果:
29.利用测试集测试网络结果。
30.所述方法s1.1中有1.2million的训练集,5万验证集,15万测试集。
31.所述方法s1.3中还可以在训练时将relu激活函数换为relux,relux公式如下:
[0032][0033]
其中,x值设为3.0。
[0034]
所述的relu6激活函数为:
[0035]
relu6(x)=min(max(x,0),6)∈[0,6];
[0036][0037]
所述方法s2还包括:
[0038]
数据量化:对于待量化的数据按照如下公式进行量化,得到低比特的数据;
[0039][0040]
变量说明:w
f
为全精度数据是一个数组,w
q
为模拟量化后的数据,max
w
全精度数据w
f
中最大值,min
w
全精度数据w
f
中最小值,b为量化后的位宽。
[0041]
由此,本技术的优势在于:
[0042]
(1)由于在训练全精度模型的时候就考虑到了量化后模型位宽的影响,所以针对不同的位宽选择合适feature map值域这样使得训练后的全精度模型更适合后期的量化;
[0043]
(2)针对不同的位宽选择不同的feature map值域,使得微调后的低比特模型的位宽利用率更高,提高了最终量化后模型的精度。
附图说明
[0044]
此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,并不构成对本发明的限定。
[0045]
图1是本发明方法的中relu函数及其导函数对应的图像。
[0046]
图2是本发明方法的中relu6激活函数和导函数对应的图像。
[0047]
图3是本发明方法的步骤s1.3中每一层卷积后面都会加上bn和relu操作的示意图。
[0048]
图4是本发明方法的步骤s1.3中将relu激活函数换为relux的示意图。
[0049]
图5是本发明方法的流程示意图。
具体实施方式
[0050]
为了能够更清楚地理解本发明的技术内容及优点,现结合附图对本发明进行进一步的详细说明。
[0051]
如图5所示,本发明涉及一种卷积神经网络模型低比特推理优化的方法,所述方法包括以下步骤:
[0052]
s1,卷积神经网络训练:用全精度算法训练模型,得到一个用于目标分类的网络,即获得模型推理过程中的相关参数;
[0053]
s2,feature map值域的确定:
[0054]
当模型的feature map之后需要量化到8bit,量化后的模型相当于有28=256个数表示feature map,所以选择relu6作为激活函数;
[0055]
如果需要量化到4bit,量化后的模型相当于有24=16个数表示featuremap,此时在训练全精度模型的时候应该将feature map的范围限制在0到4即0<x<4;
[0056]
如果需要量化到2bit,量化后的模型相当于只有22=4个数来表示feature map,此时应该将feature map的范围限制在0到3即0<x<3。
[0057]
所述方法s1用全精度算法训练模型进一步包括以下步骤:
[0058]
s1.1,确定训练数据:
[0059]
训练模型的数据集是imagenet1000,该数据集是imagenet数据集的一个子集,有大约1.2million的训练集,5万验证集,15万测试集和1000个类别;
[0060]
s1.2,设立模型:
[0061]
本步骤中训练采用的基础神经网络模型是mobilenetv1,该网络是一种基于深度可分离卷积的模型;
[0062]
s1.3,选择激活函数:
[0063]
所述mobilenetv1模型,在每一层卷积后面会进行bn操作然后是relu操作,如图3所示;
[0064]
s1.4,训练网络:
[0065]
对于网络的训练基本步骤是:先采用adam优化器训练60个epoch,然后再用sgd优化器直至训练结束;
[0066]
s1.5,测试网络效果:
[0067]
利用测试集测试网络结果。
[0068]
所述方法s1.3中还可以在训练时将relu激活函数换为relux,如图4所示,relux公式如下:
[0069][0070]
其中,x值设为3.0。
[0071]
如图2所示,所述的relu6激活函数为:
[0072]
relu6(x)=min(max(x,0),6)∈[0,6];
[0073][0074]
所述方法s2还包括:
[0075]
数据量化:对于待量化的数据按照如下公式进行量化,得到低比特的数据;
[0076][0077]
变量说明:w
f
为全精度数据是一个数组,w
q
为模拟量化后的数据,max
w
全精度数据w
f
中最大值,min
w
全精度数据w
f
中最小值,b为量化后的位宽。
[0078]
换一种解释方式来说,本技术提出了一种提高低比特模型精度的训练方法,具体技术方案是这样实现的:
[0079]
一种卷积神经网络模型低比特推理优化的方法,包括以下内容:
[0080]
1)卷积神经网络训练:用全精度算法训练模型,得到一个可以用于目标分类的网络,即获得模型推理过程中的相关参数。在训练过程中,需要考虑到该模型之后需要量化到几比特即权重和feature map量化的位宽,选择合适的激活函数。
[0081]
2)feature map值域的确定:当模型的feature map之后需要量化到8bit,量化后的模型相当于有28=256个数表示feature map,所以选择relu6作为激活函数;如果需要量化到4bit,量化后的模型相当于有24=16个数表示feature map,此时在训练全精度模型的时候应该将feature map的范围限制在0到4即0<x<4;如果需要量化到2bit,量化后的模型相当于只有22=4个数来表示feature map,此时应该将feature map的范围限制在0到3
即0<x<3。如果将该值限定太小的话,在训练全精度模型的时候可能就无法有效的收敛,并且训练的时间要大大增加,并且对于训练低比特时并没有太多的帮助。
[0082]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1