CN111612147A - 深度卷积网络的量化方法 - Google Patents
深度卷积网络的量化方法 Download PDFInfo
- Publication number
- CN111612147A CN111612147A CN202010618614.1A CN202010618614A CN111612147A CN 111612147 A CN111612147 A CN 111612147A CN 202010618614 A CN202010618614 A CN 202010618614A CN 111612147 A CN111612147 A CN 111612147A
- Authority
- CN
- China
- Prior art keywords
- quantization
- pseudo
- convolution
- convolutional network
- weight
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本发明一种深度卷积网络的量化方法,包括:根据训练任务设计合适的深度卷积网络量化结构,同时创建浮点型的伪量化正向传播计算图和反向传播计算图;首先进行第一阶段伪量化训练,得到量化参数和伪量化浮点模型;修改正反向传播计算图,对量化参数和伪量化浮点模型进行第二阶段微调量化训练,得到训练后的量化参数和伪量化浮点模型;根据伪量化正向传播计算图得到深度卷积网络的量化公式;利用深度卷积网络的量化公式将训练后的伪量化浮点模型进行量化,并采用量化后得到的定点模型数据进行全整型前向推理运算。本发明提供的深度卷积网络的量化方法提高了深度卷积网络的运算效率并且便于硬件实现。
Description
技术领域
本发明涉及深度学习技术领域,尤其是涉及一种深度卷积网络的量化方法。
背景技术
近年来,深度神经网络在边缘计算中的应用日益增加,由于边缘设备通常算力较低、内存受限,并且对功耗要求较高,而将网络计算转移到云端又需要稳定的网络连接和高频的数据交互,因此迫切需要能够将模型变得更小、更快、更节能的神经网络加速与压缩技术。常用的深度神经网络的压缩技术有高效网络结构设计、网络的剪枝、蒸馏和量化,其中量化是边缘设备的网络模型工程化过程中的必要过程。
深度卷积网络在图像分类、目标检测和语音识别等任务中有着显著的性能优势,对卷积权重进行量化能够大幅减小网络的存储代价,对网络中间特征图进行量化能够加速卷积运算,还能减少网络前向推理过程的存取带宽。量化一般可以分为训练后量化和训练时量化两种形式。训练后量化即将训练后的模型中的权重从浮点类型量化到定点类型数据,并以定点的形式保存,由于不需要重新训练使得这种量化方式在抗噪能力强的大模型上的效果很好,但在冗余度小的模型上表现就比较差。训练中量化是在训练的过程中就引入量化参数,因此能够收获更高的压缩率和计算效率。当前的量化方法侧重于提高量化网络模型的准确率和压缩率,并未着重研究网络模型前向推理的计算效率,因此一种高精度且前向推理更加高效的深度卷积网络量化方法值得深入研究。
发明内容
本发明的目的在于提供一种深度卷积网络的量化方法,可以提高网络模型前向推理的计算效率且便于硬件实现,以及提高深度卷积网络量化的精度。
为了达到上述目的,本发明提供了一种深度卷积网络的量化方法,包括:
根据训练任务设计合适的深度卷积网络量化结构,同时创建浮点型的伪量化的正向传播计算图和反向传播计算图;
进行第一阶段伪量化训练,得到量化参数和伪量化浮点模型;
修改正向传播计算图和反向传播计算图,对量化参数和伪量化浮点模型进行第二阶段微调量化训练,得到训练后的量化参数和伪量化浮点模型;
根据伪量化正向传播计算图得到深度卷积网络的量化公式;
利用所述深度卷积网络的量化公式将训练后的伪量化浮点模型进行量化,并采用量化后得到的定点模型数据进行全整型前向推理运算。
可选的,在所述的深度卷积网络的量化方法中,修改正向传播计算图和反向传播计算图的方法包括:
确定卷积权重的位宽、输入特征图的位宽和输出特征图的位宽;
在深度卷积网络结构的每层卷积模块中嵌入伪量化节点。
可选的,在所述的深度卷积网络的量化方法中,所述卷积权重的位宽、所述输入特征图的位宽和所述输出特征图的位宽均设定为8位。
可选的,在所述的深度卷积网络的量化方法中,在确定卷积权重、输入特征图的位宽和输出特征图的位宽之后,在深度卷积网络结构的每层卷积模块中嵌入伪量化节点之前,所述修改训练过程的正向传播计算图的方法还包括:对深度卷积网络中的归一化算子进行融合处理。
可选的,在所述的深度卷积网络的量化方法中,对深度卷积网络中的归一化算子进行融合处理的方法包括:
将所述卷积权重和所述偏置分别与深度卷积网络中的归一化算子进行融合处理,以得到融合后的卷积权重和融合后的偏置。
可选的,在所述的深度卷积网络的量化方法中,将所述卷积权重和所述偏置分别与深度卷积网络中的归一化算子进行融合处理的融合公式如下:
其中:FW为融合前的卷积权重;FW_merge为融合后的卷积权重;FB为融合前的偏置;FB_merge为融合后偏置;γ为归一化算子的权重参数;σ为归一化算子的方差参数;μ为归一化算子的通道均值参数;β为归一化算子的偏置参数;ε为一个常数。
可选的,在所述的深度卷积网络的量化方法中,在深度卷积网络结构的每层卷积模块中嵌入伪量化节点的地方分别是:对称量化的所述卷积权重,非对称量化的所述输入特征图和对称量化的所述偏置。
可选的,在所述的深度卷积网络的量化方法中,在深度卷积网络结构的每层卷积模块中嵌入伪量化节点之后,所述修改训练过程的正向传播计算图的方法还包括:如果深度卷积网络结构中含有concat算子,则将所有卷积模块的激活函数修改为ReLU6。
可选的,在所述的深度卷积网络的量化方法中,进行第一阶段伪量化训练,得到量化参数和伪量化浮点模型的方法包括:
将伪量化节点中的浮点变量转换为定点变量;
将定点变量转换为离散的浮点变量;
求得输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数。
可选的,在所述的深度卷积网络的量化方法中,将伪量化节点中的浮点变量转换为定点变量的方法包括:
其中:S为量化步长,Q是伪量化后的定点变量,F是伪量化前连续的浮点变量,QP和QN分别为Q的上限值和下限值,Z是量化零点。
可选的,在所述的深度卷积网络的量化方法中,将定点变量转化为离散的浮点变量的方法包括:
可选的,在所述的深度卷积网络的量化方法中,求得输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数的方法包括:
求得浮点卷积模块的运算过程;
从浮点卷积模块的运算过程推导出输出特征图的定点类型数据的计算公式;
从输出特征图的定点类型数据的计算公式计算出输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数的相关性。
可选的,在所述的深度卷积网络的量化方法中,浮点卷积模块的运算过程如下:
其中:为卷积运算的输出特征图;为卷积运算的输入特征;为卷积运算的卷积权重;为偏置的伪量化浮点估计值;SO为输出特征图的缩放系数;QO为输出特征图的定点类型数据;ZO为输出特征图的量化零点;为卷积运算的输入特征;Si为输入特征图的缩放系数;Qi为输入特征的定点类型数据;Zi为ZO为输入特征图的量化零点;为卷积运算的权重;Sw为权重的缩放系数;Qw为权重的定点类型数据;Zw为权重的量化零点;为卷积运算的偏置;QB为偏置的定点类型数据;ZB为偏置的量化零点;SB为偏置的缩放系数。
可选的,在所述的深度卷积网络的量化方法中,所述输出特征图的定点类型数据的计算公式如下:
其中,QO为输出特征图的定点类型数据;为输出特征图的定点类型数据的下限值;为输出特征图的定点类型数据的上限值;Qi为输入特征的定点类型数据;Qw为权重的定点类型数据;Zw为权重的量化零点;QB'为偏置项;M为一个参数;clip是数值截断函数。
可选的,在所述的深度卷积网络的量化方法中,所述偏置项和所述参数通过如下公式计算:
其中:QB'为偏置项;M为一个参数;QB为偏置的定点类型数据;ZB为偏置的量化零点;Zi为ZO为输入特征图的量化零点;Qw为权重的定点类型数据;Zw为权重的量化零点;ZO为输出特征图的量化零点;Si为输入特征图的缩放系数;SO为输出特征图的缩放系数;Sw为权重的缩放系数。
可选的,在所述的深度卷积网络的量化方法中,输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数的相关性为:
其中:M为一个参数;Si为输入特征图的缩放系数;SO为输出特征图的缩放系数;Sw为权重的缩放系数。
可选的,在所述的深度卷积网络的量化方法中,修改正反向传播计算图,对量化参数和伪量化浮点模型进行第二阶段微调量化训练,得到训练后的量化参数和伪量化浮点模型的方法包括:
S31:获得第一阶段统计得到的输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数;
S32:根据输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数求得新的卷积权重的量化步长;
S33:再次修改正向传播计算图,固定正向传播计算图中每一层的输入特征图的缩放系数、输出特征图的缩放系数和新的卷积权重的量化步长;
S34:读入第一阶段训练的所有层浮点型卷积权重模型,以新的卷积权重的量化步长重新训练;
S35:判断训练结果是否达到了第一阶段伪量化的精度;
S36:如果达到了第一阶段伪量化的精度,则训练结束,保存浮点模型和量化参数;如果没有达到了第一阶段伪量化的精度,则将卷积权重的量化位宽加1,再重复一次步骤S33和步骤S34,保存重新训练后的浮点模型和量化参数。
可选的,在所述的深度卷积网络的量化方法中,根据输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数求得新的卷积权重的量化步长的方法包括:
其中:Sw'为新的卷积权重量化步长;Si为输入特征图的缩放系数;SO为输出特征图的缩放系数;Sw为权重的缩放系数。
可选的,在所述的深度卷积网络的量化方法中,第一阶段伪量化的精度为一个预设值。
可选的,在所述的深度卷积网络的量化方法中,根据伪量化正向传播计算图得到深度卷积网络的量化公式为:
QO=clip([∑Qi·Qw'+QB']>>n,QN_O,QP_O);
其中:QO是每层卷积定点类型数据输出特征图;QW'是每层卷积定点类型数据的卷积权重;QB'是每层卷积顶点类型的偏置项;n是非负整数类型的移位值;clip是数值截断函数。
可选的,在所述的深度卷积网络的量化方法中,利用所述深度卷积网络的量化公式将训练后的伪量化浮点模型进行量化,并采用量化后得到的定点模型数据进行全整型前向推理运算的方法包括:
通过所述深度卷积网络的量化公式将保存的浮点模型和量化参数或者保存的重新训练后的浮点模型和量化参数进行量化为定点模型参数并保存;
建立全整型前向推理计算图,并加入首尾浮点型数据与整型数据的转换运算;
读入定点模型参数,对输入的定点模型参数进行全整型前向推理运算。
在本发明提供的深度卷积网络的量化方法中,深度卷积网络的量化方法包括:根据训练任务设计合适的深度卷积网络量化结构,同时创建浮点型的伪量化的正向传播计算图和反向传播计算图;进行第一阶段伪量化训练,得到量化参数和伪量化浮点模型;修改正反向传播计算图,对量化参数和伪量化浮点模型进行第二阶段微调量化训练,得到训练后的量化参数和伪量化浮点模型;根据伪量化正向传播计算图得到深度卷积网络的量化公式;利用所述深度卷积网络的量化公式将训练后的伪量化浮点模型进行量化,并采用量化后得到的定点模型数据进行全整型前向推理运算。最终得到的深度卷积网络的量化公式只包含一次卷积,加法,移位和截断运算,提高了深度卷积网络量化的运算效率,便于硬件实现,并且,采用第一阶段伪量化训练和第二阶段伪量化训练可以提高深度卷积网络模型的精度。
附图说明
图1是本发明实施例的一种深度卷积网络的量化方法的流程图。
图2是本发明实施例的一种深度卷积网络的量化装置;
图中:100-伪量化训练模块、200-参数转换模块、300-量化卷积模块、310-卷积模块、320-加偏置模块、330-移位截断模块。
具体实施方式
下面将结合示意图对本发明的具体实施方式进行更详细的描述。根据下列描述,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
在下文中,术语“第一”“第二”等用于在类似要素之间进行区分,且未必是用于描述特定次序或时间顺序。要理解,在适当情况下,如此使用的这些术语可替换。类似的,如果本文所述的方法包括一系列步骤,且本文所呈现的这些步骤的顺序并非必须是可执行这些步骤的唯一顺序,且一些所述的步骤可被省略和/或一些本文未描述的其他步骤可被添加到该方法。
请参照图1,本发明提供了一种深度卷积网络的量化方法,包括:
S1:根据训练任务设计合适的深度卷积网络量化结构,同时创建浮点型的伪量化的正向传播计算图和反向传播计算图;
S2:进行第一阶段伪量化训练,得到量化参数和伪量化浮点模型;
S3:修改正反向传播计算图,对量化参数和伪量化浮点模型进行第二阶段微调量化训练,得到训练后的量化参数和伪量化浮点模型;
S4:根据伪量化正向传播计算图得到深度卷积网络的量化公式;
S5:利用所述深度卷积网络的量化公式将训练后的伪量化浮点模型进行量化,并采用量化后得到的定点模型数据进行全整型前向推理运算。
其中:本发明实施例提供的一种深度卷积网络的量化方法,是在训练中量化的形式。具体的,对参与网络前向推理运算的卷积权重、偏置、输入特征图和输出特征图都进行了量化,形成了一个高效的全整型前向推理和训练框架,前向推理框架能够使得模型可以在边缘设备上高效运行,训练框架能够使得量化网络模型的准确度达标。步骤S1中的根据训练任务设计合适的深度卷积网络量化结构,同时创建浮点型的伪量化的正向传播计算图和反向传播计算图,具体的,现实中可能会遇到多种需要识别的东西,每一个实施例的对识别的要求不一样,所以需要根据实际情况创建浮点型的伪量化的正向传播计算图和反向传播计算图。
本发明涉及的一种全整型前向推理框架,由于在训练框架中的正向传播部分采用了伪量化处理,在深度卷积网络中通常是多个卷积模块首尾相连组成的,此时当前卷积模块的量化运算和前一个卷积模块的反量化运算可以相互抵消,因此浮点型正向传播过程中的伪量化浮点运算便可以由量化卷积模块串联而成的全整型运算代替,然后在整个深度卷积网络的首尾分别加入量化和反量化处理,便可以得到与训练框架中的正向传播几乎相同的计算结果。全整型前向推理运算省去了网络模型中间整型与浮点型的转换过程,显著提高了网络计算效率。
进一步的,步骤S3中,修改修改正向传播计算图和反向传播计算图的方法包括:
确定卷积权重的位宽、输入特征图的位宽和输出特征图的位宽;
在深度卷积网络结构的每层卷积模块中嵌入伪量化节点。
本发明实施例中,卷积权重的位宽、输入特征图的位宽和输出特征图的位宽均设定为8位。根据应用需求确定需要量化到的卷积权重的位宽、输入特征图的位宽和输出特征图的位宽,为了保证网络精度,网络首尾层最好将卷积权重的位宽、输入特征图的位宽和输出特征图的位宽均设置为8。
进一步的,在确定卷积权重、输入特征图的位宽和输出特征图的位宽之后,在深度卷积网络结构的每层卷积模块中嵌入伪量化节点之前,所述修改训练过程的正向传播计算图的方法还包括:对深度卷积网络中的归一化算子进行融合处理。具体的,如果卷积中包含有归一化算子,则需要对归一化算子进行融合处理,归一化处理后的卷积权重、偏置再进行第一阶段伪量化训练和第二阶段伪量化训练以及后续的量化计算。如果深度卷积网络中没有归一化算子,则不需要进行归一化算子的融合处理。
优选的,对深度卷积网络中的归一化算子进行融合处理的方法包括:
将卷积权重和偏置分别与深度卷积网络中的归一化算子进行融合处理,以得到融合后的卷积权重和融合后的偏置。
具体的,将卷积权重和偏置分别与深度卷积网络中的归一化算子进行融合处理的融合公式如下:
其中:FW为融合前的卷积权重;FW_merge为融合后的卷积权重;FB为融合前的偏置;FB_merge为融合后偏置;γ为归一化算子的权重参数;σ为归一化算子的方差参数;μ为归一化算子的通道均值参数;β为归一化算子的偏置参数;ε为一个常数。反向传播计算过程中归一化算子保持独立的参数更新,但正向传播计算中将归一化算子的所有参数融合到卷积权重FW和卷积偏置FB中,融合后再与标准的卷积运算的处理方法一样,ε为一个极小的常数,可以为1e-5。
进一步的,在深度卷积网络结构的每层卷积模块中嵌入伪量化节点的地方分别是:对称量化的卷积权重,非对称量化的输入特征图和对称量化的偏置。本发明在训练过程添加了三处伪量化节点,分别是对称量化的卷积权重,非对称量化的输入特征图和对称量化的偏置,采用此种量化方式的组合方式的优点是:1、通常输入特征图在经过激活函数后只有正数部分,卷积权重和偏置则通常为正负数对称分布,因此以上组合方式对指定位宽的定点量化范围有较高的利用率;2、能够最大限度降低全整型前向推理框架中在线运算的复杂度。在网络每层的卷积模块中嵌入伪量化节点,同时在网络的输出层之后也要加入一个统计量化模块,统计得到的量化参数用于将全整型网络的输出转化为浮点型数据。
进一步的,在深度卷积网络结构的每层卷积模块中嵌入伪量化节点之后,所述修改训练过程的正向传播计算图的方法还包括:S24:如果深度卷积网络结构中含有concat算子,则将所有卷积模块的激活函数修改为ReLU6。如果网络中含有concat算子,则需要将其bottom层的所有卷积模块的激活函数修改为ReLU6,以使得进入concat算子的量化数据具有相同的量化步长S。如果深度卷积网络结构中无concat算子,激活函数采用ReLU。激活函数ReLU6和ReLU是常规技术中存在,在此不做赘述。
接着,将激活函数修改为ReLU6后,本发明的深度卷积网络中常用的concat算子就会进行量化处理,也就是说,如果深度卷积网络结构中含有concat算子,则将所有卷积模块的激活函数修改为ReLU6,还需要对concat算子进行量化处理。量化出处理方法是,在本发明的前向推理框架下将concat后统计的量化参数赋值给concat前的两个反量化模块,即满足如下约束条件:
其中:Fi1为第一个输入特征图的浮点类型数据;Si1为第一个输入特征图的缩放系数;Qi1为第一个输入特征图的定点类型数据;Zi1为第一个输入特征图的量化零点;Fi2为第二个输入特征图的浮点类型数据;Si2为第二个输入特征图的缩放系数;Qi2为第二个输入特征图的定点类型数据;Zi2为第二个输入特征图的量化零点;FO为输出特征图的浮点类型数据;SO为输出特征图的缩放系数;QO为输出特征图的定点类型数据;ZO为输出特征图的量化零点。Concat算子作用是将两个输入特征图连接起来组成一个新的输入特征图。此时,concat算子便可以直接连接两个整型的输入特征图的特征矩阵。当然,上述常用的concat算子量化处理是在将深度卷积网络结构中的激活函数设置为ReLU6而发生的。
进一步的,步骤S2中,进行第一阶段伪量化训练,得到量化参数和伪量化浮点模型的方法包括:
S21:将伪量化节点中的浮点变量转换为定点变量;
S22:将定点变量转换为离散的浮点变量;
S23:求得输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数。
更为具体的,将伪量化节点中的浮点变量转换为定点变量的方法包括:
其中:S为量化步长,Q是伪量化后的定点变量,F是伪量化前连续的浮点变量,QP和QN分别为Q的上限值和下限值,Z是量化零点。
进一步的,将定点变量转化为离散的浮点变量的方法包括:
其中:Q是伪量化后的定点值,是伪量化后离散的浮点估计值,Z是浮点值0对应的伪量化定点值,Q是伪量化后的定点变量,S是量化步长。将伪量化节点中的浮点变量转换为定点变量和将定点变量转换为离散的浮点变量共同完成浮点变量的伪量化功能。
进一步的,求得输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数的方法包括:
求得浮点卷积模块的运算过程;
从浮点卷积模块的运算过程推导出输出特征图的定点类型数据的计算公式;
从输出特征图的定点类型数据的计算公式计算出输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数的相关性。
具体的,浮点卷积模块的运算过程可以表示为:
其中:为卷积运算的输出特征图;为卷积运算的输入特征;为卷积运算的卷积权重;为偏置的伪量化浮点估计值;SO为输出特征图的缩放系数;QO为输出特征图的定点类型数据;ZO为输出特征图的量化零点;为卷积运算的输入特征;Si为输入特征图的缩放系数;Qi为输入特征的定点类型数据;Zi为ZO为输入特征图的量化零点;为卷积运算的权重;Sw为权重的缩放系数;Qw为权重的定点类型数据;Zw为权重的量化零点;为卷积运算的偏置;QB为偏置的定点类型数据;ZB为偏置的量化零点;SB为偏置的缩放系数。这些参数都可以由和这三个公式中的定点变量表示。
进一步推导输出特征图的定点类型数据(输出特征图的量化值)的公式如下:
其中,QO为输出特征图的定点类型数据;为输出特征图的定点类型数据的下限值;为输出特征图的定点类型数据的上限值;Qi为输入特征的定点类型数据;Qw为权重的定点类型数据;Zw为权重的量化零点;QB'为偏置项;M为一个参数;clip是数值截断函数。
进一步的,偏置项QB'和参数M均是通过离线计算得到的变量,即,所述偏置项和所述参数通过如下公式计算:
其中:QB'为偏置项;M为一个参数;QB为偏置的定点类型数据;ZB为偏置的量化零点;Zi为ZO为输入特征图的量化零点;Qw为权重的定点类型数据;Zw为权重的量化零点;ZO为输出特征图的量化零点;Si为输入特征图的缩放系数;SO为输出特征图的缩放系数;Sw为权重的缩放系数。公式(1)(2)(3)是量化卷积模块计算公式的一般性表示,多个量化卷积模块首尾相连便组成了与伪量化正向传播结果相同的全整型前向推理网络。
因此,输入特征图的缩放系数、输出特征的缩放系数和卷积权重的缩放系数的相关性为:
其中:M为一个参数;Si为输入特征图的缩放系数;SO为输出特征的缩放系数;Sw为权重的缩放系数。
进一步的,步骤S3中,对量化参数和伪量化浮点模型进行第二阶段微调量化训练,得到训练后的量化参数和伪量化浮点模型的的方法包括:
S31:获得第一阶段统计得到的输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数;
S32:根据输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数求得新的卷积权重的量化步长;
S33:再次修改正向传播计算图,固定正向传播计算图中每一层的输入特征图的缩放系数、输出特征图的缩放系数和新的卷积权重的量化步长;
S34:读入第一阶段训练的所有层浮点型卷积权重模型,以新的卷积权重的量化步长重新训练;
S35:判断训练结果是否达到了第一阶段伪量化的精度;
S36:如果达到了第一阶段伪量化的精度,则训练结束,保存浮点模型和量化参数;如果没有达到了第一阶段伪量化的精度,则将卷积权重的量化位宽加1,再重复一次步骤S33和步骤S34,保存重新训练后的浮点模型和量化参数。
即,这些步骤当中,步骤S36只进行一次。重复步骤S33和步骤S34是为了得到精度更高的量化模型。
本发明为了进一步简化量化卷积模块的运算,对上述的卷积模块的一般性表达式的公式(2)做了如下两个约束:
第一个约束,对卷积权重和偏置采用对称量化。即Zw=ZB=0。
第二个约束,根据输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数求得新的卷积权重的量化步长的方法包括:
根据计算新的卷积权重量化步长Sw',其中:Sw'为新的卷积权重量化步长;Si为输入特征图的缩放系数;SO为输出特征的缩放系数;Sw为权重的缩放系数。此步骤是为了进一步简化量化卷积模块的运算做的第二个约束。
本发明实施例中,步骤S35中,第一阶段伪量化的精度为一个预设值。第一阶段伪量化的精度是设定的要求训练达到的精度,而这个精度在不同的卷积运算,它的要求不一样,所以在此,可以认为第一阶段伪量化的精度是发明人预设的一个值。第一阶段伪量化训练时,需要达到这个第一阶段伪量化的精度,第二阶段伪量化训练的精度不能小于第一阶段伪量化的精度。
进一步的,步骤S4中,对一般性卷积模块的公式进行两个约束后推导出的本发明实施例的根据伪量化正向传播计算图得到深度卷积网络的量化公式为:
QO=clip([∑Qi·Qw'+QB']>>n,QN_O,QP_O);
其中:QO是每层卷积定点类型数据输出特征图;QW'是每层卷积定点类型数据的卷积权重;QB'是每层卷积顶点类型的偏置项;n是非负整数类型的移位值;clip是数值截断函数。这个公式是满足上面两个约束得到的最终结果,从这个深度卷积网络的量化公式可以看到,仅包含一次卷积和一次矩阵加法、移位和截断运算,使得卷积运算过程简单且高效。为了使伪量化卷积运算满足第二个约束。本发明设计了一种量化参数的两阶段训练方法,即,第一阶段伪量化训练和第二阶段伪量化训练。使得基于以上量化卷积模块的前向推理过程复杂度变低,运算速度加快,并补偿加入简化约束后带来的精度损失。具体地,经过第一阶段伪量化训练后,得到了一组量化步长Si,SO和Sw,然后保持Si,SO不变,求得新的量化步长,而新的量化步长由如下公式计算得到:
量化参数修改后可以简化全整型前向推理模型,但模型的准确率由于量化卷积权重的改变受到影响,因此第二阶段的伪量化训练将量化参数Si,SO和Sw'固定,微调量化权重便能够弥补精度损失。
进一步的,步骤S5中,利用深度卷积网络的量化公式将训练后的伪量化浮点模型进行量化,并采用量化后得到的定点模型数据进行全整型前向推理运算的方法包括:
S51:通过深度卷积网络的量化公式将保存的浮点模型和量化参数或者保存的重新训练后的浮点模型和量化参数进行量化为定点模型参数并保存;
S52:建立全整型前向推理计算图,并加入首尾浮点型数据与整型数据的转换运算;
S53:读入定点模型参数,对输入的定点模型参数进行全整型前向推理运算。
图2是本发明使用的深度卷积网络量化装置,可以用来概括本发明实施例的深度卷积网络量化过程。装置中的伪量化训练模块100用于进行第一阶段伪量化训练和第二阶段伪量化训练;参数转换模块200用于将一阶段伪量化训练和第二阶段伪量化训练后得到的浮点模型转换为定点模型。卷积模块310、加偏置模块320和移位截断模块330组成量化卷积模块300,量化卷积模块300用于量化卷积的运算,即,用于实现深度卷积网络的量化公式的计算,具体的分别对应深度卷积网络的量化公式中的整型数据卷积、加和移位截断运算。量化卷积模块的输入输出数据均为指定位宽的无符号整型,组合连接起来便组成了本发明全整型前向推理模型结构。
综上,在本发明实施例提供的深度卷积网络的量化方法中,深度卷积网络的量化方法包括:根据训练任务设计合适的深度卷积网络量化结构,同时创建浮点型的伪量化的正向传播计算图和反向传播计算图;进行第一阶段伪量化训练,得到量化参数和伪量化浮点模型;修改正反向传播计算图,对量化参数和伪量化浮点模型进行第二阶段微调量化训练,得到训练后的量化参数和伪量化浮点模型;根据伪量化正向传播计算图得到深度卷积网络的量化公式;利用所述深度卷积网络的量化公式将训练后的伪量化浮点模型进行量化,并采用量化后得到的定点模型数据进行全整型前向推理运算。最终得到的深度卷积网络的量化公式只包含一次卷积,加法,移位和截断运算,提高了深度卷积网络量化的运算效率,便于硬件实现,并且,采用第一阶段伪量化训练和第二阶段伪量化训练可以提高深度卷积网络模型的精度。
上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。
Claims (22)
1.一种深度卷积网络的量化方法,其特征在于,包括:
根据训练任务设计合适的深度卷积网络量化结构,同时创建浮点型的伪量化的正向传播计算图和反向传播计算图;
进行第一阶段伪量化训练,得到量化参数和伪量化浮点模型;
修改正向传播计算图和反向传播计算图,对量化参数和伪量化浮点模型进行第二阶段微调量化训练,得到训练后的量化参数和伪量化浮点模型;
根据伪量化正向传播计算图得到深度卷积网络的量化公式;
利用所述深度卷积网络的量化公式将训练后的伪量化浮点模型进行量化,并采用量化后得到的定点模型数据进行全整型前向推理运算。
2.如权利要求1所述的深度卷积网络的量化方法,其特征在于,修改正向传播计算图和反向传播计算图的方法包括:
确定卷积权重的位宽、输入特征图的位宽和输出特征图的位宽;
在深度卷积网络结构的每层卷积模块中嵌入伪量化节点。
3.如权利要求2所述的深度卷积网络的量化方法,其特征在于,所述卷积权重的位宽、所述输入特征图的位宽和所述输出特征图的位宽均设定为8位。
4.如权利要求3所述的深度卷积网络的量化方法,其特征在于,在确定卷积权重、输入特征图的位宽和输出特征图的位宽之后,在深度卷积网络结构的每层卷积模块中嵌入伪量化节点之前,所述修改训练过程的正向传播计算图的方法还包括:对深度卷积网络中的归一化算子进行融合处理。
5.如权利要求4所述的深度卷积网络的量化方法,其特征在于,对深度卷积网络中的归一化算子进行融合处理的方法包括:
将所述卷积权重和所述偏置分别与深度卷积网络中的归一化算子进行融合处理,以得到融合后的卷积权重和融合后的偏置。
7.如权利要求2所述的深度卷积网络的量化方法,其特征在于,在深度卷积网络结构的每层卷积模块中嵌入伪量化节点的地方分别是:对称量化的所述卷积权重,非对称量化的所述输入特征图和对称量化的所述偏置。
8.如权利要求2所述的深度卷积网络的量化方法,其特征在于,在深度卷积网络结构的每层卷积模块中嵌入伪量化节点之后,所述修改训练过程的正向传播计算图的方法还包括:如果深度卷积网络结构中含有concat算子,则将所有卷积模块的激活函数修改为ReLU6。
9.如权利要求1所述的深度卷积网络的量化方法,其特征在于,进行第一阶段伪量化训练,得到量化参数和伪量化浮点模型的方法包括:
将伪量化节点中的浮点变量转换为定点变量;
将定点变量转换为离散的浮点变量;
求得输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数。
13.如权利要求9所述的深度卷积网络的量化方法,其特征在于,求得输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数的方法包括:
求得浮点卷积模块的运算过程;
从浮点卷积模块的运算过程推导出输出特征图的定点类型数据的计算公式;
从输出特征图的定点类型数据的计算公式计算出输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数的相关性。
18.如权利要求17所述的深度卷积网络的量化方法,其特征在于,修改正反向传播计算图,对量化参数和伪量化浮点模型进行第二阶段微调量化训练,得到训练后的量化参数和伪量化浮点模型的方法包括:
S31:获得第一阶段统计得到的输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数;
S32:根据输入特征图的缩放系数、输出特征图的缩放系数和卷积权重的缩放系数求得新的卷积权重的量化步长;
S33:再次修改正向传播计算图,固定正向传播计算图中每一层的输入特征图的缩放系数、输出特征图的缩放系数和新的卷积权重的量化步长;
S34:读入第一阶段训练的所有层浮点型卷积权重模型,以新的卷积权重的量化步长重新训练;
S35:判断训练结果是否达到了第一阶段伪量化的精度;
S36:如果达到了第一阶段伪量化的精度,则训练结束,保存浮点模型和量化参数;如果没有达到了第一阶段伪量化的精度,则将卷积权重的量化位宽加1,再重复一次步骤S33和步骤S34,保存重新训练后的浮点模型和量化参数。
20.如权利要求18所述的深度卷积网络的量化方法,其特征在于,第一阶段伪量化的精度为一个预设值。
21.如权利要求18所述的深度卷积网络的量化方法,其特征在于,根据伪量化正向传播计算图得到深度卷积网络的量化公式为:
QO=clip([∑Qi·Qw'+QB']>>n,QN_O,QP_O);
其中:QO是每层卷积定点类型数据输出特征图;QW'是每层卷积定点类型数据的卷积权重;QB'是每层卷积顶点类型的偏置项;n是非负整数类型的移位值;clip是数值截断函数。
22.如权利要求21所述的深度卷积网络的量化方法,其特征在于,利用所述深度卷积网络的量化公式将训练后的伪量化浮点模型进行量化,并采用量化后得到的定点模型数据进行全整型前向推理运算的方法包括:
通过所述深度卷积网络的量化公式将保存的浮点模型和量化参数或者保存的重新训练后的浮点模型和量化参数进行量化为定点模型参数并保存;
建立全整型前向推理计算图,并加入首尾浮点型数据与整型数据的转换运算;
读入定点模型参数,对输入的定点模型参数进行全整型前向推理运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010618614.1A CN111612147A (zh) | 2020-06-30 | 2020-06-30 | 深度卷积网络的量化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010618614.1A CN111612147A (zh) | 2020-06-30 | 2020-06-30 | 深度卷积网络的量化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111612147A true CN111612147A (zh) | 2020-09-01 |
Family
ID=72202627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010618614.1A Pending CN111612147A (zh) | 2020-06-30 | 2020-06-30 | 深度卷积网络的量化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111612147A (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112733964A (zh) * | 2021-02-01 | 2021-04-30 | 西安交通大学 | 一种强化学习自动感知权重分布的卷积神经网络量化方法 |
CN112884144A (zh) * | 2021-02-01 | 2021-06-01 | 上海商汤智能科技有限公司 | 网络量化方法及装置、电子设备和存储介质 |
CN112884146A (zh) * | 2021-02-25 | 2021-06-01 | 香港理工大学深圳研究院 | 一种训练基于数据量化与硬件加速的模型的方法及系统 |
CN113011569A (zh) * | 2021-04-07 | 2021-06-22 | 开放智能机器(上海)有限公司 | 离线量化参数加注方法、装置、电子设备和存储介质 |
CN113255446A (zh) * | 2021-04-20 | 2021-08-13 | 长沙海格北斗信息技术有限公司 | 人脸检测系统 |
CN113420788A (zh) * | 2020-10-12 | 2021-09-21 | 黑芝麻智能科技(上海)有限公司 | 卷积神经网络中基于整数的融合卷积层以及融合卷积方法 |
CN113449654A (zh) * | 2021-07-01 | 2021-09-28 | 南京航空航天大学 | 一种基于深度模型和量化技术的智慧食堂食物检测方法 |
CN113487014A (zh) * | 2021-07-05 | 2021-10-08 | 上海西井信息科技有限公司 | 基于语义分割神经网络模型的任意比特量化方法及设备 |
CN113762503A (zh) * | 2021-05-27 | 2021-12-07 | 腾讯云计算(北京)有限责任公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN114372565A (zh) * | 2022-01-13 | 2022-04-19 | 华中科技大学 | 一种用于边缘设备的目标检测网络压缩方法 |
WO2022111002A1 (zh) * | 2020-11-30 | 2022-06-02 | 中科寒武纪科技股份有限公司 | 用于训练神经网络的方法、设备和计算机可读存储介质 |
CN114677548A (zh) * | 2022-05-26 | 2022-06-28 | 之江实验室 | 基于阻变存储器的神经网络图像分类系统及方法 |
WO2023004799A1 (zh) * | 2021-07-30 | 2023-02-02 | 华为技术有限公司 | 电子设备及神经网络量化方法 |
CN116720563A (zh) * | 2022-09-19 | 2023-09-08 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
US12124936B2 (en) | 2020-10-12 | 2024-10-22 | Black Sesame Technologies Inc. | Integer-based fused convolutional layer in a convolutional neural network |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110363281A (zh) * | 2019-06-06 | 2019-10-22 | 上海交通大学 | 一种卷积神经网络量化方法、装置、计算机和存储介质 |
-
2020
- 2020-06-30 CN CN202010618614.1A patent/CN111612147A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110363281A (zh) * | 2019-06-06 | 2019-10-22 | 上海交通大学 | 一种卷积神经网络量化方法、装置、计算机和存储介质 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420788A (zh) * | 2020-10-12 | 2021-09-21 | 黑芝麻智能科技(上海)有限公司 | 卷积神经网络中基于整数的融合卷积层以及融合卷积方法 |
US12124936B2 (en) | 2020-10-12 | 2024-10-22 | Black Sesame Technologies Inc. | Integer-based fused convolutional layer in a convolutional neural network |
WO2022111002A1 (zh) * | 2020-11-30 | 2022-06-02 | 中科寒武纪科技股份有限公司 | 用于训练神经网络的方法、设备和计算机可读存储介质 |
CN112733964B (zh) * | 2021-02-01 | 2024-01-19 | 西安交通大学 | 一种强化学习自动感知权重分布的卷积神经网络量化方法 |
CN112733964A (zh) * | 2021-02-01 | 2021-04-30 | 西安交通大学 | 一种强化学习自动感知权重分布的卷积神经网络量化方法 |
CN112884144A (zh) * | 2021-02-01 | 2021-06-01 | 上海商汤智能科技有限公司 | 网络量化方法及装置、电子设备和存储介质 |
CN112884146A (zh) * | 2021-02-25 | 2021-06-01 | 香港理工大学深圳研究院 | 一种训练基于数据量化与硬件加速的模型的方法及系统 |
CN112884146B (zh) * | 2021-02-25 | 2024-02-13 | 香港理工大学深圳研究院 | 一种训练基于数据量化与硬件加速的模型的方法及系统 |
CN113011569B (zh) * | 2021-04-07 | 2024-06-18 | 开放智能机器(上海)有限公司 | 离线量化参数加注方法、装置、电子设备和存储介质 |
CN113011569A (zh) * | 2021-04-07 | 2021-06-22 | 开放智能机器(上海)有限公司 | 离线量化参数加注方法、装置、电子设备和存储介质 |
CN113255446B (zh) * | 2021-04-20 | 2023-04-18 | 长沙海格北斗信息技术有限公司 | 人脸检测系统 |
CN113255446A (zh) * | 2021-04-20 | 2021-08-13 | 长沙海格北斗信息技术有限公司 | 人脸检测系统 |
CN113762503A (zh) * | 2021-05-27 | 2021-12-07 | 腾讯云计算(北京)有限责任公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN113449654A (zh) * | 2021-07-01 | 2021-09-28 | 南京航空航天大学 | 一种基于深度模型和量化技术的智慧食堂食物检测方法 |
CN113487014A (zh) * | 2021-07-05 | 2021-10-08 | 上海西井信息科技有限公司 | 基于语义分割神经网络模型的任意比特量化方法及设备 |
WO2023004799A1 (zh) * | 2021-07-30 | 2023-02-02 | 华为技术有限公司 | 电子设备及神经网络量化方法 |
CN114372565B (zh) * | 2022-01-13 | 2024-10-15 | 华中科技大学 | 一种用于边缘设备的目标检测网络压缩方法 |
CN114372565A (zh) * | 2022-01-13 | 2022-04-19 | 华中科技大学 | 一种用于边缘设备的目标检测网络压缩方法 |
CN114677548A (zh) * | 2022-05-26 | 2022-06-28 | 之江实验室 | 基于阻变存储器的神经网络图像分类系统及方法 |
CN114677548B (zh) * | 2022-05-26 | 2022-10-14 | 之江实验室 | 基于阻变存储器的神经网络图像分类系统及方法 |
CN116720563B (zh) * | 2022-09-19 | 2024-03-29 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
CN116720563A (zh) * | 2022-09-19 | 2023-09-08 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111612147A (zh) | 深度卷积网络的量化方法 | |
US20210256348A1 (en) | Automated methods for conversions to a lower precision data format | |
Sung et al. | Resiliency of deep neural networks under quantization | |
CN109214509B (zh) | 一种用于深度神经网络高速实时量化结构和运算实现方法 | |
CN112733964B (zh) | 一种强化学习自动感知权重分布的卷积神经网络量化方法 | |
CN110276451A (zh) | 一种基于权重归一化的深度神经网络压缩方法 | |
CN112381205A (zh) | 一种神经网络低比特量化方法 | |
CN111696149A (zh) | 针对基于cnn的立体匹配算法的量化方法 | |
CN109783799B (zh) | 一种基于语义依存图的关系提取方法 | |
CN111178514A (zh) | 神经网络的量化方法及系统 | |
CN109214502B (zh) | 神经网络权重离散化方法和系统 | |
CN112633477A (zh) | 一种基于现场可编程阵列的量化神经网络加速方法 | |
CN112686384B (zh) | 一种自适应比特位宽的神经网络量化方法及其装置 | |
CN113516133A (zh) | 一种多模态图像分类方法及系统 | |
CN114239861A (zh) | 基于多教师联合指导量化的模型压缩方法及系统 | |
CN110188877A (zh) | 一种神经网络压缩方法与装置 | |
CN113610227A (zh) | 一种高效的深度卷积神经网络剪枝方法 | |
Qi et al. | Learning low resource consumption cnn through pruning and quantization | |
CN117829149B (zh) | 一种语言模型混合训练方法、装置、电子设备和存储介质 | |
CN112561050A (zh) | 一种神经网络模型训练方法及装置 | |
US20240104342A1 (en) | Methods, systems, and media for low-bit neural networks using bit shift operations | |
WO2021253857A1 (zh) | 一种融合裁剪与量化的模型压缩方法及系统 | |
CN112488291A (zh) | 一种神经网络8比特量化压缩方法 | |
CN112446461A (zh) | 一种神经网络模型训练方法及装置 | |
CN113283591B (zh) | 基于Winograd算法和近似乘法器的高效卷积实现方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |