CN112561050B - 一种神经网络模型训练方法及装置 - Google Patents
一种神经网络模型训练方法及装置 Download PDFInfo
- Publication number
- CN112561050B CN112561050B CN201910909494.8A CN201910909494A CN112561050B CN 112561050 B CN112561050 B CN 112561050B CN 201910909494 A CN201910909494 A CN 201910909494A CN 112561050 B CN112561050 B CN 112561050B
- Authority
- CN
- China
- Prior art keywords
- network
- weight
- activation
- network layer
- layer
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Nonlinear Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请实施例提供了一种神经网络模型训练方法及装置,获取训练样本,利用训练样本,对神经网络模型进行训练。在进行神经网络模型训练时,对输入每个网络层的第一激活量和每个网络层的网络权值进行幂指数域定点编码,编码后的第一激活量和网络权值为幂指数域定点数据,则在进行运算时,所涉及到的矩阵乘法,通过幂指数域编码方式,可以在幂指数域将乘法转换为加法操作,加法操作所需要的硬件资源明显少于乘法所需要的硬件资源,因此,可以大幅地降低运行神经网络模型需要的硬件资源开销。
Description
技术领域
本申请涉及机器学习技术领域,特别是涉及一种神经网络模型训练方法及装置。
背景技术
深度神经网络作为机器学习研究中的一个新兴领域,通过模仿人脑的机制来解析数据,是一种通过建立和模拟人脑进行分析学习的智能模型。目前,深度神经网络,如卷积神经网络、循环神经网络、长短期记忆网络等已在目标检测与分割、行为检测与识别、语音识别等方面得到了很好的应用。
目前,神经网络模型的训练通常采用单精度浮点数据进行运算,以保证神经网络模型收敛的精度。但是,由于单精度浮点数据具有较高的位宽,参与运算的数据量较大,导致运行神经网络模型需要较高的硬件资源开销。
发明内容
本申请实施例的目的在于提供一种神经网络模型训练方法及装置,以降低运行神经网络模型需要的硬件资源开销。具体技术方案如下:
第一方面,本申请实施例提供了一种神经网络模型训练方法,该方法包括:
获取训练样本;
利用训练样本,对神经网络模型进行训练,其中,在对神经网络模型进行训练时,针对神经网络模型中的各网络层,分别执行如下步骤:
获取输入网络层的第一激活量及该网络层的网络权值;
对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据;
根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量。
可选的,利用训练样本,对神经网络模型进行训练的步骤,包括:
将训练样本输入神经网络模型,按照神经网络模型中各网络层从前到后的顺序,对训练样本进行前向运算,得到神经网络模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量,将第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将前向运算结果与预设的标称值进行比较,得到损失值;
将损失值输入神经网络模型,按照神经网络模型中各网络层从后到前的顺序,对损失值进行反向运算,得到神经网络模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将第一激活量、第一激活量梯度及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量、第一激活量梯度及网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据各网络层的权值梯度,调整各网络层的网络权值。
可选的,该方法应用于相机;训练样本为具有指定目标的训练样本;神经网络模型为用于检测指定目标的目标检测模型;
利用训练样本,对神经网络模型进行训练的步骤,包括:
将具有指定目标的训练样本输入目标检测模型,按照目标检测模型中各网络层从前到后的顺序,对训练样本进行前向运算,得到目标检测模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量,将第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将前向运算结果与预设的标称值进行比较,得到损失值;
将损失值输入目标检测模型,按照目标检测模型中各网络层从后到前的顺序,对损失值进行反向运算,得到目标检测模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将第一激活量、第一激活量梯度及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量、第一激活量梯度及网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据各网络层的权值梯度,调整各网络层的网络权值。
可选的,根据各网络层的权值梯度,调整各网络层的网络权值的步骤,包括:
对各网络层的网络权值及权值梯度进行整型定点编码,将各网络层的网络权值及权值梯度编码为具有指定位宽的整型定点数据;
根据编码后的各网络层的网络权值及权值梯度,利用预设的优化算法,计算调整后各网络层的网络权值。
可选的,在对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据之前,本申请实施例所提供的方法还包括:
对第一激活量进行整型定点编码,将第一激活量编码为具有指定位宽的整型定点数据;
判断网络层是否为卷积层或全连接层;
对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据的步骤,包括:
若网络层为卷积层或全连接层,则对编码后的第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据。
可选的,对第一激活量进行整型定点编码,将第一激活量编码为具有指定位宽的整型定点数据的步骤,包括:
将第一激活量中的各标量数值分别编码为表征全局动态范围的参数值与指定位宽的整型定点值的乘积。
可选的,对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据的步骤,包括:
将第一激活量及网络权值中的各标量数值分别编码为表征全局动态范围的参数值与幂指数域定点值的乘积。
可选的,若网络层为卷积层,则网络权值的大小为C×R×R×N,对于每个大小为C×R×R的三维张量中的各标量数值,对应的参数值相同;
若网络层为全连接层,则网络权值的大小为M×N,对于每个大小为1×N的列向量中的各标量数值,对应的参数值相同;
第一激活量中的各标量数值对应的参数值相同。
第二方面,本申请实施例提供了一种神经网络模型训练装置,该装置包括:
获取模块,用于获取训练样本;
训练模块,用于利用训练样本,对神经网络模型进行训练,其中,训练模块在对神经网络模型进行训练时,针对神经网络模型中的各网络层,分别执行如下步骤:
获取输入网络层的第一激活量及网络层的网络权值;
对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据;
根据编码后的第一激活量及网络权值,计算网络层输出的第二激活量。
可选的,训练模块,具体用于:
将训练样本输入神经网络模型,按照神经网络模型中各网络层从前到后的顺序,对训练样本进行前向运算,得到神经网络模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量,将第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将前向运算结果与预设的标称值进行比较,得到损失值;
将损失值输入神经网络模型,按照神经网络模型中各网络层从后到前的顺序,对损失值进行反向运算,得到神经网络模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将第一激活量、第一激活量梯度及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量、第一激活量梯度及网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据所述各网络层的权值梯度,调整所述各网络层的网络权值。
可选的,该装置应用于相机;训练样本为具有指定目标的训练样本;神经网络模型为用于检测指定目标的目标检测模型;
训练模块,具体用于:
将具有指定目标的训练样本输入目标检测模型,按照目标检测模型中各网络层从前到后的顺序,对训练样本进行前向运算,得到目标检测模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量,将第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将前向运算结果与预设的标称值进行比较,得到损失值;
将损失值输入目标检测模型,按照目标检测模型中各网络层从后到前的顺序,对损失值进行反向运算,得到目标检测模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将第一激活量、第一激活量梯度及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量、第一激活量梯度及网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据各网络层的权值梯度,调整各网络层的网络权值。
可选的,训练模块,在用于根据各网络层的权值梯度,调整各网络层的网络权值时,具体用于:
对各网络层的网络权值及权值梯度进行整型定点编码,将各网络层的网络权值及权值梯度编码为具有指定位宽的整型定点数据;
根据编码后的各网络层的网络权值及权值梯度,利用预设的优化算法,计算调整后各网络层的网络权值。
可选的,训练模块,还用于:
对第一激活量进行整型定点编码,将第一激活量编码为具有指定位宽的整型定点数据;
判断网络层是否为卷积层或全连接层;
训练模块,在用于对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据时,具体用于:
若网络层为卷积层或全连接层,则对编码后的第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据。
可选的,训练模块,在用于对第一激活量进行整型定点编码,将第一激活量编码为具有指定位宽的整型定点数据时,具体用于:
将第一激活量中的各标量数值分别编码为表征全局动态范围的参数值与指定位宽的整型定点值的乘积。
可选的,训练模块,在用于对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据时,具体用于:
将第一激活量及网络权值中的各标量数值分别编码为表征全局动态范围的参数值与幂指数域定点值的乘积。
可选的,若网络层为卷积层,则网络权值的大小为C×R×R×N,对于每个大小为C×R×R的三维张量中的各标量数值,对应的参数值相同;
若网络层为全连接层,则网络权值的大小为M×N,对于每个大小为1×N的列向量中的各标量数值,对应的参数值相同;
第一激活量中的各标量数值对应的参数值相同。
第三方面,本申请实施例提供了一种计算机设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现本申请实施例第一方面提供的方法。
第四方面,本申请实施例提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,实现本申请实施例第一方面提供的方法。
本申请实施例提供的一种神经网络模型训练方法及装置,获取训练样本,利用训练样本,对神经网络模型进行训练。在对神经网络模型进行训练时,针对神经网络模型中的各网络层,分别执行:获取输入该网络层的第一激活量及网络层的网络权值,对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量。在进行神经网络模型训练时,对输入每个网络层的第一激活量和每个网络层的网络权值进行幂指数域定点编码,编码后的第一激活量和网络权值为幂指数域定点数据,则在进行运算时,所涉及到的矩阵乘法,通过幂指数域编码方式,可以在幂指数域将乘法转换为加法操作,加法操作所需要的硬件资源明显少于乘法所需要的硬件资源,因此,可以大幅地降低运行神经网络模型需要的硬件资源开销。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的神经网络模型训练方法的流程示意图;
图2为本申请实施例的神经网络模型训练过程示意图;
图3为本申请实施例的在对神经网络模型进行训练的过程中,针对神经网络模型中的各网络层的执行流程示意图;
图4为本申请实施例的大小为C×R×R×N的四维张量卷积核对应的张量空间结构示意图;
图5为本申请实施例的大小为C×R×R的三维张量内每个标量数值的编码方式的示意图;
图6为本申请实施例的大小为M×N的二维矩阵对应的张量空间结构示意图;
图7为本申请实施例的大小为1×N的列向量内每个标量数值的编码方式的示意图;
图8为本申请实施例的激活量和激活量梯度三维张量内每个标量数值进行幂指数域定点编码方式的示意图;
图9为本申请实施例的激活量和激活量梯度三维张量内每个标量数值进行整型定点编码方式的示意图;
图10为本申请实施例的编码神经网络前向运算及反向运算数据流表征格式示意图;
图11为本申请实施例的应用于相机的目标检测模型训练方法的流程示意图;
图12为本申请实施例的神经网络模型训练装置的结构示意图;
图13为本申请实施例的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了降低运行神经网络模型需要的硬件资源开销,本申请实施例提供了一种神经网络模型训练方法、装置、计算机设备及机器可读存储介质。下面,首先对本申请实施例所提供的神经网络模型训练方法进行介绍。
本申请实施例所提供的一种神经网络训练方法的执行主体可以为具有神经网络模型训练功能的计算机设备,也可以为实现目标检测与分割、行为检测与识别、语音识别等功能的计算机设备,还可以为具有目标检测与分割、行为检测与识别等功能的摄像机,或者具有语音识别功能的麦克风等,执行主体中至少包括具有数据处理能力的核心处理芯片。实现本申请实施例所提供的一种神经网络训练方法的方式可以为设置于执行主体中的软件、硬件电路和逻辑电路的至少一种方式。
如图1所示,为本申请实施例所提供的神经网络模型训练方法,该方法可以包括如下步骤。
S101,获取训练样本。
在进行神经网络训练时,通常需要收集大量的训练样本,基于神经网络模型需要实现的功能不同,所收集的训练样本也不同。例如,如果是训练用于进行人脸检测的检测模型,收集的训练样本为人脸样本;再如果是训练用于进行车辆跟踪的跟踪模型,收集的训练样本为车辆样本。
S102,利用训练样本,对神经网络模型进行训练。
将训练样本输入到神经网络模型中,利用BP(Back Propagation,反向传播)算法或者其他模型训练算法,对训练样本进行运算,将运算结果和设置的标称值进行比较,基于比较结果,对神经网络模型的网络权值进行调整。通过将不同的训练样本依次输入神经网络模型,迭代执行上述步骤,对网络权值的不断地进行调整,神经网络模型的输出会越来越逼近于标称值,直至神经网络模型的输出与标称值的差异足够小,或者神经网络模型的输出收敛时,则认为对神经网络模型完成训练。
以BP算法为例,神经网络模型训练过程中主要的计算操作及数据流如图2所示,每个网络层在进行前向运算时主要进行卷积运算Yi=Wi*Yi-1,每个网络层在进行反向运算时主要进行卷积运算dYi-1=dYi-1*Wi,以及矩阵相乘运算dWi=dYi*Yi-1,其中,前向运算指的是从第一个网络层开始从前到后的运算顺序,反向运算指的是从最后一个网络层开始从后到前的运算顺序,Wi表示第i层网络层的网络权值,如卷积层或全连接层参数,Yi表示输入第i层网络层或者第i层网络层输出的激活量,dWi表示第i层网络层对应的权值梯度,dYi表示输入第i层网络层的激活量梯度。
如图2所示,在利用BP算法对神经网络模型进行训练的过程中,将训练样本X输入神经网络模型,经过神经网络模型的前向运算,k层网络层从前到后依次进行卷积运算,得到模型输出Yk,经过损失函数将该模型输出与标称值进行比较,得到损失值dYk,再经过神经网络模型的反向运算,k层网络层从后到前依次进行卷积运算和矩阵相乘运算,得到每个网络层对应的权值梯度,根据权值梯度对网络权值进行调整。经过不断的迭代过程,使得神经网络模型的输出越来越逼近于标称值。
本申请实施例中,在对神经网络模型进行训练的过程中,针对神经网络模型中的各网络层,分别需要执行如图3所示的各步骤。
S301,获取输入网络层的第一激活量及网络层的网络权值。
在进行前向运算时,输入第i层网络层的第一激活量为Yi,在进行反向运算时,输入第i层网络层的第一激活量为dYi。
S302,对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据。
对于第i层网络层,需要对输入该网络层的第一激活量Yi、dYi,以及该网络层的网络权值Wi进行幂指数域定点编码,幂指数域定点编码就是将浮点格式的数据编码为幂指数域定点格式的数据。
可选的,S302具体可以为:
将第一激活量及网络权值中的各标量数值分别编码为表征全局动态范围的参数值与幂指数域定点值的乘积。
具体的编码方式可以是将第一激活量和网络权值中的各标量数值编码为表征全局动态范围的参数值sp与幂指数域定点值ep的乘积,其中,sp=2E,E是位宽为EB的有符号二进制数,EB为设定的位宽,ep是位宽为IB的有符号二进制数,由一位符号位、指数位及小数位组成。幂指数域定点值ep及参数值sp的计算方式为:
ep=(-1)s2Exponent2Fraction (1)
其中,s为二进制数x的符号位,取值为0或1,xi为二进制数x第i位数值,取值为0或1,Exponent为指数位的二进制数,Fraction为小数位的二进制数。
可选的,若网络层为卷积层,则网络权值的大小为C×R×R×N,对于每个大小为C×R×R的三维张量中的各标量数值,对应的参数值相同;若网络层为全连接层,则网络权值的大小为M×N,对于每个大小为1×N的列向量中的各标量数值,对应的参数值相同;第一激活量中的各标量数值对应的参数值相同。
Wi为神经网络模型第i层所对应的网络权值,网络层类型为卷积层或全连接层。如果第i层为卷积层,则Wi为大小为C×R×R×N的四维张量卷积核,对应的张量空间结构如图4所示,其中,C表示卷积核输入通道方向维度大小,R表示卷积核空间维度大小,N表示卷积核输出通道方向维度大小。对每个大小为C×R×R的三维张量Wi p内的每个标量数值w,可以表示为:
w=sp·ep (3)
其中,每个Wi p三维张量共享一个sp,每个标量数值w对应一个幂指数域定点值ep。大小为C×R×R的三维张量内每个标量数值的编码方式如图5所示。其中,ep和sp的计算方式如公式(1)和(2),这里不再赘述。
同理,如果第i层为全连接层,则Wi为大小为M×N的二维矩阵,对应的张量空间结构如图6所示,该矩阵可以划分为如下结构,把大小为M×N的二维矩阵切分为M个大小为1×N的列向量组成。对每个大小为1×N的列向量Wi p内的每个标量数值w用上述公式(3)表示。每个Wi p列向量共享一个sp,每个标量数值w对应一个幂指数域定点值ep。大小为1×N的列向量内每个标量数值的编码方式如图7所示。其中,ep和sp的计算方式如公式(1)和(2),这里不再赘述。
Yi和dYi为神经网络模型第i层所对应的激活量及激活量梯度,为大小为C×H×W的三维张量,对该三维张量Yi或者dYi内的每个标量数值y或者dy,可以表示为:
y=sp·ep (4)
dy=sp·ep (5)
其中,每个三维张量Yi或者dYi共享一个sp,每个标量数值y或者dy对应一个幂指数域定点值ep。激活量和激活量梯度三维张量内每个标量数值的编码方式如图8所示。其中,ep和sp的计算方式如公式(1)和(2),这里不再赘述。
S303,根据编码后的第一激活量及网络权值,计算网络层输出的第二激活量。
如上述,对第一激活量和网络权值中的各标量数值均进行了幂指数域定点编码,编码后的数据为幂指数域定点数据,从而使得前向运算和反向运算时,所涉及到的运算资源开销最大操作如卷积运算、矩阵乘法运算,通过幂指数域编码方式,可以在幂指数域将乘法转换为加法操作,大幅提升了神经网络在硬件平台上的训练效率。
可选的,S102具体可以通过如下步骤实现:
第一步,将训练样本输入神经网络模型,按照神经网络模型中各网络层从前到后的顺序,对训练样本进行前向运算,得到神经网络模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量,将第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果。
第二步,将前向运算结果与预设的标称值进行比较,得到损失值。
第三步,将损失值输入神经网络模型,按照神经网络模型中各网络层从后到前的顺序,对损失值进行反向运算,得到神经网络模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将第一激活量、第一激活量梯度及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量、第一激活量梯度及网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度。
第四步,根据各网络层的权值梯度,调整各网络层的网络权值。
上述第一步至第四步的过程即为BP算法的运算过程,通过不断的循环执行这四个步骤,实现神经网络模型的训练。前向运算过程为通过第一激活量与网络权值的相乘Yi=Wi*Yi-1计算第二激活量Yi,反向运算过程为通过第一激活量梯度与网络权值的相乘dYi-1=dYi-1*Wi计算第二激活量梯度dYi-1,以及通过第一激活量梯度与第一激活量相乘dWi=dYi*Yi-1计算权值梯度dWi。
可选的,上述第四步具体可以通过如下步骤实现:
对各网络层的网络权值及权值梯度进行整型定点编码,将各网络层的网络权值及权值梯度编码为具有指定位宽的整型定点数据;根据编码后的各网络层的网络权值及权值梯度,利用预设的优化算法,计算调整后各网络层的网络权值。
在计算各网络层的权值梯度之后,需要基于权值梯度对网络权值进行调整,调整的过程主要是进行矩阵加法,具体采用SGD(Stochastic Gradient Descent,随机梯度下降)等优化算法,则可以对网络权值和权值梯度进行整型定点编码,编码得到的整型定点数据进行加法操作,效率更高。具体的编码过程为(以对网络权值进行编码为例):
具体的编码方式可以是将网络权值中的各标量数值编码为表征全局动态范围的参数值sp与指定位宽的整型定点值ip的乘积,其中,sp=2E,E是位宽为EB的有符号二进制数,EB为设定的位宽,ip是位宽为IB的有符号二进制数,IB是根据原浮点数据的大小设定的位宽。整型定点值ip及参数值sp的计算方式为:
其中,s为二进制数x的符号位,取值为0或1,xi为二进制数x第i位数值,取值为0或1。
对权值梯度进行整型定点编码的方式与对网络权值进行编码相同,这里不再赘述。
可选的,在执行S302之前,本申请实施例所提供的方法还可以执行如下步骤:
对第一激活量进行整型定点编码,将第一激活量编码为具有指定位宽的整型定点数据;判断网络层是否为卷积层或全连接层。
则相应的,S302具体可以为:
若网络层为卷积层或全连接层,则对编码后的第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据。
由于神经网络中的网络层除了包括卷积层和全连接层以外,还有只进行矩阵加法的网络层,在进行矩阵加法时,如果直接采用整型定点数据进行运算,可以进一步提升硬件运算效率。因此,在对第一激活量进行幂指数域定点编码之前,可以先对第一激活量进行整型定点编码,判断第一激活量要输入的下一个网络层是否为卷积层或全连接层,如果是卷积层或者全连接层,则再对第一激活量进行幂指数域定点编码,进行卷积等矩阵乘法运算,如果不是卷积层或者全连接层,则保持第一激活量为整型定点数据,直接进行矩阵加法运算。
可选的,对第一激活量进行整型定点编码,将第一激活量编码为具有指定位宽的整型定点数据的步骤,具体可以为:
将第一激活量中的各标量数值分别编码为表征全局动态范围的参数值与指定位宽的整型定点值的乘积。
对第一激活量进行整型定点编码的方式可以是将第一激活量中的各标量数值编码为表征全局动态范围的参数值sp与指定位宽的整型定点值ip的乘积,其中,sp=2E,E是位宽为EB的有符号二进制数,EB为设定的位宽,ip是位宽为IB的有符号二进制数,IB是根据原浮点数据的大小设定的位宽。ip和sp的计算方式如公式(6)和(7),这里不再赘述。
Yi和dYi为神经网络模型第i层所对应的激活量及激活量梯度,为大小为C×H×W的三维张量,对该三维张量Yi或者dYi内的每个标量数值y或者dy,可以表示为:
y=sp·ip (8)
dy=sp·ip (9)
其中,每个三维张量Yi或者dYi共享一个sp,每个标量数值y或者dy对应一个整型定点值ip。激活量和激活量梯度三维张量内每个标量数值的编码方式如图9所示。
图10给出了基于上述规则编码神经网络前向运算及反向运算数据流表征格式示意图,对每一层网络层输入的激活量进行幂指数域定点编码,对每一层网络层输出的激活量进行整型定点编码,并且神经网络权值或权值梯度均采用幂指数域定点编码格式。能够同时支持神经网络离线推理任务和神经网络在线训练任务,在保证模型训练精度的前提下,大大减少了硬件设备资源开销,为未来端上设备推理/训练应用提供了较好的底层支持。
应用本申请实施例,获取训练样本,利用训练样本,对神经网络模型进行训练。在对神经网络模型进行训练时,针对神经网络模型中的各网络层,分别执行:获取输入该网络层的第一激活量及网络层的网络权值,对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量。在进行神经网络模型训练时,对输入每个网络层的第一激活量和每个网络层的网络权值进行幂指数域定点编码,编码后的第一激活量和网络权值为幂指数域定点数据,则在进行运算时,所涉及到的矩阵乘法,通过幂指数域编码方式,可以在幂指数域将乘法转换为加法操作,加法操作所需要的硬件资源明显少于乘法所需要的硬件资源,因此,可以大幅地降低运行神经网络模型需要的硬件资源开销。
上述神经网络模型训练方法主要适用于资源受限的边缘设备,例如相机,针对于相机,相机的智能推理功能主要包括目标检测、目标跟踪、人脸识别等,下面以目标检测为例,对相机上部署的目标检测模型的训练方法进行介绍,如图11所示,主要包括如下步骤:
S1101,开启目标检测功能。
相机可以根据用户的实际需求,在需要进行目标检测时,基于用户的选择结果,开启目标检测功能。
S1102,判断是否启动模型在线训练功能,若是则执行S1103,否则等待启动模型在线训练功能。
在使用目标检测模型进行目标检测之前,需要对目标检测模型进行训练,是否进行在线训练可以由用户选择,通常情况下,只有在启动模型在线训练功能后,相机才会按照图1所示实施例的步骤,对目标检测模型进行训练。
S1103,利用获取的具有指定目标的训练样本,对目标检测模型进行训练。
在对目标检测模型进行训练时,输入目标检测模型的训练样本为具有指定目标的训练样本,这样,训练出来的目标检测模型可以检测出指定目标。具体对目标检测模型进行训练的方式可以包括:
第一步,将具有指定目标的训练样本输入目标检测模型,按照目标检测模型中各网络层从前到后的顺序,对训练样本进行前向运算,得到目标检测模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量,将第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果。
第二步,将前向运算结果与预设的标称值进行比较,得到损失值。
第三步,将损失值输入目标检测模型,按照目标检测模型中各网络层从后到前的顺序,对损失值进行反向运算,得到目标检测模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将第一激活量、第一激活量梯度及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量、第一激活量梯度及网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度。
第四步,根据各网络层的权值梯度,调整各网络层的网络权值。
上述相机采用的对目标检测模型的训练过程与图3所示实施例中神经网络模型的训练过程相似,训练过程中对输入每个网络层的第一激活量和每个网络层的网络权值进行整型定点编码,编码后的第一激活量和网络权值为具有指定位宽的整型定点数据,则在进行运算时,所涉及到的矩阵乘法、矩阵加法等运算都采用整型定点格式,整型定点数据的位宽明显少于单精度浮点数据的位宽,因此,可以大幅地降低相机的硬件资源开销。在相机上进行目标检测模型的在线训练,使相机能够具备场景自适应功能。
相应于上述方法实施例,本申请实施例提供了一种神经网络模型训练装置,如图12所示,该装置可以包括:
获取模块1210,用于获取训练样本;
训练模块1220,用于利用训练样本,对神经网络模型进行训练,其中,训练模块在对神经网络模型进行训练时,针对神经网络模型中的各网络层,分别执行如下步骤:
获取输入网络层的第一激活量及网络层的网络权值;
对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据;
根据编码后的第一激活量及网络权值,计算网络层输出的第二激活量。
可选的,训练模块1220,具体可以用于:
将训练样本输入神经网络模型,按照神经网络模型中各网络层从前到后的顺序,对训练样本进行前向运算,得到神经网络模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量,将第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将前向运算结果与预设的标称值进行比较,得到损失值;
将损失值输入神经网络模型,按照神经网络模型中各网络层从后到前的顺序,对损失值进行反向运算,得到神经网络模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将第一激活量、第一激活量梯度及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量、第一激活量梯度及网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据所述各网络层的权值梯度,调整所述各网络层的网络权值。
可选的,该装置可以应用于相机;训练样本可以为具有指定目标的训练样本;神经网络模型可以为用于检测指定目标的目标检测模型;
训练模块1220,具体可以用于:
将具有指定目标的训练样本输入目标检测模型,按照目标检测模型中各网络层从前到后的顺序,对训练样本进行前向运算,得到目标检测模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量,将第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将前向运算结果与预设的标称值进行比较,得到损失值;
将损失值输入目标检测模型,按照目标检测模型中各网络层从后到前的顺序,对损失值进行反向运算,得到目标检测模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将第一激活量、第一激活量梯度及网络权值编码为幂指数域定点数据,并根据编码后的第一激活量、第一激活量梯度及网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据各网络层的权值梯度,调整各网络层的网络权值。
可选的,训练模块1220,在用于根据各网络层的权值梯度,调整各网络层的网络权值时,可以具体用于:
对各网络层的网络权值及权值梯度进行整型定点编码,将各网络层的网络权值及权值梯度编码为具有指定位宽的整型定点数据;
根据编码后的各网络层的网络权值及权值梯度,利用预设的优化算法,计算调整后各网络层的网络权值。
可选的,训练模块1220,还可以用于:
对第一激活量进行整型定点编码,将第一激活量编码为具有指定位宽的整型定点数据;
判断网络层是否为卷积层或全连接层;
训练模块1220,在用于对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据时,具体可以用于:
若网络层为卷积层或全连接层,则对编码后的第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据。
可选的,训练模块1220,在用于对第一激活量进行整型定点编码,将第一激活量编码为具有指定位宽的整型定点数据时,具体可以用于:
将第一激活量中的各标量数值分别编码为表征全局动态范围的参数值与指定位宽的整型定点值的乘积。
可选的,训练模块1220,在用于对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据时,具体可以用于:
将第一激活量及网络权值中的各标量数值分别编码为表征全局动态范围的参数值与幂指数域定点值的乘积。
可选的,若网络层为卷积层,则网络权值的大小可以为C×R×R×N,对于每个大小为C×R×R的三维张量中的各标量数值,对应的参数值相同;
若网络层为全连接层,则网络权值的大小可以为M×N,对于每个大小为1×N的列向量中的各标量数值,对应的参数值相同;
第一激活量中的各标量数值对应的参数值相同。
应用本申请实施例,获取训练样本,利用训练样本,对神经网络模型进行训练。在对神经网络模型进行训练时,针对神经网络模型中的各网络层,分别执行:获取输入该网络层的第一激活量及网络层的网络权值,对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量。在进行神经网络模型训练时,对输入每个网络层的第一激活量和每个网络层的网络权值进行幂指数域定点编码,编码后的第一激活量和网络权值为幂指数域定点数据,则在进行运算时,所涉及到的矩阵乘法,通过幂指数域编码方式,可以在幂指数域将乘法转换为加法操作,加法操作所需要的硬件资源明显少于乘法所需要的硬件资源,因此,可以大幅地降低运行神经网络模型需要的硬件资源开销。
本申请实施例提供了一种计算机设备,如图13所示,可以包括处理器1301和机器可读存储介质1302,机器可读存储介质1302存储有能够被处理器1301执行的机器可执行指令,处理器1301被机器可执行指令促使:实现如上述神经网络模型训练方法的所有步骤。
上述机器可读存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。可选的,机器可读存储介质还可以是至少一个位于远离上述处理器的存储装置。
上述处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
机器可读存储介质1302与处理器1301之间可以通过有线连接或者无线连接的方式进行数据传输,并且计算机设备可以通过有线通信接口或者无线通信接口与其他的设备进行通信。图13所示的仅为处理器1301与机器可读存储介质1302之间通过总线进行数据传输的示例,不作为具体连接方式的限定。
本实施例中,处理器1301通过读取机器可读存储介质1302中存储的机器可执行指令,并通过运行该机器可执行指令,能够实现:获取训练样本,利用训练样本,对神经网络模型进行训练。在对神经网络模型进行训练时,针对神经网络模型中的各网络层,分别执行:获取输入该网络层的第一激活量及网络层的网络权值,对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量。在进行神经网络模型训练时,对输入每个网络层的第一激活量和每个网络层的网络权值进行幂指数域定点编码,编码后的第一激活量和网络权值为幂指数域定点数据,则在进行运算时,所涉及到的矩阵乘法,通过幂指数域编码方式,可以在幂指数域将乘法转换为加法操作,加法操作所需要的硬件资源明显少于乘法所需要的硬件资源,因此,可以大幅地降低运行神经网络模型需要的硬件资源开销。
本申请实施例还提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,实现如上述神经网络模型训练方法的所有步骤。
本实施例中,机器可读存储介质存储有在运行时执行本申请实施例所提供的神经网络模型训练方法的机器可执行指令,因此能够实现:获取训练样本,利用训练样本,对神经网络模型进行训练。在对神经网络模型进行训练时,针对神经网络模型中的各网络层,分别执行:获取输入该网络层的第一激活量及网络层的网络权值,对第一激活量及网络权值进行幂指数域定点编码,将第一激活量及网络权值编码为幂指数域定点数据,根据编码后的第一激活量及网络权值,计算该网络层输出的第二激活量。在进行神经网络模型训练时,对输入每个网络层的第一激活量和每个网络层的网络权值进行幂指数域定点编码,编码后的第一激活量和网络权值为幂指数域定点数据,则在进行运算时,所涉及到的矩阵乘法,通过幂指数域编码方式,可以在幂指数域将乘法转换为加法操作,加法操作所需要的硬件资源明显少于乘法所需要的硬件资源,因此,可以大幅地降低运行神经网络模型需要的硬件资源开销。
对于计算机设备以及机器可读存储介质实施例而言,由于其所涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、计算机设备以及机器可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (14)
1.一种神经网络模型训练方法,其特征在于,所述方法包括:
获取训练样本;
利用所述训练样本,对神经网络模型进行训练,其中,所述神经网络模型中的各网络层包括:卷积层和全连接层;在对所述神经网络模型进行训练时,针对所述神经网络模型中的各网络层,分别执行如下步骤:
获取输入所述网络层的第一激活量及所述网络层的网络权值;
对所述第一激活量进行整型定点编码,将所述第一激活量编码为具有指定位宽的整型定点数据;
判断所述网络层是否为卷积层或全连接层;
对所述第一激活量及所述网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据;所述对所述第一激活量及所述网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据,包括:若所述网络层为卷积层或全连接层,则对编码后的所述第一激活量及所述网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据;
根据编码后的所述第一激活量及所述网络权值,计算所述网络层输出的第二激活量;其中,所述第二激活量为下一网络层未进行编码的输入。
2.根据权利要求1所述的方法,其特征在于,所述利用所述训练样本,对神经网络模型进行训练,包括:
将所述训练样本输入神经网络模型,按照所述神经网络模型中各网络层从前到后的顺序,对所述训练样本进行前向运算,得到所述神经网络模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据,并根据编码后的所述第一激活量及所述网络权值,计算该网络层输出的第二激活量,将所述第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将所述前向运算结果与预设的标称值进行比较,得到损失值;
将所述损失值输入所述神经网络模型,按照所述神经网络模型中各网络层从后到前的顺序,对所述损失值进行反向运算,得到所述神经网络模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将所述第一激活量、所述第一激活量梯度及所述网络权值编码为幂指数域定点数据,并根据编码后的所述第一激活量、所述第一激活量梯度及所述网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将所述第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据所述各网络层的权值梯度,调整所述各网络层的网络权值。
3.根据权利要求1或2所述的方法,其特征在于,所述方法应用于相机;所述训练样本为具有指定目标的训练样本;所述神经网络模型为用于检测所述指定目标的目标检测模型;
所述利用所述训练样本,对神经网络模型进行训练,包括:
将所述具有指定目标的训练样本输入所述目标检测模型,按照所述目标检测模型中各网络层从前到后的顺序,对所述训练样本进行前向运算,得到所述目标检测模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据,并根据编码后的所述第一激活量及所述网络权值,计算该网络层输出的第二激活量,将所述第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将所述前向运算结果与预设的标称值进行比较,得到损失值;
将所述损失值输入所述目标检测模型,按照所述目标检测模型中各网络层从后到前的顺序,对所述损失值进行反向运算,得到所述目标检测模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将所述第一激活量、所述第一激活量梯度及所述网络权值编码为幂指数域定点数据,并根据编码后的所述第一激活量、所述第一激活量梯度及所述网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将所述第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据所述各网络层的权值梯度,调整所述各网络层的网络权值。
4.根据权利要求2所述的方法,其特征在于,所述根据所述各网络层的权值梯度,调整所述各网络层的网络权值,包括:
对所述各网络层的网络权值及权值梯度进行整型定点编码,将所述各网络层的网络权值及权值梯度编码为具有指定位宽的整型定点数据;
根据编码后的所述各网络层的网络权值及权值梯度,利用预设的优化算法,计算调整后所述各网络层的网络权值。
5.根据权利要求1所述的方法,其特征在于,所述对所述第一激活量进行整型定点编码,将所述第一激活量编码为具有指定位宽的整型定点数据,包括:
将所述第一激活量中的各标量数值分别编码为表征全局动态范围的参数值与指定位宽的整型定点值的乘积。
6.根据权利要求1所述的方法,其特征在于,所述对所述第一激活量及所述网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据,包括:
将所述第一激活量及所述网络权值中的各标量数值分别编码为表征全局动态范围的参数值与幂指数域定点值的乘积。
7.根据权利要求6所述的方法,其特征在于,若所述网络层为卷积层,则所述网络权值的大小为C×R×R×N,对于每个大小为C×R×R的三维张量中的各标量数值,对应的所述参数值相同;
若所述网络层为全连接层,则所述网络权值的大小为M×N,对于每个大小为1×N的列向量中的各标量数值,对应的所述参数值相同;
所述第一激活量中的各标量数值对应的所述参数值相同。
8.一种神经网络模型训练装置,其特征在于,所述装置包括:
获取模块,用于获取训练样本;
训练模块,用于利用所述训练样本,对神经网络模型进行训练,其中,所述神经网络模型中的各网络层包括:卷积层和全连接层;所述训练模块在对所述神经网络模型进行训练时,针对所述神经网络模型中的各网络层,分别执行如下步骤:
获取输入所述网络层的第一激活量及所述网络层的网络权值;
对所述第一激活量进行整型定点编码,将所述第一激活量编码为具有指定位宽的整型定点数据;
判断所述网络层是否为卷积层或全连接层;对所述第一激活量及所述网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据;根据编码后的所述第一激活量及所述网络权值,计算所述网络层输出的第二激活量;其中,所述第二激活量为下一网络层未进行编码的输入;
所述训练模块,在用于所述对所述第一激活量及所述网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据时,具体用于:若所述网络层为卷积层或全连接层,则对编码后的所述第一激活量及所述网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据。
9.根据权利要求8所述的装置,其特征在于,所述训练模块,具体用于:
将所述训练样本输入神经网络模型,按照所述神经网络模型中各网络层从前到后的顺序,对所述训练样本进行前向运算,得到所述神经网络模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据,并根据编码后的所述第一激活量及所述网络权值,计算该网络层输出的第二激活量,将所述第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将所述前向运算结果与预设的标称值进行比较,得到损失值;
将所述损失值输入所述神经网络模型,按照所述神经网络模型中各网络层从后到前的顺序,对所述损失值进行反向运算,得到所述神经网络模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将所述第一激活量、所述第一激活量梯度及所述网络权值编码为幂指数域定点数据,并根据编码后的所述第一激活量、所述第一激活量梯度及所述网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将所述第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据所述各网络层的权值梯度,调整所述各网络层的网络权值。
10.根据权利要求8或9所述的装置,其特征在于,所述装置应用于相机;所述训练样本为具有指定目标的训练样本;所述神经网络模型为用于检测所述指定目标的目标检测模型;
所述训练模块,具体用于:
将所述具有指定目标的训练样本输入所述目标检测模型,按照所述目标检测模型中各网络层从前到后的顺序,对所述训练样本进行前向运算,得到所述目标检测模型的前向运算结果,其中,在进行前向运算时,针对各网络层,分别对输入该网络层的第一激活量及该网络层的网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据,并根据编码后的所述第一激活量及所述网络权值,计算该网络层输出的第二激活量,将所述第二激活量作为输入下一个网络层的第一激活量进行计算,直至将最后一个网络层输出的第二激活量确定为前向运算结果;
将所述前向运算结果与预设的标称值进行比较,得到损失值;
将所述损失值输入所述目标检测模型,按照所述目标检测模型中各网络层从后到前的顺序,对所述损失值进行反向运算,得到所述目标检测模型中各网络层的权值梯度,其中,在进行反向运算时,针对各网络层,分别对输入该网络层的第一激活量、第一激活量梯度及该网络层的网络权值进行幂指数域定点编码,将所述第一激活量、所述第一激活量梯度及所述网络权值编码为幂指数域定点数据,并根据编码后的所述第一激活量、所述第一激活量梯度及所述网络权值,计算该网络层输出的第二激活量梯度及权值梯度,将所述第二激活量梯度作为输入下一个网络层的第一激活量梯度进行计算,直至计算出所有网络层的权值梯度;
根据所述各网络层的权值梯度,调整所述各网络层的网络权值。
11.根据权利要求9所述的装置,其特征在于,所述训练模块,在用于所述根据所述各网络层的权值梯度,调整所述各网络层的网络权值时,具体用于:
对所述各网络层的网络权值及权值梯度进行整型定点编码,将所述各网络层的网络权值及权值梯度编码为具有指定位宽的整型定点数据;
根据编码后的所述各网络层的网络权值及权值梯度,利用预设的优化算法,计算调整后所述各网络层的网络权值。
12.根据权利要求8所述的装置,其特征在于,所述训练模块,在用于所述对所述第一激活量进行整型定点编码,将所述第一激活量编码为具有指定位宽的整型定点数据时,具体用于:
将所述第一激活量中的各标量数值分别编码为表征全局动态范围的参数值与指定位宽的整型定点值的乘积。
13.根据权利要求8所述的装置,其特征在于,所述训练模块,在用于所述对所述第一激活量及所述网络权值进行幂指数域定点编码,将所述第一激活量及所述网络权值编码为幂指数域定点数据时,具体用于:
将所述第一激活量及所述网络权值中的各标量数值分别编码为表征全局动态范围的参数值与幂指数域定点值的乘积。
14.根据权利要求13所述的装置,其特征在于,若所述网络层为卷积层,则所述网络权值的大小为C×R×R×N,对于每个大小为C×R×R的三维张量中的各标量数值,对应的所述参数值相同;
若所述网络层为全连接层,则所述网络权值的大小为M×N,对于每个大小为1×N的列向量中的各标量数值,对应的所述参数值相同;
所述第一激活量中的各标量数值对应的所述参数值相同。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910909494.8A CN112561050B (zh) | 2019-09-25 | 2019-09-25 | 一种神经网络模型训练方法及装置 |
EP20869529.6A EP4036804A4 (en) | 2019-09-25 | 2020-09-25 | METHOD AND APPARATUS FOR TRAINING ARTIFICIAL NEURON NETWORK MODEL |
US17/763,472 US20220366262A1 (en) | 2019-09-25 | 2020-09-25 | Method and apparatus for training neural network model |
PCT/CN2020/117902 WO2021057926A1 (zh) | 2019-09-25 | 2020-09-25 | 一种神经网络模型训练方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910909494.8A CN112561050B (zh) | 2019-09-25 | 2019-09-25 | 一种神经网络模型训练方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112561050A CN112561050A (zh) | 2021-03-26 |
CN112561050B true CN112561050B (zh) | 2023-09-05 |
Family
ID=75029147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910909494.8A Active CN112561050B (zh) | 2019-09-25 | 2019-09-25 | 一种神经网络模型训练方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220366262A1 (zh) |
EP (1) | EP4036804A4 (zh) |
CN (1) | CN112561050B (zh) |
WO (1) | WO2021057926A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11977602B2 (en) * | 2020-11-10 | 2024-05-07 | Nec Corporation | Domain generalized margin via meta-learning for deep face recognition |
CN113627593B (zh) * | 2021-08-04 | 2024-06-04 | 西北工业大学 | 面向目标检测模型Faster R-CNN的自动量化方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106066783A (zh) * | 2016-06-02 | 2016-11-02 | 华为技术有限公司 | 基于幂次权重量化的神经网络前向运算硬件结构 |
CN108932124A (zh) * | 2018-06-26 | 2018-12-04 | Oppo广东移动通信有限公司 | 神经网络模型压缩方法、装置、终端设备及存储介质 |
CN108985453A (zh) * | 2018-06-27 | 2018-12-11 | 中国科学技术大学苏州研究院 | 基于非对称三元权重量化的深度神经网络模型压缩方法 |
CN109635944A (zh) * | 2018-12-24 | 2019-04-16 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
CN109740739A (zh) * | 2018-12-29 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 神经网络计算装置、神经网络计算方法及相关产品 |
CN109754063A (zh) * | 2017-11-07 | 2019-05-14 | 三星电子株式会社 | 用于学习低精度神经网络的方法及装置 |
CN109816092A (zh) * | 2018-12-13 | 2019-05-28 | 北京三快在线科技有限公司 | 深度神经网络训练方法、装置、电子设备及存储介质 |
CN109993276A (zh) * | 2017-12-29 | 2019-07-09 | 北京中科寒武纪科技有限公司 | 用于执行人工神经网络反向训练的装置和方法 |
CN110245753A (zh) * | 2019-05-27 | 2019-09-17 | 东南大学 | 一种基于幂指数量化的神经网络压缩方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7461116B2 (en) * | 2003-09-17 | 2008-12-02 | Agility Design Solutions Inc. | Emulation of a fixed point operation using a corresponding floating point operation |
CA2716464A1 (en) * | 2009-12-24 | 2011-06-24 | Mcmaster University | Bit-width allocation for scientific computations |
US10831444B2 (en) * | 2016-04-04 | 2020-11-10 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
GB201607713D0 (en) * | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
US10984308B2 (en) * | 2016-08-12 | 2021-04-20 | Xilinx Technology Beijing Limited | Compression method for deep neural networks with load balance |
US20180121791A1 (en) * | 2016-11-03 | 2018-05-03 | Qualcomm Incorporated | Temporal difference estimation in an artificial neural network |
US10599935B2 (en) * | 2017-02-22 | 2020-03-24 | Arm Limited | Processing artificial neural network weights |
US10643297B2 (en) * | 2017-05-05 | 2020-05-05 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
CN107633511A (zh) * | 2017-09-14 | 2018-01-26 | 南通大学 | 一种基于自编码神经网络的风机视觉检测*** |
CN108229657A (zh) * | 2017-12-25 | 2018-06-29 | 杭州健培科技有限公司 | 一种基于演化算法的深度神经网络训练与优化算法 |
CN109416757B (zh) * | 2017-12-29 | 2022-05-03 | 深圳市大疆创新科技有限公司 | 用于处理数值数据的方法、设备和计算机可读存储介质 |
US11961000B2 (en) * | 2018-01-22 | 2024-04-16 | Qualcomm Incorporated | Lossy layer compression for dynamic scaling of deep neural network processing |
US11347994B2 (en) * | 2018-10-15 | 2022-05-31 | Intel Corporation | Weight prefetch for in-memory neural network execution |
-
2019
- 2019-09-25 CN CN201910909494.8A patent/CN112561050B/zh active Active
-
2020
- 2020-09-25 US US17/763,472 patent/US20220366262A1/en active Pending
- 2020-09-25 WO PCT/CN2020/117902 patent/WO2021057926A1/zh unknown
- 2020-09-25 EP EP20869529.6A patent/EP4036804A4/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106066783A (zh) * | 2016-06-02 | 2016-11-02 | 华为技术有限公司 | 基于幂次权重量化的神经网络前向运算硬件结构 |
CN109754063A (zh) * | 2017-11-07 | 2019-05-14 | 三星电子株式会社 | 用于学习低精度神经网络的方法及装置 |
CN109993276A (zh) * | 2017-12-29 | 2019-07-09 | 北京中科寒武纪科技有限公司 | 用于执行人工神经网络反向训练的装置和方法 |
CN108932124A (zh) * | 2018-06-26 | 2018-12-04 | Oppo广东移动通信有限公司 | 神经网络模型压缩方法、装置、终端设备及存储介质 |
CN108985453A (zh) * | 2018-06-27 | 2018-12-11 | 中国科学技术大学苏州研究院 | 基于非对称三元权重量化的深度神经网络模型压缩方法 |
CN109816092A (zh) * | 2018-12-13 | 2019-05-28 | 北京三快在线科技有限公司 | 深度神经网络训练方法、装置、电子设备及存储介质 |
CN109635944A (zh) * | 2018-12-24 | 2019-04-16 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
CN109740739A (zh) * | 2018-12-29 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 神经网络计算装置、神经网络计算方法及相关产品 |
CN110245753A (zh) * | 2019-05-27 | 2019-09-17 | 东南大学 | 一种基于幂指数量化的神经网络压缩方法 |
Non-Patent Citations (1)
Title |
---|
Training and Inference with Integers in Deep Neural Networks;Shuang Wu,et al;《arXiv:1802.04680v1》;1-14 * |
Also Published As
Publication number | Publication date |
---|---|
EP4036804A4 (en) | 2022-12-14 |
WO2021057926A1 (zh) | 2021-04-01 |
EP4036804A1 (en) | 2022-08-03 |
CN112561050A (zh) | 2021-03-26 |
US20220366262A1 (en) | 2022-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109754066B (zh) | 用于生成定点型神经网络的方法和装置 | |
CN110689109B (zh) | 神经网络方法和装置 | |
EP3474194B1 (en) | Method and apparatus with neural network parameter quantization | |
CN108701250B (zh) | 数据定点化方法和装置 | |
TW201915839A (zh) | 對人工神經網路及浮點神經網路進行量化的方法及裝置 | |
CN110929865B (zh) | 网络量化方法、业务处理方法及相关产品 | |
CN112508125A (zh) | 一种图像检测模型的高效全整数量化方法 | |
CN106855952B (zh) | 基于神经网络的计算方法及装置 | |
CN111401550A (zh) | 神经网络模型量化方法、装置及电子设备 | |
CN112955907A (zh) | 量化训练的长短期记忆神经网络 | |
CN113132723B (zh) | 一种图像压缩方法及装置 | |
CN111105017A (zh) | 神经网络量化方法、装置及电子设备 | |
CN110647974A (zh) | 深度神经网络中的网络层运算方法及装置 | |
CN112561050B (zh) | 一种神经网络模型训练方法及装置 | |
CN113126953A (zh) | 针对浮点处理的方法和装置 | |
CN110337636A (zh) | 数据转换方法和装置 | |
CN114239949A (zh) | 一种基于双阶段注意力机制的网站访问量预测方法及*** | |
CN113780523A (zh) | 图像处理方法、装置、终端设备及存储介质 | |
JP2024043504A (ja) | ニューラルネットワークモデル推論の加速方法、装置、電子機器及び媒体 | |
CN114820755B (zh) | 一种深度图估计方法及*** | |
CN115953651A (zh) | 一种基于跨域设备的模型训练方法、装置、设备及介质 | |
CN112446461A (zh) | 一种神经网络模型训练方法及装置 | |
US11861452B1 (en) | Quantized softmax layer for neural networks | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 | |
CN115705486A (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 |