CN110929838B - 神经网络中位宽定点化方法、装置、终端和存储介质 - Google Patents
神经网络中位宽定点化方法、装置、终端和存储介质 Download PDFInfo
- Publication number
- CN110929838B CN110929838B CN201811095811.9A CN201811095811A CN110929838B CN 110929838 B CN110929838 B CN 110929838B CN 201811095811 A CN201811095811 A CN 201811095811A CN 110929838 B CN110929838 B CN 110929838B
- Authority
- CN
- China
- Prior art keywords
- floating point
- quantization range
- convolution operation
- layer
- value
- 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.)
- Active
Links
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种神经网络中位宽定点化方法、装置、移动终端和存储介质,属于图像检测技术领域。方法包括:获取神经网络对应的浮点模型和多个样本数据;基于多个样本数据,对浮点模型中的浮点参数、输入数据和输出数据分别进行定点转换,得到浮点参数的第一量化范围、输入数据的第二量化范围和输出数据的第三量化范围;根据第一量化范围、第二量化范围和第三量化范围,基于神经网络的整型卷积运算,对浮点参数的第一量化范围进行调整,得到第四量化范围;将浮点模型中的浮点参数的取值范围调整为第四量化范围得到定点模型。本申请中将浮点运算转为定点运算,提高模型卷积运算速度,降低了内存资源、硬盘存储资源和电量的消耗以及提高了运行速度。
Description
技术领域
本申请涉及神经网络技术领域,特别涉及一神经网络中位宽定点化方法、装置、终端和存储介质。
背景技术
随着卷积神经网络在目标检测、语义分割和图像分类等计算机视觉领域的发展,以及移动终端的高速发展,让研究者看到了将卷积神经网络与移动终端相结合的契机。
目前,研究者直接将卷积神经网络的算法部署至移动终端上。然而,基于卷积神经网络的目标检测、语义分割和图像分类等往往依赖于高性能的处理器,而移动终端的处理器性能往往比较低。因此,直接将卷积神经网络的算法部署至移动终端不仅会消耗移动终端大量内存资源、硬盘存储资源以及电量,还会降低移动终端的运行速度。
发明内容
本申请提供了一种神经网络中位宽定点化方法、装置、终端和存储介质,可以解决现有技术中的消耗移动终端大量内存资源、硬盘存储资源和电量以及降低移动终端的运行速度的问题。技术方案如下:
一方面,本申请提供了一种神经网络中位宽定点化方法,所述方法包括:
获取神经网络对应的浮点模型和多个样本数据;
基于所述多个样本数据,对所述浮点模型中的浮点参数、输入数据和输出数据分别进行定点转换,得到所述浮点参数的第一量化范围、所述输入数据的第二量化范围和所述输出数据的第三量化范围;
根据所述第一量化范围、所述第二量化范围和所述第三量化范围,基于所述神经网络的整型卷积运算,对所述浮点参数的第一量化范围进行调整,得到第四量化范围;
将所述浮点模型中的浮点参数的取值范围调整为所述第四量化范围,得到定点模型。
在一个可能的实现方式中,所述基于所述多个样本数据,对所述浮点模型中的浮点参数、输入数据和输出数据分别进行定点转换,得到所述浮点参数的第一量化范围、所述输入数据的第二量化范围和所述输出数据的第三量化范围,包括:
通过所述浮点模型对所述多个样本数据进行多层浮点卷积运算,得到每层浮点卷积运算的最大输入值和最大输出值;
基于所述每层浮点卷积运算的最大输入值和最大输出值,分别确定所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽;
根据所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽,确定所述输入数据的第二量化范围和所述输出数据的第三量化范围;
根据所述第二量化范围和所述第三量化范围,通过所述反向卷积运算,得到所述浮点参数的第一量化范围。
在另一个可能的实现方式中,所述基于所述每层算法的最大输入值和最大输出值,分别确定所述最大输入值的第一浮点位宽和所述最大输出值的第二浮点位宽,包括:
基于所述最大输入值和所述最大输出值,分别确定所述最大输入值的第一整数位宽和所述最大输出值的第二整数位宽;
根据存储所述最大输入值的第一总位宽、所述最大输入值的第一符号位宽,和所述第一整数位宽,确定所述最大输入值的第一浮点位宽;
根据存储所述最大输出值的第二总位宽、所述最大输出值的第二符号位宽和所述第二整数位宽,确定所述最大输出值的第二浮点位宽。
在另一个可能的实现方式中,所述根据所述第一量化范围、所述第二量化范围和所述第三量化范围,基于所述神经网络的整型卷积运算,对所述浮点参数的第一量化范围进行调整,得到第四量化范围,包括:
通过反向卷积运算和所述多个样本数据,确定输出梯度、参数梯度和输入梯度;
根据所述输出梯度和所述输入梯度,更新所述第二量化范围和所述第三量化范围,得到第五量化范围和第六量化范围;
根据所述第五量化范围和所述第六量化范围,通过所述整型卷积运算,确定所述整型参数的上限值;
根据所述整型参数的上限值和所述参数梯度,更新所述第一量化范围,得到第四量化范围。
在另一个可能的实现方式中,所述将所述浮点模型中的浮点参数的取值范围调整为所述第四量化范围,得到定点模型之后,所述方法还包括:
获取待处理图像,并确定所述待处理图像的特征图;
通过所述定点模型,对所述特征图进行多层整型卷积运算,得到定点数据;
将所述定点数据还原成浮点数据。
在另一个可能的实现方式中,所述通过所述定点模型,对所述特征图进行多层整型卷积运算,得到定点数据,包括:
将所述特征图的特征值和所述定点模型中的第四量化范围进行整型卷积运算,得到第一层卷积运算结果;
将所述第一层卷积运算结果作为第二层卷积运算的输入,再次进行整型卷积运算,直到进行多层整型卷积运算,得到第N层卷积运算结果,N为多层向前运算的层数;
将所述第N层卷积运算结果作为所述定点数据。
在另一个可能的实现方式中,所述将所述定点数据还原成浮点数据,包括:
确定将定点数据转换为浮点数据的比例系数;
将所述定点数据乘以所述比例系数,得到所述浮点数据。
另一方面,本申请提供了一种神经网络中位宽定点化装置,所述装置包括:
获取模块,用于获取神经网络对应的浮点模型和多个样本数据;
转换模块,用于基于所述多个样本数据,对所述浮点模型中的浮点参数、输入数据和输出数据分别进行定点转换,得到所述浮点参数的第一量化范围、所述输入数据的第二量化范围和所述输出数据的第三量化范围;
调整模块,用于根据所述第一量化范围、所述第二量化范围和所述第三量化范围,基于所述神经网络的整型卷积运算,对所述浮点参数的第一量化范围进行调整,得到第四量化范围;
所述调整模块,还用于将所述浮点模型中的浮点参数的取值范围调整为所述第四量化范围,得到定点模型。
在一个可能的实现方式中,所述转换模块,还用于
通过所述浮点模型对所述多个样本数据进行多层浮点卷积运算,得到每层浮点卷积运算的最大输入值和最大输出值;
基于所述每层浮点卷积运算的最大输入值和最大输出值,分别确定所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽;
根据所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽,确定所述输入数据的第二量化范围和所述输出数据的第三量化范围;
根据所述第二量化范围和所述第三量化范围,通过所述反向卷积运算,得到所述浮点参数的第一量化范围。
在另一个可能的实现方式中,所述转换模块,还用于
基于所述最大输入值和所述最大输出值,分别确定所述最大输入值的第一整数位宽和所述最大输出值的第二整数位宽;
根据存储所述最大输入值的第一总位宽、所述最大输入值的第一符号位宽,和所述第一整数位宽,确定所述最大输入值的第一浮点位宽;
根据存储所述最大输出值的第二总位宽、所述最大输出值的第二符号位宽和所述第二整数位宽,确定所述最大输出值的第二浮点位宽。
在另一个可能的实现方式中,所述调整模块,还用于
通过所述反向卷积运算和所述多个样本数据,确定输出梯度、参数梯度和输入梯度;
根据所述输出梯度和所述输入梯度,更新所述第二量化范围和所述第三量化范围,得到第五量化范围和第六量化范围;
根据所述第五量化范围和所述第六量化范围,通过所述整型卷积运算,确定所述整型参数的上限值;
根据所述整型参数的上限值和所述参数梯度,更新所述第一量化范围,得到第四量化范围。
在另一个可能的实现方式中,所述装置还包括:
处理模块,用于获取待处理图像,并确定所述待处理图像的特征图;通过所述定点模型,对所述特征图进行多层整型卷积运算,得到定点数据;将所述定点数据还原成浮点数据。
在另一个可能的实现方式中,所述处理模块,还用于
将所述特征图的特征值和所述定点模型中的第四量化范围进行整型卷积运算,得到第一层卷积运算结果;
将所述第一层卷积运算结果作为第二层卷积运算的输入,再次进行整型卷积运算,直到进行多层整型卷积运算,得到第N层卷积运算结果,N为多层向前运算的层数;
将所述第N层卷积运算结果作为所述定点数据。
在另一个可能的实现方式中,所述处理模块,还用于
确定将定点数据转换为浮点数据的比例系数;
将所述定点数据乘以所述比例系数,得到所述浮点数据。
另一方面,本申请提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述神经网络中位宽定点化方法中所执行的操作。
另一方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现上述神经网络中位宽定点化方法中所执行的操作。
在本申请实施例中,通过浮点模型和多个样本数据,对浮点模型的浮点参数进行量化,并将浮点模型转换为定点模型,实现将浮点运算转为定点运算,提高模型卷积运算速度,从而在将卷积神经网络的算法部署至移动终端时,不仅降低了移动终端的内存资源、硬盘存储资源和电量的消耗,还提高了移动终端的运行速度。
附图说明
图1是本申请实施例提供的一种神经网络中位宽定点化架构的结构示意图;
图2是本申请实施例提供的一种神经网络中位宽定点化方法流程图;
图3是本申请实施例提供的一种神经网络中位宽定点化方法流程图;
图4是本申请实施例提供的一种浮点数据的量化范围的示意图;
图5是本申请实施例提供的一种迭代拟合训练数据的示意图;
图6是本申请实施例提供的一种多层整型卷积运算的示意图;
图7是本申请实施例提供的一种神经网络中位宽定点化装置结构示意图;
图8是本申请实施例提供的终端的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
由于直接将卷积神经网络的算法部署至移动终端,不仅会消耗移动终端大量内存资源、硬盘存储资源以及电量,还会降低移动终端的运行速度。因此,在将卷积神经网络的算法部署至移动终端时,先将卷积神经网络中的浮点运算转换为定点运算,来降低运算量,然后将卷积神经网络的算法部署至移动终端上,从而降低内存资源、硬盘资源以及电量的消耗,且提高移动终端的运行速度。
目前将卷积神经网络中浮点运算转换为定点运算的过程可以为:将浮点运算的浮点参数和输入数据均转换为short类型(16bit)的定点数据,将浮点参数和输入数据进行卷积运算,从而实现将浮点运算直接转换为定点运算。然而在进行卷积运算时,需要将浮点参数和输入数据相乘,而其计算性能与16bit的浮点运算计算速度相近,从而导致上述将转换方法的计算量大,运算速度低。
本公开实施例提供了一种神经网络中位宽定点化的架构示意图,参见图1,该神经网络中位宽定点化的架构中包括浮点模型单元、模型量化训练单元和整型卷积运算单元。浮点模型单元的输出端与模型量化训练单元的输入端相连,模型量化训练单元的输出端与整型卷积运算单元的输出端相连。
浮点模型单元,用于通过卷积神经网络处理目标任务。该目标任务可以为根据项目需求,设置的任一任务。例如,该目标任务可以为图像分类、目标检测或者语义分割等任一或者多个任务。
模型量化训练单元,用于将目标量化模型转换为二进制模型文件,该目标量化模型可以为将浮点运算转换为定点运算的任一模型。其中,模型量化训练单元包括特征图数值分析子单元、参数量化训练子单元、输入输出量化训练子单元、生成二进制模型文件子单元。其中,特征图数值分析子单元的输入端与浮点模型单元的输出端相连,特征图数值分析子单元的输出端与参数量化训练子单元的输入端相连,参数量化训练子单元的输出端与输入输出量化训练子单元的输入端相连,输入输出量化训练子单元的输出端与生成二进制模型文件的输入端相连,二进制模型文件的输出端与整型卷积运算单元的输入端相连。
本申请实施例提供了一种神经网络中位宽定点化方法,参见图2,该方法包括:
步骤201:获取神经网络对应的浮点模型和多个样本数据。
步骤202:基于所述多个样本数据,对所述浮点模型中的浮点参数、输入数据和输出数据分别进行定点转换,得到所述浮点参数的第一量化范围、所述输入数据的第二量化范围和所述输出数据的第三量化范围。
步骤203:根据所述第一量化范围、所述第二量化范围和所述第三量化范围,基于所述神经网络的整型卷积运算,对所述浮点参数的第一量化范围进行调整,得到第四量化范围。
步骤204:将所述浮点模型中的浮点参数的取值范围调整为所述第四量化范围,得到定点模型。
在本申请实施例中,通过浮点模型和多个样本数据,对浮点模型的浮点参数进行量化,并将浮点模型转换为定点模型,实现将浮点运算转为定点运算,提高模型卷积运算速度,从而在将卷积神经网络的算法部署至移动终端时,不仅降低了移动终端的内存资源、硬盘存储资源和电量的消耗,还提高了移动终端的运行速度。并且,本申请实施例中所有数据采用整型存储和运算,无浮点运算介入,可以提高移动终端的处理速度和效率。进一步的,由于根据浮点参数的第一量化范围、输入数据的第二量化范围和输出数据的第三量化范围,对浮点参数的第一量化范围进行调整,从而能够自适应调整浮点参数的量化范围,降低模型量化难度和损失,进一步提高了模型卷积运算速度。
在一个可能的实现方式中,所述基于所述多个样本数据,对所述浮点模型中的浮点参数、输入数据和输出数据分别进行定点转换,得到所述浮点参数的第一量化范围、所述输入数据的第二量化范围和所述输出数据的第三量化范围,包括:
通过所述浮点模型对所述多个样本数据进行多层浮点卷积运算,得到每层浮点卷积运算的最大输入值和最大输出值;
基于所述每层浮点卷积运算的最大输入值和最大输出值,分别确定所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽;
根据所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽,确定所述输入数据的第二量化范围和所述输出数据的第三量化范围;
根据所述第二量化范围和所述第三量化范围,通过所述反向卷积运算,得到所述浮点参数的第一量化范围。
在另一个可能的实现方式中,所述基于所述每层算法的最大输入值和最大输出值,分别确定所述最大输入值的第一浮点位宽和所述最大输出值的第二浮点位宽,包括:
基于所述最大输入值和所述最大输出值,分别确定所述最大输入值的第一整数位宽和所述最大输出值的第二整数位宽;
根据存储所述最大输入值的第一总位宽、所述最大输入值的第一符号位宽,和所述第一整数位宽,确定所述最大输入值的第一浮点位宽;
根据存储所述最大输出值的第二总位宽、所述最大输出值的第二符号位宽和所述第二整数位宽,确定所述最大输出值的第二浮点位宽。
在另一个可能的实现方式中,所述根据所述第一量化范围、所述第二量化范围和所述第三量化范围,基于所述神经网络的整型卷积运算,对所述浮点参数的第一量化范围进行调整,得到第四量化范围,包括:
通过反向卷积运算和所述多个样本数据,确定输出梯度、参数梯度和输入梯度;
根据所述输出梯度和所述输入梯度,更新所述第二量化范围和所述第三量化范围,得到第五量化范围和第六量化范围;
根据所述第五量化范围和所述第六量化范围,通过所述整型卷积运算,确定所述浮点参数范围的上限值;
根据所述整型参数的上限值和所述参数梯度,更新所述第一量化范围,得到第四量化范围。
在本申请实施例中,模型训练采用整型卷积运算和反向卷积运算结合方式,在整型卷积运算过程中,采取输入量化、参数量化、输出量化;反向卷积运算中依据网络学习方式,计算输出梯度、参数梯度和输入梯度,以矫正浮点参数的第四量化范围。由于采用较多迭代次数可以较好地拟合训练数据。另外,整型卷积运算中需要存储中间结果,中间结果位宽选择影响整型卷积运算稳定性、溢出风险,本方案通过数据分析和参数范围调整方法规避了前向运算不稳定因素。
在另一个可能的实现方式中,所述将所述浮点模型中的浮点参数的取值范围调整为所述第四量化范围,得到定点模型之后,所述方法还包括:
获取待处理图像,并确定所述待处理图像的特征图;
通过所述定点模型,对所述特征图进行多层浮点整型运算,得到定点数据;
将所述定点数据还原成浮点数据。
在另一个可能的实现方式中,所述通过所述定点模型,对所述特征图进行多层整型卷积运算,得到定点数据,包括:
将所述特征图的特征值和所述定点模型中的第四量化范围进行整型卷积运算,得到第一层卷积运算结果;
将所述第一层卷积运算结果作为第二层卷积运算的输入,再次进行向前运算,直到进行多层整型卷积运算,得到第N层卷积运算结果,N为多层向前运算的层数;
将所述第N层卷积运算结果作为所述定点数据。
在另一个可能的实现方式中,所述将所述定点数据还原成浮点数据,包括:
确定将定点数据转换为浮点数据的比例系数;
将所述定点数据乘以所述比例系数,得到所述浮点数据。
本申请实施例提供了一种神经网络中位宽定点化方法,该方法的执行主体可以为终端,参见图3,该方法包括:
步骤301:终端获取神经网络对应的浮点模型和多个样本数据。
在本申请实施例中,为了将浮点运算转换为定点运算以提高模型卷积运算速度,需要获取初始的浮点模型,将浮点模型进行模型量化,得到定点模型。因此,终端需要获取浮点模型和多个样本数据。多个样本数据可以为已知结果的图像。该浮点模型可以用于进行目标检测,语义分割和图像分类等。当该浮点模型用于进行目标检测时,多个样本数据可以为多个已知目标的图像。当该浮点模型用于进行语义分割时,多个样本数据可以为多个已知语义的图像。当该浮点模型用于进行图像分类时,多个样本数据可以为多个已知类别的图像。
步骤302:终端通过浮点模型,对多个样本数据进行多层浮点卷积运算,得到浮点卷积运算的最大输入值和最大输出值。
浮点卷积运算可以通过如下公式一的整型卷积运算进行近似表示:
公式一:D(n+1)=(D(n)*B(n)*α′(n)+b″(n))>>shift
其中,D(n+1)为第n层整型卷积运算的输出值;D(n)为第n层整型卷积运算的输入值;B(n)为第n层整型卷积运算的参数值;α′(n)为第n层整型卷积运算的比例系数;b″(n)为第n层整型卷积运算的偏置项;shift为第n层整型卷积运算的移位数。
需要说明的一点是,D(n+1)的数据类型、D(n)的数据类型和B(n)的数据类型均为char(字符)类型。α′(n)的数据类型为short(短)整型类型。b″(n)的数据类型为int(基本整型)类型。另外,D(n)*B(n)为中间结果,且D(n)*B(n)的数据类型也为short类型。
在本步骤中,终端将多个样本数据输入到浮点模型中,通过浮点模型的浮点卷积运算近似的整型卷积运算对多个样本数据进行第一层整型卷积运算,得到第一层卷积运算的输出值;将第一层卷积运算的输出值作为第二层卷积运算的输入值,再次输入到浮点模型中,通过浮点模型的浮点卷积运算近似的整型卷积运算对第二层卷积运算的输入值进行第二层整型卷积运算,得到第二层卷积运算的输出值;按照上述过程进行多层整型卷积运算,并统计每层整型卷积运算的输入值和输出值;根据每层整型卷积运算的输入值和输出值,确定最大输入值和最大输出值。
需要说明的另一点是,最大输入值和最大输出值分别为输入的最大特征值和输出的最大特征值。
步骤303:终端基于最大输入值和最大输出值,分别确定最大输入值的第一浮点位宽和最大输出值的第二浮点位宽。
本步骤可以通过以下步骤(1)至(3)实现,包括:
(1):终端基于最大输入值和最大输出值,分别确定该最大输入值的第一整数位宽和该最大输出值的第二整数位宽。
终端基于该最大输入值,通过以下公式二,确定该最大输入值的第一整数位宽;基于该最大输出值,通过以下公式三,确定该最大输出值的第二整数位宽。其中,第一整数位宽为该最大输入值的整数部分所需位宽。第二整数位宽为该最大输出值的整数部分所需位宽。
公式二:A=floor(log2(fl_in_max))
其中,A为第一整数位宽,fl_in_max为该最大输入值;floor()为上取整函数。
公式三:B=floor(log2(fl_out_max))
其中,B为第二整数位宽,fl_out_max为该最大输出值;floor()为上取整函数。
(2):终端根据存储该最大输入值的第一总位宽、该最大输入值的第一符号位宽和该第一整数位宽,确定该最大输入值的第一浮点位宽。
终端确定该第一总位宽、第一符号位宽和第一整数位宽的差值,将该差值确定为第一浮点位宽。
需要说明的一点是,存储该最大输入值的第一总位宽可以由系统设置,也可以由用户设置。且第一总位宽可以根据需要进行设置并更改,在本申请实施例中,对第一总位宽不作具体限定;例如,在本申请实施例中,用8bit(比特)来存储输入值;因此,第一总位宽为8。该最大输入值的第一符号位宽可以为1。且当该第一符号为0时,表示为正数。当该第一符号为1时,表示为负数。例如,当该第一总位宽为8,该第一符号位宽为1时,该第一浮点位宽为fl_in_param=8-1-floor(log2(fl_in_max))。
需要说明的另一点是,终端在进行芯片数值计算时,浮点数据存储和计算采用16bit(比特)/32bit表示;整型数据存储和计算采用8bit/16bit/32bit。整型数据仅能表示整数。因此,终端采用动态定点方式表达离散浮点数据,并且通过调整小数表示位宽数,可以表示不同整数范围、小数精度的离散浮点数据。
例如,参见图4,当第一总位宽为8,第一符号位宽为1,当为小数分配2位时,该浮点参数的量化范围为-32.0~31.75,间隔为1/4。当第一总位宽为8,当为小数分配5位时,该浮点数据的量化范围为-4.0~3.97,间隔为1/32。
终端统计浮点参数的直方图分布,基于该直方图分布选择可用的离散浮点参数,通过离散浮点数据近似表示连续的浮点数据。基于图4得到离散浮点参数采用{-7*alpha,7*alpha}共15个数值表示。
(3):终端根据存储最大输出值的第二总位宽、最大输出值的第二符号位宽和第二整数位宽,确定最大输出值的第二浮点位宽。
终端确定该第二总位宽、第二符号位宽和第二整数位宽的差值,将该差值确定为第二浮点位宽。
需要说明的一点是,存储该最大输出值的第二总位宽可以由系统设置,也可以由用户设置。且第二总位宽可以根据需要进行设置并更改,在本申请实施例中,对第二总位宽不作具体限定;例如,在本申请实施例中,用8bit(比特)来存储输出值;因此,第二总位宽为8。该最大输出值的第二符号位宽可以为1。且当该第二符号为0时,表示为正数。当该第二符号为1时,表示为负数。例如,当该第二总位宽为8,该第二符号位宽为1时,该第二浮点位宽为fl_out_param=8-1-floor(log2(fl_out_max))。
需要说明的另一点是,浮点参数、输入数据和输出数据均采用8bit位宽表示、中间结果采用16bit位宽表示,该方案充分利用中间结果16bit的存储位宽,提高模型处理效率。
步骤304:终端根据每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽,确定输入数据的第二量化范围和输出数据的第三量化范围。
本步骤可以通过以下步骤(1)至(4)实现,包括:
(1):对于每层浮点卷积运算,终端根据该层浮点卷积运算的最大输入值的第一浮点位宽,通过以下公式四,确定该层浮点卷积运算的最大输入值的量化值。
公式四:xq_in=floor(x*pow(2,fl_in_param)+0.5)
其中,xq_in为该层浮点卷积运算的最大输入值的量化值,x为特征图的浮点数值,fl_in_param为该层浮点卷积运算的最大输入值的第一浮点位宽。
(2):终端根据每层浮点卷积运算的最大输入值的量化值,确定输入最大量化值和输入最小量化值,将该输入最小量化值和该输入最大量化值组成第二量化范围。
(3):对于每层浮点卷积运算,终端根据该层浮点卷积运算的最大输出值的第二浮点位宽,通过以下公式五,确定该层浮点卷积运算的最大输出值的量化值。
公式五:xq_out=floor(x*pow(2,fl_out_param)+0.5)
其中,xq_out为该层浮点卷积运算的最大输出值的量化值,x为特征图的浮点数值,fl_out_param为该层浮点卷积运算的最大输出值的第二浮点位宽。
(4):移终端根据每层浮点卷积运算的最大输出值的量化值,确定输出最大量化值和输出最小量化值,将该输出最小量化值和该输出最大量化值组成第三量化范围。
步骤305:终端根据第一量化范围、第二量化范围和第三量化范围,基于整型卷积运算,对浮点参数的第一量化范围进行调整,得到第四量化范围。
根据整型卷积运算可以看出,整型卷积运算的中间结果的数值大小与输入数据和整型参数相关。当固定输入数据时,中间结果的数值范围与整型参数相关,并且,当输入数据的稀疏度越大(零值越多),中间结果的数值越小。由于中间结果的数据类型为short类型,该中间结果的数值远小于short存储上限。因此,基于此特性,终端可以通过提升第二量化范围来提升中间结果的存储位宽信息,同时提升定点模型量化性能。并且,终端通过多个样本数据和整型卷积运算,确定中间结果的上限值,根据中间结果的上限值,自适应调整每层量化参数的取值范围。相应的,本步骤可以通过以下步骤(1)至(4),包括:
(1):终端通过反向卷积运算和多个样本数据,确定输出梯度、参数梯度和输入梯度。
终端将多个样本数据输入到反向卷积运算中,得到多个输出值、多个输入值和多个浮点参数值。终端基于多个输出值,确定输出梯度;基于多个输入值确定输入梯度;基于多个浮点参数值,确定输入梯度。
(2):终端根据该输出梯度和该输入梯度,更新第二量化范围和第三量化范围,得到第五量化范围和第六量化范围。
终端根据该输入梯度和第二量化范围,更新第二量化范围,得到第五量化范围;根据该输出梯度和第三量化范围,更新第三量化范围,得到第六量化范围。
(3):终端根据该第五量化范围和该第六量化范围,通过该整型卷积运算,确定整型参数的上限值。
(4):终端根据该整型参数的上限值和该参数梯度,更新该第一量化范围,得到第四量化范围。
在本申请实施例中,模型训练采用整型卷积运算和反向卷积运算结合方式,在整型卷积运算过程中,采取输入量化、参数量化、输出量化;反向卷积运算中依据网络学习方式,计算输出梯度、参数梯度和输入梯度,以矫正浮点参数的第四量化范围。由于采用较多迭代次数可以较好地拟合训练数据。其中,终端采用较多迭代次数拟合训练数据如图5所示。另外,整型卷积运算中需要存储中间结果,中间结果位宽选择影响整型卷积运算稳定性、溢出风险,本方案通过数据分析和参数范围调整方法规避了前向运算不稳定因素。
步骤306:终端将浮点模型中的浮点参数的取值范围调整为第四量化范围,得到定点模型。
终端得到定点模型后,可以基于定点模型进行后续定点运算,从而实现将浮点运算转换为定点运算以提高模型卷积运算速度。
需要说明的是,步骤301-306为将浮点模型转换为定点模型的过程,只需要执行一次,后续通过定点模型进行处理时,只需要将定点模型加载到终端或者移动终端中即可,然后执行步骤307-309即可,不需要重复执行步骤301-306。
步骤307:终端获取待处理图像,并确定该待处理图像的特征图。
步骤308:终端通过该定点模型,对该特征图进行多层整型卷积运算,得到定点数据。
本步骤可以通过以下步骤(1)至(3)实现,包括:
(1):终端将所述特征图的特征值和定点模型中的第四量化范围进行整型卷积运算,得到第一层卷积运算结果。
参见图6,终端将该特征图中的特征值和该第四量化范围进行卷积运算,得到第一卷积中间结果,将第一卷积中间结果乘以第一层卷积运算的比例系数,再加上第一层卷积运算的第一偏置项,然后进行移位-截断输出,得到第一层卷积运算结果。
(2):终端将第一层卷积运算结果作为第二层卷积运算的输入,再次进行向前运算,直到进行多层整型卷积运算,得到第N层卷积运算结果,N为多层向前运算的层数。
(3):终端将第N层卷积运算结果作为输出的定点数据。
需要说明的一点是,终端对特征图进行多层浮点卷积运算之前,终端可以先对该特征图进行预处理。其中,预处理可以为特征值的数据类型的转换。例如,将该特征图中的特征值对应的0~255数据转换为-128~127的数据类型。
步骤309:终端将该定点数据还原成浮点数据。
终端将该定点数据乘以还原系数,得到该定点数据对应的浮点数据。其中,该还原系数为将定点数据还原成浮点数据的系数。
在本申请实施例中,本专利属于卷积网络模型(CNN)浮点卷积运算加速方案,将浮点运算转为定点运算以提高模型卷积运算速度。本发明可用于计算机视觉领域的目标检测、语义分割、图像分类等任务。本方案设计时分别采用8bit、8bit和16bit存储参数、输入输出和中间结果,将32/16bit卷积运算调整为8bit卷积运算。因中间结果数据采用16bit存储,本发明通过分析待量化网络参数、中间结果数据等信息,自适应调整参数量化范围,降低模型量化难度和损失。并且,本申请实施例中所有数据采用整型存储和运算,无浮点运算介入,可以提高移动终端的处理速度和效率。
本申请实施例提供了一种神经网络中位宽定点化装置,该装置用于执行以上神经网络中位宽定点化方法中终端执行的步骤。参见图7,该装置包括:
获取模块701,用于获取神经网络对应的浮点模型和多个样本数据;
转换模块702,用于基于所述多个样本数据,对所述浮点模型中的浮点参数、输入数据和输出数据分别进行定点转换,得到所述浮点参数的第一量化范围、所述输入数据的第二量化范围和所述输出数据的第三量化范围;
调整模块703,用于根据所述第一量化范围、所述第二量化范围和所述第三量化范围,基于所述神经网络的整型卷积运算,对所述浮点参数的第一量化范围进行调整,得到第四量化范围;
所述调整模块703,还用于将所述浮点模型中的浮点参数的取值范围调整为所述第四量化范围,得到定点模型。
在一个可能的实现方式中,所述转换模块702,还用于
通过所述浮点模型对所述多个样本数据进行多层浮点卷积运算,得到每层浮点卷积运算的最大输入值和最大输出值;
基于所述每层浮点卷积运算的最大输入值和最大输出值,分别确定所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽;
根据所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽,确定所述输入数据的第二量化范围和所述输出数据的第三量化范围;
根据所述第二量化范围和所述第三量化范围,通过所述反向卷积运算,得到所述浮点参数的第一量化范围。
在另一个可能的实现方式中,所述转换模块702,还用于
基于所述最大输入值和所述最大输出值,分别确定所述最大输入值的第一整数位宽和所述最大输出值的第二整数位宽;
根据存储所述最大输入值的第一总位宽、所述最大输入值的第一符号位宽,和所述第一整数位宽,确定所述最大输入值的第一浮点位宽;
根据存储所述最大输出值的第二总位宽、所述最大输出值的第二符号位宽和所述第二整数位宽,确定所述最大输出值的第二浮点位宽。
在另一个可能的实现方式中,所述调整模块703,还用于
通过所述反向卷积运算和所述多个样本数据,确定输出梯度、参数梯度和输入梯度;
根据所述输出梯度和所述输入梯度,更新所述第二量化范围和所述第三量化范围,得到第五量化范围和第六量化范围;
根据所述第五量化范围和所述第六量化范围,通过所述整型卷积运算,确定所述整型参数的上限值;
根据所述整型参数的上限值和所述参数梯度,更新所述第一量化范围,得到第四量化范围。
在另一个可能的实现方式中,所述装置还包括:
处理模块,用于获取待处理图像,并确定所述待处理图像的特征图;通过所述定点模型,对所述特征图进行多层整型卷积运算,得到定点数据;将所述定点数据还原成浮点数据。
在另一个可能的实现方式中,所述处理模块,还用于
将所述特征图的特征值和所述定点模型中的第四量化范围进行整型卷积运算,得到第一层卷积运算结果;
将所述第一层卷积运算结果作为第二层卷积运算的输入,再次进行整型卷积运算,直到进行多层整型卷积运算,得到第N层卷积运算结果,N为多层向前运算的层数;
将所述第N层卷积运算结果作为所述定点数据。
在另一个可能的实现方式中,所述处理模块,还用于
确定将定点数据转换为浮点数据的比例系数;
将所述定点数据乘以所述比例系数,得到所述浮点数据。
在本申请实施例中,通过浮点模型和多个样本数据,对浮点模型的浮点参数进行量化,并将浮点模型转换为定点模型,实现将浮点运算转为定点运算,提高模型卷积运算速度,从而在将卷积神经网络的算法部署至移动终端时,不仅降低了移动终端的内存资源、硬盘存储资源和电量的消耗,还提高了移动终端的运行速度。进一步的,由于根据浮点参数的第一量化范围、输入数据的第二量化范围和输出数据的第三量化范围,对浮点参数的第一量化范围进行调整,从而能够自适应调整浮点参数的量化范围,降低模型量化难度和损失,进一步提高了模型卷积运算速度。
需要说明的是:上述实施例提供的神经网络中位宽定点化装置在神经网络中位宽定点化时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的神经网络中位宽定点化装置与神经网络中位宽定点化方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本申请实施例提供的一种终端800的结构示意图。例如,该终端800可以用于执行上述各个实施例中提供的神经网络中位宽定点化方法。参见图8,该终端800包括:
终端800可以包括RF(Radio Frequency,射频)电路810、包括有一个或一个以上计算机可读存储介质的存储器820、输入单元830、显示单元840、传感器850、音频电路860、WiFi(Wireless Fidelity,无线保真)模块870、包括有一个或者一个以上处理核心的处理器880、以及电源890等部件。本领域技术人员可以理解,图8中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路810可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器880处理;另外,将涉及上行的数据发送给基站。通常,RF电路810包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路810还可以通过无线通信与网络和其他设备通信。该无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器820可用于存储软件程序以及模块,处理器880通过运行存储在存储器820的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器820可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端800的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器820还可以包括存储器控制器,以提供处理器880和输入单元830对存储器820的访问。
输入单元830可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元830可包括触敏表面831以及其他输入设备832。触敏表面831,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面831上或在触敏表面831附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面831可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器880,并能接收处理器880发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面831。除了触敏表面831,输入单元830还可以包括其他输入设备832。具体地,其他输入设备832可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元840可用于显示由用户输入的信息或提供给用户的信息以及终端800的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元840可包括显示面板841,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板841。进一步的,触敏表面831可覆盖显示面板841,当触敏表面831检测到在其上或附近的触摸操作后,传送给处理器880以确定触摸事件的类型,随后处理器880根据触摸事件的类型在显示面板841上提供相应的视觉输出。虽然在图8中,触敏表面831与显示面板841是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面831与显示面板841集成而实现输入和输出功能。
终端800还可包括至少一种传感器880,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板841的亮度,接近传感器可在终端800到耳边时,关闭显示面板841和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端800还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路860、扬声器861,传声器862可提供用户与终端800之间的音频接口。音频电路860可将接收到的音频数据转换后的电信号,传输到扬声器861,由扬声器861转换为声音信号输出;另一方面,传声器862将收集的声音信号转换为电信号,由音频电路860接收后转换为音频数据,再将音频数据输出处理器880处理后,经RF电路810以发送给比如另一终端,或者将音频数据输出至存储器820以便进一步处理。音频电路860还可能包括耳塞插孔,以提供外设耳机与终端800的通信。
WiFi属于短距离无线传输技术,终端800通过WiFi模块870可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了WiFi模块870,但是可以理解的是,其并不属于终端800的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。
处理器880是终端800的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器820内的软件程序和/或模块,以及调用存储在存储器820内的数据,执行终端800的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器880可包括一个或多个处理核心;优选的,处理器880可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器880中。
终端800还包括给各个部件供电的电源890(比如电池),优选的,电源可以通过电源管理系统与处理器880逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源890还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端800还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。该一个或者一个以上程序包含用于执行上述所示实施例所示的方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质应用于终端,该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该指令、该程序、该代码集或该指令集由处理器加载并执行以实现上述实施例的神经网络中位宽定点化方法中终端所执行的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种神经网络中位宽定点化方法,其特征在于,所述神经网络用于实现图像分类任务、图像语义分割任务、以及目标检测任务中的任一种;所述方法包括:
获取所述神经网络对应的浮点模型和多个样本图像;
通过所述浮点模型对所述多个样本图像进行多层浮点卷积运算,得到每层浮点卷积运算的最大输入值和最大输出值;其中,所述最大输入值为输入至该层中的所述多个样本图像的特征图中的最大特征值,所述最大输出值为该层输出的所述多个样本图像的特征图中的最大特征值;
基于所述每层浮点卷积运算的最大输入值和最大输出值,分别确定所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽;
根据所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽,确定所述神经网络各层的输入数据的第二量化范围和所述神经网络各层的输出数据的第三量化范围;
根据所述第二量化范围和所述第三量化范围,通过反向卷积运算,得到所述浮点参数的第一量化范围;
根据所述第一量化范围、所述第二量化范围和所述第三量化范围,基于所述神经网络的整型卷积运算,对所述浮点参数的第一量化范围进行调整,得到第四量化范围;
将所述浮点模型中的浮点参数的取值范围调整为所述第四量化范围,得到定点模型。
2.根据权利要求1所述的方法,其特征在于,所述基于所述每层算法的最大输入值和最大输出值,分别确定所述最大输入值的第一浮点位宽和所述最大输出值的第二浮点位宽,包括:
基于所述最大输入值和所述最大输出值,分别确定所述最大输入值的第一整数位宽和所述最大输出值的第二整数位宽;
根据存储所述最大输入值的第一总位宽、所述最大输入值的第一符号位宽,和所述第一整数位宽,确定所述最大输入值的第一浮点位宽;
根据存储所述最大输出值的第二总位宽、所述最大输出值的第二符号位宽和所述第二整数位宽,确定所述最大输出值的第二浮点位宽。
3.根据权利要求1所述的方法,其特征在于,所述根据所述第一量化范围、所述第二量化范围和所述第三量化范围,基于所述神经网络的整型卷积运算,对所述浮点参数的第一量化范围进行调整,得到第四量化范围,包括:
通过反向卷积运算和所述多个样本数据,确定输出梯度、参数梯度和输入梯度;
根据所述输出梯度和所述输入梯度,更新所述第二量化范围和所述第三量化范围,得到第五量化范围和第六量化范围;
根据所述第五量化范围和所述第六量化范围,通过所述整型卷积运算,确定所述整型参数的上限值;
根据所述整型参数的上限值和所述参数梯度,更新所述第一量化范围,得到第四量化范围。
4.根据权利要求1所述的方法,其特征在于,所述将所述浮点模型中的浮点参数的取值范围调整为所述第四量化范围,得到定点模型之后,所述方法还包括:
获取待处理图像,并确定所述待处理图像的特征图;
通过所述定点模型,对所述特征图进行多层整型卷积运算,得到定点数据;
将所述定点数据还原成浮点数据。
5.根据权利要求4所述的方法,其特征在于,所述通过所述定点模型,对所述特征图进行多层整型卷积运算,得到定点数据,包括:
将所述特征图的特征值和所述定点模型中的第四量化范围进行整型卷积运算,得到第一层卷积运算结果;
将所述第一层卷积运算结果作为第二层卷积运算的输入,再次进行整型卷积运算,直到进行多层整型卷积运算,得到第N层卷积运算结果,N为多层向前运算的层数;
将所述第N层卷积运算结果作为所述定点数据。
6.根据权利要求4所述的方法,其特征在于,所述将所述定点数据还原成浮点数据,包括:
确定将定点数据转换为浮点数据的比例系数;
将所述定点数据乘以所述比例系数,得到所述浮点数据。
7.一种神经网络中位宽定点化装置,其特征在于,所述神经网络用于实现图像分类任务、图像语义分割任务、以及目标检测任务中的任一种;所述装置包括:
获取模块,用于获取所述神经网络对应的浮点模型和多个样本图像;
转换模块,用于通过所述浮点模型对所述多个样本图像进行多层浮点卷积运算,得到每层浮点卷积运算的最大输入值和最大输出值;其中,所述最大输入值为输入至该层中的所述多个样本图像的特征图中的最大特征值,所述最大输出值为该层输出的所述多个样本图像的特征图中的最大特征值;基于所述每层浮点卷积运算的最大输入值和最大输出值,分别确定所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽;根据所述每层浮点卷积运算的最大输入值的第一浮点位宽和最大输出值的第二浮点位宽,确定所述神经网络各层的输入数据的第二量化范围和所述神经网络各层的输出数据的第三量化范围;根据所述第二量化范围和所述第三量化范围,通过反向卷积运算,得到所述浮点参数的第一量化范围;
调整模块,用于根据所述第一量化范围、所述第二量化范围和所述第三量化范围,基于所述神经网络的整型卷积运算,对所述浮点参数的第一量化范围进行调整,得到第四量化范围;以及将所述浮点模型中的浮点参数的取值范围调整为所述第四量化范围,得到定点模型。
8.根据权利要求7所述的装置,其特征在于,所述转换模块,还用于
基于所述最大输入值和所述最大输出值,分别确定所述最大输入值的第一整数位宽和所述最大输出值的第二整数位宽;
根据存储所述最大输入值的第一总位宽、所述最大输入值的第一符号位宽,和所述第一整数位宽,确定所述最大输入值的第一浮点位宽;
根据存储所述最大输出值的第二总位宽、所述最大输出值的第二符号位宽和所述第二整数位宽,确定所述最大输出值的第二浮点位宽。
9.根据权利要求7所述的装置,其特征在于,所述调整模块,还用于
通过反向卷积运算和所述多个样本数据,确定输出梯度、参数梯度和输入梯度;
根据所述输出梯度和所述输入梯度,更新所述第二量化范围和所述第三量化范围,得到第五量化范围和第六量化范围;
根据所述第五量化范围和所述第六量化范围,通过所述整型卷积运算,确定所述整型参数的上限值;
根据所述整型参数的上限值和所述参数梯度,更新所述第一量化范围,得到第四量化范围。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
处理模块,用于获取待处理图像,并确定所述待处理图像的特征图;通过所述定点模型,对所述特征图进行多层整型卷积运算,得到定点数据;将所述定点数据还原成浮点数据。
11.根据权利要求10所述的装置,其特征在于,所述处理模块,还用于
将所述特征图的特征值和所述定点模型中的第四量化范围进行整型卷积运算,得到第一层卷积运算结果;
将所述第一层卷积运算结果作为第二层卷积运算的输入,再次进行整型卷积运算,直到进行多层整型卷积运算,得到第N层卷积运算结果,N为多层向前运算的层数;
将所述第N层卷积运算结果作为所述定点数据。
12.根据权利要求10所述的装置,其特征在于,所述处理模块,还用于确定将定点数据转换为浮点数据的比例系数;
将所述定点数据乘以所述比例系数,得到所述浮点数据。
13.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1至6任一权利要求所述的神经网络中位宽定点化方法中所执行的操作。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1至6任一权利要求所述的神经网络中位宽定点化方法中所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811095811.9A CN110929838B (zh) | 2018-09-19 | 2018-09-19 | 神经网络中位宽定点化方法、装置、终端和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811095811.9A CN110929838B (zh) | 2018-09-19 | 2018-09-19 | 神经网络中位宽定点化方法、装置、终端和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110929838A CN110929838A (zh) | 2020-03-27 |
CN110929838B true CN110929838B (zh) | 2023-09-26 |
Family
ID=69856080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811095811.9A Active CN110929838B (zh) | 2018-09-19 | 2018-09-19 | 神经网络中位宽定点化方法、装置、终端和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110929838B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111723934B (zh) * | 2020-06-24 | 2022-11-01 | 北京紫光展锐通信技术有限公司 | 图像处理方法及系统、电子设备及存储介质 |
CN111860841B (zh) * | 2020-07-28 | 2023-11-14 | Oppo广东移动通信有限公司 | 量化模型的优化方法、装置、终端及存储介质 |
CN111860405A (zh) * | 2020-07-28 | 2020-10-30 | Oppo广东移动通信有限公司 | 图像识别模型的量化方法、装置、计算机设备及存储介质 |
CN112101284A (zh) * | 2020-09-25 | 2020-12-18 | 北京百度网讯科技有限公司 | 图像识别方法、图像识别模型的训练方法、装置及系统 |
CN112269595B (zh) * | 2020-10-28 | 2024-09-24 | 清华大学 | 图像处理方法、装置、计算机设备及存储介质 |
US12112265B2 (en) | 2020-12-18 | 2024-10-08 | Analog Devices International Unlimited Company | Architecture for running convolutional networks on memory and mips constrained embedded devices |
CN112686031B (zh) * | 2020-12-24 | 2023-09-08 | 北京有竹居网络技术有限公司 | 文本特征提取模型的量化方法、装置、设备及存储介质 |
JP7512914B2 (ja) | 2021-01-26 | 2024-07-09 | 株式会社デンソー | ニューラルネットワーク量子化方法、装置及びプログラム |
CN113011569B (zh) * | 2021-04-07 | 2024-06-18 | 开放智能机器(上海)有限公司 | 离线量化参数加注方法、装置、电子设备和存储介质 |
CN113593538B (zh) * | 2021-09-02 | 2024-05-03 | 北京声智科技有限公司 | 语音特征的分类方法、相关设备及可读存储介质 |
CN113747155B (zh) * | 2021-09-06 | 2022-08-19 | 中国电信股份有限公司 | 特征量化方法和装置、编码器、通信系统 |
CN116720563B (zh) * | 2022-09-19 | 2024-03-29 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320495A (zh) * | 2014-07-22 | 2016-02-10 | 英特尔公司 | 用于卷积神经网络的权重移位机制 |
CN106845640A (zh) * | 2017-01-12 | 2017-06-13 | 南京大学 | 基于深度卷积神经网络的层内非均匀的等间隔定点量化方法 |
CN106897734A (zh) * | 2017-01-12 | 2017-06-27 | 南京大学 | 基于深度卷积神经网络的层内非均匀的k平均聚类定点量化方法 |
CN107992329A (zh) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
CN108345939A (zh) * | 2017-01-25 | 2018-07-31 | 微软技术许可有限责任公司 | 基于定点运算的神经网络 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10643124B2 (en) * | 2016-08-12 | 2020-05-05 | Beijing Deephi Intelligent Technology Co., Ltd. | Method and device for quantizing complex artificial neural network |
-
2018
- 2018-09-19 CN CN201811095811.9A patent/CN110929838B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320495A (zh) * | 2014-07-22 | 2016-02-10 | 英特尔公司 | 用于卷积神经网络的权重移位机制 |
CN106845640A (zh) * | 2017-01-12 | 2017-06-13 | 南京大学 | 基于深度卷积神经网络的层内非均匀的等间隔定点量化方法 |
CN106897734A (zh) * | 2017-01-12 | 2017-06-27 | 南京大学 | 基于深度卷积神经网络的层内非均匀的k平均聚类定点量化方法 |
CN108345939A (zh) * | 2017-01-25 | 2018-07-31 | 微软技术许可有限责任公司 | 基于定点运算的神经网络 |
WO2018140294A1 (en) * | 2017-01-25 | 2018-08-02 | Microsoft Technology Licensing, Llc | Neural network based on fixed-point operations |
CN107992329A (zh) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
Non-Patent Citations (2)
Title |
---|
Optimization of a Neural NetWOrk for Computer Vision Based Fall Detection With Fixed-Point Arithmetic;Christoph Sulzbachner 等;《Neural Information Processing》;18-26 * |
基于仿射算术的位宽优化方法研究;张启荣;《中国优秀硕士学位论文全文数据库信息科技辑》;I137-81 * |
Also Published As
Publication number | Publication date |
---|---|
CN110929838A (zh) | 2020-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110929838B (zh) | 神经网络中位宽定点化方法、装置、终端和存储介质 | |
CN108430101B (zh) | 天线关闭方法、装置、存储介质和电子设备 | |
CN106786962B (zh) | 充电控制方法、装置及终端 | |
CN109583271B (zh) | 一种对车道线进行拟合的方法、装置及终端 | |
CN108418969B (zh) | 天线馈点的切换方法、装置、存储介质和电子设备 | |
CN106296634B (zh) | 一种检测相似图像的方法和装置 | |
CN107219951B (zh) | 触控屏控制方法、装置、存储介质及终端设备 | |
CN108564539B (zh) | 一种显示图像的方法和装置 | |
CN107452399B (zh) | 音频特征提取方法及装置 | |
CN116610372B (zh) | 一种中央处理器配置方法、装置及相关产品 | |
CN116486833B (zh) | 音频增益调整方法、装置、存储介质及电子设备 | |
CN107122036B (zh) | 中央处理器频率调节方法及装置 | |
CN105184750A (zh) | 一种在移动终端对实时视频图像去噪的方法和装置 | |
CN111081198B (zh) | 数据控制方法、数据控制装置、存储介质及终端设备 | |
CN110995324B (zh) | 蓝牙通信方法、装置、存储介质及终端设备 | |
CN108900361B (zh) | 云资源配置确定方法、装置及电子设备 | |
CN112131482A (zh) | 一种时效确定方法和相关装置 | |
CN111447633B (zh) | 网络列表生成方法、装置、移动终端和存储介质 | |
CN112733573B (zh) | 表格检测方法、装置、移动终端及存储介质 | |
CN116030821A (zh) | 音频处理方法、装置、电子设备及可读存储介质 | |
CN109617660B (zh) | 载波聚合频段的设置方法、装置、存储介质及移动终端 | |
CN109714755B (zh) | 参数存储方法、装置、移动终端及存储介质 | |
CN111277642B (zh) | 增强信息传输速度方法及装置、存储介质、移动终端 | |
CN112106034B (zh) | 一种用于神经网络的卷积方法及装置 | |
CN109495417B (zh) | 载波信号处理方法、装置及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |