CN115526310A - 一种网络模型的量化方法、装置及设备 - Google Patents
一种网络模型的量化方法、装置及设备 Download PDFInfo
- Publication number
- CN115526310A CN115526310A CN202211177115.9A CN202211177115A CN115526310A CN 115526310 A CN115526310 A CN 115526310A CN 202211177115 A CN202211177115 A CN 202211177115A CN 115526310 A CN115526310 A CN 115526310A
- Authority
- CN
- China
- Prior art keywords
- value
- network layer
- bit width
- floating point
- quantized
- 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
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000011002 quantification Methods 0.000 title abstract description 14
- 238000007667 floating Methods 0.000 claims abstract description 239
- 230000004913 activation Effects 0.000 claims description 132
- 238000012545 processing Methods 0.000 claims description 30
- 238000013139 quantization Methods 0.000 claims description 23
- 238000013473 artificial intelligence Methods 0.000 description 28
- 230000008569 process Effects 0.000 description 28
- 238000010801 machine learning Methods 0.000 description 22
- 238000001514 detection method Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 238000012549 training Methods 0.000 description 13
- 238000013528 artificial neural network Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000012015 optical character recognition Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000005284 excitation Effects 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000013178 mathematical model Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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
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)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提供一种网络模型的量化方法、装置及设备,该方法包括:将第一精度浮点型输入特征输入给待量化网络层得到第一输出特征;基于超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值、第一精度浮点型输入特征对应的第二精度浮点型输入特征;确定待量化网络层对应的量化后网络层,量化后网络层采用第二精度浮点型参数值;将第二精度浮点型输入特征输入给量化后网络层得到超参组合对应的第二输出特征;基于第一输出特征与每个超参组合对应的第二输出特征的相似度,将最大相似度对应的超参组合对应的第二精度浮点型参数值更新为待量化网络层的目标参数值,得到待量化网络层对应的目标网络层。通过本申请方案,节省存储资源和计算资源。
Description
技术领域
本申请涉及人工智能领域,尤其是一种网络模型的量化方法、装置及设备。
背景技术
机器学习是实现人工智能的一种途径,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机器学习用于研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习更加注重算法设计,使计算机能够自动地从数据中学习规律,并利用规律对未知数据进行预测。
机器学习已经有了十分广泛的应用,如深度学习、数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、语音和手写识别等。
为了采用机器学习实现人工智能处理,服务器需要获取大量样本数据,并基于这些样本数据训练出机器学习模型,并将该机器学习模型部署到终端设备(如摄像机等),以使终端设备基于该机器学习模型实现人工智能处理。
终端设备基于机器学习模型实现人工智能处理时,终端设备需要存储机器学习模型,而机器学习模型通常会占用终端设备的大量存储资源。终端设备基于机器学习模型实现人工智能处理时,需要运行机器学习模型,而运行机器学习模型通常会占用终端设备的大量计算资源,运算量很大,且终端设备的资源消耗很大,很难在计算资源有限的终端设备上运行机器学习模型。
发明内容
本申请提供一种网络模型的量化方法,针对初始网络模型中每个待量化网络层,所述待量化网络层采用第一精度浮点型参数值,所述方法包括:
将第一精度浮点型输入特征输入给待量化网络层得到第一输出特征;
获取多个超参组合,每个超参组合均包括指数位宽、尾数位宽和指数偏移;
针对每个超参组合,基于所述超参组合确定所述第一精度浮点型参数值对应的第二精度浮点型参数值、所述第一精度浮点型输入特征对应的第二精度浮点型输入特征,第二精度低于第一精度;确定待量化网络层对应的量化后网络层,所述量化后网络层采用所述第二精度浮点型参数值;将所述第二精度浮点型输入特征输入给量化后网络层得到所述超参组合对应的第二输出特征;
基于所述第一输出特征与每个超参组合对应的第二输出特征的相似度,将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为所述待量化网络层的目标参数值,得到所述待量化网络层对应的目标网络层。
本申请提供一种网络模型的量化装置,针对初始网络模型中每个待量化网络层,所述待量化网络层采用第一精度浮点型参数值,所述装置包括:
获取模块,用于将第一精度浮点型输入特征输入给待量化网络层得到第一输出特征,并获取多个超参组合,每个超参组合均包括指数位宽、尾数位宽和指数偏移,指数位宽和尾数位宽是基于已获取的总比特位宽确定;
确定模块,用于针对每个超参组合,基于所述超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值、第一精度浮点型输入特征对应的第二精度浮点型输入特征,第二精度低于第一精度;确定待量化网络层对应的量化后网络层,所述量化后网络层采用所述第二精度浮点型参数值;将第二精度浮点型输入特征输入给量化后网络层得到所述超参组合对应的第二输出特征;
处理模块,用于基于第一输出特征与每个超参组合对应的第二输出特征的相似度,将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为所述待量化网络层的目标参数值,得到所述待量化网络层对应的目标网络层。
本申请提供一种电子设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述的网络模型的量化方法。
由以上技术方案可见,本申请实施例中,将初始网络模型中每个待量化网络层的第一精度浮点型参数值转换为第二精度浮点型参数值,得到待量化网络层对应的目标网络层,而所有目标网络层组成目标网络模型,基于目标网络模型实现人工智能处理,且目标网络模型采用第二精度浮点型参数值。由于第二精度低于第一精度,因此,终端设备存储目标网络模型时,只占用终端设备的少量存储资源,与存储初始网络模型相比,能够节省存储资源。终端设备运行目标网络模型时,只占用终端设备的少量计算资源,运算量比较小,且终端设备的资源消耗小,能够在计算资源有限的终端设备上运行目标网络模型,与运行初始网络模型相比,能够节省计算资源。显然,通过将初始网络模型转换为更低精度的目标网络模型,能够减少内存带宽和存储要求,提高计算效率。
附图说明
图1是本申请一种实施方式中的网络模型的量化方法的流程示意图;
图2是本申请一种实施方式中的人工智能场景的示意图;
图3是本申请一种实施方式中的网络模型的量化方法的流程示意图;
图4是本申请一种实施方式中的初始网络模型的结构示意图;
图5是本申请一种实施方式中的系统结构示意图;
图6是本申请一种实施方式中的网络模型的量化装置的结构示意图;
图7是本申请一种实施方式中的电子设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种网络模型的量化方法,用于对初始网络模型进行量化,得到已量化的目标网络模型。其中,初始网络模型可以包括多个网络层,可以从所有网络层中选取出需要进行量化的网络层,将这些网络层记为待量化网络层,可以对每个待量化网络层进行量化,得到该待量化网络层对应的目标网络层。将初始网络模型中的待量化网络层替换为该待量化网络层对应的目标网络层之后,就可以将调整后的网络模型作为目标网络模型。
本实施例中的网络模型的量化方法,用于对初始网络模型中的每个待量化网络层进行量化,参见图1所示,为该方法的流程示意图,针对每个待量化网络层,该待量化网络层采用第一精度浮点型参数值,该方法可以包括:
步骤101、将第一精度浮点型输入特征输入给待量化网络层得到第一输出特征。示例性的,该第一精度浮点型输入特征可以是该待量化网络层对应的输入特征,该第一输出特征可以是该待量化网络层对应的输出特征。
步骤102、获取多个超参组合,每个超参组合均包括指数位宽、尾数位宽和指数偏移,不同超参组合不完全相同,即不同超参组合中的至少一个超参不同。
在一种可能的实施方式中,可以从已配置的指数位宽集合中搜索出指数位宽,基于该指数位宽和已获取的总比特位宽确定尾数位宽;或者,从已配置的尾数位宽集合中搜索出尾数位宽,基于该尾数位宽和已获取的总比特位宽确定指数位宽。以及,从偏移值集合中搜索出偏移值,基于基准偏移和该偏移值确定指数偏移。可以基于该指数位宽、该尾数位宽和该指数偏移确定出超参组合。
示例性的,基于该指数位宽和已获取的总比特位宽确定尾数位宽,可以包括但不限于:确定总比特位宽与符号位比特数的第一差值,确定第一差值与该指数位宽的第二差值,并基于第二差值确定尾数位宽,如将该第二差值作为该尾数位宽。基于该尾数位宽和已获取的总比特位宽确定指数位宽,可以包括但不限于:确定总比特位宽与符号位比特数的第一差值,确定第一差值与该尾数位宽的第三差值,并基于第三差值确定指数位宽,如将该第三差值作为该指数位宽。其中,该符号位比特数可以为固定数值,如该符号位比特数可以为1。
示例性的,基于基准偏移和该偏移值确定指数偏移之前,还可以采用如下步骤确定该基准偏移:将样本数据输入给初始网络模型,得到每个待量化网络层对应的激活值集合,该激活值集合可以包括多个激活值;针对每个待量化网络层,从该待量化网络层对应的激活值集合中选取该待量化网络层对应的目标激活值。基于每个待量化网络层对应的目标激活值确定该基准偏移;其中,该基准偏移为使各待量化网络层对应的目标激活值均小于目标最大值的指数偏移,且该目标最大值为该指数偏移对应的浮点数可表示的最大值。
示例性的,从该待量化网络层对应的激活值集合中选取该待量化网络层对应的目标激活值,可以包括但不限于:可以按照从小到大的顺序对该激活值集合中的所有激活值进行排序,基于第一比例阈值和该激活值集合中的激活值总数量确定出第一截断值,并将位于该第一截断值前面的激活值确定为该目标激活值;或者,可以按照从大到小的顺序对该激活值集合中的所有激活值进行排序,基于第二比例阈值和该激活值集合中的激活值总数量确定出第二截断值,并将位于该第二截断值前面的激活值确定为该目标激活值。
步骤103、针对每个超参组合,基于该超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值、第一精度浮点型输入特征对应的第二精度浮点型输入特征,第二精度可以低于第一精度。确定待量化网络层对应的量化后网络层,该量化后网络层采用第二精度浮点型参数值;将第二精度浮点型输入特征输入给量化后网络层得到该超参组合对应的第二输出特征。
在一种可能的实施方式中,基于该超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值、第一精度浮点型输入特征对应的第二精度浮点型输入特征,可以包括但不限于:基于该第一精度浮点型参数值、该超参组合中的指数位宽、尾数位宽和指数偏移,确定第一尾数数值和第一指数数值;可以基于该第一尾数数值、该第一指数数值和该指数偏移,确定第二精度浮点型参数值。基于该第一精度浮点型输入特征、该超参组合中的指数位宽、尾数位宽和指数偏移,确定第二尾数数值和第二指数数值;可以基于该第二尾数数值、该第二指数数值和该指数偏移,确定第二精度浮点型输入特征。
步骤104、基于第一输出特征与每个超参组合对应的第二输出特征的相似度,将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为该待量化网络层的目标参数值,得到该待量化网络层对应的目标网络层。
示例性的,在步骤104之前,针对每个超参组合,还可以确定第一输出特征与该超参组合对应的第二输出特征之间的相似度,其中,该相似度可以包括但不限于余弦相似度,即确定第一输出特征与第二输出特征之间的余弦相似度。
示例性的,在步骤104之后,可以将样本特征输入给目标网络层,得到目标网络层对应的反向梯度值,反向梯度值为第一精度浮点型的反向梯度值,反向梯度值用于对目标网络层中的目标参数值进行调整。可以将第一精度浮点型的反向梯度值转换为第二精度浮点型的反向梯度值,基于第二精度浮点型的反向梯度值对目标网络层中的目标参数值进行调整,得到调整后的目标网络层。
由以上技术方案可见,本申请实施例中,将初始网络模型中每个待量化网络层的第一精度浮点型参数值转换为第二精度浮点型参数值,得到待量化网络层对应的目标网络层,而所有目标网络层组成目标网络模型,基于目标网络模型实现人工智能处理,且目标网络模型采用第二精度浮点型参数值。由于第二精度低于第一精度,因此,终端设备存储目标网络模型时,只占用终端设备的少量存储资源,与存储初始网络模型相比,能够节省存储资源。终端设备运行目标网络模型时,只占用终端设备的少量计算资源,运算量比较小,且终端设备的资源消耗小,能够在计算资源有限的终端设备上运行目标网络模型,与运行初始网络模型相比,能够节省计算资源。显然,通过将初始网络模型转换为更低精度的目标网络模型,能够减少内存带宽和存储要求,提高计算效率。
以下结合具体应用场景,对本申请实施例的技术方案进行说明。
在介绍本申请的技术方案之前,先介绍与本申请实施例有关的概念。
机器学习:机器学习是实现人工智能的一种途径,用于研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能。深度学习和神经网络属于机器学习的子类,深度学习是一种使用数学模型对真实世界中的特定问题进行建模,以解决该领域内相似问题的过程。神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,这种神经网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。为了方便描述,以神经网络的结构和功能为例,机器学习的其它子类与神经网络的结构和功能类似。
神经网络:神经网络可以包括但不限于卷积神经网络(简称CNN)、循环神经网络(简称RNN)、全连接网络等,神经网络的结构单元可以包括但不限于卷积层(Conv)、池化层(Pool)、激励层、全连接层(FC)等。
在实际应用中,可以根据不同需求,将一个或多个卷积层,一个或多个池化层,一个或多个激励层,以及一个或多个全连接层进行组合构建神经网络。
网络模型:可以预先训练一个网络模型,将训练后的网络模型称为初始网络模型,初始网络模型可以是机器学习模型,如基于深度学习的机器学习模型或者基于神经网络的机器学习模型,对此不做限制。针对初始网络模型的训练过程,可以利用样本数据(如样本图像数据)训练得到初始网络模型,也就是对网络模型中的网络参数(即模型权重)进行调整优化的过程。比如说,网络模型包括多个网络层,每个网络层均包括需要进行调整优化的网络参数,如网络参数可以是卷积层参数(如卷积核参数)、池化层参数、激励层参数、全连接层参数等,可以利用样本数据对网络模型的多个网络层中的网络参数进行调整优化。在网络模型训练完成后,已经完成训练的网络模型称为初始网络模型。
在得到初始网络模型之后,则可以将初始网络模型部署到终端设备,以使终端设备基于初始网络模型实现人工智能处理。比如说,初始网络模型可以广泛应用于人工智能的各业务场景,例如,图像分类、目标检测、分割、姿态估计等业务场景,以目标检测为例,终端设备可以基于初始网络模型实现人脸检测、人体检测、车辆检测等功能,例如,针对人脸检测功能来说,可以将包括人脸的图像输入给初始网络模型,终端设备通过初始网络模型对该图像进行人工智能处理,而人工智能处理结果就是人脸检测结果。针对车辆检测功能来说,可以将包括车辆的图像输入给初始网络模型,终端设备通过初始网络模型对该图像进行人工智能处理,而人工智能处理结果就是车辆检测结果。
终端设备基于初始网络模型实现人工智能处理时,终端设备需要存储初始网络模型,而初始网络模型通常会占用终端设备的大量存储资源。终端设备基于初始网络模型实现人工智能处理时,需要运行初始网络模型,而运行初始网络模型通常会占用终端设备的大量计算资源,运算量很大,且终端设备的资源消耗很大,很难在计算资源有限的终端设备上运行初始网络模型。
比如说,初始网络模型中每个网络层的网络参数均为32位精度的浮点型参数值(即高精度的浮点型参数值),而32位精度的浮点型参数值会占用大量存储资源,因此,在存储初始网络模型时,就会占用终端设备的大量存储资源。此外,在采用32位精度的浮点型参数值进行运算时,会占用大量存储资源,运算量很大,因此,在运行初始网络模型时,就会占用终端设备的大量计算资源。
初始网络模型的量化:为了节省终端设备的存储资源和计算资源,还可以对初始网络模型进行量化,将32位精度的浮点型参数值转换为定点型参数值(如8位的定点型参数值),也就是说,将浮点数表示的网络参数(即初始网络模型中各网络层的网络参数)、浮点数表示的输入特征和浮点数表示的输出特征,使用定点值近似表示,即使用定点值近似表示网络参数、使用定点值近似表示输入特征、使用定点值近似表示输出特征,从而能够提高初始网络模型的运算速度,对初始网络模型进行压缩,节省终端设备的存储资源和计算资源。
比如说,初始网络模型可以包括大量网络参数(如数百万等),这些网络参数均是32位精度的浮点型参数值,32位精度的浮点型参数值会占用大量存储空间,32位精度的浮点型参数值的运算会消耗大量计算资源,由此引入量化技术,即通过减少表示每个网络参数所需的比特数来压缩初始网络模型,基于量化技术,能够将浮点数类型的网络参数转换为定点数类型的网络参数,采用定点数类型的网络参数进行计算时,能够提高计算速度,节约计算资源,节省存储空间。例如,针对初始网络模型的同一个网络层(如卷积层,池化层,激励层等),该网络层的网络参数分布在一个较小区间内,如区间[-10,30],-10表示该网络层的网络参数的最小值,30表示该网络层的网络参数的最大值。基于此,在采用8位数量化(可以有其它选择)的情况下,可以将该网络层的所有网络参数都线性映射(也可以采用非线性映射以压缩空间)到区间[-10,30]。
在上述量化方式中,能够将32位精度的浮点型参数值转换为8位的定点型参数值,采用8位的定点型参数值近似表示初始网络模型中的网络参数。显然,由于是近似表示初始网络模型中的网络参数,无法准确表示初始网络模型中的网络参数,在采用初始网络模型实现人工智能处理时,可能导致初始网络模型的输出结果出现错误,即8位的定点型参数值导致输出结果出现错误。
针对上述发现,本申请实施例中,在初始网络模型的量化过程中,可以对初始网络模型进行量化,将32位精度(即第一精度)的浮点型参数值转换为低精度(即第二精度)的浮点型参数值,低精度的浮点型参数值可以是小于32位精度的浮点型参数值,如24位精度的浮点型参数值、16位精度的浮点型参数值、12位精度的浮点型参数值等,对此不做限制,只要小于32位精度即可。比如说,针对32位精度浮点数表示的网络参数(即初始网络模型中各网络层的网络参数),可以使用低精度浮点数(如24位精度浮点数)表示该网络参数;针对32位精度浮点数表示的输入特征,可以使用低精度浮点数表示该输入特征;针对32位精度浮点数表示的输出特征,可以使用低精度浮点数表示该输出特征。
基于上述量化过程,可以将32位精度的浮点型参数值转换为低精度的浮点型参数值,从而通过减少表示每个网络参数所需的比特数来压缩初始网络模型,能够对初始网络模型进行压缩表示,这样,能够提高初始网络模型的运算速度,节省终端设备的存储资源和计算资源,并节省终端设备的存储空间。
综上所述,本申请实施例中提出的网络模型的量化方法,通过将32位精度的浮点型参数值转换为低精度的浮点型参数值(低精度的浮点型参数值通常是指长度小于32比特的浮点型参数值)进行存储和计算,从而能够节省终端设备的存储资源和计算资源,可以广泛应用到各人工智能的业务场景中,如对于图像分类、目标检测、分割、姿态估计等任务进行人工智能处理,能够将网络模型的计算工作部署在计算资源受限的终端设备(如嵌入式设备)上。
本实施例中,在对初始网络模型进行量化之后,将量化后的网络模型称为目标网络模型,目标网络模型可以部署到终端设备,终端设备可以是任意硬件设备,如采用CPU的硬件设备、采用GPU的硬件设备、采用ASIC芯片的硬件设备、采用CPLD芯片的硬件设备、采用FPGA芯片的硬件设备等,对此终端设备的类型不做限制。目标网络模型可以应用在目标检测、图像分类、分割、姿态估计等领域,以下结合几个应用场景对目标网络模型的使用进行说明。
应用场景1:车牌识别场景。车牌识别是指能够检测到车辆并自动提取车牌信息(含汉字字符、英文字母、阿拉伯数字及车牌颜色)进行处理的技术,车牌识别是智能交通系统的重要组成部分,以数字图像处理、模式识别、计算机视觉等技术为基础,对摄像机采集的车辆图像或者视频序列进行分析,得到车牌标识,从而完成识别过程。车牌识别的主要步骤包括:定位图像中的车牌位置、将车牌中的字符分割出来,对分割好的字符进行识别,最终组成车牌标识。
示例性的,可以基于目标网络模型实现车牌识别,比如说,获取摄像机采集的车辆图像,将车辆图像输入给目标网络模型,由目标网络模型定位图像中的车牌位置、将车牌中的字符分割出来,对分割好的字符进行识别,最终组成车牌标识,这样,目标网络模型可以输出车牌标识,完成车牌识别过程。
应用场景2:OCR(Optical Character Recognition,光学字符识别)文字识别场景。OCR文字识别是指设备(如扫描仪或数码相机等)检查纸上打印的字符,然后用字符识别方法将形状翻译成计算机文字的过程,即,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。
示例性的,可以基于目标网络模型实现OCR文字识别,比如说,获取文本资料对应的文本图像(即对文本资料进行扫描得到的图像),将文本图像输入给目标网络模型,由目标网络模型对文字特征进行抽取,并对文本图像进行分析处理,从而获取文字及版面信息,这样,目标网络模型可以输出文字及版面信息,完成OCR文字识别过程。在采用本实施例的目标网络模型对文字特征进行抽取时,可以提高OCR文字识别的速度,从而提高OCR产品的实用性。
应用场景3:行人检索场景。行人检索是指利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术,即给定一个行人图像,检索该图像中是否存在特定行人。示例性的,可以基于目标网络模型实现行人检索,比如说,获取行人图像,将行人图像输入给目标网络模型,由目标网络模型抽取行人图像中的视觉特征,基于视觉特征分析是否存在特定行人,并输出是否存在特定行人的检测结果,完成行人检索过程。在采用本实施例的目标网络模型抽取行人图像中的视觉特征时,可以实现快速的特征抽取,降低时间开销。
本申请实施例中提出的网络模型的量化方法,可以应用于人工智能场景中,参见图2所示,为人工智能场景的示意图,人工智能场景可以划分为五个层次,分别为应用层、算法层、系统层、依赖层和设备层,对于这五个层次,自上而下存在相互依赖关系,上面的层次偏向实际应用,下面的层次偏向底层硬件。
针对应用层:通过分析需求,将问题定位到人工智能对应分支上。比如说,可以涉及目标检测、车牌识别、文字识别、语音识别等需求。
针对算法层:根据应用场景设计训练策略(即模型训练使用的策略)、根据应用场景设计Loss函数(即模型训练使用的Loss函数)、根据应用场景设计量化策略(即模型量化使用的策略)、根据应用场景设计裁剪策略。
针对系统层:可以完成模型训练、计算图解析和压缩转换。其中,在模型训练过程中,可以基于训练策略和Loss函数实现模型训练。在计算图解析过程中,可以实现算子封装和图转化。在压缩转换过程中,可以基于量化策略对网络模型进行模型量化,可以基于裁剪策略对网络模型进行模型裁剪。
示例性的,对网络模型进行量化和裁剪,能够实现网络模型的压缩,本实施例中的网络模型的量化方法,就是在系统层中实现量化过程。
针对依赖层:基于算法实现的语言或深度学习框架,如CUDA、Pytorch、Python、C++等,利用设备对外接口和协议调用对应设备。
针对设备层:由计算单元构成,为人工智能系统提供算力支持,如基于CPU、GPU、ARM、MLU的硬件设备,能够为人工智能系统提供算力支持。
在上述应用场景下,参见图3所示,网络模型的量化方法包括以下步骤:
步骤301、获取初始网络模型,确定初始网络模型中的待量化网络层。
示例性的,可以预先构建一个网络模型,并预先构建一个训练集合,该训练集合可以包括大量样本数据以及每个样本数据对应的标定数据,基于该训练集合对该网络模型进行训练,从而得到已训练的初始网络模型。
示例性的,初始网络模型可以包括多个网络层,每个网络层中的网络参数为第一精度的浮点型参数值,第一精度的浮点型参数值也可以称为高精度的浮点型参数值,第一精度的浮点型参数值可以为32位精度的浮点型参数值。
示例性的,可以将初始网络模型中的所有网络层均作为待量化网络层,也可以将初始网络模型中的部分网络层作为待量化网络层,对此不作限制,待量化网络层是需要进行量化的网络层。比如说,假设初始网络模型包括M个网络层,可以将前M-1个网络层作为待量化网络层,也可以将M个网络层作为待量化网络层。又例如,针对初始网络模型中每个网络层,若该网络层存在网络参数,且网络参数为第一精度的浮点型参数值,则将该网络层作为待量化网络层。
比如说,参见图4所示,以初始网络模型包括3个网络层为例,初始网络模型的网络层数量会远远大于3个,则初始网络模型包括网络层a1、网络层a2和网络层a3,网络层a1是初始网络模型的第一个网络层,网络层a3是初始网络模型的最后一个网络层,网络层a2是初始网络模型的中间网络层。
参见图4所示,可以将网络层a1中的网络参数记为网络参数b1,网络参数b1为第一精度的浮点型参数值,可以将网络层a2中的网络参数记为网络参数b2,网络参数b2为第一精度的浮点型参数值,可以将网络层a3中的网络参数记为网络参数b3,网络参数b3为第一精度的浮点型参数值。
比如说,可以将网络层a1、网络层a2和网络层a3作为待量化网络层,也可以将网络层a1和网络层a2作为待量化网络层,还可以将网络层a1作为待量化网络层,还可以将网络层a2作为待量化网络层,对此不作限制。
步骤302、确定初始网络模型对应的基准偏移,该基准偏移记为ebias_base。
示例性的,可以采用如下步骤确定初始网络模型对应的基准偏移:
步骤3021、将样本数据输入给初始网络模型,得到初始网络模型中每个待量化网络层对应的激活值集合,该激活值集合可以包括多个激活值。
比如说,可以将至少一个样本数据输入给初始网络模型中网络层a1,由网络层a1对样本数据进行处理,得到网络层a1对应的输出特征c1,将输出特征c1输入给初始网络模型中网络层a2,由网络层a2对输出特征c1进行处理,得到网络层a2对应的输出特征c2,将输出特征c2输入给初始网络模型中网络层a3,由网络层a3对输出特征c2进行处理,得到网络层a3对应的输出特征c3。
若网络层a1为待量化网络层,网络层a1对应的激活值集合包括多个激活值,这些激活值为输出特征c1中特征值,即输出特征c1中每个特征值为一个激活值。若网络层a2为待量化网络层,网络层a2对应的激活值集合包括多个激活值,这些激活值为输出特征c2中特征值,即输出特征c2中每个特征值为一个激活值。若网络层a3为待量化网络层,网络层a3对应的激活值集合包括多个激活值,这些激活值为输出特征c3中特征值,即输出特征c3中每个特征值为一个激活值。
步骤3022、针对每个待量化网络层来说,可以从该待量化网络层对应的激活值集合中选取出该待量化网络层对应的目标激活值。
在一种可能的实施方式中,可以按照从小到大的顺序对该激活值集合中的所有激活值进行排序,基于第一比例阈值和该激活值集合中的激活值总数量确定出第一截断值,并将位于该第一截断值前面的激活值确定为该目标激活值。
比如说,若网络层a1为待量化网络层,且网络层a1对应的激活值集合包括n个激活值,则可以按照从小到大的顺序对该激活值集合中的n个激活值进行排序,假设排序结果为x1,x2,...xn,x1,x2,...xn表示n个激活值。
可以获取预先配置的第一比例阈值t,第一比例阈值t可以大于0,且第一比例阈值t可以小于或者等于1,即t∈(0,1]。可以基于第一比例阈值t和激活值集合中的激活值总数量n确定出第一截断值,比如说,可以对第一比例阈值t与激活值总数量n的乘积向上取整,得到第一截断值,或者,可以对第一比例阈值t与激活值总数量n的乘积向下取整,得到第一截断值。
在得到第一截断值之后,就可以将x1,x2,...xn中位于该第一截断值前面的激活值确定为网络层a1对应的目标激活值。比如说,若第一截断值为30,则可以将位于第一截断值前面的激活值x29确定为网络层a1对应的目标激活值。
至此,可以得到网络层a1对应的目标激活值,同理,若网络层a2(网络层a3)为待量化网络层,则可以得到网络层a2(网络层a3)对应的目标激活值。
在另一种可能的实施方式中,可以按照从大到小的顺序对该激活值集合中的所有激活值进行排序,基于第二比例阈值和该激活值集合中的激活值总数量确定出第二截断值,并将位于该第二截断值前面的激活值确定为该目标激活值。
其中,采用从大到小的顺序进行排序的目标激活值确定方式,与采用从小到大的顺序进行排序的目标激活值确定方式类似,在此不再重复赘述。
步骤3023、基于每个待量化网络层对应的目标激活值确定基准偏移;示例性的,该基准偏移为使各待量化网络层对应的目标激活值均小于目标最大值的指数偏移,且该目标最大值为该指数偏移对应的浮点数可表示的最大值。
示例性的,浮点型数值的表示公式为:y=f×2e-b,y表示浮点型数值,f表示尾数数值,尾数数值的位数是尾数位宽,e表示指数数值,指数数值的位数是指数位宽,b表示指数偏移。从上述公式可以看出,指数位宽和指数偏移b决定了浮点数的表示范围,指数偏移b决定了浮点数可表示的最大值,指数偏移b越小,则浮点型数值y的取值越大,即浮点数可表示的最大值ymax越大。
在此基础上,基于每个待量化网络层对应的目标激活值,基准偏移为使各待量化网络层对应的目标激活值均小于目标最大值ymax对应的指数偏移,该目标最大值ymax为该指数偏移对应的浮点数可表示的最大值。
比如说,依次尝试指数偏移b的每个取值,如1、2、3、4、5、6等,假设指数偏移b的取值为m,则将指数偏移b的取值m代入上述公式,并将尾数数值f的最大值(预先配置)和指数数值e的最大值(预先配置)代入上述公式,这样,就可以得到该指数偏移b(取值m)对应的目标最大值ymax,而目标最大值ymax为该指数偏移b(取值m)对应的浮点数可表示的最大值。
基于该指数偏移b(取值m)对应的目标最大值umax,若每个待量化网络层对应的目标激活值均小于该目标最大值ymax,且有待量化网络层对应的目标激活值不小于指数偏移b(取值m-1)对应的目标最大值umax,则可以将取值m作为基准偏移,即所有目标激活值均小于基准偏移对应的目标最大值ymax。
至此,完成步骤302,可以得到初始网络模型对应的基准偏移ebias_base。
步骤303、获取多个超参组合,每个超参组合均包括指数位宽、尾数位宽和指数偏移,不同超参组合不完全相同,即不同超参组合中的至少一个超参不同。
在一种可能的实施方式中,可以采用如下步骤获取多个超参组合:
步骤3031、从已配置的指数位宽集合中搜索出指数位宽。
比如说,可以预先配置指数位宽集合,该指数位宽集合可以根据经验配置,对此指数位宽集合不作限制,如该指数位宽集合可以为{2,3,4,5}。
其中,在配置指数位宽集合时,还可以基于总比特位宽配置指数位宽集合,且指数位宽集合中的最大值小于总比特位宽,比如说,若总比特位宽为8,则指数位宽集合可以为{2,3,4,5},若总比特位宽为16,则指数位宽集合可以为{2,3,4,5,6,7,8,9,10,11,12,13},当然,上述只是示例。
比如说,基于已配置的指数位宽集合,可以将指数位宽集合中的每个数值作为指数位宽,假设指数位宽集合为{2,3,4,5},那么,可以从该指数位宽集合中搜索出数值2作为指数位宽,或者,可以从该指数位宽集合中搜索出数值3作为指数位宽,或者,可以从该指数位宽集合中搜索出数值4作为指数位宽,或者,可以从该指数位宽集合中搜索出数值5作为指数位宽。
步骤3032、基于该指数位宽和已获取的总比特位宽确定尾数位宽。
示例性的,可以确定总比特位宽与符号位比特数的第一差值,确定第一差值与该指数位宽的第二差值,并基于第二差值确定尾数位宽,如将第二差值作为该尾数位宽。其中,该符号位比特数可以为固定数值,如1等。
比如说,总比特位宽=指数位宽+尾数位宽+符号位比特数,显然,在得到总比特位宽、指数位宽和符号位比特数之后,就可以直接确定尾数位宽。
其中,总比特位宽可以根据经验配置,也可以采用某种算法得到,对此总比特位宽的获取方式不作限制,如总比特位宽可以为8位。符号位比特数用于表示尾数数值的符号,当符号位比特数为0时,表示尾数数值的符号为正,即尾数数值为正值,当符号位比特数为1时,表示尾数数值的符号为负,即尾数数值为负值,显然,符号位比特数可以为1位。在此基础上,总比特位宽8=指数位宽+尾数位宽+符号位比特数1,即尾数位宽=7-指数位宽。
综上可以看出,在从指数位宽集合中搜索出数值2作为指数位宽时,则尾数位宽为5,在从指数位宽集合中搜索出数值3作为指数位宽时,则尾数位宽为4,在从指数位宽集合中搜索出数值4作为指数位宽时,则尾数位宽为3,在从指数位宽集合中搜索出数值5作为指数位宽时,则尾数位宽为2。
步骤3033、从偏移值集合中搜索出偏移值,并基于基准偏移和该偏移值确定指数偏移,即基准偏移与该偏移值的和作为该指数偏移。
比如说,可以预先配置偏移值集合,该偏移值集合可以根据经验配置,对此偏移值集合不作限制,如该偏移值集合可以为{-2,-1,0,1,2}。
比如说,基于已配置的偏移值集合,可以从偏移值集合中搜索出数值-2作为偏移值,将基准偏移与该偏移值的和作为指数偏移,即指数偏移为ebias_base-2。从偏移值集合中搜索出数值-1作为偏移值,将基准偏移与该偏移值的和作为指数偏移,即指数偏移为ebias_base-1。从偏移值集合中搜索出数值0作为偏移值,将基准偏移与该偏移值的和作为指数偏移,即指数偏移为ebias_base。可以从偏移值集合中搜索出数值1作为偏移值,将基准偏移与该偏移值的和作为指数偏移,即指数偏移为ebias_base+1。从偏移值集合中搜索出数值2作为偏移值,将基准偏移与该偏移值的和作为指数偏移,即指数偏移为ebias_base+2。
步骤3034、基于指数位宽、尾数位宽和指数偏移确定出多个超参组合,每个超参组合均可以包括指数位宽、尾数位宽和指数偏移,不同超参组合不完全相同,即不同超参组合中的至少一个超参不同。其中,假设指数位宽集合中存在s1个数值,偏移值集合中存在s2个数值,则超参组合的数量为s1*s2。
参见表1所示,为超参组合的一个示例,对此超参组合不作限制。
表1
综上所述,从表1可以看出,一共可以得到20个超参组合。
在另一种可能的实施方式中,可以采用如下步骤获取多个超参组合:从已配置的尾数位宽集合中搜索出尾数位宽,实现过程参见步骤3031。基于该尾数位宽和已获取的总比特位宽确定指数位宽,比如说,可以确定总比特位宽与符号位比特数的第一差值,确定第一差值与该尾数位宽的第三差值,并基于第三差值确定指数位宽,如将第三差值作为该指数位宽,实现过程参见步骤3032。从偏移值集合中搜索出偏移值,并基于基准偏移和该偏移值确定指数偏移,即基准偏移与该偏移值的和作为该指数偏移,实现过程参见步骤3033。基于指数位宽、尾数位宽和指数偏移确定出多个超参组合,实现过程参见步骤3034。
至此,完成步骤303,可以搜索得到多个超参组合。
步骤304、针对每个待量化网络层,该待量化网络层采用第一精度浮点型参数值(如32位精度的浮点型参数值),可以获取该待量化网络层对应的第一精度浮点型输入特征(如32位精度的浮点型输入特征),并将第一精度浮点型输入特征输入给待量化网络层,得到该待量化网络层对应的第一输出特征。
比如说,基于上述初始网络模型,可以将样本数据输入给网络层a1,由网络层a1对该样本数据进行处理,得到网络层a1对应的输出特征c1。可以将输出特征c1输入给网络层a2,由网络层a2对该输出特征c1进行处理,得到网络层a2对应的输出特征c2。可以将输出特征c2输入给网络层a3,由网络层a3对该输出特征c2进行处理,得到网络层a3对应的输出特征c3。
若网络层a1为待量化网络层,则样本数据为网络层a1对应的第一精度浮点型输入特征,输出特征c1为网络层a1对应的第一输出特征。
若网络层a2为待量化网络层,则输出特征c1为网络层a2对应的第一精度浮点型输入特征,输出特征c2为网络层a2对应的第一输出特征。
若网络层a3为待量化网络层,则输出特征c2为网络层a3对应的第一精度浮点型输入特征,输出特征c3为网络层a3对应的第一输出特征。
步骤305、针对每个超参组合,基于该超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值,基于该超参组合确定第一精度浮点型输入特征对应的第二精度浮点型输入特征,第二精度可以低于第一精度。确定待量化网络层对应的量化后网络层,该量化后网络层采用第二精度浮点型参数值。
比如说,若网络层a1为待量化网络层,将网络层a1中的网络参数记为网络参数b1,网络参数b1为第一精度浮点型参数值,基于超参组合1,可以将第一精度浮点型参数值转换为第二精度浮点型参数值,得到网络参数b1对应的网络参数b1-1,将网络层a1中的网络参数b1替换为网络参数b1-1,就可以得到网络层a1对应的量化后网络层a1-1,量化后网络层a1-1中的网络参数b1-1是采用第二精度浮点型参数值。第二精度浮点型参数值也可以称为低精度浮点型参数值,低精度浮点型参数值是小于32位精度的浮点型参数值。假设总比特位宽为8位,则第二精度浮点型参数值是8位精度浮点型参数值,假设总比特位宽为16位,则第二精度浮点型参数值是16位精度浮点型参数值,以此类推。
网络层a1对应的第一精度浮点型输入特征为样本数据(即样本数据作为网络层a1的输入数据),基于超参组合1,可以将第一精度浮点型输入特征转换为第二精度浮点型输入特征,得到样本数据对应的样本数据-1,样本数据-1可以作为量化后网络层a1-1的输入数据,样本数据-1是第二精度浮点型输入特征。
基于超参组合2,可以将第一精度浮点型参数值转换为第二精度浮点型参数值,得到网络参数b1对应的网络参数b1-2,将网络层a1中的网络参数b1替换为网络参数b1-2,就可以得到网络层a1对应的量化后网络层a1-2。基于超参组合2,可以将第一精度浮点型输入特征转换为第二精度浮点型输入特征,得到样本数据对应的样本数据-2。以此类推,针对每个超参组合(共20个超参组合),可以得到该超参组合对应的量化后网络层和第二精度浮点型输入特征。
若网络层a2为待量化网络层,将网络层a2中的网络参数记为网络参数b2,网络参数b2为第一精度浮点型参数值,基于超参组合1,可以将第一精度浮点型参数值转换为第二精度浮点型参数值,得到网络参数b2对应的网络参数b2-1,将网络层a2中的网络参数b2替换为网络参数b2-1,就可以得到网络层a2对应的量化后网络层a2-1。网络层a2对应的第一精度浮点型输入特征为输出特征c1,基于超参组合1,可以将第一精度浮点型输入特征转换为第二精度浮点型输入特征,得到输出特征c1-1,输出特征c1-1作为量化后网络层a2-1的输入数据。
以此类推,基于网络层a2,针对每个超参组合(共20个超参组合),可以得到该超参组合对应的量化后网络层和第二精度浮点型输入特征。
同理,基于网络层a3,针对每个超参组合(共20个超参组合),可以得到该超参组合对应的量化后网络层和第二精度浮点型输入特征。
在一种可能的实施方式中,基于该超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值,基于该超参组合确定第一精度浮点型输入特征对应的第二精度浮点型输入特征,可以包括但不限于:基于该第一精度浮点型参数值、该超参组合中的指数位宽、尾数位宽和指数偏移,确定第一尾数数值和第一指数数值;基于该第一尾数数值、该第一指数数值和该指数偏移,确定第二精度浮点型参数值。基于该第一精度浮点型输入特征、该超参组合中的指数位宽、尾数位宽和指数偏移,确定第二尾数数值和第二指数数值;基于该第二尾数数值、该第二指数数值和该指数偏移,确定第二精度浮点型输入特征。
示例性的,浮点型数值的表示公式为:y=f×2e-b,y用于表示浮点型数值,f用于表示尾数数值,尾数数值的位数可以是尾数位宽,e用于表示指数数值,指数数值的位数可以是指数位宽,b用于表示指数偏移。从上述公式可以看出,指数位宽和指数偏移b决定了浮点数的表示范围,指数偏移b决定了浮点数可表示的最大值,指数偏移b越小,则浮点型数值y的取值越大。
参见表1所示,针对超参组合1,指数位宽为2、尾数位宽为5、指数偏移为ebias_base-2,将该指数位宽、该尾数位宽和该指数偏移代入上述公式,又由于第一精度浮点型参数值为已知,可以将第一精度浮点型参数值作为y代入上述公式,这样,就可以得到尾数数值f和指数数值e,也就是说,基于第一精度浮点型参数值、超参组合1中的指数位宽、尾数位宽和指数偏移,确定出第一尾数数值f和第一指数数值e。然后,将第一尾数数值f、第一指数数值e和指数偏移(ebias_base-2)代入上述公式,就可以得到第二精度浮点型参数值,即基于第一尾数数值、第一指数数值和指数偏移确定第二精度浮点型参数值。
此外,针对超参组合1,指数位宽为2、尾数位宽为5、指数偏移为ebias_base-2,将该指数位宽、该尾数位宽和该指数偏移代入上述公式,又由于第一精度浮点型输入特征为已知,可以将第一精度浮点型输入特征作为y代入上述公式,从而得到尾数数值f和指数数值e,也就是说,基于第一精度浮点型输入特征、超参组合1中的指数位宽、尾数位宽和指数偏移,确定出第二尾数数值f和第二指数数值e。然后,将第二尾数数值f、第二指数数值e和指数偏移(ebias_base-2)代入上述公式,就可以得到第二精度浮点型输入特征,即,可以基于第二尾数数值、第二指数数值和指数偏移确定第二精度浮点型输入特征。
综上所述,针对超参组合1,可以将第一精度浮点型参数值转换为第二精度浮点型参数值,将第一精度浮点型输入特征转换为第二精度浮点型参数值。同理,针对超参组合2,可以将第一精度浮点型参数值转换为第二精度浮点型参数值,将第一精度浮点型输入特征转换为第二精度浮点型参数值,以此类推。
步骤306、基于超参组合对应的量化后网络层,将该超参组合对应的第二精度浮点型输入特征输入给该量化后网络层得到该超参组合对应的第二输出特征。
比如说,若网络层a1为待量化网络层,超参组合1对应量化后网络层a1-1,量化后网络层a1-1的输入数据是超参组合1对应的样本数据-1(即第二精度浮点型输入特征),因此,可以将样本数据-1输入给量化后网络层a1-1,得到超参组合1对应的第二输出特征1-1,以此类推,可以得到每个超参组合对应的第二输出特征,假设一共存在20个超参组合,则可以得到20个第二输出特征。
若网络层a2为待量化网络层,超参组合1对应量化后网络层a2-1,量化后网络层a2-1的输入数据是超参组合1对应的输出特征c1-1(即第二精度浮点型输入特征),因此,可以将输出特征c1-1输入给量化后网络层a2-1,得到超参组合1对应的第二输出特征2-1,以此类推,可以得到每个超参组合对应的第二输出特征,假设一共存在20个超参组合,则可以得到20个第二输出特征。
若网络层a3为待量化网络层,超参组合1对应量化后网络层a3-1,量化后网络层a3-1的输入数据是超参组合1对应的输出特征c2-1(即第二精度浮点型输入特征),因此,可以将输出特征c2-1输入给量化后网络层a3-1,得到超参组合1对应的第二输出特征3-1,以此类推,可以得到每个超参组合对应的第二输出特征,假设一共存在20个超参组合,则可以得到20个第二输出特征。
步骤307、针对每个超参组合,确定第一输出特征与该超参组合对应的第二输出特征之间的相似度(如余弦相似度)。将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为待量化网络层的目标参数值,得到该待量化网络层对应的目标网络层,从而得到每个待量化网络层对应的目标网络层。
比如说,若网络层a1为待量化网络层,则确定网络层a1对应的第一输出特征(如输出特征c1)与超参组合1对应的第二输出特征1-1之间的余弦相似度1-1,确定输出特征c1与超参组合2对应的第二输出特征1-2之间的余弦相似度1-2,以此类推,假设一共存在20个超参组合,则可以得到20个余弦相似度。
从20个余弦相似度中选取出最大相似度,假设余弦相似度1-5为最大相似度,则将最大相似度1-5对应的超参组合5对应的第二精度浮点型参数值,更新为网络层a1的目标参数值,得到网络层a1对应的目标网络层,也就是说,超参组合5对应的第二精度浮点型参数值为网络参数b1-5,将网络层a1中的网络参数b1替换为网络参数b1-5,即网络参数b1-5作为网络层a1的目标参数值,在将网络参数b1替换为网络参数b1-5后,可以得到网络层a1对应的目标网络层。
同理,若网络层a2为待量化网络层,则可以得到网络层a2对应的目标网络层,若网络层a3为待量化网络层,则可以得到网络层a3对应的目标网络层。
在一种可能的实施方式中,可以采用如下公式确定第一输出特征与第二输出特征之间的余弦相似度:在上述公式中,cos表示第一输出特征与第二输出特征之间的余弦相似度,out1表示第一输出特征,即待量化网络层(采用第一精度浮点型参数值)的输出特征,out2表示第二输出特征,即量化后网络层(采用第二精度浮点型参数值)的输出特征。其中,余弦相似度用于评估不同超参组合的优劣,余弦相似度越大的超参组合的超参配置越好。
步骤308、将初始网络模型中的待量化网络层替换为该待量化网络层对应的目标网络层,完成初始网络模型的量化,得到已量化的目标网络模型。
比如说,若网络层a1、网络层a2和网络层a3均为待量化网络层,则将网络层a1替换为网络层a1对应的目标网络层a1’,将网络层a2替换为网络层a2对应的目标网络层a2’,将网络层a3替换为网络层a3对应的目标网络层a3’,这样,可以将目标网络层a1’、目标网络层a2’和目标网络层a3’组合起来,得到目标网络模型,至此,完成量化过程,得到已量化的目标网络模型。
在一种可能的实施方式中,在得到已量化的目标网络模型之后,可以输出已量化的目标网络模型;或者,还可以重新对目标网络模型进行训练,对此重新训练过程不做限制,并输出重新训练后的目标网络模型。在目标网络模型的重新训练过程中,对于目标网络模型的反向运算,可以采用第二精度浮点数进行表示,即目标网络模型中各网络层的网络参数可以为第二精度浮点型参数值。
由于反向运算的梯度在低比特表示时,范围比精度更加重要,因此,还可以根据经验设定较宽的指数位宽(如8比特低精度浮点将指数位宽设定为5,16比特精度浮点将指数位宽设定为8)。指数偏移的求解类似基准偏移的求解,不同之处在于,各层权值和激活值梯度截断值通过模型反向过程进行统计。
比如说,在得到已量化的目标网络模型之后,可以将样本数据输入给目标网络模型,由目标网络模型的各目标网络层对本目标网络层的样本特征(可以将目标网络层的输入特征称为该目标网络层的样本特征)进行处理,最终得到目标网络模型对应的输出特征,基于这个输出特征可以得到损失值,基于该损失值可以确定每个目标网络层对应的反向梯度值,且反向梯度值为第一精度浮点型的反向梯度值,如32bit的反向梯度值。针对每个目标网络层,该目标网络层对应的反向梯度值用于对该目标网络层中的目标参数值进行调整。
在得到目标网络层对应的反向梯度值之后,可以将该反向梯度值转换为第二精度浮点型的反向梯度值,并基于第二精度浮点型的反向梯度值对该目标网络层中的目标参数值进行调整,得到调整后的目标网络层。可以将目标网络模型中的目标网络层替换为调整后的目标网络层,得到重新训练的目标网络模型。
示例性的,在将第一精度浮点型的反向梯度值转换为第二精度浮点型的反向梯度值时,可以基于指定超参组合将第一精度浮点型的反向梯度值转换为第二精度浮点型的反向梯度值,对此转换方式不做限制,可以参见上述实施例。
其中,指定超参组合可以包括指数位宽、尾数位宽和指数偏移。指数位宽可以为经验值,可以根据经验设定较宽的指数位宽,比如说,针对8比特低精度浮点型的反向梯度值,将指数位宽设定为5,针对16比特低精度浮点型的反向梯度值,将指数位宽设定为8。在指数位宽设定之后,由于指数位宽和尾数位宽之和为固定值,就可以确定尾数位宽。指数偏移可以为基准偏移。
在一种可能的实施方式中,参见图5所示,为本申请实施例的系统结构示意图,可以通过数据截断值统计模块、第一精度浮点模型前向模块、第二精度浮点模型前向模块、超参配置评估模块来实现上述功能。比如说,数据截断值统计模块用于确定初始网络模型对应的基准偏移(参见步骤302),第一精度浮点模型前向模块用于确定各待量化网络层对应的第一输出特征(参见步骤304),第二精度浮点模型前向模块用于确定各超参组合对应的第二输出特征(参见步骤306),超参配置评估模块用于确定第一输出特征与第二输出特征之间的余弦相似度,并基于余弦相似度选取出最优超参组合(参见步骤307)。
在一种可能的实施方式中,在得到目标网络模型之后,还可以在终端设备部署目标网络模型,以通过目标网络模型对应用数据(如图像数据等)进行处理,即通过目标网络模型对应用数据进行人工智能处理。比如说,针对待处理的应用数据,可以将应用数据输入给目标网络模型,通过目标网络模型对应用数据进行处理,得到处理结果(如人工智能处理结果)。比如说,假设目标网络模型用于实现目标检测(如人脸检测、人体检测、车辆检测等),则将应用数据提供给目标网络模型之后,由目标网络模型确定目标检测结果。
由以上技术方案可见,本申请实施例中,将初始网络模型中每个待量化网络层的第一精度浮点型参数值转换为第二精度浮点型参数值,得到待量化网络层对应的目标网络层,而所有目标网络层组成目标网络模型,基于目标网络模型实现人工智能处理,且目标网络模型采用第二精度浮点型参数值。由于第二精度低于第一精度,因此,终端设备存储目标网络模型时,只占用终端设备的少量存储资源,与存储初始网络模型相比,能够节省存储资源。终端设备运行目标网络模型时,只占用终端设备的少量计算资源,运算量比较小,且终端设备的资源消耗小,能够在计算资源有限的终端设备上运行目标网络模型,与运行初始网络模型相比,能够节省计算资源。显然,通过将初始网络模型转换为更低精度的目标网络模型,能够减少内存带宽和存储要求,提高计算效率。由于将网络模型中的权值和激活值使用第二精度浮点型数值进行表示,这种低精度表示明显减少了网络模型的内存带宽和存储要求,提高了计算效率。可以实现低精度浮点自适应超参优化,基于低精度表示对输出性能的影响来确定指数位宽和指数偏移,通过逐层搜索最优超参得到各网络层的浮点配置。以低精度输出与浮点输出的余弦相似度为指标,搜索得到的低精度浮点超参可以在网络模型中有更好的性能,同时支持网络模型反向运算的低精度浮点表示。
基于与上述方法同样的申请构思,本申请实施例中提出一种网络模型的量化装置,针对初始网络模型中每个待量化网络层,所述待量化网络层采用第一精度浮点型参数值,参见图6所示,为所述装置的结构示意图,所述装置包括:
获取模块61,用于将第一精度浮点型输入特征输入给待量化网络层得到第一输出特征,并获取多个超参组合,每个超参组合均包括指数位宽、尾数位宽和指数偏移,指数位宽和尾数位宽是基于已获取的总比特位宽确定;
确定模块62,用于针对每个超参组合,基于所述超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值、第一精度浮点型输入特征对应的第二精度浮点型输入特征,第二精度低于第一精度;确定待量化网络层对应的量化后网络层,所述量化后网络层采用所述第二精度浮点型参数值;将第二精度浮点型输入特征输入给量化后网络层得到所述超参组合对应的第二输出特征;
处理模块63,用于基于第一输出特征与每个超参组合对应的第二输出特征的相似度,将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为所述待量化网络层的目标参数值,得到所述待量化网络层对应的目标网络层。
示例性的,所述获取模块61获取多个超参组合时具体用于:从已配置的指数位宽集合中搜索出一个指数位宽,并基于所述指数位宽和已获取的总比特位宽确定尾数位宽;或者,从已配置的尾数位宽集合中搜索出一个尾数位宽,并基于所述尾数位宽和已获取的总比特位宽确定指数位宽;从已配置的偏移值集合中搜索出一个偏移值,并基于基准偏移和所述偏移值确定指数偏移;基于所述指数位宽、所述尾数位宽和所述指数偏移确定出超参组合。
示例性的,所述获取模块61基于所述指数位宽和已获取的总比特位宽确定尾数位宽时具体用于:确定所述总比特位宽与符号位比特数的第一差值,确定第一差值与所述指数位宽的第二差值,基于所述第二差值确定尾数位宽;所述获取模块61基于所述尾数位宽和已获取的总比特位宽确定指数位宽时具体用于:确定所述总比特位宽与符号位比特数的第一差值,确定第一差值与所述尾数位宽的第三差值,基于所述第三差值确定指数位宽;符号位比特数为固定数值。
示例性的,所述获取模块61,还用于采用如下步骤确定所述基准偏移:将样本数据输入给所述初始网络模型,得到每个待量化网络层对应的激活值集合,所述激活值集合包括多个激活值;针对每个待量化网络层,从所述待量化网络层对应的激活值集合中选取出所述待量化网络层对应的目标激活值;基于每个待量化网络层对应的目标激活值确定出所述基准偏移;其中,所述基准偏移为使各待量化网络层对应的目标激活值均小于目标最大值的指数偏移,且所述目标最大值为该指数偏移对应的浮点数可表示的最大值。
示例性的,所述获取模块61从所述待量化网络层对应的激活值集合中选取出所述待量化网络层对应的目标激活值时具体用于:按照从小到大的顺序对所述激活值集合中的所有激活值进行排序,基于第一比例阈值和所述激活值集合中的激活值总数量确定第一截断值,将位于所述第一截断值前面的激活值确定为所述目标激活值;或,按照从大到小的顺序对所述激活值集合中的所有激活值进行排序,基于第二比例阈值和所述激活值集合中的激活值总数量确定第二截断值,将位于所述第二截断值前面的激活值确定为所述目标激活值。
示例性的,所述确定模块62基于所述超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值、第一精度浮点型输入特征对应的第二精度浮点型输入特征时具体用于:基于所述第一精度浮点型参数值、所述超参组合中的指数位宽、尾数位宽和指数偏移,确定第一尾数数值和第一指数数值;基于所述第一尾数数值、所述第一指数数值和所述指数偏移,确定所述第二精度浮点型参数值;基于所述第一精度浮点型输入特征、所述超参组合中的指数位宽、尾数位宽和指数偏移,确定第二尾数数值和第二指数数值;基于所述第二尾数数值、所述第二指数数值和所述指数偏移,确定所述第二精度浮点型输入特征。
示例性的,所述处理模块63,还用于针对每个超参组合,确定所述第一输出特征与所述超参组合对应的第二输出特征的相似度,相似度包括余弦相似度。
示例性的,所述处理模块63将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为所述待量化网络层的目标参数值,得到待量化网络层对应的目标网络层之后还用于:将样本特征输入给所述目标网络层,得到所述目标网络层对应的反向梯度值;所述反向梯度值为第一精度浮点型的反向梯度值,所述反向梯度值用于对所述目标网络层中的目标参数值进行调整;将所述反向梯度值转换为第二精度浮点型的反向梯度值,基于所述第二精度浮点型的反向梯度值对所述目标网络层中的目标参数值进行调整,得到调整后的目标网络层。
基于与上述方法同样的申请构思,本申请实施例提出一种电子设备,参见图7所示,所述电子设备包括处理器71和机器可读存储介质72,机器可读存储介质72存储有能够被所述处理器71执行的机器可执行指令;处理器71用于执行机器可执行指令,以实现上述示例公开的网络模型的量化方法。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的网络模型的量化方法。
其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种网络模型的量化方法,其特征在于,针对初始网络模型中每个待量化网络层,所述待量化网络层采用第一精度浮点型参数值,所述方法包括:
将第一精度浮点型输入特征输入给待量化网络层得到第一输出特征;
获取多个超参组合,每个超参组合均包括指数位宽、尾数位宽和指数偏移;
针对每个超参组合,基于所述超参组合确定所述第一精度浮点型参数值对应的第二精度浮点型参数值、所述第一精度浮点型输入特征对应的第二精度浮点型输入特征,第二精度低于第一精度;确定待量化网络层对应的量化后网络层,所述量化后网络层采用所述第二精度浮点型参数值;将所述第二精度浮点型输入特征输入给量化后网络层得到所述超参组合对应的第二输出特征;
基于所述第一输出特征与每个超参组合对应的第二输出特征的相似度,将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为所述待量化网络层的目标参数值,得到所述待量化网络层对应的目标网络层。
2.根据权利要求1所述的方法,其特征在于,所述获取多个超参组合包括:
从已配置的指数位宽集合中搜索出指数位宽,基于所述指数位宽和已获取的总比特位宽确定尾数位宽;或者,从已配置的尾数位宽集合中搜索出尾数位宽,基于所述尾数位宽和已获取的总比特位宽确定指数位宽;
从偏移值集合中搜索出偏移值,基于基准偏移和所述偏移值确定指数偏移;
基于所述指数位宽、所述尾数位宽和所述指数偏移确定出超参组合。
3.根据权利要求2所述的方法,其特征在于,
所述基于所述指数位宽和已获取的总比特位宽确定尾数位宽,包括:
确定所述总比特位宽与符号位比特数的第一差值,确定所述第一差值与所述指数位宽的第二差值,并基于所述第二差值确定所述尾数位宽;
所述基于所述尾数位宽和已获取的总比特位宽确定指数位宽,包括:
确定所述总比特位宽与符号位比特数的第一差值,确定所述第一差值与所述尾数位宽的第三差值,并基于所述第三差值确定所述指数位宽;
其中,所述符号位比特数为固定数值。
4.根据权利要求2所述的方法,其特征在于,所述基于基准偏移和所述偏移值确定指数偏移之前,采用如下步骤确定所述基准偏移:
将样本数据输入给所述初始网络模型,得到每个待量化网络层对应的激活值集合,所述激活值集合包括多个激活值;针对每个待量化网络层,从所述待量化网络层对应的激活值集合中选取所述待量化网络层对应的目标激活值;
基于每个待量化网络层对应的目标激活值确定所述基准偏移;其中,所述基准偏移为使各待量化网络层对应的目标激活值均小于目标最大值的指数偏移,所述目标最大值为该指数偏移对应的浮点数可表示的最大值。
5.根据权利要求4所述的方法,其特征在于,所述从所述待量化网络层对应的激活值集合中选取所述待量化网络层对应的目标激活值,包括:
按照从小到大的顺序对所述激活值集合中的所有激活值进行排序,基于第一比例阈值和所述激活值集合中的激活值总数量确定第一截断值,将位于所述第一截断值前面的激活值确定为所述目标激活值;或者,
按照从大到小的顺序对所述激活值集合中的所有激活值进行排序,基于第二比例阈值和所述激活值集合中的激活值总数量确定第二截断值,将位于所述第二截断值前面的激活值确定为所述目标激活值。
6.根据权利要求1所述的方法,其特征在于,所述基于所述超参组合确定所述第一精度浮点型参数值对应的第二精度浮点型参数值、所述第一精度浮点型输入特征对应的第二精度浮点型输入特征,包括:
基于所述第一精度浮点型参数值、所述超参组合中的指数位宽、尾数位宽和指数偏移,确定第一尾数数值和第一指数数值;基于所述第一尾数数值、所述第一指数数值和所述指数偏移,确定所述第二精度浮点型参数值;
基于所述第一精度浮点型输入特征、所述超参组合中的指数位宽、尾数位宽和指数偏移,确定第二尾数数值和第二指数数值;基于所述第二尾数数值、所述第二指数数值和所述指数偏移,确定所述第二精度浮点型输入特征。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为所述待量化网络层的目标参数值,得到所述待量化网络层对应的目标网络层之后,所述方法还包括:
将样本特征输入给所述目标网络层,得到所述目标网络层对应的反向梯度值;其中,所述反向梯度值为第一精度浮点型的反向梯度值,所述反向梯度值用于对所述目标网络层中的目标参数值进行调整;将所述反向梯度值转换为第二精度浮点型的反向梯度值,基于所述第二精度浮点型的反向梯度值对所述目标网络层中的目标参数值进行调整,得到调整后的目标网络层。
8.一种网络模型的量化装置,其特征在于,针对初始网络模型中每个待量化网络层,所述待量化网络层采用第一精度浮点型参数值,所述装置包括:
获取模块,用于将第一精度浮点型输入特征输入给待量化网络层得到第一输出特征,并获取多个超参组合,每个超参组合均包括指数位宽、尾数位宽和指数偏移,指数位宽和尾数位宽是基于已获取的总比特位宽确定;
确定模块,用于针对每个超参组合,基于所述超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值、第一精度浮点型输入特征对应的第二精度浮点型输入特征,第二精度低于第一精度;确定待量化网络层对应的量化后网络层,所述量化后网络层采用所述第二精度浮点型参数值;将第二精度浮点型输入特征输入给量化后网络层得到所述超参组合对应的第二输出特征;
处理模块,用于基于第一输出特征与每个超参组合对应的第二输出特征的相似度,将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为所述待量化网络层的目标参数值,得到所述待量化网络层对应的目标网络层。
9.根据权利要求8所述的装置,其特征在于,
其中,所述获取模块获取多个超参组合时具体用于:从已配置的指数位宽集合中搜索出一个指数位宽,并基于所述指数位宽和已获取的总比特位宽确定尾数位宽;或者,从已配置的尾数位宽集合中搜索出一个尾数位宽,并基于所述尾数位宽和已获取的总比特位宽确定指数位宽;从已配置的偏移值集合中搜索出一个偏移值,并基于基准偏移和所述偏移值确定指数偏移;基于所述指数位宽、所述尾数位宽和所述指数偏移确定出超参组合;
其中,所述获取模块基于所述指数位宽和已获取的总比特位宽确定尾数位宽时具体用于:确定所述总比特位宽与符号位比特数的第一差值,确定第一差值与所述指数位宽的第二差值,基于所述第二差值确定尾数位宽;所述获取模块基于所述尾数位宽和已获取的总比特位宽确定指数位宽时具体用于:确定所述总比特位宽与符号位比特数的第一差值,确定第一差值与所述尾数位宽的第三差值,基于所述第三差值确定指数位宽;所述符号位比特数为固定数值;
其中,所述获取模块,还用于采用如下步骤确定所述基准偏移:将样本数据输入给所述初始网络模型,得到每个待量化网络层对应的激活值集合,所述激活值集合包括多个激活值;针对每个待量化网络层,从所述待量化网络层对应的激活值集合中选取出所述待量化网络层对应的目标激活值;基于每个待量化网络层对应的目标激活值确定出所述基准偏移;其中,所述基准偏移为使各待量化网络层对应的目标激活值均小于目标最大值的指数偏移,且所述目标最大值为该指数偏移对应的浮点数可表示的最大值;
其中,所述获取模块从所述待量化网络层对应的激活值集合中选取出所述待量化网络层对应的目标激活值时具体用于:按照从小到大的顺序对所述激活值集合中的所有激活值进行排序,基于第一比例阈值和所述激活值集合中的激活值总数量确定第一截断值,将位于所述第一截断值前面的激活值确定为所述目标激活值;或,按照从大到小的顺序对所述激活值集合中的所有激活值进行排序,基于第二比例阈值和所述激活值集合中的激活值总数量确定第二截断值,将位于所述第二截断值前面的激活值确定为所述目标激活值;
其中,所述确定模块基于所述超参组合确定第一精度浮点型参数值对应的第二精度浮点型参数值、第一精度浮点型输入特征对应的第二精度浮点型输入特征时具体用于:基于所述第一精度浮点型参数值、所述超参组合中的指数位宽、尾数位宽和指数偏移,确定第一尾数数值和第一指数数值;基于所述第一尾数数值、所述第一指数数值和所述指数偏移,确定所述第二精度浮点型参数值;基于所述第一精度浮点型输入特征、所述超参组合中的指数位宽、尾数位宽和指数偏移,确定第二尾数数值和第二指数数值;基于所述第二尾数数值、所述第二指数数值和所述指数偏移,确定所述第二精度浮点型输入特征;
其中,所述处理模块将最大相似度对应的超参组合对应的第二精度浮点型参数值,更新为所述待量化网络层的目标参数值,得到所述待量化网络层对应的目标网络层之后还用于:将样本特征输入给所述目标网络层,得到所述目标网络层对应的反向梯度值;所述反向梯度值为第一精度浮点型的反向梯度值,所述反向梯度值用于对所述目标网络层中的目标参数值进行调整;将所述反向梯度值转换为第二精度浮点型的反向梯度值,基于所述第二精度浮点型的反向梯度值对所述目标网络层中的目标参数值进行调整,得到调整后的目标网络层。
10.一种电子设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现权利要求1-7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211177115.9A CN115526310A (zh) | 2022-09-26 | 2022-09-26 | 一种网络模型的量化方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211177115.9A CN115526310A (zh) | 2022-09-26 | 2022-09-26 | 一种网络模型的量化方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115526310A true CN115526310A (zh) | 2022-12-27 |
Family
ID=84699363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211177115.9A Pending CN115526310A (zh) | 2022-09-26 | 2022-09-26 | 一种网络模型的量化方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115526310A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116187420A (zh) * | 2023-05-04 | 2023-05-30 | 上海齐感电子信息科技有限公司 | 轻量化的深度神经网络的训练方法、系统、设备和介质 |
-
2022
- 2022-09-26 CN CN202211177115.9A patent/CN115526310A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116187420A (zh) * | 2023-05-04 | 2023-05-30 | 上海齐感电子信息科技有限公司 | 轻量化的深度神经网络的训练方法、系统、设备和介质 |
CN116187420B (zh) * | 2023-05-04 | 2023-07-25 | 上海齐感电子信息科技有限公司 | 轻量化的深度神经网络的训练方法、系统、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110738207B (zh) | 一种融合文字图像中文字区域边缘信息的文字检测方法 | |
CN112966691B (zh) | 基于语义分割的多尺度文本检测方法、装置及电子设备 | |
CN111488985B (zh) | 深度神经网络模型压缩训练方法、装置、设备、介质 | |
CN111382868B (zh) | 神经网络结构搜索方法和神经网络结构搜索装置 | |
CN109993102B (zh) | 相似人脸检索方法、装置及存储介质 | |
CN110866140A (zh) | 图像特征提取模型训练方法、图像搜索方法及计算机设备 | |
RU2693916C1 (ru) | Распознавание символов с использованием иерархической классификации | |
CN110807757B (zh) | 基于人工智能的图像质量评估方法、装置及计算机设备 | |
Jumani et al. | Facial expression recognition with histogram of oriented gradients using CNN | |
CN112561879B (zh) | 模糊度评价模型训练方法、图像模糊度评价方法及装置 | |
CN117197904B (zh) | 人脸活体检测模型的训练方法、人脸活体检测方法及装置 | |
CN111179270A (zh) | 基于注意力机制的图像共分割方法和装置 | |
JP2015036939A (ja) | 特徴抽出プログラム及び情報処理装置 | |
CN114693624A (zh) | 一种图像检测方法、装置、设备及可读存储介质 | |
CN112651364A (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN113989556A (zh) | 一种小样本医学影像分类方法和系统 | |
CN115526310A (zh) | 一种网络模型的量化方法、装置及设备 | |
CN116994021A (zh) | 图像检测方法、装置、计算机可读介质及电子设备 | |
CN113160987B (zh) | 健康状态预测方法、装置、计算机设备及存储介质 | |
CN113822134A (zh) | 一种基于视频的实例跟踪方法、装置、设备及存储介质 | |
CN114004364A (zh) | 采样优化方法、装置、电子设备及存储介质 | |
CN117807269A (zh) | 基于视频情景分析的达人推荐方法及系统 | |
CN112991281A (zh) | 视觉检测方法、系统、电子设备及介质 | |
CN116503896A (zh) | 鱼类图像分类方法、装置和设备 | |
CN116245157A (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 |