一种优化神经网络模型激活的量化方法技术

技术编号:33997999 阅读:10 留言:0更新日期:2022-07-02 11:23
本发明专利技术提出一种优化神经网络模型激活的量化方法,旨在克服现有技术中存在的缺陷,解决现有低比特(例如,2bit)模型在训练过程中精度损失严重和难以收敛的问题。本申请是基于全精度模型微调低比特模型:先用数据集训练一版全精度模型达到目标精度,然后基于全精度模型微调训练低比特模型。所述方法基于全精度模型先训练一个4bit模型,再基于4bit模型训练2bit模型,且在训练4bit和2bit的低bit模型时feature map的最大值都采用滑动平均的方式来统计并且每次训练时都重新更新而不依赖上一个模型的统计结果。个模型的统计结果。个模型的统计结果。

【技术实现步骤摘要】
一种优化神经网络模型激活的量化方法


[0001]本专利技术涉及卷积神经网络加速
,特别涉及一种优化神经网络模型激活的量化方法。

技术介绍

[0002]近年来,随着科技的飞速发展,大数据时代已经到来。深度学习以深度神经网络(DNN)作为模型,在许多人工智能的关键领域取得了十分显著的成果,如图像识别、增强学习、语义分析等。卷积神经网络(CNN)作为一种典型的DNN结构,能有效提取出图像的隐层特征,并对图像进行准确分类,在近几年的图像识别和检测领域得到了广泛的应用。
[0003]然而,现有技术中在训练全精度模型多采用的时Relu函数,由于全精度数表示的实数范围很广,可以满足训练过程中需要的数值范围,可是在训练低比特时,由于位宽的限制,所以其表示范围是有有限的,导致训练过程中模型无法有效的收敛,最终模型的精度并不理想。
[0004]现有技术中常用的技术术语包括:
[0005]卷积神经网络(Convolutional Neural Networks,CNN):是一类包含卷积计算且具有深度结构的前馈神经网络。
[0006]量化:量化指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。
[0007]低比特:将数据量化为位宽为8bit,4bit或者2bit的数据。
[0008]BN(Batch Normalization,批量归一化):批量归一化操作可以看作是一个特殊的神经网络层,该层是加在每一层非线性激活函数之前。
[0009]Relu(Rectified Linear Unit,线性整流函数)操作:也称修正线性单元,是一种人工神经网络中常用的激活函数,通常指代以斜坡函数及其变种为代表的非线性函数。

技术实现思路

[0010]为了解决上述问题,本方法旨在克服上述现有技术中存在的缺陷,解决现有低比特(例如,2bit)模型在训练过程中精度损失严重和难以收敛的问题。
[0011]本申请是基于全精度模型微调低比特模型:先用数据集训练一版全精度模型达到目标精度,然后基于全精度模型微调训练低比特模型。
[0012]具体地,本专利技术提出一种优化神经网络模型激活的量化方法,所述方法基于全精度模型先训练一个4bit模型,再基于4bit模型训练2bit模型,且在训练4bit和2bit的低bit模型时feature map的最大值都采用滑动平均的方式来统计并且每次训练时都重新更新而不依赖上一个模型的统计结果。
[0013]所述方法包括以下步骤:
[0014]S1,基于数据集先训练一版全精度模型达到目标精度;
[0015]S2,基于全精度模型训练权重和激活量化到4bit的模型,并且在训练的同时统计
feature map的最大值;
[0016]S3,再基于步骤S2训练的4bit模型训练权重和激活量化到2bit的模型,并且重新统计feature map的最大值。
[0017]所述步骤S1进一步包括:
[0018]S1.1,确定训练数据:
[0019]训练模型的数据集是ImageNet1000,该数据集是ImageNet数据集的一个子集,有1.2million的训练集,5万验证集,15万测试集,1000个类别;
[0020]S1.2,确定训练模型:
[0021]训练采用的基础神经网络模型是MobileNetV1,该网络是一种基于深度可分离卷积的模型;
[0022]S1.3,选择激活函数:
[0023]MobileNetV1模型,在每一层卷积后面都会加上批量归一化BN和激活函数Relu操作;
[0024]S1.4,训练网络:
[0025]对于网络的训练基本步骤是:先采用adam优化器训练60个epoch,然后再用SGD优化器直至训练结束;
[0026]S1.5,测试网络效果:
[0027]利用测试集测试网络结果。
[0028]所述步骤S1.3中,由于训练的模型需要量化到低比特,且之后需要将feature map量化到2bit,所以所述激活函数Relu操作还可以在训练时将Relu激活函数换为ReluX,如公式1所示:
[0029][0030]所述步骤S2进一步包括:
[0031]S2.1,数据量化:对于待量化的数据按公式2进行量化,得到低比特的数据,训练时将权重和激活量化到4bit:
[0032][0033]变量说明:W
f
为全精度数据是一个数组,W
q
为模拟量化后的数据,max
w
全精度数据W
f
中最大值,min
w
全精度数据W
f
中最小值,b为量化后的位宽;
[0034]S2.2,在训练模型的同时,获取feature map的最大值再通过滑动平均的方法统计最大值,用maxValue表示;
[0035]S2.3,对每一层激活函数获得的参数maxValue再通过滑动平均的方法来更新,如公式3所示:
[0036]v
t
=β
·
v
t
‑1+(1

β)
·

t
)
ꢀꢀ
公式3
[0037]变量说明:v
t
为变量v在t时刻的值,β为加权系数,θ
t
为变量v在t时刻的值,v
t
‑1为变
量v在t

1时刻的值。
[0038]所述步骤S2.2通过以下步骤处理得到最大值:
[0039]1:将ReluX(v)赋值给参数v:v=ReluX(v);
[0040]2:getChannelsNum(v)获取feature map的通道数并赋值给参数channels:channels=getChannelsNum(v);
[0041]3:getBatchNum(v)获取feature map的batch的大小并赋值给参数batchNum:batchNum=getBatchNum(v);
[0042]4:初始化参数maxValue:maxValue=0.0;
[0043]5:tag从0到batchNum值时,进行:for tag=0to batchNum do;
[0044]6:vValueTag=v[tag];
[0045]7:getChannelMax(v)获取feature map每个通道上的最大值并赋值给参数perChannelMax:perChannelMax=getChannelMax(vValueTag)
[0046]8:reduceSum(perChannelMax)求变量perChannelMax的和后再除以参数channels值,并与参数maxValue值相加再赋值给参数maxValue:maxValue+=re本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种优化神经网络模型激活的量化方法,其特征在于,所述方法基于全精度模型先训练一个4bit模型,再基于4bit模型训练2bit模型,且在训练4bit和2bit的低bit模型时feature map的最大值都采用滑动平均的方式来统计并且每次训练时都重新更新而不依赖上一个模型的统计结果。2.根据权利要求1所述的一种优化神经网络模型激活的量化方法,其特征在于,所述方法包括以下步骤:S1,基于数据集先训练一版全精度模型达到目标精度;S2,基于全精度模型训练权重和激活量化到4bit的模型,并且在训练的同时统计feature map的最大值;S3,再基于步骤S2训练的4bit模型训练权重和激活量化到2bit的模型,并且重新统计feature map的最大值。3.根据权利要求1所述的一种优化神经网络模型激活的量化方法,其特征在于,所述步骤S1进一步包括:S1.1,确定训练数据:训练模型的数据集是ImageNet1000,该数据集是ImageNet数据集的一个子集,有1.2million的训练集,5万验证集,15万测试集,1000个类别;S1.2,确定训练模型:训练采用的基础神经网络模型是MobileNetV1,该网络是一种基于深度可分离卷积的模型;S1.3,选择激活函数:MobileNetV1模型,在每一层卷积后面都会加上批量归一化BN和激活函数Relu操作;S1.4,训练网络:对于网络的训练基本步骤是:先采用adam优化器训练60个epoch,然后再用SGD优化器直至训练结束;S1.5,测试网络效果:利用测试集测试网络结果。4.根据权利要求3所述的一种优化神经网络模型激活的量化方法,其特征在于,所述步骤S1.3中,由于训练的模型需要量化到低比特,且之后需要将feature map量化到2bit,所以所述激活函数Relu操作还可以在训练时将Relu激活函数换为ReluX,如公式1所示:5.根据权利要求2所述的一种优化神经网络模型激活的量化方法,其特征在于,所述步骤S2进一步包括:S2.1,数据量化:对于待量化的数据按公式2进行量化,得到低比特的数据,训练时将权重和激活量化到4bit:
变量说明:W
f
为全精度数据是一个数组,W
q
为模拟量化后的数据,max
w
全精度数据W
f
中最大值,min
w
全精度数据W
f
中最小值,b为量化后的位宽;S2.2,在训练模型的同时,获取feature map的最大值再通过滑动平均的方法统计最大值,用maxValue表示;S2.3,对每一层激活函数获得的参数maxValue再通过滑动平均的方法来更新,如公式3所示:v
t
=β
·
v
t
‑1+(1

β)
·

t
)
ꢀꢀꢀ
公式3变量说明:v
t
为变量v在t时刻的值,β为加权系数,θ
t
为变量v在t时刻的值,v
t
‑1为变量v在t

1时刻的值。6.根据权利要求5所述的一种优化神经网络模型激活的量化方法,其特征在于,所述步骤S2.2通过以下步骤处理得到最大值:1:将ReluX(v)赋值给参数v:v=ReluX(v);2:getChannelsNum(v)...

【专利技术属性】
技术研发人员:张东
申请(专利权)人:合肥君正科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1