CN111695671B - 训练神经网络的方法及装置、电子设备 - Google Patents
训练神经网络的方法及装置、电子设备 Download PDFInfo
- Publication number
- CN111695671B CN111695671B CN201910184297.4A CN201910184297A CN111695671B CN 111695671 B CN111695671 B CN 111695671B CN 201910184297 A CN201910184297 A CN 201910184297A CN 111695671 B CN111695671 B CN 111695671B
- Authority
- CN
- China
- Prior art keywords
- point type
- floating
- fixed
- parameters
- neural network
- 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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
公开了一种训练神经网络的方法及装置、电子设备,包括:量化卷积神经网络中卷积层的第一组浮点型参数,以获得所述卷积层的第一组定点型参数,所述第一组浮点型参数是通过样本数据对所述卷积神经网络进行训练得到的浮点型数据;基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,所述第三组浮点型参数为浮点型数据;以及,量化所述第三组浮点型参数为第二组定点型参数,以得到定点化的卷积神经网络。本申请可以得到计算简单且精度更接近原始神经网络的定点化神经网络。
Description
技术领域
本申请涉及神经网络技术领域,尤其涉及一种训练神经网络的方法及装置、电子设备。
背景技术
神经网络在图像识别、语音识别、机器翻译、疾病诊断等领域的应用远远超过了以往的其他解决方案。然而,神经网络的模型复杂度和计算效率常常会限制更加广泛的在各种场合应用神经网络模型。因此减少神经网络模型大小、加快神经网络模型推理速度,可以大大拓宽神经网络应用的领域。
发明内容
为了解决上述技术问题,期望提供一种训练神经网络的方法及装置、电子设备,以获得计算简单并且精度又接近原始神经网络的定点化神经网络,从而在提高计算效率和节省硬件资源的同时获得较高精度的运算结果。
根据本申请的一个方面,提供了一种训练神经网络的方法,包括:
量化卷积神经网络中卷积层的第一组浮点型参数,以获得所述卷积层的第一组定点型参数,所述第一组浮点型参数是通过样本数据对所述卷积神经网络进行训练得到的浮点型数据;
基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,所述第三组浮点型参数为浮点型数据;以及
量化所述第三组浮点型参数为第二组定点型参数,以得到定点化的卷积神经网络。
根据本申请的另一个方面,提供了一种训练神经网络的装置,包括:
第一量化单元,配置为量化卷积神经网络中卷积层的第一组浮点型参数,以获得所述卷积层的第一组定点型参数,所述第一组浮点型参数是通过样本数据对所述卷积神经网络进行训练得到的浮点型数据;
合并单元,配置为基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,所述第三组浮点型参数为浮点型数据;以及
第二量化单元,配置为量化所述第三组浮点型参数为第二组定点型参数,以得到定点化的卷积神经网络。
根据本申请的另一个方面,提供了一种电子设备,包括:一个或多个处理器;以及,存储器,存储有计算机指令,所述计算机指令在被所述处理器运行时使所述处理器执行上述训练神经网络的方法。
根据本申请的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行上述训练神经网络的方法。
通过本申请实施例可以得到计算简单、精度又更接近原始神经网络的定点化神经网络,通过将卷积神经网络转换为该定点化神经网络,不仅可显著提高计算效率、节省硬件资源,同时可以更高精度的运算结果。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本申请所适用的神经网络的结构示意图。
图2是本申请一示例性实施例提供的定点化神经网络的结构示意图。
图3是本申请一示例性实施例提供的训练神经网络的方法的流程示意图。
图4是本申请一示例性实施例提供的量化第一组浮点型参数的流程示意图。
图5是本申请一示例性实施例提供的浮点卷积神经网络A的架构示意图。
图6是本申请一示例性实施例提供的量化所述第三组浮点型参数为第二组定点型参数的流程示意图。
图7是本申请一示例性实施例提供的经过步骤302的处理后浮点卷积神经网络A的结构示意图。
图8是本申请一示例性实施例提供的对应浮点卷积神经网络A的定点化神经网络的结构示意图。
图9是本申请一示例性实施例提供的训练神经网络的方法的另一流程示意图。
图10是本申请一示例性实施例提供的训练神经网络的装置的结构图。
图11是本申请一示例性实施例提供的训练神经网络的装置的具体结构图。
图12是本申请一示例性实施例提供的电子设备的结构图。
具体实施方式
下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
申请概述
由于神经网络需要在特定类型的计算架构上使用一系列的乘法、加法等运算来实现,因此如何高效的表示神经网络,并将神经网络中的运算用晶体管高效实现,或者是通过模拟的方式映射到具体计算架构所支持的运算中,是目前业界关注的重点。
由于定点化神经网络可以将神经网络的参数、特征数据使用低比特来表示而不使用计算开销大的32比特浮点型数据来表示,其运算所需的硬件资源很少,因此,训练定点化神经网络是解决上述问题的一种途径。
本申请实施例的发明构思是提供一种训练神经网络的方法及装置、电子设备,先量化卷积神经网络中各卷积层的第一组浮点型参数为第一组定点型参数,再利用该第一组定点型参数和卷积层相对应的归一化层的第二组浮点型参数确定各卷积层的第三组浮点型参数,最后量化各卷积层的第三组浮点型参数为第二组定点型参数,这不仅通过合并消除了原始卷积神经网络中的归一化层,又通过两个阶段的量化减小了量化的损失,这不仅简化了神经网络的结构、降低了神经网络的模型复杂度,而且量化得到的定点型参数更接近于原始卷积神经网络的浮点型参数,因而得到一种计算简单(例如低比特整型乘法、高比特累加和移位操作等)、前向推理速度快、精度更接近于原始卷积神经网络的定点化神经网络。由此可见,相较于原始的卷积神经网络而言,本申请实施例获得的定点化的卷积神经网络不仅计算效率明显提高、使用的硬件资源很少,而且精度相近。
示例性应用场景
图1示出了本申请实施例适用的卷积神经网络10的示例性结构,该卷积神经网络10可以包括输入层、隐含层和输出层,其中,隐含层可以包括至少一个卷积层、与至少一个卷积层相对应的归一化层,卷积层通过对输入特征图或原始图像进行卷积操作来提取特征进而获得输出特征,归一化层通过对卷积层的输出特征图进行归一化处理来保证输出特征图中的数据分布稳定,以加速卷积神经网络的训练速度、提高卷积神经网络的运算精度等。除此之外,上述卷积神经网络的隐含层还可包括至少一个与卷积层相对应的激活层,该激活层通过对归一化处理后的输出特征图进行激活操作来提供神经网络的非线性建模能力,以便神经网络有效建模实际环境中非线性分布的数据。
一个示例中,激活层的激活操作可通过如下激活函数中至少之一来实现:修正线性单元(Rectified linear unit,ReLU)、带泄露修正线性单元(Leaky ReLU)、Sigmoid。除此之外,激活层还可通过其他激活函数的激活操作来实现,对此,本申请实施例不予限制。
一个示例中,归一化层可以是但不限于批量归一化层(BN,BatchNormalization)。除此之外,归一化层还可是其他类型,对此,本申请不予限制。
在训练卷积神经网络(例如深度卷积神经网络)时,归一化层放在卷积层之后能够加速网络收敛、控制过拟合,归一化层将数据归一化后,能够有效解决梯度消失与梯度爆炸问题。虽然归一化层在训练时起到了积极作用,然而,在神经网络前向推断时多了一些层的运算,影响了神经网络的性能,且占用了更多的内存或显存空间。因此,有必要将归一化层合并到卷积层,来提升卷积神经网络前向推断的速度。
本申请实施例可将上述卷积神经网络10转换为定点化神经网络。举例来说,本申请实施例可以将一浮点神经网络转换为定点化神经网络,该定点化神经网络计算简单且精度与原始卷积神经网络十分相近。图2示出了卷积神经网络10经过本申请实施例处理而得到的定点化神经网络的结构。
本申请实施例可应用于任何可能的应用场景。举例来说,本申请实施例训练得到的神经网络尤其适用于硬件资源有限、计算精度要求较高的场景。例如,使用FPGA、ASIC等低成本硬件来实现本申请训练得到的神经网络运算的场景。
示例性方法
图3是本申请一示例性实施例提供的训练神经网络的方法的流程示意图。本实施例可应用在电子设备上,如图3所示,包括如下步骤:
步骤301,量化卷积神经网络中卷积层的第一组浮点型参数,以获得卷积层的第一组定点型参数;
步骤302,基于与卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定卷积层的第三组浮点型参数,第三组浮点型参数为浮点型数据;
步骤303,量化第三组浮点型参数为第二组定点型参数,以得到定点化的卷积神经网络。
本申请实施例的方法,在合并归一化层到卷积层之前先量化卷积层的浮点型参数为定点型参数,再通过吸纳归一化层的浮点型参数到卷积层的定点型参数中来合并归一化层到卷积层,合并后再次量化卷积层的参数为定点型参数,由于在将归一化层的参数合并到卷积层之前,归一化层的参数是较高精度的浮点型参数,因此确保了合并后的卷积层的参数是高精度的浮点型参数,在合并后的卷积层进行二次量化时可减小卷积层在二次量化时的损失,使得定点化的卷积神经网络的定点型参数更接近于原始卷积神经网络的参数,又由于归一化层的消失,简化了神经网络的结构、降低了模型复杂度,从而得到一种计算简单(例如低比特整型乘法、高比特累加和移位操作等)、前向推理速度快、精度更接近于原始卷积神经网络的定点化神经网络。相较于原始的卷积神经网络,本申请实施例获得的定点化的卷积神经网络由于结构更简单、模型复杂度更低、使用定点型参数而非开销大的浮点数且定点型参数更接近于原始卷积神经网络的浮点型参数,因此不仅计算效率明显提高、使用的硬件资源很少,而且精度相近。
本申请实施例的方法包括两个阶段的量化(即步骤301和步骤303),第一阶段是在合并前直接量化原始卷积神经网络中卷积层的参数,第二阶段是量化合并后卷积层的参数,分两个阶段量化可根据浮点型参数的具体情况选择合适的移位值来分别量化,量化损失更小,可使第二组定点型参数更接近于原始卷积神经网络的参数,继而获得一种计算精度更接近于原始卷积神经网络的定点化卷积神经网络。
卷积层的参数可以包括但不限于权重和偏置量。本申请实施例中,卷积层的参数是浮点型参数时,卷积层的权重(weight)和偏置量(bias)中至少之一包含浮点型数据,下文称为浮点型权重和浮点型偏置量。卷积层的参数是定点型参数时,卷积层的权重和偏置量中的所有数据均是定点型数据,下文称为定点型权重和定点型偏置量。
卷积层的权重可以包括一个或多个尺寸相同的核(也可称为卷积核),核的数量等于卷积层的输出特征数据的通道数。权重中的每个核可以具有高度、宽度和通道这三个维度,核在通道维度上的大小(即核的通道数)等于卷积层的输入特征数据在通道维度上的大小,核中的每个数据可以通过其在高度、宽度和通道这三个维度上的坐标来唯一标识。本申请实施例中,浮点型权重中的至少一个核中的至少一部分数据是浮点型数据,而定点型权重中每个核中的每个数据均是定点型数据。
卷积层的参数中可以包括多个偏置量,每个偏置量对应输出特征数据的一个通道维度,偏置量的数量等于卷积层的输出特征数据的通道数。本申请实施例中,浮点型偏置量是浮点型数据,定点型偏置量是定点型数据。
以一个标准卷积步长(stride)为1举例,本申请实施例中卷积层的卷积运算可以通过下式(1)来表示:
Znkl=∑chwWnchw·Xc,k+h-1,l+w-1+Bn (1)
式(1)中,Znkl表示卷积层的输出特征数据中高度维度坐标为k、宽度维度坐标为l、通道维度坐标为n的数据,Wnchw表示卷积层的权重中第n个核的高度维度坐标为h、宽度维度坐标为w、通道维度坐标为c的数据,Bn表示对应通道n的偏置量,X表示卷积层的输入特征数据,Xc,k+h-1,l+w-1表示输入特征数据中高度维度坐标为k+h-1、宽度维度坐标为l+w-1、通道维度坐标为c的数据。
本申请实施例中,归一化层的参数可以包括但不限于尺度因子γ(也可称为缩放因子)和平移因子β(也可称为偏移因子)。除此之外,归一化层的参数还可以包括均值μ、方差δ和归一化常数ε,一般常数ε取为较小的浮点数。
举例来说,本申请实施例中归一化层可以是批量归一化层,其运算可以通过下式(2)来表示:
其中,Ynkl表示批量归一化层的输出特征数据中高度维度坐标为k、宽度维度坐标为l、通道维度坐标为n的数据的数值,Znkl表示对应该批量归一化层的卷积层的输出特征数据中高度维度坐标为k、宽度维度坐标为l、通道维度坐标为n的数据的数值,γn表示对应通道维度n的尺度因子,βn表示对应通道维度n的平移因子,δn表示对应通道维度n的方差,μn表示对应通道维度n的均值,∈是批量归一化层的归一化常数,∈为浮点数,一般取值很小的浮点数,用于保证数值的稳定。一个示例中,δn的值可以由训练原始卷积神经网络时使用的样本数据的方差与一系数的乘积来确定,μn的值可以由样本数据的均值与一系数的乘积来确定。
本申请实施例中,卷积神经网络中还可以包括激活层。其中,激活层的参数与激活层使用的激活函数有关。例如,激活层采用ReLU作为激活函数时,激活层的激活函数运算可以表示为下式(3)。
f(x)=max(x,0) (3)
其中,max(x,0)表示在x大于0时输出x、在x小于或等于0时输出0。
本申请实施例中,卷积神经网络中卷积层的第一组浮点型参数和归一化层的第二组浮点型参数分别可以是通过样本数据对所述卷积神经网络进行训练得到的浮点型数据。一个示例中,该样本数据可以来自已标注类别的图像,或者可以来自类别未知的图像。
本申请实施例中,步骤303得到的定点化的卷积神经网络中卷积层的参数即第二组定点型参数的位宽可以由执行该卷积神经网络运算的硬件(例如,神经网络加速器、GPU、CPU或其他类似的电子设备)支持的数据位宽来确定。本申请实施例中,由于第二组定点型参数的位宽由执行卷积神经网络运算的硬件支持的数据位宽来确定,因此,每个卷积计算可以由与硬件支持的数据位宽相应的比特乘法、高比特累加和移位来实现,从而可以节省大量的硬件资源。
至少一些实施例中,第二组定点型参数的位宽可以由执行卷积神经网络运算的硬件中的计算单元支持的数据位宽来确定。该计算单元可以乘法累加器阵列。该乘法累加器阵列可以包括多个乘法器和多个加法器,卷积层的第二组定点型参数包括权重和偏置量,其中,权重在每个通道上具有一个核,每个核的数据位宽可以由乘法器支持的数据位宽来确定,例如,如果执行卷积神经网络运算的硬件中使用N比特的乘法器,那么,定点化的卷积神经网络中卷积层的权重中的每个核的数据位宽可以等于N。同样的,定点化的卷积神经网络中卷积层的偏置量在每个通道上的分量的数据位宽也可以由乘法器支持的数据位宽来确定,例如,如果执行卷积神经网络运算的硬件中使用N比特的乘法器,那么,定点化的卷积神经网络中卷积层的偏置量在每个通道上的分量的数据位宽可以等于4N。
本申请实施例中的定点型数据可以是使用同样的移位值的一组数(例如,该一组数可以是某个向量或张量)。一个示例中,本申请实施例的定点型数据可以是带符号、移位值为s的N比特定点数,可以表示为下式(4):
其中,biti表示第i比特(0或者1)。易见,两个定点型数据相乘得到一个新的2N比特的定点型数据,移位值为之前两个定点数移位值之和,两个移位值相同的定点型数据相加可以得到一个N+1比特的定点型数据同时移位值保持不变。
通过本申请实施例的方法得到的定点化神经网络中,卷积层的定点型参数和定点化神经网络的特征数据均是上述的定点型数据。具体来说,通过本申请实施例的方法得到的定点化神经网络中,特征数据中的每个数据可以是上述的N比特定点数且移位值相同,假设移位值均为sx。定点化神经网络中卷积层的权重中的每个核(Kernel)的每个数据可以是上述的N比特定点数且移位值相同,假设用表示权重中第j个核的移位值。定点化神经网络中卷积层的偏置量使用高比特定点数表示,偏置量中每个数据的移位值可以是输入特征数据的移位值与相应的核的移位值之和,即/>其中,/>表示偏置量中第j个分量的移位值,sx表示输入特征数据的移位值,/>表示权重中第j个核的移位值。由于通过本申请实施例的方法得到的定点化神经网络可使用上述定点型数据表示,其每个卷积计算由N比特乘法(输入特征、权重均由N比特定点数表示)、高比特累加和移位(乘加结果移位得到下一层所用特征),相较于原始的卷积神经网络的卷积计算,本申请实施例获得的定点化的卷积神经网络可以节省大量的硬件资源。
本申请实施例中,步骤301中量化的实现方式可以有多种。例如,可以直接通过例如反向传播等方式训练卷积神经网络来实现针对第一浮点型参数的量化,再例如,可以通过数据类型转换与例如反向传播等训练方式的结合来训练卷积神经网络来实现针对第一浮点型参数的量化。具体应用中,可以根据精度需求来选取合适的实现方式。举例来说,要求高精度时可以选后一实现方式,要求高效率而对精度要求相对较低的情况下可以选前一实现方式。当然,本申请实施例步骤301的具体实现方式不限于这两种,其他任何可适用的方式均可应用于本申请实施例的步骤301中。
如图4所示,至少一些实施例中,步骤301可以包括:步骤401,转换卷积层的第一组浮点型参数为定点型数据;以及,步骤402,利用转换得到的定点型数据和与所述卷积层相对应的归一化层的第二组浮点型参数训练卷积神经网络,以得到卷积层的第一组定点型参数。本申请实施例中,在合并前先量化卷积神经网络中卷积层的原始参数为定点型数据,可以减少量化卷积层原始参数的损失,获得更接近于卷积层原始参数的第一组定点型参数,从而可使定点化卷积神经网络的第二组定点型参数也更接近原始卷积神经网络的参数,以最终获得一种精度更接近原始卷积神经网络的定点化神经网络。
本申请实施例中,步骤401中可以通过任何能将浮点型数据转换为定点型数据的操作来实现。例如,步骤401中的转换可以通过取整、除法、截取或者其结合来实现。如图4所示,至少一些实施例中,步骤401中转换卷积层的第一组浮点型参数为定点型数据,可以包括:步骤401a,对当前卷积层的第一组浮点型参数执行除法操作,该除法操作的除数由对应当前卷积层的预定移位值确定;以及,步骤401b,对除法操作的结果依次执行取整操作和对应预定位宽值的截取操作,以得到对应当前卷积层的第一组浮点型参数的定点型数据。一个示例中,步骤401a的除法操作的除数可以等于2的s次方,s为上述的预定移位值。一个示例中,步骤401b中截取操作可以是将取整操作的结果限定在最小值-2N-1、最大值为2N-1-1的范围的操作,N为预先设定的位宽值。
本申请实施例的至少一些实施例中,在步骤401a中还可以为卷积神经网络中每个卷积层预先设定对应的移位值,不同卷积层的移位值可以不同,这样,通过在步骤401a中使用不同的移位值可以获得步骤401b中取整误差和截取误差的折中,从而进一步减少量化损失。一个示例中,可以使用交叉验证的方式来做尝试以为每个卷积层选择合适的移位值。具体地,可以将移位值视为超参数,先为每个卷积层设定多个不同的候选移位值,然后根据最终训练结果中验证集的效果来从这多个不同的候选移位值中选择一个来作为该卷积层的移位值。一个示例中,步骤401的转换过程可以通过如下式(5)所示的计算来实现,其中,表示由第一浮点型参数转换而得的定点型数据的第j个分量,rj表示第一组浮点型参数的第j个分量,Round为取整操作,Clip为截取操作(也称为饱和操作),这里的Clip限制定点型参数的范围是最小值为-2N-1、最大值为2N-1-1,移位值s、位宽为N可以预先设定。
式(7)中,不同的卷积层移位值s的取值不同,这样,可以将取整(Round)和截取(Clip)的误差相互抵消,进而减小量化损失。
至少一些实施例中,第一组浮点型参数可以包括第一浮点型权重和第一浮点型偏置量,第一组定点型参数中可以包括第一定点型权重和对应输出特征数据各个通道维度的各个第一定点型偏置量。相应的步骤401的转换可以包括将第一浮点型权重中每个核的数据转换为定点型数据;以及,将每个第一浮点型偏置量转换为定点型数据。其中,第一浮点型权重的转换以及第一浮点型偏置量的转换分别可以通过上文步骤401a至步骤401b的处理来实现。至少一个实施例中,步骤401的转换可以包括:对第一浮点型权重中每个核的每个数据执行步骤401a至步骤401b的处理来将其转换为定点型数据;以及,针对每个第一浮点型偏置量执行步骤401a至步骤401b的处理来将其转换为定点型数据。
一个示例中,可以下式(6)将第一浮点型权重中每个核的数据转换为定点型数据。
其中,sn是第n个核的移位值,假如当前层具有M个核时,n的取值可以是[0,1,…,M-1]。Wnchw表示第n个核中高度维度坐标为h、宽度维度坐标为w、通道数为c的数据,表示由Wnchw转换而来的定点型数据。一个示例中,可以通过式(5)将每个第一浮点型偏置量转换为定点型数据,此时,式(5)中的第j个分量是指对应通道维度j的第一浮点型偏置量,j为不小于0、不大于M的整数,M为卷积层的输出特征数据的通道数,相应的,rj表示对应通道维度j的第一浮点型偏置量,/>表示由rj转换而来的一个定点型数据。
一个示例中,步骤301的量化可以包括前向计算和反向传播,通过不断迭代来完成步骤301的量化。
下面以一浮点卷积神经网络A为例详细说明步骤301量化的具体实现过程。
浮点卷积神经网络A可以包括至少一个量化卷积模块,这至少一个量化卷积模块可以相互串联以形成深层网络结构。其中,每个量化卷积模块可以包括第一转换层、第二转换层、卷积层、批量归一化层、激活层和第三转换层,其中,第一转换层和第二转换层的输出分别连接卷积层的参数输入端,卷积层、批量归一化层、激活层和第三转换层依次串联连接。其中,第一转换层用于将第一组浮点型参数中的第一浮点型权重转换为定点型数据,第二转换层用于将第一浮点型参数中的第一浮点型偏置量转换为定点型数据,第三转换层用于将激活层的输出特征数据转换为定点型数据,第一转换层、第二转换层和第三转换层的处理可以通过上文步骤401a~步骤401b的处理来实现,这三个转换层的位宽、移位值可以预先设定,一般来说,第一转换层、第二转换层和第三转换层的移位值可以设定为不同的值,以便减小量化损失。图5示出了包含一个量化卷积模块时浮点卷积神经网络A的模型结构。
一个示例中,步骤301量化的示例性流程可以包括如下步骤:
步骤b1,使用规定位宽的输入特征数据完成浮点卷积神经网络A的前向计算,得到卷积神经网络的预测值;
本步骤中,上述输入特征数据可以是定点型数据,且其位宽可以由执行卷积神经网络运算的硬件中的计算单元支持的数据位宽来确定。具体来说,该输入特征数据的位宽可以与上文第二定点型参数的位宽相同。
步骤b2,计算浮点卷积神经网络A的预测值与真实值之间的误差;
例如,本步骤中可以通过代价函数来估算,也可以通过简单的加和平均等运算来估算。
步骤b3,将上述误差在浮点卷积神经网络A中反向传播,以确定卷积神经网络中每个层的参数的更新值;
本步骤中,以某一卷积层的权重为例,确定更新值的过程可以包括:计算误差与权重的梯度,计算预先设定的学习率与该梯度的乘积,并由权重减去该乘积来得到权重的更新值。
本步骤中,按照前向计算的逆序依次确定“第三转换层”的参数更新值、激活层的参数更新值、批量归一化层的参数更新值、卷积层的参数更新值、第二转换层的参数更新值和第一转换层的参数更新值。
一个示例中,可以通过下式(7)来计算权重的更新值:
′
其中,Wnchw表示权重中第n个卷积核中的高度维度坐标为h、宽度维度坐标为w、通道维度坐标为c的数据的更新值,Wnchw表示权重中第n个卷积核中高度维度坐标为h、宽度维度坐标为w、通道维度坐标为c的数据的原始值(即步骤b1中使用的值),Enkl表示输出特征数据中高度维度坐标为k、宽度维度坐标为l、通道维度坐标为n的数据的预测值与真实值的误差,η表示预先设定的学习率,表示误差和权重的梯度,该梯度表征Wnchw对整体误差产生了多少影响。
对于浮点卷积神经网络中除各个转换层之外的其他各层的每个参数,包括卷积层的偏置量等,均可以类似上述权重的方式来确定其更新值,其具体过程以及原理类似,不再赘述。
本步骤中,各个转换层(即第一转换层、第二转换层和第三转换层)的反向过程(即确定其参数更新值的过程)可以通过直通估算子(straight-through estimator)来实现。
步骤b4,使用更新值调整浮点卷积神经网络A的参数,并返回步骤b1。
上述示例性流程中,步骤b1至步骤b4的过程不断迭代,直到收敛,即可得到浮点卷积神经网络A中卷积层的第一组定点型参数。
一个示例中,浮点卷积神经网络A的一次前向计算的示例性流程可以包括如下步骤:
步骤c1,将卷积层的第一浮点型权重输入到第一转换层,在第一转换层使用预先设定的位宽N和移位值s将卷积层的第一浮点型权重转换为定点型数据;
步骤c2,将卷积层的第一浮点型偏置量输入到第二转换层,在第二转换层使用预先设定的位宽N和移位值s将卷积层的第一浮点型偏置量转换为定点型数据;
步骤c3,使用与步骤c1的定点型数据同位宽即位宽也为N的定点型输入特征数据(INPUT)完成卷积层(conv)的运算;
本步骤中,由于卷积层的定点型参数与输入特征数据均为位宽N的定点数,因此硬件执行卷积运算时可以只使用N比特的乘法器,并且经过卷积层的卷积运算(一次乘法和一次累加)获得的输出特征数据通常是比特数4N、移位值2s的高精度定点数。
步骤c4,在批量归一化层,使用批量归一化层的浮点型参数对卷积层的输出特征数据执行归一化处理(该过程是浮点计算),获得归一化层的输出特征数据,该输出特征数据为浮点数;
步骤c5,批量归一化层的输出特征数据经过激活层的激活函数处理,获得激活层的输出特征数据,由于批量归一化层的输出特征数据为浮点数,因此该激活层的输出特征数据仍是浮点数;
步骤c6,在第三转换层基于预先设定的位宽N和移位值s将激活层的输出特征数据转换为定点数。
由上可见,本申请实施例步骤301的量化即合并归一化层到卷积层之前的量化,通过使用批量归一化来训练,可以保证量化的输入大致近似符合0均值、标准差为1的高斯分布,便于控制量化误差;此外,步骤301中通过使用不同的移位值,可以获得取整误差和截取误差的折中,由于批量归一化保证了训练过程中分布稳定,这一折中也同样保持稳定,从而使得训练过程稳定,效率更高且量化损失更小。
本申请实施例中,步骤302中确定卷积层的第三组浮点型参数的方式可以有多种。至少一些实施例中,步骤302中基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,可以包括:基于所述第一组定点型参数中的权重和所述第二组浮点型参数中部分参数,计算所述第三组浮点型参数中的权重;和/或,基于所述第一组定点型参数中的偏置量和所述第二组浮点型参数中的部分参数,计算所述第三组浮点型参数中的偏置量。由此,步骤302中通过吸收归一化层的参数到卷积层的参数中来获得卷积层的新参数,如此,具有新参数的卷积层能够实现之前归一化层和卷积层的共同作用,从而实现了归一化层到卷积层的合并。
至少一些实施例中,卷积层的第一组定点型参数可以包括第一定点型权重和第一定点型偏置量,卷积层的第三组浮点型参数可以包括第三浮点型权重和第三浮点型偏置量。此时,步骤302中基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,可以包括:根据所述尺度因子和所述第一定点型权重,计算所述第三浮点型权重;以及,根据所述尺度因子、平移因子以及所述第一定点型偏置量,计算所述第三浮点型偏置量。
一个示例中,对于批量归一化层来说,其参数包括方差、常数、尺度因子等,根据所述尺度因子和所述第一定点型权重计算第三浮点型权重,可以包括:由对应每个通道维度的尺度因子除以归一化常数和相应通道维度的所述方差之和,得到对应每个通道维度的第一商值;以及,计算对应每个通道维度的第一商值与所述第一定点型权重中对应所述通道维度的核中的每个数据的乘积,得到所述第三浮点型权重中每个核的每个数据;其中,所述通道维度是指输出特征数据的通道维度。
一个示例中,第三浮点型权重中每个核中的每个数据可以通过下式(8)来计算:
其中,γn是对应通道维度n的尺度因子,δn是对应通道维度n的方差,∈是批量归一化层的归一化常数,Unchw表示第三浮点型权重中第n个核中的高度维度坐标为h、宽度维度坐标为w、通道维度坐标为c的数据的取值,Wnchw表示第一定点型权重中第n个核中的高度维度坐标为h、宽度维度坐标为w、通道维度坐标为c的数据的取值,Unchw和Wnchw的维度坐标相同,也即Unchw和Wnchw属于权重中的同一元素。
一个示例中,根据所述尺度因子、平移因子以及所述第一定点型偏置量,计算所述第三浮点型偏置量,可以包括:由对应每个通道维度的尺度因子除以归一化常数和相应通道维度的所述方差之和,得到对应每个通道维度的第一商值;计算对应每个通道维度的第一商值与对应所述通道维度的第一定点型偏移量的乘积,得到对应每个通道维度的第一乘积值;以及,计算对应每个通道维度的第一乘积值与对应所述通道维度的平移因子之和,得到对应每个通道维度的第三浮点型偏置量;其中,所述通道维度是指输出特征数据的通道维度。
一个示例中,第三浮点型偏置量可以通过下式(9)来计算:
其中,γn是对应通道维度n的尺度因子,δn是对应通道维度n的方差,∈是批量归一化层的归一化常数,βn是对应通道维度n的平移因子,Bn是对应通道维度n的第一定点型偏置量,Cn是对应通道维度n的第三浮点型偏置量。
以一个标准卷积步长(stride)为例,经过步骤302的处理之后,卷积神经网络中归一化层被合并到卷积层中,合并后该卷积层的卷积运算可以通过如下式(10)来表示:
Z′ nkl=∑chwUnchw·Xc,k+h-1,l+w-1+Cn=Ynkl (10)
由式(1)~(2)、(8)~(10)可见,经过步骤302的处理,具有第三浮点型参数的卷积层的卷积运算结果等价于具有第二浮点型参数的归一化层和具有第一定点型参数的卷积层的连续计算的结果,这一过程是通过参数转换吸收了归一化层。在步骤302中,由于归一化层的参数是浮点数,那么卷积层的新参数U、C(即第三组浮点型参数)也成为了浮点数。
本申请实施例中,步骤303中量化的实现方式可以有多种。例如,可以直接通过例如反向传播等方式训练经过步骤302处理后的卷积神经网络来实现其卷积层参数的量化,再例如,可以通过数据类型转换与例如反向传播等训练方式的结合来训练卷积神经网络以实现卷积层参数的量化。具体应用中,可以根据精度需求来选取合适的实现方式。举例来说,要求高精度则可以选取后一实现方式,要求高效率而对精度要求相对较低的情况下可以选取前一实现方式。当然,本申请实施例步骤303的具体实现方式不限于这两种,其他任何可适用的方式均可应用于本申请实施例的步骤303中。
至少一些实施例中,如图6所示,步骤303中量化所述第三组浮点型参数为第二组定点型参数,可以包括:步骤601,转换所述第三组浮点型参数为定点型数据;以及,步骤602,利用所述转换得到的定点型数据训练卷积神经网络,以得到所述卷积层的第二组定点型参数。本申请实施例中,通过数据类型转换和训练卷积神经网络的过程相结合,既可以提高量化效率,还可以减少量化损失,使得第二组定点型参数的数值更接近于原始卷积神经网络的参数(此处原始卷积神经网络的参数可以是因原始卷积神经网络中归一化层的参数吸纳到卷积层的参数而获得的参数,例如,利用卷积层的第一组浮点型参数与归一化层的第三组浮点型参数按照式(8)~(9)得到的参数U、C),进而获得一种计算精度更接近原始卷积神经网络的定点化神经网络。
本申请实施例中,步骤601中可以通过任何能将浮点型数据转换为定点型数据的操作来实现。例如,步骤601中的转换可以通过取整、除法、截取或者其结合来实现。如图6所示,至少一些实施例中,步骤601中转换所述第三组浮点型参数为定点型数据,包括:步骤601a,将第三组浮点型参数划分为多个组;步骤601b,以最小化误差平方和为目标,确定每个组的移位值;以及,步骤601c,利用对应于每个组的移位值将每个组中的第三组浮点型参数转换为定点型数据。
一个示例中,可以将第三组浮点型参数中的第三浮点型权重和/或第三浮点型偏置量分成一组或若干组,每个组中的参数用相同的移位值,移位值的确定可以采用不同的策略,比如简单地以最小化量化误差平方和为目标来确定每个组的移位值。这样,可以使用更适合的移位值来实现上述转换,从而进一步减少量化损失,使得最终获得的第二组定点型参数的数值更接近于原始卷积神经网络的参数,进而获得计算精度更接近原始卷积神经网络的定点化神经网络。
一个示例中,最小化量化误差平方和可通过下式(11)来表示:
其中,Gi表示对第三组浮点型参数的第i个分组,si表示第i组的移位值,rj表示第三组浮点型参数的第j个分量(浮点数),表示量化后参数第j个分量(定点数)使用移位值为si。
至少一些实施例中,步骤601c中的处理过程可以通过步骤401a~步骤401b的处理来实现。至少一个实施例中,步骤601c可以包括:通过步骤401a~步骤401b的处理将第三浮点型权重中每个核中的数据转换为定点型数据;以及,通过步骤401a~步骤401b的处理将每个第三浮点型偏置量转换为定点型数据。一个示例中,可以基于式(5)和式(6)完成这些转换。
下面以上文提到的浮点卷积神经网络A为例来说明步骤303量化的具体实现过程。
经过步骤302的处理,由于批量归一化层被并入卷积层中,图5的浮点卷积神经网络A的模型结构转变为图7所示的结构。
步骤303中的量化过程可以包括前向计算和反向传播,通过不断迭代来完成。该前向计算和反向传播的具体过程与上文步骤301的原理相同,不同之处仅在于各个转换层使用的移位值的确定方式不同,步骤303中移位值通过前文所述步骤601a~步骤601b来实现,具体细节可参照上文记载,不再赘述。
经过步骤303的处理之后,第三浮点型参数被量化为第二组定点型参数,该第二组定点型参数中可以包括第二定点型权重和第二定点型偏置量,进而得到浮点卷积神经网络A的定点化卷积神经网络,该定点化卷积神经网络的模型结构如图8所示。
本申请实施例的方法中,还可以包括微调的步骤。至少一些实施例中,如图9所示,上述训练神经网络的方法中还可以包括:步骤304,将第二组定点型参数更新为浮点型参数;以及,步骤305,量化更新得到的浮点型参数。由此,通过步骤304和步骤305可以对第二组定点型参数进行微调,可使得定点化卷积神经网络中卷积层的参数更接近于上述的第一组浮点型参数,从而使得定点化卷积神经网络的精度更接近于原始卷积神经网络。至少一个实施例中,上述微调也可以使用反向传播来实现。一个示例中,步骤304中可以基于例如式(7)所示的算法使用小的学习率来更新例如第二定点型权重、第二定点型偏置量等为浮点数。一个示例中,步骤305的量化过程可以与上文中步骤303的量化过程相同,具体技术细节可参照上文,不再赘述。
本申请实施例的上述方法,通过三个阶段的量化(步骤301、步骤303和步骤305),可以得到计算简单(仅需要低比特整型乘法、高比特累加和移位操作)、精度高(接近浮点网络精度)的定点化神经网络,该定点化的神经网络的参数和特征数据使用低比特来表示,其运算可通过晶体管高效实现或通过模拟的方式映射到具体计算结构所支持的运算中,从而可以利用较小的硬件代价实现神经网络的计算,同时还避免了其他定点化神经网络中计算效率高时精度低、精度高时计算效率低的问题。
示例性装置
图10是本申请一示例性实施例提供的训练神经网络的装置100的结构示意图。本实施例可应用在电子设备上,如图10所示,训练神经网络的装置100可以包括:
第一量化单元101,配置为量化卷积神经网络中卷积层的第一组浮点型参数,以获得所述卷积层的第一组定点型参数,所述第一组浮点型参数是通过样本数据对所述卷积神经网络进行训练得到的浮点型数据;
合并单元102,配置为基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,所述第三组浮点型参数为浮点型数据;以及
第二量化单元103,配置为量化所述第三组浮点型参数为第二组定点型参数,以得到定点化的卷积神经网络。
至少一些实施例中,上述第二组定点型参数的位宽由执行所述卷积神经网络运算的硬件支持的数据位宽确定。
至少一些实施例中,第一量化单元101可以包括:第一转换模块,配置为转换所述卷积层的第一组浮点型参数为定点型数据;以及,第一训练模块,配置为利用所述转换得到的定点型数据和与所述卷积层相对应的归一化层的第二组浮点型参数训练所述卷积神经网络,以得到所述卷积层的第一组定点型参数。
至少一些实施例中,第一转换模块可以包括:第一操作子模块,配置为对当前卷积层的第一组浮点型参数执行除法操作,所述除法操作的除数由对应当前卷积层的预定移位值确定;以及,第二操作子模块,配置为对除法操作的结果依次执行取整操作和对应预定位宽值的截取操作,以得到对应当前卷积层的第一组浮点型参数的定点型数据。
至少一些实施例中,所述归一化层的第二组浮点型参数包括尺度因子和平移因子;所述卷积层的第一组定点型参数包括第一定点型权重和第一定点型偏置量,所述卷积层的第三组浮点型参数包括第三浮点型权重和第三浮点型偏置量。合并单元102可以包括:权重计算模块,配置为根据所述尺度因子和所述第一定点型权重,计算所述第三浮点型权重;以及,偏置量计算模块,配置为根据所述尺度因子、平移因子以及所述第一定点型偏置量,计算所述第三浮点型偏置量。
至少一个实施例中,所述归一化层的第二组浮点型参数还包括方差和归一化常数。权重计算模块可以包括:第一除法子模块,配置为由对应每个通道维度的尺度因子除以归一化常数和相应通道维度的所述方差之和,得到对应每个通道维度的第一商值;以及,第一乘法子模块,配置为计算对应每个通道维度的第一商值与所述第一定点型权重中对应所述通道维度的核中的每个数据的乘积,得到所述第三浮点型权重中每个核的每个数据;其中,所述通道维度是指输出特征数据的通道维度。
至少一个实施例中,所述归一化层的第二组浮点型参数还包括方差和归一化常数。偏置量计算模块可以包括:第一除法子模块,配置为由对应每个通道维度的尺度因子除以归一化常数和相应通道维度的所述方差之和,得到对应每个通道维度的第一商值;第一乘法子模块,配置为计算对应每个通道维度的第一商值与对应所述通道维度的第一定点型偏移量的乘积,得到对应每个通道维度的第一乘积值;以及,第一加法子模块,配置为计算对应每个通道维度的第一乘积值与对应所述通道维度的平移因子之和,得到对应每个通道维度的第三浮点型偏置量;其中,所述通道维度是指输出特征数据的通道维度。
至少一些实施例中,第二量化单元103可以包括:第二转换模块,配置为转换所述第三组浮点型参数为定点型数据;以及,第二训练模块,配置为利用所述转换得到的定点型数据训练卷积神经网络,以得到所述卷积层的第二组定点型参数。
至少一些实施例中,第二转换模块可以包括:将所述第三组浮点型参数划分为多个组;以最小化误差平方和为目标,确定每个组的移位值;以及,利用对应于每个组的移位值将每个组中的第三组浮点型参数转换为定点型数据。
至少一些实施例中,如图11所示,训练神经网络的装置100还可以包括:更新单元104,配置为将所述第二组定点型参数更新为浮点型参数;以及,第二量化单元103,还配置为量化所述更新单元14更新得到的浮点型参数。
本申请实施例的装置,通过至少两个阶段的量化(步骤301和步骤303或者步骤301、步骤303和步骤305),可以得到计算简单(仅需要低比特整型乘法、高比特累加和移位操作)、精度高(接近浮点网络精度)的定点化神经网络,该定点化的神经网络的参数和特征数据可以使用低比特来表示,其运算可通过晶体管高效实现或通过模拟的方式映射到具体计算结构所支持的运算中,从而可以利用较小的硬件代价实现神经网络的计算,同时还避免了其他定点化神经网络中计算效率高时精度低、精度高时计算效率低的问题。
示例性电子设备
下面,参考图12来描述根据本申请实施例的电子设备。
图12是本申请实施例中电子设备20的示例性结构示意图。如图12所示,本申请的电子设备20可以包括:一个或多个处理器21和用于存储所述处理器可执行指令的存储器22,处理器21用于执行上文“示例性方法”中所述训练神经网络的方法的步骤。
处理器21可以是CPU、GPU、大脑处理器(BPU,Brain Processing Unit)、张量处理单元(TPU,Tensor Processing Unit)等支持神经网络相关计算的处理器,或者具有编译处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备20中的其他组件以执行期望的功能。
存储器22可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器21可以运行所述程序指令,以实现下文所述的本申请的各个实施例的训练神经网络的方法以及/或者其他期望的功能。
在一个示例中,电子设备20还可以包括:输入装置23和输出装置24,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。该输入装置23还可以包括例如键盘、鼠标等等,可供输入卷积神经网络的输入特征数据,例如,训练卷积神经网络所需的样本数据等。该输出装置24可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等,可供编译人员查看卷积神经网络训练过程中的最终结果或任何中间数据等。
当然,为了简化,图12中仅示出了该电子设备20中的部分组件,省略了诸如总线、输入/输出接口等的组件。除此之外,根据具体应用情况,电子设备20还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的训练神经网络的方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的训练神经网络的方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (12)
1.一种训练神经网络的方法,包括:
量化卷积神经网络中卷积层的第一组浮点型参数,以获得所述卷积层的第一组定点型参数,所述第一组浮点型参数是通过样本数据对所述卷积神经网络进行训练得到的浮点型数据;
基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,所述第三组浮点型参数为浮点型数据;以及
量化所述第三组浮点型参数为第二组定点型参数,以得到定点化的卷积神经网络,其中,
所述归一化层的第二组浮点型参数包括尺度因子和平移因子;所述卷积层的第一组定点型参数包括第一定点型权重和第一定点型偏置量,所述卷积层的第三组浮点型参数包括第三浮点型权重和第三浮点型偏置量;
基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,包括:根据所述尺度因子和所述第一定点型权重,计算所述第三浮点型权重;以及,根据所述尺度因子、平移因子以及所述第一定点型偏置量,计算所述第三浮点型偏置量。
2.根据权利要求1所述的方法,其中,所述第二组定点型参数的位宽由执行所述卷积神经网络运算的硬件支持的数据位宽确定。
3.根据权利要求1所述的方法,其中,量化卷积神经网络中卷积层的第一组浮点型参数,包括:
转换所述卷积层的第一组浮点型参数为定点型数据;以及,
利用所述转换得到的定点型数据和与所述卷积层相对应的归一化层的第二组浮点型参数训练所述卷积神经网络,以得到所述卷积层的第一组定点型参数。
4.根据权利要求1所述的方法,其中,
所述归一化层的第二组浮点型参数包括尺度因子和平移因子;所述卷积层的第一组定点型参数包括第一定点型权重和第一定点型偏置量,所述卷积层的第三组浮点型参数包括第三浮点型权重和第三浮点型偏置量;
基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,包括:根据所述尺度因子和所述第一定点型权重,计算所述第三浮点型权重;以及,根据所述尺度因子、平移因子以及所述第一定点型偏置量,计算所述第三浮点型偏置量。
5.根据权利要求4所述的方法,其中,
所述归一化层的第二组浮点型参数还包括方差和归一化常数;
根据所述尺度因子和所述第一定点型权重,计算所述第三浮点型权重,包括:
由对应每个通道维度的尺度因子除以归一化常数和相应通道维度的所述方差之和,得到对应每个通道维度的第一商值;以及
计算对应每个通道维度的第一商值与所述第一定点型权重中对应所述通道维度的核中的数据的乘积,得到所述第三浮点型权重中每个核中的数据;
其中,所述通道维度是指输出特征数据的通道维度。
6.根据权利要求4所述的方法,其中,所述归一化层的第二组浮点型参数还包括方差和归一化常数;
根据所述尺度因子、平移因子以及所述第一定点型偏置量,计算所述第三浮点型偏置量,包括:
由对应每个通道维度的尺度因子除以归一化常数和相应通道维度的所述方差之和,得到对应每个通道维度的第一商值;
计算对应每个通道维度的第一商值与对应所述通道维度的第一定点型偏移量的乘积,得到对应每个通道维度的第一乘积值;以及
计算对应每个通道维度的第一乘积值与对应所述通道维度的平移因子之和,得到对应每个通道维度的第三浮点型偏置量;
其中,所述通道维度是指输出特征数据的通道维度。
7.根据权利要求1所述的方法,其中,量化所述第三组浮点型参数为第二组定点型参数,包括:
转换所述第三组浮点型参数为定点型数据;以及
利用所述转换得到的定点型数据训练卷积神经网络,以得到所述卷积层的第二组定点型参数。
8.根据权利要求7所述的方法,其中,转换所述第三组浮点型参数为定点型数据,包括:
将所述第三组浮点型参数划分为多个组;
以最小化误差平方和为目标,确定每个组的移位值;以及
利用对应于每个组的移位值将每个组中的第三组浮点型参数转换为定点型数据。
9.根据权利要求1所述的方法,其中,所述方法还包括:
将所述第二组定点型参数更新为浮点型参数;以及
量化所述浮点型参数。
10.一种训练神经网络的装置,包括:
第一量化单元,配置为量化卷积神经网络中卷积层的第一组浮点型参数,以获得所述卷积层的第一组定点型参数,所述第一组浮点型参数是通过样本数据对所述卷积神经网络进行训练得到的浮点型数据;
合并单元,配置为基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,所述第三组浮点型参数为浮点型数据;以及
第二量化单元,配置为量化所述第三组浮点型参数为第二组定点型参数,以得到定点化的卷积神经网络,其中,
所述归一化层的第二组浮点型参数包括尺度因子和平移因子;所述卷积层的第一组定点型参数包括第一定点型权重和第一定点型偏置量,所述卷积层的第三组浮点型参数包括第三浮点型权重和第三浮点型偏置量;
基于与所述卷积层相对应的归一化层的第二组浮点型参数和所述第一组定点型参数,确定所述卷积层的第三组浮点型参数,包括:根据所述尺度因子和所述第一定点型权重,计算所述第三浮点型权重;以及,根据所述尺度因子、平移因子以及所述第一定点型偏置量,计算所述第三浮点型偏置量。
11.一种电子设备,包括:
一个或多个处理器;以及
存储器,存储有计算机指令,所述计算机指令在被所述处理器运行时使所述处理器执行根据权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910184297.4A CN111695671B (zh) | 2019-03-12 | 2019-03-12 | 训练神经网络的方法及装置、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910184297.4A CN111695671B (zh) | 2019-03-12 | 2019-03-12 | 训练神经网络的方法及装置、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111695671A CN111695671A (zh) | 2020-09-22 |
CN111695671B true CN111695671B (zh) | 2023-08-08 |
Family
ID=72474745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910184297.4A Active CN111695671B (zh) | 2019-03-12 | 2019-03-12 | 训练神经网络的方法及装置、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111695671B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112183726A (zh) * | 2020-09-28 | 2021-01-05 | 云知声智能科技股份有限公司 | 一种神经网络全量化方法及系统 |
CN113420788B (zh) * | 2020-10-12 | 2024-08-13 | 黑芝麻智能科技(上海)有限公司 | 实现卷积神经网络的混合计算系统和系统中融合卷积层的方法 |
CN114528968A (zh) * | 2020-11-23 | 2022-05-24 | 华为技术有限公司 | 神经网络的训练方法和装置 |
CN112380872B (zh) * | 2020-11-27 | 2023-11-24 | 深圳市慧择时代科技有限公司 | 一种目标实体的情感倾向确定方法及装置 |
CN112580492A (zh) * | 2020-12-15 | 2021-03-30 | 深兰人工智能(深圳)有限公司 | 车辆检测方法及装置 |
CN112925644B (zh) * | 2021-02-26 | 2024-08-13 | 北京小米松果电子有限公司 | 深度学习算子优化方法、装置、设备及存储介质 |
CN113159177B (zh) * | 2021-04-22 | 2022-11-25 | 中国科学院自动化研究所 | 基于批归一化参数定点化的目标检测方法、系统、设备 |
CN114677548B (zh) * | 2022-05-26 | 2022-10-14 | 之江实验室 | 基于阻变存储器的神经网络图像分类系统及方法 |
CN116720563B (zh) * | 2022-09-19 | 2024-03-29 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326939A (zh) * | 2016-08-31 | 2017-01-11 | 深圳市诺比邻科技有限公司 | 卷积神经网络的参数优化方法及系统 |
EP3242254A1 (en) * | 2016-05-03 | 2017-11-08 | Imagination Technologies Limited | Convolutional neural network hardware configuration |
CN108009625A (zh) * | 2016-11-01 | 2018-05-08 | 北京深鉴科技有限公司 | 人工神经网络定点化后的微调方法和装置 |
CN108053028A (zh) * | 2017-12-21 | 2018-05-18 | 深圳云天励飞技术有限公司 | 数据定点化处理方法、装置、电子设备及计算机存储介质 |
CN108510067A (zh) * | 2018-04-11 | 2018-09-07 | 西安电子科技大学 | 基于工程化实现的卷积神经网络量化方法 |
CN108898168A (zh) * | 2018-06-19 | 2018-11-27 | 清华大学 | 用于目标检测的卷积神经网络模型的压缩方法和系统 |
CN109165736A (zh) * | 2018-08-08 | 2019-01-08 | 北京字节跳动网络技术有限公司 | 应用于卷积神经网络的信息处理方法和装置 |
CN109389219A (zh) * | 2017-08-04 | 2019-02-26 | 三星电子株式会社 | 用于对神经网络的参数进行量化的方法和装置 |
-
2019
- 2019-03-12 CN CN201910184297.4A patent/CN111695671B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3242254A1 (en) * | 2016-05-03 | 2017-11-08 | Imagination Technologies Limited | Convolutional neural network hardware configuration |
CN106326939A (zh) * | 2016-08-31 | 2017-01-11 | 深圳市诺比邻科技有限公司 | 卷积神经网络的参数优化方法及系统 |
CN108009625A (zh) * | 2016-11-01 | 2018-05-08 | 北京深鉴科技有限公司 | 人工神经网络定点化后的微调方法和装置 |
CN109389219A (zh) * | 2017-08-04 | 2019-02-26 | 三星电子株式会社 | 用于对神经网络的参数进行量化的方法和装置 |
CN108053028A (zh) * | 2017-12-21 | 2018-05-18 | 深圳云天励飞技术有限公司 | 数据定点化处理方法、装置、电子设备及计算机存储介质 |
CN108510067A (zh) * | 2018-04-11 | 2018-09-07 | 西安电子科技大学 | 基于工程化实现的卷积神经网络量化方法 |
CN108898168A (zh) * | 2018-06-19 | 2018-11-27 | 清华大学 | 用于目标检测的卷积神经网络模型的压缩方法和系统 |
CN109165736A (zh) * | 2018-08-08 | 2019-01-08 | 北京字节跳动网络技术有限公司 | 应用于卷积神经网络的信息处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
深度卷积神经网络的数据表示方法分析与实践;王佩琪等;《计算机研究与发展》;20170816;第1348-1356页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111695671A (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111695671B (zh) | 训练神经网络的方法及装置、电子设备 | |
CN110119809B (zh) | 对神经网络中非对称量化数据执行mac运算的装置和方法 | |
Rodriguez et al. | Lower numerical precision deep learning inference and training | |
US11308398B2 (en) | Computation method | |
KR102285965B1 (ko) | 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스 | |
US20200302299A1 (en) | Systems and Methods of Cross Layer Rescaling for Improved Quantization Performance | |
US8280939B2 (en) | Methods and apparatus for automatic accuracy-sustaining scaling of block-floating-point operands | |
Bini et al. | Solving secular and polynomial equations: A multiprecision algorithm | |
KR20200004700A (ko) | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 | |
US11341400B1 (en) | Systems and methods for high-throughput computations in a deep neural network | |
KR20190098671A (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
US20200389182A1 (en) | Data conversion method and apparatus | |
Shi et al. | A semismooth newton algorithm for high-dimensional nonconvex sparse learning | |
CN114444667A (zh) | 训练神经网络的方法及装置、电子设备 | |
CN113419779A (zh) | 可扩展多精度数据流水线系统和方法 | |
US20230401420A1 (en) | Compiling asymmetrically-quantized neural network models for deep learning acceleration | |
US20220156567A1 (en) | Neural network processing unit for hybrid and mixed precision computing | |
Minnella et al. | Design and Optimization of Residual Neural Network Accelerators for Low-Power FPGAs Using High-Level Synthesis | |
KR20230076641A (ko) | 부동-소수점 연산을 위한 장치 및 방법 | |
KR102541462B1 (ko) | 이형 코어 아키텍처 기반의 캡슐 신경망 추론 장치 및 그 방법 | |
JP7371499B2 (ja) | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム | |
US20230110383A1 (en) | Floating-point logarithmic number system scaling system for machine learning | |
US20230367356A1 (en) | Digital signal processing device and method of calculating softmax performed by the same | |
US20240249124A1 (en) | System and method of neural network processing reducing instruction usage | |
WO2021036412A1 (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 |