CN113723161A - 神经网络模型的训练方法、存储介质及电子设备 - Google Patents
神经网络模型的训练方法、存储介质及电子设备 Download PDFInfo
- Publication number
- CN113723161A CN113723161A CN202110251322.3A CN202110251322A CN113723161A CN 113723161 A CN113723161 A CN 113723161A CN 202110251322 A CN202110251322 A CN 202110251322A CN 113723161 A CN113723161 A CN 113723161A
- Authority
- CN
- China
- Prior art keywords
- value
- data type
- input
- neural network
- network model
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- 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
-
- 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)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种神经网络模型的训练方法、存储介质及电子设备。其中,该方法包括:对神经网络模型训练过程时,对训练使用的数据进行量化操作,使用量化后的小比特数据进行神经网络模型的训练,为了保证神经网络模型的精度,在量化操作后的数据执行目标操作后,再对目标操作后输出的数据执行反量化操作,也就是说,在神经网络模型的量化训练过程中,在保证量化精度损失不大的情况下,可将神经网络模型容量下降至一定的数值,并且运行时的内存也会减少,减少数据搬运的同时可大大降低模型功耗,进而解决了现有技术中,在对神经网络模型进行训练的过程中需要的资源较多的技术问题。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种神经网络模型的训练方法、存储介质及电子设备。
背景技术
随着人工智能的发展,越来越多的神经网络模型被应用于各种场景,例如,识别图像中人脸关键点、识别图像中的人脸表情。在神经网络模型被应用之前,需要对该神经网络模型进行训练,才能满足使用的要求。在对神经网络模型进行训练的过程中,需要考虑训练的时长以及训练时所用的资源。
在相关技术中,在对神经网络模型进行训练的过程中,神经网络模型中的各个运算模块的输入数据往往占用较大的存储空间,例如,当输入数据的数据类型为浮点型(如float32)时,该输入数据占用了32比特的存储空间。进一步,由于输入数据占用了较大的存储空间,因此,各个运算模块对于该输入数据进行处理时,所需要消耗的资源会更多,例如,运算时长,或者,运行时占用的内存。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种神经网络模型的训练方法、存储介质及电子设备,以至少解决现有技术中,在对神经网络模型进行训练的过程中需要的资源较多的技术问题。
根据本发明实施例的一个方面,提供了一种神经网络模型的训练方法,包括:获取第一数据类型的第一输入数值,其中,所述第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,所述第一数据类型的所述第一输入数值占的比特数为第一比特数;对所述第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,所述第二数据类型的所述第二输入数值占的比特数为第二比特数,所述第二比特数小于所述第一比特数;对所述第二输入数值执行所述目标操作,得到所述第二数据类型的第一输出数值,所述第二数据类型的所述第一输出数值占的比特数为所述第二比特数;对所述第一输出数值执行反量化操作,得到所述第一数据类型的第二输出数值,所述第一数据类型的所述第二输出数值占的比特数为所述第一比特数;根据所述第二输出数值,对所述神经网络模型进行训练。
根据本发明实施例的另一方面,还提供了一种神经网络模型的训练装置,包括:第一获取单元,用于获取第一数据类型的第一输入数值,其中,所述第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,所述第一数据类型的所述第一输入数值占的比特数为第一比特数;量化单元,用于对所述第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,所述第二数据类型的所述第二输入数值占的比特数为第二比特数,所述第二比特数小于所述第一比特数;第一操作单元,用于对所述第二输入数值执行所述目标操作,得到所述第二数据类型的第一输出数值,所述第二数据类型的所述第一输出数值占的比特数为所述第二比特数;反量化单元,用于对所述第一输出数值执行反量化操作,得到所述第一数据类型的第二输出数值,所述第一数据类型的所述第二输出数值占的比特数为所述第一比特数;训练单元,用于根据所述第二输出数值,对所述神经网络模型进行训练。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述神经网络模型的训练方法。
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的神经网络模型的训练方法。
在本发明实施例中,在对神经网络模型进行训练的过程中,对神经网络模型中的目标操作的输入数值进行了量化操作,以减少输入数值所占的比特数,这样在对输入数值执行目标操作时,可以减少执行目标操作所消耗的资源,提升了运算速度,例如,减少运算的时长,或者,减少运行时占用的内存。进一步,在对神经网络模型进行训练的过程中,对神经网络模型中的目标操作的输出数值进行了反量化操作,以将输出数值的数据类型转换为量化操作执行之前的数据类型,从而在减少执行目标操作所消耗的资源的同时,使得神经网络模型中的数据的精度没有什么损失(即,保证了量化精度损失不大)。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的神经网络模型的训练方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的神经网络模型的训练方法的流程图;
图3是根据本发明实施例的一种可选的神经网络模型的训练过程的示意图;
图4是根据本发明实施例的一种可选的人脸关键点神经网络模型训练过程的示意图;
图5是根据本发明实施例的一种可选的人脸表情类别识别神经网络模型训练过程的示意图;
图6是根据本发明实施例的一种可选的人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(一);
图7是根据本发明实施例的一种可选的卷积层中的量化操作和反量化操作训练过程的示意图;
图8是根据本发明实施例的一种可选的人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(二);
图9是根据本发明实施例的一种可选的人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(三);
图10是根据本发明实施例的一种可选的人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(四);
图11是根据本发明实施例的一种可选的人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(五);
图12是根据本发明实施例的一种可选的基于伪量化的人脸关键点量化感知训练方法的框图;
图13是根据本发明实施例的一种可选的神经网络模型的训练装置的结构示意图;
图14是根据本发明实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种神经网络模型的训练方法,可选地,作为一种可选的实施方式,上述神经网络模型的训练方法可以但不限于应用于如图1所示的环境中。服务器202以及用户终端204。
其中,上述用户终端202用于显示神经网络模型的样本;服务器204执行如下步骤S101-S104:获取第一数据类型的第一输入数值,其中,第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,第一数据类型的第一输入数值占的比特数为第一比特数;对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,第二数据类型的第二输入数值占的比特数为第二比特数,第二比特数小于第一比特数;对第二输入数值执行目标操作,得到第二数据类型的第一输出数值,第二数据类型的第一输出数值占的比特数为第二比特数;对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,第一数据类型的第二输出数值占的比特数为第一比特数;根据第二输出数值,对神经网络模型进行训练,即在对神经网络模型进行训练的过程中,对神经网络模型中的目标操作的输入数值进行了量化操作,以减少输入数值所占的比特数,这样在对输入数值执行目标操作时,可以减少执行目标操作所消耗的资源,提升了运算速度,例如,减少运算的时长,或者,减少运行时占用的内存。进一步,在对神经网络模型进行训练的过程中,对神经网络模型中的目标操作的输出数值进行了反量化操作,以将输出数值的数据类型转换为量化操作执行之前的数据类型,从而在减少执行目标操作所消耗的资源的同时,使得神经网络模型中的数据的精度没有什么损失(即,保证了量化精度损失不大)。
在服务器202将训练好的神经网络模型应用于用户终端204。
可选地,在本实施例中,上述用户终端可以是配置有目标客户端的终端设备,可以包括但不限于以下至少之一:手机(如Android手机、iOS手机等)、笔记本电脑、平板电脑、掌上电脑、MID(Mobile Internet Devices,移动互联网设备)、PAD、台式电脑、智能电视等。目标客户端可以是视频客户端、即时通信客户端、浏览器客户端、教育客户端等。上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络。上述服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,或者是云服务器。上述仅是一种示例,本实施例中对此不作任何限定。
上述神经网络的训练方法可以包括但不限于用于人工智能领域,可以不包括基于人工智能的图像识别,识别出图像中的人脸关键点、图像中人脸表情的类别、以及图片中存在生物的类别识别等等。
其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
可选地,作为一种可选的实施方式,如图2所示,上述神经网络模型的训练方法包括:
步骤S202,获取第一数据类型的第一输入数值,其中,第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,第一数据类型的第一输入数值占的比特数为第一比特数。
步骤S204,对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,第二数据类型的第二输入数值占的比特数为第二比特数,第二比特数小于第一比特数。
步骤S206,对第二输入数值执行目标操作,得到第二数据类型的第一输出数值,第二数据类型的第一输出数值占的比特数为第二比特数。
步骤S208,对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,第一数据类型的第二输出数值占的比特数为第一比特数。
步骤S210,根据第二输出数值,对神经网络模型进行训练。
可选的,在本实施例中,上述神经网络模型的训练方法可以包括但不限于应用神经网络模型的训练过程中。
如图3所示,神经网络模型的训练过程的示意图,如图3所示,待训练神经网络模型的训练过程包括将样本数据输入至待训练神经网络模型中,待训练神经网络模型对样本数据进行运算处理,得到待训练神经网络模型对样本数据的预测数据,根据该预测数据与样本数据的实际数据确定待训练神经网络模型的损失函数值,根据损失函数值确定待训练神经网络是否训练结束,即在损失函数值满足预定阈值的情况下,结束待训练神经网络的训练,得到目标神经网络模型,目标神经网络模型用于实际识别过程中。
在本实施例中,在待训练神经网络模型进行训练时,对训练的数据进行量化操作和反量化操作,通过量化操作,使得待训练神经网络模型在训练时,可以通过较小比特数据进行训练,训练数据的计算过程占用系统内存减少,节约系统运算内存,以及小比特数据运算可以提高运算速度,以及通过反量化操作可以使训练好的神经网络模型更容易部署不同的终端,训练好的神经网络模型在不同终端之间具有更好的迁移性。
在实施例中,数据类型可以包括但不限于float32类型、float64类型、int8类型、int16类型、int32类型等等。
在本实施例中,对浮点数类型的第一输入数值执行量化操作,得到整数类型的第二输入数值;其中,第一数据类型为float32类型,第二数据类型为int8类型,或者,int16类型;或者第一数据类型为float64类型,第二数据类型为int8类型,或者,int16类型,或者,int32类型。在对神经网络模型进行训练的过程中,对神经网络模型中的目标操作的输入数值进行了量化操作,以减少输入数值所占的比特数,这样在对输入数值执行目标操作时,可以减少执行目标操作所消耗的资源,提升了运算速度,例如,减少运算的时长,或者,减少运行时占用的内存。
需要说明的是,数据类型可以包括但不限于浮点型数据类型,float数据类型用于存储单精度浮点数或双精度浮点数。浮点数使用IEEE(电气和电子工程协会)格式。浮点类型的单精度值具有4个字节,包括一个符号位、一个8位excess-127二进制指数和一个23位尾数。尾数表示一个介于1.0和2.0之间的数。由于尾数的高顺序位始终为1,因此他不是以数字形式存储的。即float类型的值以4个字节表示,共32bit。整个浮点数可以表示为:f=s×t×2i,其中,s为符号位0或1,t为尾数,i为指数。
可选的,在本实施中,上述神经网络模型可以包括但不限于人脸关键点识别的神经网络模型,人脸表情识别的神经网络模型等等。
如图4所示,人脸关键点神经网络模型训练过程的示意图,如图4所示,获取人脸样本图片,以及人脸样本图标标注的关键点数据,将人脸样本图片输入至待训练的人脸关键点识别神经网络模型中,输出得到待训练的人脸关键点识别神经网络模型输出预测的关键点数据,根据标注的关键点数据和预测的关键点数据确定损失函数值,在损失函数值满足预设阈值的情况下,结束人脸关键点识别神经网络模型的训练,得到用于人脸关键点识别的目标人脸关键点识别神经网络模型,其中,在人脸关键点识别的神经网络模型训练过程中,对人脸关键点识别的神经网络中模型中的每层输入数据进行量化操作和反量化操作,以使每层数据运算使用字节占用少的数据进行运算,减少人脸关键点识别的神经网络模型训练运行时占用系统的内存。
如图5所示,人脸表情类别识别神经网络模型训练过程的示意图,如图5所示,获取人脸样本图片,以及人脸样本图标标注的关键点数据,将人脸样本图片输入至待训练的人脸表情类别识别的神经网络模型中,输出得到待训练的人脸表情类别识别的神经网络模型输出预测的关键点数据,以及人脸的表情类别信息,根据标注的关键点数据和预测的关键点数据确定损失函数值,在损失函数值满足预设阈值的情况下,结束人脸表情类别识别的神经网络模型的训练,得到用于人脸表情类别识别的目标人脸关键点识别神经网络模型,其中,在人脸关键点识别的神经网络模型训练过程中,对人脸关键点识别的神经网络中模型中的每层输入数据进行量化操作和反量化操作,以使每层数据运算使用字节占用少的数据进行运算,减少人脸关键点识别的神经网络模型训练运行时占用系统的内存。
需要说明的是,神经网络模型一般包括卷积层、池化层、全连接层,其中,卷积层可以包括多个,池化层可以包括多个、全连接层可以包括多个。
在本实施例中,神经网络模型包括卷积层、池化层以及全连接层,其中,目标操作可以理解为神经网络模型中每层的一个算子,该算子用于对输入的数值执行量化操作或反量化操作。
在本实施例中,在对神经网络模型训练过程中,可以按照8bit标准,将第一数据类型float32的第一输入数值量化为8bit的第二输入数值,由于量化后的第二输入数值的bit数是知道,并根据统计第一输入数值确定的最大值和最小值,可以计算出目标量化参数。
可选的,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的目标量化参数,可以包括:
在第二数据类型对应的最大取值的绝对值与最小取值的绝对值相同的情况下,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的第一量化参数,其中,目标量化参数包括第一量化参数:
zero_point=0
其中,目标量化参数包括scale和zero_point,min_val表示第一输入数值的最小取值,max_val表示第一输入数值的最大取值,qmax表示第二数据类型对应的最大取值,qmin表示第二数据类型对应的最小取值。
例如,第二数据类型为8bit,则qmax为2^7-1=127,qmin为-2^7=-128,统计第一输入数值,第一输入数值中max_val为255,min_val为-255,则:
可选的,在第二数据类型对应的最大取值的绝对值与最小取值的绝对值不同的情况下,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的第二量化参数,其中,通过如下公式确定目标量化参数:
其中,目标量化参数可以包括scale和zero_point,min_val表示第一输入数值的最小取值,max_val表示第一输入数值的最大取值,qmax表示第二数据类型对应的最大取值,qmin表示第二数据类型对应的最小取值,round函数用于对进行四舍五入计算。
例如,第二数据类型为8bit,则qmax为2^7-1=127,qmin为-2^7=-128,统计第一输入数值,第一输入数值中max_val为255,min_val为-255,则:
可选的,在本实施例中,使用目标量化参数对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,可以包括:
其中,目标量化参数包括scale和zero_point,XQ表示第二输入数值,XF表示第一输入数值,round函数用于对进行四舍五入计算,qmax表示第二数据类型对应的最大取值,qmin表示第二数据类型对应的最小取值。
需要说明的是,第二数据类型对应的最大取值和最小取值与该数据类型相关,也就是说,在第二数据类型确定的情况下,第二数据类型对应的最大取值和最小取值是确定。例如,第二数据类型为8bit,则对应的最大值为2^7-1=127,对应的最小值为-2^7=-128,第二数据类型为7bit,则对应的最大值为2^6-1=63,对应的最小值为-2^6=-64,依次类类推,在第二数据类型为5bit时,对应的最大值为2^5-1=31,对应的最小值为-2^5=-32。
还需要说明的是,由于为了方便工程加速,每一个需要量化操作可以对齐Tensorflow Lite的量化标准。其中,Tensorflow Lite量化标准:主要指的是谷歌提出的8-bit量化标准,该量化标准指定权重和激活中量化操作的类型,指定量化参数(scale/zero_point)类型、范围和约束,指定了支持量化的神经网络操作子类型。量化训练方案是需要参考和对齐谷歌的量化标准的,以方便边缘设备的指令级别的加速,并且满足谷歌标准的量化训练方法可在多种边缘设备上部署,具有一定的通用性。
通过本申请提供的实施例,获取第一数据类型的第一输入数值,其中,第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,第一数据类型的第一输入数值占的比特数为第一比特数;对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,第二数据类型的第二输入数值占的比特数为第二比特数,第二比特数小于第一比特数;对第二输入数值执行目标操作,得到第二数据类型的第一输出数值,第二数据类型的第一输出数值占的比特数为第二比特数;对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,第一数据类型的第二输出数值占的比特数为第一比特数;根据第二输出数值,对神经网络模型进行训练,即在对神经网络模型进行训练的过程中,对神经网络模型中的目标操作的输入数值进行了量化操作,以减少输入数值所占的比特数,这样在对输入数值执行目标操作时,可以减少执行目标操作所消耗的资源,提升了运算速度,例如,减少运算的时长,或者,减少运行时占用的内存。进一步,在对神经网络模型进行训练的过程中,对神经网络模型中的目标操作的输出数值进行了反量化操作,以将输出数值的数据类型转换为量化操作执行之前的数据类型,从而在减少执行目标操作所消耗的资源的同时,使得神经网络模型中的数据的精度没有什么损失(即,保证了量化精度损失不大)。
可选的,对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,可以包括:根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的目标量化参数;使用目标量化参数对第一输入数值执行量化操作,得到第二数据类型的第二输入数值。
在本实施例中,对第一输入数值执行量化操作,得到第二数据类型的第二输入值。例如,第一输入数值是flaot32值,通过量化操作得到int8值,即将4个字节的数值,量化为1个字节的数值,使用1个字节的数值运算神经网络模型中各个层的算子。由于将4个字节的数值量化为1个字节的数值,减少数值存储所占内存,以减少输入数值所占的比特数,这样在对输入数值执行目标操作时,可以减少执行目标操作所消耗的资源,提升了运算速度,例如,减少运算的时长,或者,减少运行时占用的内存。
在本实施例中,第二数据类型对应的最大取值和最小取值与第二数据类型相关,例如,第二数据类型为8bit,则对应的最大值为2^7-1=127,对应的最小值为-2^7=-128,第二数据类型为7bit,则对应的最大值为2^6-1=63,对应的最小值为-2^6=-64,依次类类推,在第二数据类型为5bit时,对应的最大值为2^5-1=31,对应的最小值为-2^5=-32。
可选的,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的目标量化参数,可以包括:在第二数据类型对应的最大取值的绝对值与最小取值的绝对值相同的情况下,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的第一量化参数,其中,目标量化参数包括第一量化参数;在第二数据类型对应的最大取值的绝对值与最小取值的绝对值不同的情况下,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的第二量化参数,其中,目标量化参数包括第二量化参数,第一量化参数与第二量化参数不同。
其中,在目标操作包括神经网络模型中的卷积层上执行的卷积函数的情况下,将第二数据类型对应的最大取值的绝对值与最小取值的绝对值设置为相同;在目标操作包括神经网络模型中的全连接层上执行的权重函数的情况下,将第二数据类型对应的最大取值的绝对值与最小取值的绝对值设置为相同;在目标操作包括神经网络模型中的激活函数的情况下,将第二数据类型对应的最大取值的绝对值与最小取值的绝对值设置为不同。
在本实施例中,神经网络模型中的量化操作包括对称量化操作和非对称量化操作,其中,对称量化操作是指,在计算目标量化参数时,第二数据类型对应的最大取值与最小取值的绝对值相同。非对称量化操作是指,在计算目标量化参数时,第二数据类型对应的最大取值与最小取值的绝对值不相同。
在本实施例中,神经网络模型每层对应一个或多个操作算子,一个操作算子对应一个目标操作。神经网络模型包括多个操作算子,每层对应一个操作算子,或部分层对应多个操作算子,例如,卷积层可以对应多个操作算子,池化层对应一个操作算子。由于操作算子的相同或不同,神经网络模型包括的多个目标操作可以相同,也可以不同。目标操作是根据操作算子执行第一输入数据的量化操作。
其中,操作算子负责建立定点数与浮点数的对应关系,只有在神经网络训练的过程是将浮点计算转为定点计算才能带来量化的收益。如下,通过量化算子展示定点计算如何模拟浮点计算,还可以得到量化算子的分类。
X_q=(int)(X_f*2^k)
X_f=((float)(X_f*2^k))/2^k
10=(int)(1.25*2^3)
3=(int)(0.4*2^3)
1.25+0.4=1.65约等于(10+3)/2^3==1.625
1.25*0.4=0.5约等于10*3/2^6==0.46875
由上可知,scale为2^3,1.25和0.4的定点表示分别是10,3,进而可以通过定点计算模拟浮点。
可选的,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的目标量化参数,可以包括:通过如下公式确定目标量化参数:
zero_point=0
其中,目标量化参数包括scale和zero_point,min_val表示第一输入数值的最小取值,max_val表示第一输入数值的最大取值,qmax表示第二数据类型对应的最大取值,qmin表示第二数据类型对应的最小取值。
例如,第二数据类型为8bit,则qmax为2^7-1=127,qmin为-2^7=-128,统计第一输入数值,得到max_val为255,min_val为-510,则:
可选的,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的目标量化参数,包括:通过如下公式确定目标量化参数:
其中,目标量化参数包括scale和zero_point,min_val表示第一输入数值的最小取值,max_val表示第一输入数值的最大取值,qmax表示第二数据类型对应的最大取值,qmin表示第二数据类型对应的最小取值,round函数用于对进行四舍五入计算。
例如,第二数据类型为8bit,则qmax为2^7-1=127,qmin为-2^7=-128,统计第一输入数值,得到max_val为255,min_val为-510,则:
可选的,用目标量化参数对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,可以包括:
其中,目标量化参数包括scale和zero_point,XQ表示第二输入数值,XF表示第一输入数值,round函数用于对进行四舍五入计算,qmax表示第二数据类型对应的最大取值,qmin表示第二数据类型对应的最小取值。
可选的,对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,可以包括:使用目标量化参数对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值。
在本实施例中,神经网络模型中的量化操作和反量化操作是成对出现的,执行量化操作的量化算子和执行反量化操作的反量化算子,在神经网络训练的过程中看作是一个伪量化算子。因此,在对神经网络模型的第一输入数值进行量化操作后,得到第二输入数值,将对第二输入数值执行目标操作后,得到第一输出数值,对第一输出数值执行反量化操作,量化操作和反量化操作成对出现,可以使用量化操作的目标量化参数对第一输出数值执行反量化操作,得到第二输出数值,进而可以将量化后的数据进行还原。如图3所示,float32的第一输入数值,使用目标量化参数对其量化操作,得到int8的第二输入数值,对第二输入数值进行目标操作(输入卷积层进行卷积函数运算、池化层进行函数运算以及全连接层进行函数运算),输出int8的第一输出数值,对int8的第一输出数值执行反量化操作,得到float32的第二输出数值。
可选的,使用目标量化参数对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,可以包括:通过如下公式得到第一数据类型的第二输出数值:
XT=(XP-zero_point)*scale
其中,目标量化参数包括scale和zero_point,XT表示第二输出数值,X表示第一输出数值。
可选的,对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,对第二输入数值执行目标操作,得到第二数据类型的第一输出数值,对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,可以包括:
在目标操作包括神经网络模型中的多个操作、第一数据类型的第一输入数值包括多个操作的输入数值的情况下,对多个操作的每个操作执行以下步骤,其中,在执行以下步骤时,每个操作被视为当前操作:
对当前操作的输入数值执行量化操作,得到第二数据类型的输入数值;
对第二数据类型的输入数值执行当前操作,得到第二数据类型的输出数值;
对第二数据类型的输出数值执行反量化操作,得到第一数据类型的输出数值。
在本实施例中,以人脸关键点的待训练的神经网络模型为例,说明目标操作包括神经网络模型中的多个操作的训练过程。
如图6所示,人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(一),对输入人脸关键点神经网络模型中卷积层的输入数据执行量化操作,对卷积层输出的数据执行反量化操作。
如图7所示,卷积层中的量化操作和反量化操作训练过程的示意图。如图7所示,在卷积层包括多个操作算子OP情况下,可以在卷积层中出现多个量化和反量化操作,即对输入OP1的输入进行量化操作,对输出OP1的数据进行反量化操作,反量化操作的数据可以再经过量化操作,输入OP2,对OP2输出的数据执行反量化操作,再将反量化操作的数据执行量化操作,进而输出一下池化层。
如图8所示,人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(二),对输入人脸关键点神经网络模型中池化层的输入数据执行量化操作,对池化层输出的数据执行反量化操作。在将池化层输出的数据执行反量化操作之后,输入全连接层之间,需要对执行反量化操作的数据执行量化操作。
需要说明的说,卷积层中执行的目标操作和池化层中执行的目标操作可以相同也可以不同,即卷积层中执行目标操作时,操作算子和使用的目标量化参数,与池化层中执行目标操作时,操作算子和使用的目标量化操作可以是不同,也可以是相同的。
其中,图6至图7所示,人脸关键点神经网络模型中部分运算层在运算时执行了量化操作和反量化操作。
如图9所示,人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(三),如图9所示,人脸关键点神经网络模型中的卷积层、池化层以及全连接层均执行量化操作和反量化操作。
如图10所示,人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(四),人脸关键点神经网络模型中的池化层和全连接层作为一个整体,量化操作和反量化操作可以对池化层和全连接层执行一次。输入池化层的数据执行量化操作,池化层输出的数据直接输入至全连接层,对全连接层输出的数据执行反量化操作。
如图11所示,人脸关键点神经网络模型中的量化操作和反量化操作训练过程的示意图(五),在人脸关键点神经网络模型训练的过程中,可以执行一次量化操作和一次反量化操作,即将第一次输入人脸关键点神经网络模型数据执行量化操作,将人脸关键点神经网络模型最后一层输出的数据执行反量化操作。即将输入至人脸关键点神经网络模型的数据执行量化操作,将人脸关键点神经网络模型最后输出的数据执行反量化操作。
可选的,对第二输入数值执行目标操作,得到第二数据类型的第一输出数值,可以包括以下至少之一:
在目标操作包括神经网络模型中的卷积层上执行的卷积函数的情况下,将第二输入数值输入到卷积函数,得到卷积函数输出的第二数据类型的第一输出数值;
在目标操作包括神经网络模型中的全连接层上执行的权重函数的情况下,将第二输入数值输入到权重函数,得到权重函数输出的第二数据类型的第一输出数值;
在目标操作包括神经网络模型中的激活函数的情况下,将第二输入数值输入到激活函数,得到激活函数输出的第二数据类型的第一输出数值。
在本实施例中,神经网络模型中的每个训练层的目标操作可以相同,还可以不同。对于卷积层,将量化后的数据输入到卷积函数,得到卷积函数输出的数据,即卷积层的目标操作是卷积函数;对于全连接层,将量化后的数据输入到权重函数,得到权重函数的输出数据,即全连接层的目标操作是权重函数。
在本实施例中,目标操作可以包括对输入数据进行卷积函数计算,进行权重函数计算,还可以进行激活函数计算。
可选的,根据第二输出数值,对神经网络模型进行训练,可以包括:
在神经网络模型的输入样本为目标训练样本的情况下,根据第二输出数值,确定神经网络模型输出的预测识别结果;
在预测识别结果与实际识别结果之间的损失值不满足预设损失条件的情况下,对神经网络模型中的参数进行调整,其中,实际识别结果为预先获取的识别结果,实际识别结果用于表示目标训练样本的识别结果;
在预测识别结果与实际识别结果之间的损失值满足预设损失条件的情况下,结束对神经网络模型的训练,其中,在结束对神经网络模型训练时的神经网络模型被确定为目标神经网络模型。
以人脸关键点神经网络模型训练为例,上述目标神经网络模型用于在输入的图片中识别人脸关键点。
以人脸表情识别神经网络模型训练为例,上述目标神经网络模型用于在输入的图片中识别人脸表情类别。
以人脸关键点神经网络模型训练为例说明,一种基于伪量化的人脸关键点量化感知训练方法。
在本实施例中,在每个需要量化的操作层的前后插入FakeQuantize算子,其作用主要是先对激活或者权重先量化,再反量化,将数值映射到离散值。这样能保证操作层仍然是浮点实现的同时让神经网络感知量化所带来的损失,并通过训练微调让神经网络对量化损失更鲁棒。如图12所示,基于伪量化的人脸关键点量化感知训练方法的框图。
如图12所示,针对一个量化的操作子(Op)(相对于训练层中的目标操作),在其前后插入伪量化(FakeQuantize)算子。具体如下操作,假设要量化卷积操作,定义一个伪量化卷积操作,在卷积的前面插入反量化算子(Dequantize)再在卷积后面插入量化算子(Quantize),将上一个操作子后的量化算子和此卷积前的反量化算子合并成为一个伪量化算子。伪量化算子就是先量化再反量化,输入是浮点32位的数值,数域为实数,通过伪量化后输出是32位的数值,但是会被量化到离散的浮点数上。通过伪量化算子,可以实现浮点模拟量化的训练流程,这样就可以利用各大开源训练框架实现量化训练。每个伪量化算子既需要执行伪量化操作,还需要统计数值的一个波动范围,即最大值(max_val)和最小值(min_val),在量化训练中会通过Observer统计伪量化算子输入的最大值和最小值,采用的是移动平均(moving average)策略。
由于为了方便工程加速,每一个量化操作子需要对齐Tensorflow Lite的量化标准。
常用的算子实现如下:1、卷积和全连接权重的量化,采用的是对称量化,量化值范围是[-127,127],bias的不量化;2、激活输出的量化采用的是非对称量化,量化值范围是[-128,127];3、池化层需要限制输入的量化参数(scale/zero_point)和输出一样,通过引入一个SharedFakeQuantize算子,该算子和池化前的FakeQuantize算子共享量化参数,但是并不会更新量化参数;4、Concat操作会统计所有输入的最大值和最小值来计算量化参数,输出的量化参数和输入一致。
其中,量化算子和反量化算子计算如下:
考虑输入数据x的范围是[min_val,max_val],量化的范围是[qmin,qmax],量化可如下表示:
其中,XQ是量化输出,XF是浮点输入,scale和zero_point是量化参数。基于此反量化可如下表示:
XF=(XQ-zero_point)*scale
对称量化可如下计算量化参数:
zero_point=0
非对称量化可如下计算量化参数:
需要说明的是,本实施例中的量化参数scale和zero_point是通过统计每层的值范围得出,其他替代方案可以通过把量化参数作为一个可学习的参数嵌入到神经网络中,随着卷积参数进行优化的量化参数相比统计参数更发挥监督信息的作用,指导出更好的量化参数和卷积参数。
在训练的过程中,伪量化的后向传播:由于伪量化操作是不可导的函数,需要通过可导的函数进行逼近:
在本实施例中,基于伪量化的人脸关键点量化感知训练方法可以包括但不限于视频图像遍历类app、短视频app,视频通话等多种需要对人脸进行处理的项目或者产品。
其中,8-bit量化技术能够将模型大小将至1/4,也能极大地减少运行时的内存,并且拥有更快的计算速度和更低的功耗。基于以上量化技术的优势,模型量化通常被广泛应用在移动端等边缘设备中,在特效直播场景类似计算密集型的任务中,量化技术的尤为重要。
在本实施例中采用的是一种易于实现的,对齐Tensorflow Lite标准的(易于工程加速的)量化感知训练,主要通过引入FakeQuantize算子让神经网络在训练时感知量化,使得网络对量化更不敏感,本实施例中训练过程很容易在各大框架(Tensorflow\Pytorch等)中进行实现,并且很方便迁移到更低比特量化训练中。
通过本实施例中的方案,计算将人脸关键点对齐到128x128的小块上,通过计算预测的人脸关键点和真值之间的距离损失作为网络系性能函数MSE指标,可以看到8-bit量化模型在人脸关键点模型FaceLmk上损失很少。
其中,本实施例中的量化训练在保证量化精度损失不大的情况下,几乎可将模型容量下降至浮点的1/4,并且运行时的内存也会减少为浮点的1/4,减少数据搬运的同时可大大降低模型功耗,工程加速后目前8-bit量化运行加速可达20%以上。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述神经网络模型的训练方法的神经网络模型的训练装置。如图13所示,该神经网络模型的训练装置包括:获取单元1301、量化单元1303、操作单元1305、反量化单元1307以及训练单元1309。
获取单元1301,用于获取第一数据类型的第一输入数值,其中,第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,第一数据类型的第一输入数值占的比特数为第一比特数。
量化单元1303,用于对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,第二数据类型的第二输入数值占的比特数为第二比特数,第二比特数小于第一比特数。
操作单元1305,用于对第二输入数值执行目标操作,得到第二数据类型的第一输出数值,第二数据类型的第一输出数值占的比特数为第二比特数。
反量化单元1307,用于对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,第一数据类型的第二输出数值占的比特数为第一比特数。
训练单元1309,用于根据第二输出数值,对神经网络模型进行训练。
通过本申请提供的实施例,获取单元1301获取第一数据类型的第一输入数值,其中,第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,第一数据类型的第一输入数值占的比特数为第一比特数;量化单元1303对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,第二数据类型的第二输入数值占的比特数为第二比特数,第二比特数小于第一比特数;操作单元1305对第二输入数值执行目标操作,得到第二数据类型的第一输出数值,第二数据类型的第一输出数值占的比特数为第二比特数;反量化单元1307对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,第一数据类型的第二输出数值占的比特数为第一比特数;训练单元1309根据第二输出数值,对神经网络模型进行训练,即在对神经网络模型进行训练的过程中,对神经网络模型中的目标操作的输入数值进行了量化操作,以减少输入数值所占的比特数,这样在对输入数值执行目标操作时,可以减少执行目标操作所消耗的资源,提升了运算速度,例如,减少运算的时长,或者,减少运行时占用的内存。进一步,在对神经网络模型进行训练的过程中,对神经网络模型中的目标操作的输出数值进行了反量化操作,以将输出数值的数据类型转换为量化操作执行之前的数据类型,从而在减少执行目标操作所消耗的资源的同时,使得神经网络模型中的数据的精度没有什么损失(即,保证了量化精度损失不大)。
可选的,上述量化单元1303,可以包括:第一确定模块,用于根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的目标量化参数;量化模块,用于使用目标量化参数对第一输入数值执行量化操作,得到第二数据类型的第二输入数值。
其中,上述量化模块,用于对浮点数类型的第一输入数值执行量化操作,得到整数类型的第二输入数值;其中,第一数据类型为float32类型,第二数据类型为int8类型,或者,int16类型;或者第一数据类型为float64类型,第二数据类型为int8类型,或者,int16类型,或者,int32类型。
其中,上述第一确定模块,可以包括:第一确定子模块,用于在第二数据类型对应的最大取值的绝对值与最小取值的绝对值相同的情况下,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的第一量化参数,其中,目标量化参数包括第一量化参数。
第二确定子模块,用于在第二数据类型对应的最大取值的绝对值与最小取值的绝对值不同的情况下,根据第二数据类型对应的最大取值和最小取值、以及第一输入数值的最大取值和最小取值,确定量化操作所使用的第二量化参数,其中,目标量化参数包括第二量化参数,第一量化参数与第二量化参数不同。
可选的,上述装置还可以包括:第一设置子模块,用于在目标操作包括神经网络模型中的卷积层上执行的卷积函数的情况下,将第二数据类型对应的最大取值的绝对值与最小取值的绝对值设置为相同。第二设置子模块,用于在目标操作包括神经网络模型中的全连接层上执行的权重函数的情况下,将第二数据类型对应的最大取值的绝对值与最小取值的绝对值设置为相同。第三设置子模块,用于在目标操作包括神经网络模型中的激活函数的情况下,将第二数据类型对应的最大取值的绝对值与最小取值的绝对值设置为不同。
可选的,上述量化单元1303,还可以用于通过如下公式确定目标量化参数:
zero_point=0
其中,目标量化参数包括scale和zero_point,min_val表示第一输入数值的最小取值,max_val表示第一输入数值的最大取值,qmax表示第二数据类型对应的最大取值,qmin表示第二数据类型对应的最小取值。
可选的,上述量化单元1303,还可以用于通过如下公式确定目标量化参数:
其中,目标量化参数包括scale和zero_point,min_val表示第一输入数值的最小取值,max_val表示第一输入数值的最大取值,qmax表示第二数据类型对应的最大取值,qmin表示第二数据类型对应的最小取值,round函数用于对进行四舍五入计算。
7可选的,上述量化单元1303,还可以执行如下操作:
其中,目标量化参数包括scale和zero_point,XQ表示第二输入数值,XF表示第一输入数值,round函数用于对进行四舍五入计算,qmax表示第二数据类型对应的最大取值,qmin表示第二数据类型对应的最小取值。
可选的,上述反量化单元1307,可以包括:反量化模块,用于使用目标量化参数对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值。
其中,上述反量化模块还用于通过如下公式得到第一数据类型的第二输出数值:
XT=(XP-zero_point)*scale
其中,目标量化参数包括scale和zero_point,XT表示第二输出数值,XP表示第一输出数值。
可选的,上述量化单元1303和上述反量化单元130还用于执行如下操作:
在目标操作包括神经网络模型中的多个操作、第一数据类型的第一输入数值包括多个操作的输入数值的情况下,对多个操作的每个操作执行以下步骤,其中,在执行以下步骤时,每个操作被视为当前操作:
对当前操作的输入数值执行量化操作,得到第二数据类型的输入数值;
对第二数据类型的输入数值执行当前操作,得到第二数据类型的输出数值;
对第二数据类型的输出数值执行反量化操作,得到第一数据类型的输出数值。
可选的,上述操作单元1305,可以包括以下至少之一:
1)第一操作模块,用于在目标操作包括神经网络模型中的卷积层上执行的卷积函数的情况下,将第二输入数值输入到卷积函数,得到卷积函数输出的第二数据类型的第一输出数值。
2)第二操作模块,用于在目标操作包括神经网络模型中的全连接层上执行的权重函数的情况下,将第二输入数值输入到权重函数,得到权重函数输出的第二数据类型的第一输出数值。
3)第三操作模块,用于在目标操作包括神经网络模型中的激活函数的情况下,将第二输入数值输入到激活函数,得到激活函数输出的第二数据类型的第一输出数值。
可选的,上述训练单元1309,可以包括:第三确定模块,用于在神经网络模型的输入样本为目标训练样本的情况下,根据第二输出数值,确定神经网络模型输出的预测识别结果;调整模块,用于在预测识别结果与实际识别结果之间的损失值不满足预设损失条件的情况下,对神经网络模型中的参数进行调整,其中,实际识别结果为预先获取的识别结果,实际识别结果用于表示目标训练样本的识别结果;结束训练模块,用于在预测识别结果与实际识别结果之间的损失值满足预设损失条件的情况下,结束对神经网络模型的训练,其中,在结束对神经网络模型训练时的神经网络模型被确定为目标神经网络模型,目标神经网络模型用于在输入的图片中识别人脸关键点。
根据本发明实施例的又一个方面,还提供了一种用于实施上述神经网络模型的训练方法的电子设备,该电子设备可以是图1所示的终端设备或服务器。本实施例以该电子设备为服务器为例来说明。如图14所示,该电子设备包括存储器1402和处理器1404,该存储器1402中存储有计算机程序,该处理器1404被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取第一数据类型的第一输入数值,其中,第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,第一数据类型的第一输入数值占的比特数为第一比特数;
S2,对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,第二数据类型的第二输入数值占的比特数为第二比特数,第二比特数小于第一比特数;
S3,对第二输入数值执行目标操作,得到第二数据类型的第一输出数值,第二数据类型的第一输出数值占的比特数为第二比特数;
S4,对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,第一数据类型的第二输出数值占的比特数为第一比特数;
S5,根据第二输出数值,对神经网络模型进行训练。
可选地,本领域普通技术人员可以理解,图14所示的结构仅为示意,电子装置电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图14其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图14中所示更多或者更少的组件(如网络接口等),或者具有与图14所示不同的配置。
其中,存储器1402可用于存储软件程序以及模块,如本发明实施例中的神经网络模型的训练方法和装置对应的程序指令/模块,处理器1404通过运行存储在存储器1402内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的神经网络模型的训练方法。存储器1402可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1402可进一步包括相对于处理器1404远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1402具体可以但不限于用于存储第一数据类型的第一输入数值、第二数据类型的第二输入数值、第二数据类型的第一输出数值、第一数据类型的第二输出数值以及神经网络模型等信息。作为一种示例,如图14所示,上述存储器1402中可以但不限于包括上述神经网络模型的训练装置中的获取单元1301、量化单元1303、操作单元1305、反量化单元1307以及训练单元1309。此外,还可以包括但不限于上述神经网络模型的训练装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1406用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1406包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1406为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1408,用于显示神经网络模型的样本数据;和连接总线1410,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述神经网络模型的训练方面或者神经网络模型的训练方面的各种可选实现方式中提供的神经网络模型的训练方法。其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取第一数据类型的第一输入数值,其中,第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,第一数据类型的第一输入数值占的比特数为第一比特数;
S2,对第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,第二数据类型的第二输入数值占的比特数为第二比特数,第二比特数小于第一比特数;
S3,对第二输入数值执行目标操作,得到第二数据类型的第一输出数值,第二数据类型的第一输出数值占的比特数为第二比特数;
S4,对第一输出数值执行反量化操作,得到第一数据类型的第二输出数值,第一数据类型的第二输出数值占的比特数为第一比特数;
S5,根据第二输出数值,对神经网络模型进行训练。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种神经网络模型的训练方法,其特征在于,包括:
获取第一数据类型的第一输入数值,其中,所述第一输入数值被设置为待训练的神经网络模型中的目标操作的输入数值,所述第一数据类型的所述第一输入数值占的比特数为第一比特数;
对所述第一输入数值执行量化操作,得到第二数据类型的第二输入数值,其中,所述第二数据类型的所述第二输入数值占的比特数为第二比特数,所述第二比特数小于所述第一比特数;
对所述第二输入数值执行所述目标操作,得到所述第二数据类型的第一输出数值,所述第二数据类型的所述第一输出数值占的比特数为所述第二比特数;
对所述第一输出数值执行反量化操作,得到所述第一数据类型的第二输出数值,所述第一数据类型的所述第二输出数值占的比特数为所述第一比特数;
根据所述第二输出数值,对所述神经网络模型进行训练。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一输入数值执行量化操作,得到第二数据类型的第二输入数值,包括:
根据所述第二数据类型对应的最大取值和最小取值、以及所述第一输入数值的最大取值和最小取值,确定所述量化操作所使用的目标量化参数;
使用所述目标量化参数对所述第一输入数值执行量化操作,得到所述第二数据类型的所述第二输入数值。
3.根据权利要求2所述的方法,其特征在于,根据所述第二数据类型对应的最大取值和最小取值、以及所述第一输入数值的最大取值和最小取值,确定所述量化操作所使用的目标量化参数,包括:
在所述第二数据类型对应的最大取值的绝对值与最小取值的绝对值相同的情况下,根据所述第二数据类型对应的最大取值和最小取值、以及所述第一输入数值的最大取值和最小取值,确定所述量化操作所使用的第一量化参数,其中,所述目标量化参数包括所述第一量化参数;
在所述第二数据类型对应的最大取值的绝对值与最小取值的绝对值不同的情况下,根据所述第二数据类型对应的最大取值和最小取值、以及所述第一输入数值的最大取值和最小取值,确定所述量化操作所使用的第二量化参数,其中,所述目标量化参数包括所述第二量化参数,所述第一量化参数与所述第二量化参数不同。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括以下至少之一:
在所述目标操作包括所述神经网络模型中的卷积层上执行的卷积函数的情况下,将所述第二数据类型对应的最大取值的绝对值与最小取值的绝对值设置为相同;
在所述目标操作包括所述神经网络模型中的全连接层上执行的权重函数的情况下,将所述第二数据类型对应的最大取值的绝对值与最小取值的绝对值设置为相同;
在所述目标操作包括所述神经网络模型中的激活函数的情况下,将所述第二数据类型对应的最大取值的绝对值与最小取值的绝对值设置为不同。
8.根据权利要求2所述的方法,其特征在于,所述对所述第一输出数值执行反量化操作,得到所述第一数据类型的第二输出数值,包括:
使用所述目标量化参数对所述第一输出数值执行反量化操作,得到所述第一数据类型的所述第二输出数值。
9.根据权利要求8所述的方法,其特征在于,所述使用所述目标量化参数对所述第一输出数值执行反量化操作,得到所述第一数据类型的所述第二输出数值,包括:
通过如下公式得到所述第一数据类型的所述第二输出数值:
XT=(XP-zero_point)*scale
其中,所述目标量化参数包括所述scale和所述zero-point,所述XT表示所述第二输出数值,所述XP表示所述第一输出数值。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述对所述第一输入数值执行量化操作,得到第二数据类型的第二输入数值,对所述第二输入数值执行所述目标操作,得到所述第二数据类型的第一输出数值,对所述第一输出数值执行反量化操作,得到所述第一数据类型的第二输出数值,包括:
在所述目标操作包括所述神经网络模型中的多个操作、所述第一数据类型的所述第一输入数值包括所述多个操作的输入数值的情况下,对所述多个操作的每个操作执行以下步骤,其中,在执行以下步骤时,所述每个操作被视为当前操作:
对所述当前操作的输入数值执行量化操作,得到所述第二数据类型的输入数值;
对所述第二数据类型的输入数值执行所述当前操作,得到所述第二数据类型的输出数值;
对所述第二数据类型的输出数值执行反量化操作,得到所述第一数据类型的输出数值。
11.根据权利要求1至9中任一项所述的方法,其特征在于,所述对所述第二输入数值执行所述目标操作,得到所述第二数据类型的第一输出数值,包括以下至少之一:
在所述目标操作包括所述神经网络模型中的卷积层上执行的卷积函数的情况下,将所述第二输入数值输入到所述卷积函数,得到所述卷积函数输出的所述第二数据类型的所述第一输出数值;
在所述目标操作包括所述神经网络模型中的全连接层上执行的权重函数的情况下,将所述第二输入数值输入到所述权重函数,得到所述权重函数输出的所述第二数据类型的所述第一输出数值;
在所述目标操作包括所述神经网络模型中的激活函数的情况下,将所述第二输入数值输入到所述激活函数,得到所述激活函数输出的所述第二数据类型的所述第一输出数值。
12.根据权利要求1至9中任一项所述的方法,其特征在于,所述根据所述第二输出数值,对所述神经网络模型进行训练,包括:
在所述神经网络模型的输入样本为目标训练样本的情况下,根据所述第二输出数值,确定所述神经网络模型输出的预测识别结果;
在所述预测识别结果与实际识别结果之间的损失值不满足预设损失条件的情况下,对所述神经网络模型中的参数进行调整,其中,所述实际识别结果为预先获取的识别结果,所述实际识别结果用于表示所述目标训练样本的识别结果;
在所述预测识别结果与所述实际识别结果之间的损失值满足所述预设损失条件的情况下,结束对所述神经网络模型的训练,其中,在结束对所述神经网络模型训练时的所述神经网络模型被确定为目标神经网络模型,所述目标神经网络模型用于在输入的图片中识别人脸关键点。
13.根据权利要求1至9中任一项所述的方法,其特征在于,所述对所述第一输入数值执行量化操作,得到第二数据类型的第二输入数值,包括:
对浮点数类型的所述第一输入数值执行量化操作,得到整数类型的所述第二输入数值;
其中,所述第一数据类型为float32类型,所述第二数据类型为int8类型,或者,int16类型;或者
所述第一数据类型为float64类型,所述第二数据类型为int8类型,或者,int16类型,或者,int32类型。
14.一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至13任一项中所述的方法。
15.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至13任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110251322.3A CN113723161A (zh) | 2021-03-08 | 2021-03-08 | 神经网络模型的训练方法、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110251322.3A CN113723161A (zh) | 2021-03-08 | 2021-03-08 | 神经网络模型的训练方法、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113723161A true CN113723161A (zh) | 2021-11-30 |
Family
ID=78672602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110251322.3A Pending CN113723161A (zh) | 2021-03-08 | 2021-03-08 | 神经网络模型的训练方法、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113723161A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116995784A (zh) * | 2023-09-26 | 2023-11-03 | 大全集团有限公司 | 船舶储能放电控制方法、装置、电子设备和可读介质 |
-
2021
- 2021-03-08 CN CN202110251322.3A patent/CN113723161A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116995784A (zh) * | 2023-09-26 | 2023-11-03 | 大全集团有限公司 | 船舶储能放电控制方法、装置、电子设备和可读介质 |
CN116995784B (zh) * | 2023-09-26 | 2023-12-15 | 大全集团有限公司 | 船舶储能放电控制方法、装置、电子设备和可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109685202B (zh) | 数据处理方法及装置、存储介质和电子装置 | |
CN111950638B (zh) | 基于模型蒸馏的图像分类方法、装置和电子设备 | |
CN109740755B (zh) | 一种基于梯度下降法的数据处理方法及相关装置 | |
CN111768231B (zh) | 产品信息推荐方法及装置 | |
CN112990390B (zh) | 一种图像识别模型的训练方法、图像识别的方法及装置 | |
CN110705684A (zh) | 基于端云协同的环境自适应学习方法及系统 | |
CN109344314B (zh) | 一种数据处理方法、装置及服务器 | |
CN110659734A (zh) | 深度可分离卷积结构的低比特量化方法 | |
CN111176853A (zh) | 数据量化方法、装置、计算机设备和存储介质 | |
CN112528164B (zh) | 一种用户协同过滤召回方法及装置 | |
CN114418121A (zh) | 模型训练方法、对象处理方法及装置、电子设备、介质 | |
CN113742082A (zh) | 应用资源分配方法及装置、计算机可读介质和终端 | |
CN111738010A (zh) | 用于生成语义匹配模型的方法和装置 | |
CN113379045B (zh) | 数据增强方法和装置 | |
CN113723161A (zh) | 神经网络模型的训练方法、存储介质及电子设备 | |
CN114638344A (zh) | 一种模型量化方法和相关装置 | |
WO2022246986A1 (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN117236805B (zh) | 电力设备控制方法、装置、电子设备和计算机可读介质 | |
CN112104867B (zh) | 一种视频处理方法、视频处理装置、智能设备及存储介质 | |
CN113850890A (zh) | 动物形象的生成方法、装置、设备及存储介质 | |
CN116388112B (zh) | 异常供应端断电方法、装置、电子设备和计算机可读介质 | |
CN113962417A (zh) | 一种视频处理方法、装置、电子设备和存储介质 | |
CN116090543A (zh) | 模型压缩方法及装置、计算机可读介质和电子设备 | |
CN115936092A (zh) | 神经网络模型量化方法及装置、存储介质及电子设备 | |
CN114330239A (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 |