CN108701250A - 数据定点化方法和装置 - Google Patents
数据定点化方法和装置 Download PDFInfo
- Publication number
- CN108701250A CN108701250A CN201780008940.7A CN201780008940A CN108701250A CN 108701250 A CN108701250 A CN 108701250A CN 201780008940 A CN201780008940 A CN 201780008940A CN 108701250 A CN108701250 A CN 108701250A
- Authority
- CN
- China
- Prior art keywords
- bit width
- layer
- output value
- integer part
- target 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 121
- 238000013528 artificial neural network Methods 0.000 claims abstract description 149
- 238000012360 testing method Methods 0.000 claims abstract description 21
- 238000003672 processing method Methods 0.000 claims abstract description 16
- 238000007781 pre-processing Methods 0.000 claims description 106
- 238000012545 processing Methods 0.000 claims description 35
- 238000010606 normalization Methods 0.000 claims description 32
- 238000004364 calculation method Methods 0.000 claims description 26
- 230000004807 localization Effects 0.000 claims description 26
- 238000011176 pooling Methods 0.000 claims description 11
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 230000008014 freezing Effects 0.000 claims 1
- 238000007710 freezing Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 31
- 238000007667 floating Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 238000012805 post-processing Methods 0.000 description 9
- 238000005457 optimization Methods 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000011282 treatment Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002203 pretreatment Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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/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/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)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
一种数据定点化方法和装置、数据处理方法和装置以及数据对齐方法和装置,其中数据定点化方法包括:计算多个输入样本中每个输入样本在神经网络的第一目标层的最大输出值(S110);从多个最大输出值中选取至少两个最大输出值作为定点参考值(S120);根据每个定点参考值确定参考整数部分位宽(S130);基于预设的输出值总位宽和每个参考整数部分位宽进行准确率测试,将使得准确率最高的参考整数部分确定为第一目标层在输出值定点化时使用的整数部分位宽(S140)。该方法通过从第一目标层的多个最大输出值中选取多个值作为定点参考值,确定每个定点参考值对应的参考整数部分位宽,并基于准确率测试确定最优的整数部分位宽,根据最优的整数部分位宽使得定点化后网络可以在传递更多的有用信息同时保持较高的精度,提高网络的表达能力和准确率。
Description
版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
技术领域
本申请涉及数据处理领域,尤其涉及数据定点化方法和装置。
背景技术
当前主流的神经网络计算框架中,基本都是利用浮点数进行训练计算的。其中,神经网络的反向传播过程中,梯度的计算需要基于浮点数表示,以保证足够的精度;神经网络的前向传播过程的各层,尤其是卷积层和全连接层的权重系数和各层的输出值也均以浮点数表示。但是,前向传播过程中,基于浮点数的运算相比基于定点数的运算的逻辑设计更复杂,会消耗更多的硬件资源,功耗也更高。基于定点数的硬件逻辑设计相较于基于浮点数的硬件逻辑设计更友好。
业界的相关公司通常通过最小化数值误差将训练时用浮点数表示的各层输出值和权重系数转换为定点数表示。即,为输出值设置优化目标函数,根据优化目标函数,在给定位宽的条件下,找到使得输出值定点截断后得到的数与浮点数误差最小时的小数位位宽。权重系数的定点化也以类似的原理实现。然而,以优化目标函数的误差最小确定定点位置,得到的定点化结果可能很糟糕。仍以输出值为例,其主要原因在于,输出值中最重要的信息往往是由数值比较大的输出值决定的,而其占比通常比较小。以该定点化方法得到的定点位置进行定点化时,虽然截断率比较低,但往往会把最有用的高位信息剔除掉,从而影响网络的表达能力,造成网络的准确率下降。
发明内容
本申请提供了一种数据定点化方法和装置,使得定点化后网络可以在传递更多的有用信息同时保持较高的精度,从而提高网络的表达能力和准确率。
第一方面,提供了一种数据定点化方法,包括:计算多个输入样本中每个所述输入样本在神经网络的第一目标层的最大输出值;从多个所述最大输出值中选取至少两个所述最大输出值作为定点参考值;根据每个所述定点参考值确定参考整数部分位宽;基于预设的输出值总位宽和每个所述参考整数部分位宽进行准确率测试,将使得准确率最高的参考整数部分确定为所述第一目标层在输出值定点化时使用的整数部分位宽。
第一方面的数据定点化方法通过从第一目标层的多个最大输出值中选取多个值作为定点参考值,确定每个定点参考值对应的参考整数部分位宽,并基于准确率测试确定最优的整数部分位宽,根据最优的整数部分位宽使得定点化后网络可以在传递更多的有用信息同时保持较高的精度,可以提高网络的表达能力和准确率。
第二方面,提供了一种数据定点化方法,包括:计算输入样本在神经网络的第一目标层的参考输出值;确定为输出值预设的输出值总位宽和预设的第一符号位宽;根据所述参考输出值的大小确定输出值整数部分位宽;根据所述输出值总位宽、所述第一符号位宽和所述输出值整数部分位宽,确定输出值小数部分位宽,其中,所述第一符号位宽、所述输出值整数部分位宽和所述输出值小数部分位宽作为所述第一目标层在输出值定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
第二方面的数据定点化方法在输出值定点化时考虑符号位,这样使得确定的定点化方案更优,提高增加网络准确率的可能性。
第三方面,提供了一种数据处理方法,包括:对神经网络的至少两层进行合并预处理;基于合并预处理后的神经网络进行神经网络运算。
第三方面的数据处理方法,对神经网络的至少两层进行合并预处理,基于合并预处理后的神经网络进行运算,可以节省计算资源,提高系统效率。
第四方面,提供了一种数据对齐方法,包括:从神经网络中确定需数据对齐的多个层;根据所述多个层中每层输出值定点化应使用的整数部分位宽,确定所述多个层输出值定点化最终使用的整数部分位宽,其中,所述多个层中任意两层输出值定点化最终使用的整数部分位宽相等。
第四方面的数据对齐方法可以在确定定点化方案时解决一些层有输入数据对齐需求的问题,可以减少硬件资源的使用,提高系统效率。
第五方面,提供了一种数据定点化装置,包括:前向传播计算模块,用于计算多个输入样本中每个所述输入样本在神经网络的第一目标层的最大输出值;定点参考选取模块,用于从所述前向传播计算模块得到的多个所述最大输出值中选取至少两个所述最大输出值作为定点参考值;参考位宽确定模块,用于根据所述定点参考选取模块选取的每个所述定点参考值确定参考整数部分位宽;准确率测试模块,用于基于预设的输出值总位宽和所述参考位宽确定模块确定的每个所述参考整数部分位宽进行准确率测试,将使得准确率最高的参考整数部分确定为所述第一目标层在输出值定点化时使用的整数部分位宽。
第六方面,提供了一种数据定点化装置,包括:前向传播计算模块,用于计算输入样本在神经网络的第一目标层的参考输出值;确定模块,用于确定为输出值预设的输出值总位宽和预设的第一符号位宽;输出值位宽确定模块,用于根据所述前向传播计算模块得到的所述参考输出值的大小确定输出值整数部分位宽;根据所述确定模块确定的所述输出值总位宽、所述第一符号位宽和所述输出值整数部分位宽,确定输出值小数部分位宽,其中,所述第一符号位宽、所述输出值整数部分位宽和所述输出值小数部分位宽作为所述第一目标层在输出值定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
第七方面,提供了一种数据处理装置,包括:预处理模块,用于对神经网络的至少两层进行合并预处理;运算模块,用于基于所述预处理模块合并预处理后的神经网络进行神经网络运算。
第八方面,提供了一种数据对齐装置,包括:第一确定模块,用于从神经网络中确定需数据对齐的多个层;第二确定模块,用于根据所述多个层中每层输出值定点化应使用的整数部分位宽,确定所述多个层输出值定点化最终使用的整数部分位宽,其中,所述多个层中任意两层输出值定点化最终使用的整数部分位宽相等。
第九方面,提供了一种数据定点化方法,包括:计算多个输入样本中每个所述输入样本在神经网络的第一目标层的最大输出值;从多个所述最大输出值中选取一个所述最大输出值作为定点参考值;根据所述定点参考值确定参考整数部分位宽,作为所述第一目标层在输出值定点化时使用的整数部分位宽。
第十方面,提供了一种数据定点化装置,包括:前向传播计算模块,用于计算多个输入样本中每个所述输入样本在神经网络的第一目标层的最大输出值;定点参考选取模块,用于从所述前向传播计算模块得到的多个所述最大输出值中选取一个所述最大输出值作为定点参考值;位宽确定模块,用于根据所述定点参考选取模块选取的所述定点参考值确定参考整数部分位宽,作为所述第一目标层在输出值定点化时使用的整数部分位宽。
附图说明
图1是深度卷积神经网络的框架示意图。
图2是本申请一个实施例的数据定点化方法的示意性流程图。
图3A、图3B和图3C是本申请实施例的合并预处理的几种情况的示意图;图3D是卷积层之后是BN层的一种层连接方式的示意图。
图4是本申请一个实施例的选取定点参考值的示意图。
图5是Concatenation层的工作原理的示意图。
图6是本申请一个实施例的后处理的示意图。
图7是本申请一个实施例的数据定点化方法的示意性流程图。
图8是本申请一个实施例的数据定点化方法的示意性流程图。
图9是本申请一个实施例的数据处理方法的示意性流程图。
图10是本申请一个实施例的数据对齐方法的示意性流程图。
图11是本申请一个实施例的数据定点化装置的示意性框图。
图12是本申请一个实施例的数据定点化装置的示意性框图。
图13是本申请一个实施例的数据处理装置的示意性框图。
图14是本申请一个实施例的数据对齐装置的示意性框图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
首先介绍本申请实施例涉及的相关技术及概念。
神经网络(以深度卷积神经网络(Deep Convolutional Neural Network,DCNN)为例):
图1是深度卷积神经网络的框架示意图。深度卷积神经网络的输入值(由输入层输入),经隐藏层进行卷积(convolution)、转置卷积(transposed convolution ordeconvolution)、归一化(Batch Normalization,BN)、缩放(Scale)、全连接(fullyconnected)、拼接(Concatenation)、池化(pooling)、元素智能加法(element-wiseaddition)和激活(activation)等运算后,得到输出值(由输出层输出)。本申请实施例的神经网络的隐藏层可能涉及的运算不仅限于上述运算。
深度卷积神经网络的隐藏层可以包括级联的多层。每层的输入为上层的输出,为特征图(feature map),每层对输入的一组或多组特征图进行前述描述的至少一种运算,得到该层的输出。每层的输出也是特征图。一般情况下,各层以实现的功能命名,例如实现卷积运算的层称作卷积层。此外,隐藏层还可以包括转置卷积层、BN层、Scale层、池化层、全连接层、Concatenation层、元素智能加法层和激活层等等,此处不进行一一列举。各层的具体运算流程可以参考现有的技术,本文不进行赘述。
应理解,每层(包括输入层和输出层)可以有一个输入和/或一个输出,也可以有多个输入和/或多个输出。在视觉领域的分类和检测任务中,特征图的宽高往往是逐层递减的(例如图1所示的输入、特征图#1、特征图#2、特征图#3和输出的宽高是逐层递减的);而在语义分割任务中,特征图的宽高在递减到一定深度后,有可能会通过转置卷积运算或上采样(upsampling)运算,再逐层递增。
通常情况下,卷积层的后面会紧接着一层激活层,常见的激活层有线性整流函数(Rectified Linear Unit,ReLU)层、S型(sigmoid)层和双曲正切(tanh)层等。在BN层被提出以后,越来越多的神经网络在卷积之后会先进行BN处理,然后再进行激活计算。
当前,需要较多权重参数用于运算的层有:卷积层、全连接层、转置卷积层和BN层。
浮点数和定点数:
浮点数包括单精度浮点数(32位)和双精度浮点数(64位)。浮点数表达为符号位、整数部分和小数部分。bw为定点数总位宽,s为符号位(通常置于最左位),fl为小数部分位宽,xi是各位(也称为尾数(mantissa)位)的数值。一个定点数的实值可以表示为:
例如,一个定点数为01000101,位宽为8位,最高位(0)为符号位,小数部分位宽fl为3。那么这个定点数代表的实值为:
x=(-1)0×2-3×(20+22+26)=8.625。
一种现有的定点化方法:
数据的定点化主要包括权重系数的定点化,以及卷积层或全连接层输出值的定点化。一种定点化方法是通过最小化数值误差实现的。
对于每层的权重系数定点化,可以有一个优化目标函数。权重系数的该优化目标函数是在给定总位宽的条件下,找到使得权重系数定点截断后得到的数与浮点数误差最小时的小数位位宽。
对于卷积层或全连接层的输出值定点化,也可以有一个优化目标函数。其定点化的原理同权重系数的定点化原理类似。
以优化目标函数的误差最小确定定点位置,得到的定点化结果可能很差。仍以输出值为例,其主要原因在于,输出值中最重要的信息往往是由数值比较大的输出值决定的,而其占比通常比较小。以该定点化方法得到的定点位置进行定点化时,虽然截断率比较低,但往往会把最有用的高位信息剔除掉,从而造成网络的准确率下降。
现有的定点化方法都没有考虑除卷积层和全连接层以外其他层的定点化处理,特别是激活层、池化层和BN层,这些层中都有可能涉及浮点运算,因此都需要考虑定点化处理。
现有的定点化方法没有考虑element-wise addition层和Concatenation层等层输入的数据小数点对齐的问题。这会造成在数据定点化之后运算的过程中,需对数据进行移位操作,使得操作过程较为复杂。
针对上述问题,本申请实施例提供了一种数据定点化方法100,图2是该数据定点化方法100的示意性流程图。方法100包括:
S110,计算多个输入样本中每个输入样本在神经网络的第一目标层的最大输出值。
S120,从多个最大输出值中选取至少两个最大输出值作为定点参考值。
S130,根据每个定点参考值确定参考整数部分位宽。
S140,基于预设的输出值总位宽和每个参考整数部分位宽进行准确率测试,将使得准确率最高的参考整数部分确定为第一目标层在输出值定点化时使用的整数部分位宽。
本申请实施例通过从第一目标层的多个最大输出值中选取多个值作为定点参考值,确定每个定点参考值对应的参考整数部分位宽,并基于准确率测试确定最优的整数部分位宽,根据最优的整数部分位宽使得定点化后网络可以在传递更多的有用信息同时保持较高的精度,提高网络的表达能力和准确率。
应理解,本申请实施例确定参考整数部分位宽之后,基于预设的输出值总位宽就能够得到参考小数部分位宽。或者在其他实施例中,可以先得到参考小数部分位宽,再得到参考整数部分位宽,本申请实施例对此不作限定。
在一些实施例中,数据定点化后可以存在符号位(例如,符号位的位宽为第一符号位宽)。第一符号位宽、参考整数部分位宽和参考小数部分位宽的和等于预设的输出值总位宽。
还应理解,确定定点化方案后在定点化时,根据待定点化数据的正负确定第一符号位;根据待定点化数据的数值(大小)确定定点化后的整数部分和小数部分,本申请实施例在此不进行赘述。
本申请实施例的第一目标层可以包括卷积层、转置卷积层、BN层、Scale层、池化层、全连接层、Concatenation层、element-wise addition层和激活层中的一层或至少两层合并后的层。即,本申请实施例的数据定点化方法可以应用于神经网络的隐藏层的任一层或多层。
对应于第一目标层为至少两层合并后的层的情况,数据定点化方法100还可以包括:对神经网络的至少两层进行合并预处理,得到合并后形成的第一目标层。该处理可以认为是数据定点化方法的预处理部分。
神经网络的训练阶段完成后,推理(inference)阶段的卷积层、BN层和Scale层的参数是固定的。通过计算推导可以知道,其实BN层和Scale层的参数是可以合并到卷积层的参数里,这样神经网络的知识产权核(Intellectual Property core,IP核)就不需要专门为BN层和Scale层设计专用电路了。
早期的神经网络中,卷积层之后为激活层。为了防止网络过拟合、加快收敛速度、增强网络泛化能力等,在卷积层之后激活层之前可以引入BN层。BN层的输入包括Β={x1,...,xm}={xi}以及参数γ和β,其中,xi既是卷积层的输出又是BN层的输入,参数γ和β在训练阶段进行计算,在推理阶段均为常数。BN层的输出为{yi=BNγ,β(xi)}。
其中,
因此和yi的计算可以化简为:
xi是卷积层的输出,令X为卷积层的输入,W为权重系数矩阵,为偏置值则有:
由此,卷积层和BN层的合并完成。
Scale层本身就是要计算yi=axi+b,参考BN层与卷积层的合并,也可将Scale层和卷积层合并。在Caffe框架下,BN层的输出是因此基于Caffe框架设计的神经网络,通常会在BN层后加入Scale层以实现完整的归一化。
由此,对神经网络的至少两层进行合并预处理,得到合并后形成的第一目标层,可以包括:对神经网络的卷积层和BN层进行合并预处理,得到第一目标层;或,对神经网络的卷积层和Scale层进行合并预处理,得到第一目标层;或,对神经网络的卷积层、BN层和Scale层进行合并预处理,得到第一目标层。
图3A、图3B和图3C是本申请实施例的合并预处理的几种情况的示意图。图3D是最简单的卷积层之后是BN层的一种层连接方式。
如图3A所示,未进行合并预处理之前,卷积层后是BN层,再之后是激活层,将卷积层和BN层合并为第一目标层,其后为激活层,得到类似于图3D的两层结构。
应理解,某些IP核支持Scale层的处理,那么合并预处理中卷积层与BN层的合并,可以替换为卷积层与Scale层的合并。如图3B所示,未进行合并预处理之前,卷积层后是Scale层,再之后是激活层,将卷积层和Scale层合并为第一目标层,其后为激活层,得到类似于图3D的两层结构。
如图3C所示,未进行合并预处理之前,卷积层后是BN层,继而为Scale层,再之后是激活层,将卷积层、BN层和Scale层合并为第一目标层,其后为激活层,得到类似于图3D的两层结构。
应理解,合并预处理后,S110中的最大输出值为多个输入样本中每个输入样本在合并后形成的第一目标层的最大输出值。
通过数据定点化方法100的步骤S110至S140,可以确定第一目标层的输出值的定点化位置。
S110,计算多个输入样本中每个输入样本在神经网络的第一目标层的最大输出值。具体地,多个输入样本构成输入数据集。对输入数据集的多个,例如M个样本进行前向传播计算,对待定点化的第一目标层记录对每个样本的最大输出值,得到M个最大值。其中,M为大于或等于2的正整数。需要注意的是,前向传播计算时为保证计算精度,权重系数仍然可以使用浮点数。
S120,从多个最大输出值中选取至少两个最大输出值作为定点参考值,可以包括:对多个最大输出值进行排序,按照预设的选取参数从多个最大输出值中选取至少两个最大输出值作为定点参考值。应理解,选取参数可以在预设范围内。
具体而言,对多个最大输出值(例如,M个最大输出值)进行排序,例如升序排列或者降序排列,或者依照某预设规则排序。排好序后,按照预设的选取参数(例如选取参数为选取排序后特定位置的值)从M个最大输出值中选取出N个最大输出值。其中,N为小于或等于M的正整数。
图4是本申请一个实施例的选取定点参考值的示意图。在该具体的例子中,将M个最大输出值按从小到大的顺序排列,选取参数为a(j),选取第a(j)×M个最大输出值作为定点参考值,其中,j的取值为1,…,N,a(j)大于或等于0且小于或等于1。例如,N可以等于10,a(1),…,a(10)分别为0.5,0.6,0.7,0.8,0.9,0.92,0.94,0.96,0.98,1。
在一些实施例中,选取参数a(j)可以为选取最大值和次大值。在又一些实施例中,选取参数a(j)的值可以为均匀的取值,例如,为0.1,0.2,0.3,…,1等,这里对选取定点参考值的方法不做限定。
S130,根据每个定点参考值确定参考整数部分位宽,可以包括:根据定点参考值的大小确定参考整数部分位宽。在一些实施例中,方法100还可以包括:确定预设的第一符号位宽和输出值总位宽;根据第一符号位宽、输出值总位宽和参考整数部分位宽,确定参考小数部分位宽。在本申请实施例中,第一符号位和参考整数部分可以认为是参考非小数部分。换而言之,参考非小数部分位宽包括第一符号位宽(通常而言第一符号位宽为1)和参考整数部分位宽。具体而言,例如N个定点参考值中的第j个定点参考值为Oj。bwo为对输出值预设的输出值总位宽。根据定点参考值Oj的大小确定参考非小数部分位宽,例如参考非小数部分位宽iwoj=ceil(log2(Oj)+1),则定点参考值Oj对应的参考小数部分位宽fwoj=bwo-iwoj,其中,j的取值为1,…,N,ceil()表示向上取整。应理解,参考非小数部分位宽中包括第一符号位宽(第一符号位宽为1)和参考整数部分位宽iwoj-1。
在另一些实施例中,数据定点化后不存在符号位。S130,根据每个定点参考值确定参考整数部分位宽,可以包括:根据定点参考值的大小确定参考整数部分位宽。具体而言,在本申请实施例中,例如N个定点参考值中的第j个定点参考值为Oj。bwo为对输出值预设的输出值总位宽。根据定点参考值Oj的大小确定参考整数部分位宽,例如参考整数部分位宽iwoj=ceil(log2(Oj)),则定点参考值Oj对应的参考小数部分位宽fwoj=bwo-iwoj,其中,j的取值为1,…,N,ceil()表示向上取整。
S140,基于预设的输出值总位宽和每个参考整数部分位宽进行准确率测试,将使得准确率最高的参考整数部分确定为第一目标层在输出值定点化时使用的整数部分位宽。
具体而言,第一目标层有N个可能定点化方案,预测准确率损失最少的一个定点化方案。在图4的例子中,在a(j)等于0.98时,即定点参考值为127时,预测准确率损失最少。以存在符号位的情况为例,则该第一目标层的非小数部分位宽iwoj等于8(1位符号位,7位整数位)。如果输出值总位宽为16位,则小数部分位宽等于16-8=8。
以上说明了确定输出值定点化方案的过程,数据定点化方法还可以包括确定权重系数定点化方案的过程,步骤包括:确定为权重系数预设的权重定点总位宽和预设的第二符号位宽;根据第一目标层中最大权重系数的大小确定权重整数部分位宽;根据权重定点总位宽、第二符号位宽和权重整数部分位宽,确定权重小数部分位宽,其中,将第二符号位宽、权重整数部分位宽和权重小数部分位宽确定为第一目标层在权重系数定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
确定权重系数定点化方案的过程与确定输出值定点化方案的过程有类似之处。区别在于,直接从第一目标层找到最大权重系数,根据最大权重系数的大小确定权重非小数部分位宽即可。在一个具体的例子中,为权重系数预设的权重定点总位宽可以为bww。计算第一目标层中最大权重系数w对应的权重非小数部分位宽iww=ceil(log2(w)+1),其中包括第二符号位宽和权重整数部分位宽。从而,最大权重系数w对应的重小数部分位宽fww=bww-iww。将第二符号位宽(通常为1位)、权重整数部分位宽iww-1和权重小数部分位宽fww确定为第一目标层在权重系数定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
应理解,如果存在合并预处理,最大权重系数为对神经网络的至少两层进行合并预处理后形成的第一目标层的权重系数的最大值。
可选地,本申请实施例可以包括后处理,以解决一些层有输入数据小数点对齐需求的问题。因此,需要其上的至少两层(例如,包括第一目标层和第二目标层)的输出值小数点对齐,数据定点化方法100还可以包括:确定神经网络的第二目标层在输出值定点化时使用的整数部分位宽,使第二目标层在输出值定点化时使用的整数部分位宽和第一目标层在输出值定点化时使用的整数部分位宽相等。
在系统预设的输出值总位宽一定的情况下,由于第二目标层在输出值定点化时使用的整数部分位宽和第一目标层在输出值定点化时使用的整数部分位宽相等。应理解,第二目标层在输出值定点化时使用的小数部分位宽和第一目标层在输出值定点化时使用的小数部分位宽也相等。
在第一目标层和第二目标层按照各自的输出值定点化方案确定出的定点化位置不同,即整数部分位宽不同时,确定神经网络的第二目标层在输出值定点化时使用的整数部分位宽,包括:将第一目标层和第二目标层输出值定点化应使用的整数部分位宽中的最大值,确定为第一目标层和第二目标层输出值定点化最终使用的整数部分位宽。例如,按照各自的输出值定点化方案,第一目标层的非小数部分位宽为7(第一符号位宽为1,整数部分位宽为6),第二目标层的非小数部分位宽为5(第一符号位宽为1,整数部分位宽为4)。为了保证整数部分不被截断,第一目标层和第二目标层输出值定点化最终使用的非小数部分位宽可以为7。非小数部分位宽7中,可以包括1位符号位6为整数位,如果预设的输出值总位宽为16,则小数部分位宽为9。
可选地,第一目标层的输出值与第二目标层的输出值在拼接Concatenation层和/或element-wise addition层进行后续处理。当然根据IP核支持的层种类不同,小数点对齐后的输出值也可以在其他层进行后续处理,本申请实施例对此不作限定。
具体而言,后处理主要是针对Concatenation层和element-wise addition层,使这两层的输入值(即输入特征图)的小数点位置是对齐的。Concatenation层实现的功能是把两组输入特征图合并到一起,达到融合特征的效果,在计算机里可以理解为两块离散的内存块拼接成连续的内存块。图5示出了Concatenation层的工作原理的示意图。element-wise addition层实现的功能是对两组输入特征图进行点加运算,计算残差特征图。由于这两层输入的两组特征图定点化后的小数点位置有可能是不一致的,因此,这两层需要对两组输入特征图的数值进行小数点对齐处理。虽然输入特征图的数值的小数点对齐可以由硬件通过移位实现,但这样做会浪费一定的硬件资源。Concatenation层或element-wiseaddition层输入的两组特征图是某两层(例如,包括第一目标层和第二目标层)输出的特征图,在该两层输出的时候会做一次定点化处理,因此只需该两层的输出值保持小数点对齐即可。本申请实施例的后处理可以减少硬件资源的使用,提高系统效率。
图6是本申请一个实施例的后处理的示意图。现有的处理方案中,数据格式为Q5.10的特征图经卷积运算后,得到数据格式为Q4.11的特征图;数据格式为Q4.11的特征图经卷积运算后,得到数据格式为Q6.9的特征图;得到的数据格式为Q4.11的特征图经移位后将数据格式转换为数据格式Q6.9,与得到的数据格式为Q6.9的特征图作为Concatenation层的输入,经Concatenation层运算后得到数据格式为Q6.9的特征图(Concatenation层的输出)。如图6所示,本申请一个实施例的方案则为数据格式为Q5.10的特征图经卷积运算以及结合后处理(确定数据格式应为Q6.9)后,得到数据格式为Q6.9的特征图;数据格式为Q4.11的特征图经卷积运算以及结合后处理后,得到数据格式为Q6.9的特征图;得到的两个数据格式为Q6.9的特征图作为Concatenation层的输入,经Concatenation层运算后得到数据格式为Q6.9的特征图(Concatenation层的输出)。
应理解,图6的方案仅是本申请的一个具体的实施例。在其他实施例中仍以上述例子为例,后处理可以选取以数据格式Q4.11进行对齐,即以保证小数位位宽最大为标准对齐;或者其他实施例还可以以其他标准选取对齐的位宽,本申请实施例对此不作限定。
图7是本申请一个实施例的数据定点化方法的示意性流程图。如图7所示,确定数据定点化方案需要获得神经网络的结构,各层的权重系数以及用于确定定点化方案的输入数据集。神经网络的结构是指神经网络所包括的层的类型。根据神经网络的结构,执行S210的合并预处理。之后可以执行S220,确定各层的权重系数的定点化方案。根据输入数据集得到在各层的输出值,执行S230各层输出值的定点化,结合S240准确率测试的结果,确定各层的权重系数的定点化方案。最后,可以执行S250后处理。根据S210至S250的结果,输出各层权重系数和输出值的定点化参数,例如,非小数部分位宽,或者非小数部分位宽和小数部分位宽,或者整数部分位宽和小数部分位宽,或者符号位宽、整数部分位宽和小数部分位宽等等。
本申请实施例还提供了一种数据定点化方法,图8是本申请一个实施例的数据定点化方法300的示意性流程图。数据定点化方法300可以包括:
S310,计算输入样本在神经网络的第一目标层的参考输出值。
S320,确定为输出值预设的输出值总位宽和预设的第一符号位宽。
S330,根据参考输出值的大小确定输出值整数部分位宽。
S340,根据输出值总位宽、第一符号位宽和输出值整数部分位宽,确定输出值小数部分位宽,其中,第一符号位宽、输出值整数部分位宽和输出值小数部分位宽作为第一目标层在输出值定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
本申请实施例的数据定点化方法在输出值定点化时考虑符号位,这样使得确定的定点化方案更优,提高增加网络准确率的可能性。
应理解,本申请实施例的参考输出值可以为一个值,也可以为多个输入样本产生的多个参考输出值。参考输出值可以为输入样本在第一目标层的最大输出值,也可以是次大输出值或者除最大输出值以外的其他值。根据准确率测试,从多个参考输出值(例如多个最大输出值)对应的定点化方案中确定出最优的定点化方案。具体过程已在前文的实施例中进行了描述,此处不再赘述。
可选地,以参考输出值为最大输出值为例,可以根据最大输出值O的大小确定非小数部分位宽,例如非小数部分位宽iwo=ceil(log2(O)+1),则小数部分位宽fwo=bwo-iwo,ceil()表示向上取整。应理解,参考非小数部分位宽中可以包括第一符号位宽(通常而言第一符号位宽为1)和整数部分位宽iwo-1;参考非小数部分位宽也可以没有符号位,仅包括整数部分位宽iwo。
可选地,作为一个实施例,数据定点化方法300还可以包括:确定为权重系数预设的权重定点总位宽和预设的第二符号位宽;根据第一目标层中最大权重系数的大小确定权重整数部分位宽;根据权重定点总位宽、第二符号位宽和权重整数部分位宽,确定权重小数部分位宽,其中,将第二符号位宽、权重整数部分位宽和权重小数部分位宽确定为第一目标层在权重系数定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
可选地,作为一个实施例,数据定点化方法300还可以包括:对神经网络的至少两层进行合并预处理,得到合并后形成的第一目标层。
可选地,作为一个实施例,参考输出值为多个输入样本中每个输入样本在合并后形成的第一目标层的参考输出值。
可选地,作为一个实施例,最大权重系数为对神经网络的至少两层进行合并预处理后形成的第一目标层的权重系数的最大值。
可选地,作为一个实施例,对神经网络的至少两层进行合并预处理,得到合并后形成的第一目标层,可以包括:对神经网络的卷积层和归一化层进行合并预处理,得到第一目标层;或,对神经网络的卷积层和缩放层进行合并预处理,得到第一目标层;或,对神经网络的卷积层、归一化层和缩放层进行合并预处理,得到第一目标层。
可选地,作为一个实施例,第一目标层可以包括卷积层、转置卷积层、归一化层、缩放层、池化层、全连接层、拼接层、元素智能加法层和激活层中的一层或至少两层合并后的层。
可选地,作为一个实施例,数据定点化方法300还可以包括:确定神经网络的第二目标层在输出值定点化时使用的整数部分位宽,使第二目标层在输出值定点化时使用的整数部分位宽和第一目标层在输出值定点化时使用的整数部分位宽相等。
可选地,作为一个实施例,第二目标层在输出值定点化时使用的小数部分位宽和第一目标层在输出值定点化时使用的小数部分位宽相等。
可选地,作为一个实施例,第一目标层的输出值与第二目标层的输出值在拼接层和/或元素智能加法层进行后续处理。
上述可选的各实施例的具体流程可以参考前文的说明,此处不再赘述。
本申请实施例还提供了一种数据处理方法。图9是本申请实施例的数据处理方法400的示意性流程图。数据处理方法400可以包括:
S410,对神经网络的至少两层进行合并预处理。
S420,基于合并预处理后的神经网络进行神经网络运算。
本申请实施例的数据处理方法,对神经网络的至少两层进行合并预处理,基于合并预处理后的神经网络进行运算,可以节省计算资源,提高系统效率。
可选地,作为一个实施例,S410对神经网络的至少两层进行合并预处理,可以包括:对神经网络的卷积层和归一化层进行合并预处理;或,对神经网络的卷积层和缩放层进行合并预处理;或,对神经网络的卷积层、归一化层和缩放层进行合并预处理。
可选地,作为一个实施例,数据处理方法400还可以包括:确定至少两层进行合并预处理后形成的第一目标层的权重系数。
可选地,作为一个实施例,S420基于合并预处理后的神经网络进行神经网络运算,包括:对至少两层进行合并预处理后形成的第一目标层进行定点化计算。
可选地,作为一个实施例,对至少两层进行合并预处理后形成的第一目标层进行定点化计算,可以包括:根据前文描述的数据定点化方法100或200确定第一目标层定点化使用的整数部分位宽。
上述可选的各实施例的具体流程可以参考前文的说明,此处不再赘述。
本申请实施例还提供了一种数据对齐方法。图10是本申请实施例的数据对齐方法500的示意性流程图。数据对齐方法500可以包括:
S510,从神经网络中确定需数据对齐的多个层。
S520,根据多个层中每层输出值定点化应使用的整数部分位宽,确定多个层输出值定点化最终使用的整数部分位宽,其中,多个层中任意两层输出值定点化最终使用的整数部分位宽相等。
本申请实施例的数据对齐方法可以在确定定点化方案时解决一些层有输入数据小数点对齐需求的问题,可以减少硬件资源的使用,提高系统效率。
可选地,作为一个实施例,数据对齐方法500还可以包括:根据前文描述的数据定点化方法100或200确定多个层中每层输出值定点化应使用的整数部分位宽。
可选地,作为一个实施例,多个层中任意两层输出值定点化最终使用的小数部分位宽相等。
可选地,作为一个实施例,S520确定多个层输出值定点化最终使用的整数部分位宽,可以包括:将多个层中定点化应使用的所有整数部分位宽中的最大值,确定为多个层输出值定点化最终使用的整数部分位宽。
应理解,S520确定多个层输出值定点化最终使用的整数部分位宽,也可以包括:将多个层中定点化应使用的所有整数部分位宽中的最小值,确定为多个层输出值定点化最终使用的整数部分位宽;或者按照其他标准或预设规则确定最终使用的整数部分位宽,本申请实施例对此不作限定。
本申请实施例还提供了一种数据定点化方法。该数据定点化方法包括计算多个输入样本中每个输入样本在神经网络的第一目标层的最大输出值。从多个最大输出值中选取一个最大输出值作为定点参考值。根据定点参考值确定参考整数部分位宽,作为第一目标层在输出值定点化时使用的整数部分位宽。
应理解,从多个最大输出值中选取一个最大输出值作为定点参考值可以按照预设规则选取。例如,从多个最大输出值中选取出数值最大的一个最大输出值作为定点参考值;或者从多个最大输出值中选取出数值次大的一个最大输出值作为定点参考值;或者从多个最大输出值中选取出数值处于中间某位置的一个最大输出值作为定点参考值;或者对多个最大输出值进行排序,按照预设的选取参数从多个最大输出值中选取一个最大输出值作为定点参考值,等等,本申请实施例对具体的选取方法不作限定。
可选地,作为一个实施例,根据定点参考值确定参考整数部分位宽,作为第一目标层在输出值定点化时使用的整数部分位宽,包括:根据定点参考值确定参考整数部分位宽;基于预设的输出值总位宽和参考整数部分位宽进行准确率测试,在准确率不小于预设阈值时,将参考整数部分位宽作为第一目标层在输出值定点化时使用的整数部分位宽。
在一个具体的例子中,例如预设阈值为85%,当从多个最大输出值中选取出数值次大的最大输出值作为定点参考值对应的参考整数部分位宽使得准确率不小于85%时,则将该参考整数部分位宽作为第一目标层在输出值定点化时使用的整数部分位宽;当从多个最大输出值中选取出数值次大的最大输出值作为定点参考值对应的参考整数部分位宽使得准确率小于85%时,则将数值最大的最大输出值作为定点参考值重新计算参考整数部分位宽,当该参考整数部分位宽使得准确率不小于85%时,将该参考整数部分位宽作为第一目标层在输出值定点化时使用的整数部分位宽。应理解,这仅是确定第一目标层在输出值定点化时使用的整数部分位宽的一个具体的例子,而非对本申请实施例的限定。
以上详细说明了本申请实施例的方法,下面详细说明了本申请实施例的装置。
图11是本申请一个实施例的数据定点化装置600的示意性框图。数据定点化装置600包括:
前向传播计算模块610,用于计算多个输入样本中每个输入样本在神经网络的第一目标层的最大输出值。
定点参考选取模块620,用于从前向传播计算模块610得到的多个最大输出值中选取至少两个最大输出值作为定点参考值。
参考位宽确定模块630,用于根据定点参考选取模块620选取的每个定点参考值确定参考整数部分位宽。
准确率测试模块640,用于基于预设的输出值总位宽和参考位宽确定模块630确定的每个参考整数部分位宽进行准确率测试,将使得准确率最高的参考整数部分确定为第一目标层在输出值定点化时使用的整数部分位宽。
本申请实施例的数据定点化装置600通过从第一目标层的多个最大输出值中选取多个值作为定点参考值,确定每个定点参考值对应的参考整数部分位宽,并基于准确率测试确定最优的整数部分位宽,根据最优的整数部分位宽使得定点化后网络可以在传递更多的有用信息同时保持较高的精度,提高网络的表达能力和准确率。
可选地,作为一个实施例,定点参考选取模块620从多个最大输出值中选取至少两个最大输出值作为定点参考值,可以包括:定点参考选取模块620对多个最大输出值进行排序,按照预设的选取参数从多个最大输出值中选取至少两个最大输出值作为定点参考值。
可选地,作为一个实施例,参考位宽确定模块630根据每个定点参考值确定参考整数部分位宽,包括:参考位宽确定模块630根据定点参考值的大小确定参考整数部分位宽;参考位宽确定模块630还用于:确定预设的第一符号位宽和输出值总位宽;根据第一符号位宽、输出值总位宽和参考整数部分位宽,确定参考小数部分位宽。
可选地,作为一个实施例,数据定点化装置600还可以包括权重位宽确定模块,用于:确定为权重系数预设的权重定点总位宽和预设的第二符号位宽;根据第一目标层中最大权重系数的大小确定权重整数部分位宽;根据权重定点总位宽、第二符号位宽和权重整数部分位宽,确定权重小数部分位宽,其中,将第二符号位宽、权重整数部分位宽和权重小数部分位宽确定为第一目标层在权重系数定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
可选地,作为一个实施例,数据定点化装置600还可以包括预处理模块,用于:对神经网络的至少两层进行合并预处理,得到合并后形成的第一目标层。
可选地,作为一个实施例,最大输出值为多个输入样本中每个输入样本在合并后形成的第一目标层的最大输出值。
可选地,作为一个实施例,最大权重系数为对神经网络的至少两层进行合并预处理后形成的第一目标层的权重系数的最大值。
可选地,作为一个实施例,预处理模块对神经网络的至少两层进行合并预处理,得到合并后形成的第一目标层,包括:预处理模块对神经网络的卷积层和归一化层进行合并预处理,得到第一目标层;或,预处理模块对神经网络的卷积层和缩放层进行合并预处理,得到第一目标层;或,预处理模块对神经网络的卷积层、归一化层和缩放层进行合并预处理,得到第一目标层。
可选地,作为一个实施例,第一目标层为卷积层、转置卷积层、归一化层、缩放层、池化层、全连接层、拼接层、元素智能加法层和激活层中的一层或至少两层合并后的层。
可选地,作为一个实施例,数据定点化装置600还包括对齐模块,用于:确定神经网络的第二目标层在输出值定点化时使用的整数部分位宽,使第二目标层在输出值定点化时使用的整数部分位宽和第一目标层在输出值定点化时使用的整数部分位宽相等。
可选地,作为一个实施例,第二目标层在输出值定点化时使用的小数部分位宽和第一目标层在输出值定点化时使用的小数部分位宽相等。
可选地,作为一个实施例,对齐模块确定神经网络的第二目标层在输出值定点化时使用的整数部分位宽,包括:对齐模块将第一目标层和第二目标层输出值定点化应使用的整数部分位宽中的最大值,确定为第一目标层和第二目标层输出值定点化最终使用的整数部分位宽。
可选地,作为一个实施例,第一目标层的输出值与第二目标层的输出值在拼接层和/或元素智能加法层进行后续处理。
图12是本申请一个实施例的数据定点化装置700的示意性框图。数据定点化装置700包括:
前向传播计算模块710,用于计算输入样本在神经网络的第一目标层的参考输出值。
确定模块720,用于确定为输出值预设的输出值总位宽和预设的第一符号位宽。
输出值位宽确定模块730,用于根据前向传播计算模块710得到的参考输出值的大小确定输出值整数部分位宽;根据确定模块720确定的输出值总位宽、第一符号位宽和输出值整数部分位宽,确定输出值小数部分位宽,其中,第一符号位宽、输出值整数部分位宽和输出值小数部分位宽作为第一目标层在输出值定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
本申请实施例的数据定点化装置在输出值定点化时考虑符号位,这样使得确定的定点化方案更优,提高增加网络准确率的可能性。
可选地,作为一个实施例,参考输出值可以为输入样本在第一目标层的最大输出值。
可选地,作为一个实施例,数据定点化装置700还可以包括权重位宽确定模块,用于:确定为权重系数预设的权重定点总位宽和预设的第二符号位宽;根据第一目标层中最大权重系数的大小确定权重整数部分位宽;根据权重定点总位宽、第二符号位宽和权重整数部分位宽,确定权重小数部分位宽,其中,将第二符号位宽、权重整数部分位宽和权重小数部分位宽确定为第一目标层在权重系数定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
可选地,作为一个实施例,数据定点化装置700还可以包括预处理模块,用于:对神经网络的至少两层进行合并预处理,得到合并后形成的第一目标层。
可选地,作为一个实施例,参考输出值为多个输入样本中每个输入样本在合并后形成的第一目标层的参考输出值。
可选地,作为一个实施例,最大权重系数为对神经网络的至少两层进行合并预处理后形成的第一目标层的权重系数的最大值。
可选地,作为一个实施例,预处理模块对对神经网络的至少两层进行合并预处理,得到合并后形成的第一目标层,包括:预处理模块对对神经网络的卷积层和归一化层进行合并预处理,得到第一目标层;或,预处理模块对对神经网络的卷积层和缩放层进行合并预处理,得到第一目标层;或,预处理模块对对神经网络的卷积层、归一化层和缩放层进行合并预处理,得到第一目标层。
可选地,作为一个实施例,第一目标层为卷积层、转置卷积层、归一化层、缩放层、池化层、全连接层、拼接层、元素智能加法层和激活层中的一层或至少两层合并后的层。
可选地,作为一个实施例,数据定点化装置700还可以包括对齐模块,用于:对齐模块确定神经网络的第二目标层在输出值定点化时使用的整数部分位宽,使第二目标层在输出值定点化时使用的整数部分位宽和第一目标层在输出值定点化时使用的整数部分位宽相等。
可选地,作为一个实施例,第二目标层在输出值定点化时使用的小数部分位宽和第一目标层在输出值定点化时使用的小数部分位宽相等。
可选地,作为一个实施例,第一目标层的输出值与第二目标层的输出值在拼接层和/或元素智能加法层进行后续处理。
图13是本申请一个实施例的数据处理装置800的示意性框图。该数据处理装置800包括:
预处理模块810,用于对神经网络的至少两层进行合并预处理;
运算模块820,用于基于预处理模块810合并预处理后的神经网络进行神经网络运算。
本申请实施例的数据处理装置,对神经网络的至少两层进行合并预处理,基于合并预处理后的神经网络进行运算,可以节省计算资源,提高系统效率。
可选地,作为一个实施例,预处理模块810对神经网络的至少两层进行合并预处理,可以包括:预处理模块对神经网络的卷积层和归一化层进行合并预处理;或,预处理模块对神经网络的卷积层和缩放层进行合并预处理;或,预处理模块对神经网络的卷积层、归一化层和缩放层进行合并预处理。
可选地,作为一个实施例,数据处理装置800还可以包括确定模块,用于:确定至少两层进行合并预处理后形成的第一目标层的权重系数。
可选地,作为一个实施例,运算模块820基于合并预处理后的神经网络进行神经网络运算,可以包括:运算模块820对至少两层进行合并预处理后形成的第一目标层进行定点化计算。
可选地,作为一个实施例,运算模块820对至少两层进行合并预处理后形成的第一目标层进行定点化计算,可以包括:运算模块820根据前文描述的数据定点化方法100或200确定第一目标层定点化使用的整数部分位宽。
图14是本申请一个实施例的数据对齐装置900的示意性框图。数据对齐装置900包括:
第一确定模块910,用于从神经网络中确定需数据对齐的多个层。
第二确定模块920,用于根据多个层中每层输出值定点化应使用的整数部分位宽,确定多个层输出值定点化最终使用的整数部分位宽,其中,多个层中任意两层输出值定点化最终使用的整数部分位宽相等。
本申请实施例的数据对齐装置可以在确定定点化方案时解决一些层有输入数据对齐需求的问题,可以减少硬件资源的使用,提高系统效率。
可选地,作为一个实施例,数据对齐装置900还可以包括第三确定模块,用于:根据前文描述的数据定点化方法100或200确定多个层中每层输出值定点化应使用的整数部分位宽。
可选地,作为一个实施例,多个层中任意两层输出值定点化最终使用的小数部分位宽相等。
可选地,作为一个实施例,第二确定模块920确定多个层输出值定点化最终使用的整数部分位宽,包括:第二确定模块将多个层中定点化应使用的所有整数部分位宽中的最大值,确定为多个层输出值定点化最终使用的整数部分位宽。
本申请实施例还提供了一种数据定点化装置。该数据定点化装置包括:前向传播计算模块,用于计算多个输入样本中每个输入样本在神经网络的第一目标层的最大输出值;定点参考选取模块,用于从前向传播计算模块得到的多个最大输出值中选取一个最大输出值作为定点参考值;和位宽确定模块,用于根据定点参考选取模块选取的定点参考值确定参考整数部分位宽,作为第一目标层在输出值定点化时使用的整数部分位宽。
可选地,作为一个实施例,位宽确定模块根据定点参考值确定参考整数部分位宽,作为第一目标层在输出值定点化时使用的整数部分位宽,可以包括:位宽确定模块根据定点参考值确定参考整数部分位宽;位宽确定模块基于预设的输出值总位宽和参考整数部分位宽进行准确率测试,在准确率不小于预设阈值时,将参考整数部分位宽作为第一目标层在输出值定点化时使用的整数部分位宽。
应理解,本申请各实施例的装置可以基于存储器和处理器实现,各存储器用于存储用于执行本申请个实施例的方法的指令,处理器执行上述指令,使得装置执行本申请各实施例的方法。
应理解,本申请实施例中提及的处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本申请实施例还提供一种计算机可读存储介质,其上存储有指令,当指令在计算机上运行时,使得计算机执行上述各方法实施例的方法。
本申请实施例还提供一种计算设备,该计算设备包括上述计算机可读存储介质。
本申请实施例可以应用在飞行器,尤其是无人机领域。
应理解,本申请各实施例的电路、子电路、子单元的划分只是示意性的。本领域普通技术人员可以意识到,本文中所公开的实施例描述的各示例的电路、子电路和子单元,能够再行拆分或组合。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital SubscriberLine,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
应理解,本申请各实施例均是以总位宽为16位(bit)为例进行说明的,本申请各实施例可以适用于其他的位宽。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应理解,在本申请实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (64)
1.一种数据定点化方法,其特征在于,包括:
计算多个输入样本中每个所述输入样本在神经网络的第一目标层的最大输出值;
从多个所述最大输出值中选取至少两个所述最大输出值作为定点参考值;
根据每个所述定点参考值确定参考整数部分位宽;
基于预设的输出值总位宽和每个所述参考整数部分位宽进行准确率测试,将使得准确率最高的参考整数部分确定为所述第一目标层在输出值定点化时使用的整数部分位宽。
2.根据权利要求1所述的数据定点化方法,其特征在于,所述从多个所述最大输出值中选取至少两个所述最大输出值作为定点参考值,包括:
对多个所述最大输出值进行排序,按照预设的选取参数从所述多个最大输出值中选取至少两个所述最大输出值作为所述定点参考值。
3.根据权利要求1或2所述的数据定点化方法,其特征在于,所述根据每个所述定点参考值确定参考整数部分位宽,包括:
根据所述定点参考值的大小确定所述参考整数部分位宽;
所述方法还包括:
确定预设的第一符号位宽和所述输出值总位宽;
根据所述第一符号位宽、所述输出值总位宽和所述参考整数部分位宽,确定参考小数部分位宽。
4.根据权利要求1或2所述的数据定点化方法,其特征在于,所述数据定点化方法还包括:
确定为权重系数预设的权重定点总位宽和预设的第二符号位宽;
根据所述第一目标层中最大权重系数的大小确定权重整数部分位宽;
根据所述权重定点总位宽、所述第二符号位宽和所述权重整数部分位宽,确定权重小数部分位宽,
其中,将所述第二符号位宽、所述权重整数部分位宽和所述权重小数部分位宽确定为所述第一目标层在权重系数定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
5.根据权利要求4所述的数据定点化方法,其特征在于,所述最大权重系数为对所述神经网络的至少两层进行合并预处理后形成的所述第一目标层的权重系数的最大值。
6.根据权利要求1所述的数据定点化方法,其特征在于,所述数据定点化方法还包括:
对所述神经网络的至少两层进行合并预处理,得到合并后形成的所述第一目标层。
7.根据权利要求6所述的数据定点化方法,其特征在于,所述最大输出值为所述多个输入样本中每个所述输入样本在合并后形成的所述第一目标层的所述最大输出值。
8.根据权利要求6所述的数据定点化方法,其特征在于,所述对所述神经网络的至少两层进行合并预处理,得到合并后形成的所述第一目标层,包括:
对所述神经网络的卷积层和归一化层进行合并预处理,得到所述第一目标层;或,
对所述神经网络的卷积层和缩放层进行合并预处理,得到所述第一目标层;或,
对所述神经网络的卷积层、归一化层和缩放层进行合并预处理,得到所述第一目标层。
9.根据权利要求1所述的数据定点化方法,其特征在于,所述第一目标层包括卷积层、转置卷积层、归一化层、缩放层、池化层、全连接层、拼接层、元素智能加法层和激活层中的一层或至少两层合并后的层。
10.根据权利要求1所述的数据定点化方法,其特征在于,所述数据定点化方法还包括:
确定所述神经网络的第二目标层在输出值定点化时使用的整数部分位宽,使所述第二目标层在输出值定点化时使用的整数部分位宽和所述第一目标层在输出值定点化时使用的整数部分位宽相等。
11.根据权利要求10所述的数据定点化方法,其特征在于,所述确定所述神经网络的第二目标层在输出值定点化时使用的整数部分位宽,包括:
将所述第一目标层和所述第二目标层输出值定点化应使用的整数部分位宽中的最大值,确定为所述第一目标层和所述第二目标层输出值定点化最终使用的整数部分位宽。
12.根据权利要求10或11所述的数据定点化方法,其特征在于,所述第一目标层的输出值与所述第二目标层的输出值在拼接层和/或元素智能加法层进行后续处理。
13.一种数据定点化方法,其特征在于,包括:
计算输入样本在神经网络的第一目标层的参考输出值;
确定为输出值预设的输出值总位宽和预设的第一符号位宽;
根据所述参考输出值的大小确定输出值整数部分位宽;
根据所述输出值总位宽、所述第一符号位宽和所述输出值整数部分位宽,确定输出值小数部分位宽,其中,所述第一符号位宽、所述输出值整数部分位宽和所述输出值小数部分位宽作为所述第一目标层在输出值定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
14.根据权利要求13所述的数据定点化方法,其特征在于,所述参考输出值为所述输入样本在所述第一目标层的最大输出值。
15.根据权利要求13或14所述的数据定点化方法,其特征在于,所述数据定点化方法还包括:
确定为权重系数预设的权重定点总位宽和预设的第二符号位宽;
根据所述第一目标层中最大权重系数的大小确定权重整数部分位宽;
根据所述权重定点总位宽、所述第二符号位宽和所述权重整数部分位宽,确定权重小数部分位宽,
其中,将所述第二符号位宽、所述权重整数部分位宽和所述权重小数部分位宽确定为所述第一目标层在权重系数定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
16.根据权利要求15所述的数据定点化方法,其特征在于,所述最大权重系数为对所述神经网络的至少两层进行合并预处理后形成的所述第一目标层的权重系数的最大值。
17.根据权利要求13所述的数据定点化方法,其特征在于,所述数据定点化方法还包括:
对所述神经网络的至少两层进行合并预处理,得到合并后形成的所述第一目标层。
18.根据权利要求17所述的数据定点化方法,其特征在于,所述参考输出值为所述多个输入样本中每个所述输入样本在合并后形成的所述第一目标层的所述参考输出值。
19.根据权利要求17所述的数据定点化方法,其特征在于,所述对所述神经网络的至少两层进行合并预处理,得到合并后形成的所述第一目标层,包括:
对所述神经网络的卷积层和归一化层进行合并预处理,得到所述第一目标层;或,
对所述神经网络的卷积层和缩放层进行合并预处理,得到所述第一目标层;或,
对所述神经网络的卷积层、归一化层和缩放层进行合并预处理,得到所述第一目标层。
20.根据权利要求13所述的数据定点化方法,其特征在于,所述第一目标层包括卷积层、转置卷积层、归一化层、缩放层、池化层、全连接层、拼接层、元素智能加法层和激活层中的一层或至少两层合并后的层。
21.根据权利要求13所述的数据定点化方法,其特征在于,所述数据定点化方法还包括:
确定所述神经网络的第二目标层在输出值定点化时使用的整数部分位宽,使所述第二目标层在输出值定点化时使用的整数部分位宽和所述第一目标层在输出值定点化时使用的整数部分位宽相等。
22.根据权利要求21所述的数据定点化方法,其特征在于,所述第一目标层的输出值与所述第二目标层的输出值在拼接层和/或元素智能加法层进行后续处理。
23.一种数据处理方法,其特征在于,包括:
对神经网络的至少两层进行合并预处理;
基于合并预处理后的神经网络进行神经网络运算。
24.根据权利要求23所述的数据处理方法,其特征在于,所述对神经网络的至少两层进行合并预处理,包括:
对所述神经网络的卷积层和归一化层进行合并预处理;或,
对所述神经网络的卷积层和缩放层进行合并预处理;或,
对所述神经网络的卷积层、归一化层和缩放层进行合并预处理。
25.根据权利要求23或24所述的数据处理方法,其特征在于,所述数据处理方法还包括:
确定所述至少两层进行合并预处理后形成的第一目标层的权重系数。
26.根据权利要求23或24所述的数据处理方法,其特征在于,所述基于合并预处理后的神经网络进行神经网络运算,包括:
对所述至少两层进行合并预处理后形成的第一目标层进行定点化计算。
27.根据权利要求26所述的数据处理方法,其特征在于,所述对所述至少两层进行合并预处理后形成的第一目标层进行定点化计算,包括:
根据权利要求1至12中任一项所述的数据定点化方法确定所述第一目标层定点化使用的整数部分位宽。
28.一种数据对齐方法,其特征在于,包括:
从神经网络中确定需数据对齐的多个层;
根据所述多个层中每层输出值定点化应使用的整数部分位宽,确定所述多个层输出值定点化最终使用的整数部分位宽,其中,所述多个层中任意两层输出值定点化最终使用的整数部分位宽相等。
29.根据权利要求28所述的数据对齐方法,其特征在于,所述数据对齐方法还包括:
根据权利要求1至12中任一项所述的数据定点化方法确定所述多个层中每层输出值定点化应使用的整数部分位宽。
30.根据权利要求28或29所述的数据对齐方法,其特征在于,所述确定所述多个层输出值定点化最终使用的整数部分位宽,包括:
将所述多个层中定点化应使用的所有整数部分位宽中的最大值,确定为所述多个层输出值定点化最终使用的整数部分位宽。
31.一种数据定点化方法,其特征在于,包括:
计算多个输入样本中每个所述输入样本在神经网络的第一目标层的最大输出值;
从多个所述最大输出值中选取一个所述最大输出值作为定点参考值;
根据所述定点参考值确定参考整数部分位宽,作为所述第一目标层在输出值定点化时使用的整数部分位宽。
32.根据权利要求31所述的数据定点化方法,其特征在于,所述根据所述定点参考值确定参考整数部分位宽,作为所述第一目标层在输出值定点化时使用的整数部分位宽,包括:
根据所述定点参考值确定所述参考整数部分位宽;
基于预设的输出值总位宽和所述参考整数部分位宽进行准确率测试,在准确率不小于预设阈值时,将所述参考整数部分位宽作为所述第一目标层在输出值定点化时使用的整数部分位宽。
33.一种数据定点化装置,其特征在于,包括:
前向传播计算模块,用于计算多个输入样本中每个所述输入样本在神经网络的第一目标层的最大输出值;
定点参考选取模块,用于从所述前向传播计算模块得到的多个所述最大输出值中选取至少两个所述最大输出值作为定点参考值;
参考位宽确定模块,用于根据所述定点参考选取模块选取的每个所述定点参考值确定参考整数部分位宽;
准确率测试模块,用于基于预设的输出值总位宽和所述参考位宽确定模块确定的每个所述参考整数部分位宽进行准确率测试,将使得准确率最高的参考整数部分确定为所述第一目标层在输出值定点化时使用的整数部分位宽。
34.根据权利要求33所述的数据定点化装置,其特征在于,所述定点参考选取模块从多个所述最大输出值中选取至少两个所述最大输出值作为定点参考值,包括:
所述定点参考选取模块对多个所述最大输出值进行排序,按照预设的选取参数从所述多个最大输出值中选取至少两个所述最大输出值作为所述定点参考值。
35.根据权利要求33或34所述的数据定点化装置,其特征在于,所述参考位宽确定模块根据每个所述定点参考值确定参考整数部分位宽,包括:
所述参考位宽确定模块根据所述定点参考值的大小确定所述参考整数部分位宽;
所述参考位宽确定模块还用于:
确定预设的第一符号位宽和所述输出值总位宽;
根据所述第一符号位宽、所述输出值总位宽和所述参考整数部分位宽,确定参考小数部分位宽。
36.根据权利要求33或34所述的数据定点化装置,其特征在于,所述数据定点化装置还包括权重位宽确定模块,用于:
确定为权重系数预设的权重定点总位宽和预设的第二符号位宽;
根据所述第一目标层中最大权重系数的大小确定权重整数部分位宽;
根据所述权重定点总位宽、所述第二符号位宽和所述权重整数部分位宽,确定权重小数部分位宽,
其中,将所述第二符号位宽、所述权重整数部分位宽和所述权重小数部分位宽确定为所述第一目标层在权重系数定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
37.根据权利要求36所述的数据定点化装置,其特征在于,所述最大权重系数为对所述神经网络的至少两层进行合并预处理后形成的所述第一目标层的权重系数的最大值。
38.根据权利要求33所述的数据定点化装置,其特征在于,所述数据定点化装置还包括预处理模块,用于:
对所述神经网络的至少两层进行合并预处理,得到合并后形成的所述第一目标层。
39.根据权利要求38所述的数据定点化装置,其特征在于,所述最大输出值为所述多个输入样本中每个所述输入样本在合并后形成的所述第一目标层的所述最大输出值。
40.根据权利要求38所述的数据定点化装置,其特征在于,所述预处理模块对所述神经网络的至少两层进行合并预处理,得到合并后形成的所述第一目标层,包括:
所述预处理模块对所述神经网络的卷积层和归一化层进行合并预处理,得到所述第一目标层;或,
所述预处理模块对所述神经网络的卷积层和缩放层进行合并预处理,得到所述第一目标层;或,
所述预处理模块对所述神经网络的卷积层、归一化层和缩放层进行合并预处理,得到所述第一目标层。
41.根据权利要求33所述的数据定点化装置,其特征在于,所述第一目标层包括卷积层、转置卷积层、归一化层、缩放层、池化层、全连接层、拼接层、元素智能加法层和激活层中的一层或至少两层合并后的层。
42.根据权利要求33所述的数据定点化装置,其特征在于,所述数据定点化装置还包括对齐模块,用于:
确定所述神经网络的第二目标层在输出值定点化时使用的整数部分位宽,使所述第二目标层在输出值定点化时使用的整数部分位宽和所述第一目标层在输出值定点化时使用的整数部分位宽相等。
43.根据权利要求42所述的数据定点化装置,其特征在于,所述对齐模块确定所述神经网络的第二目标层在输出值定点化时使用的整数部分位宽,包括:
所述对齐模块将所述第一目标层和所述第二目标层输出值定点化应使用的整数部分位宽中的最大值,确定为所述第一目标层和所述第二目标层输出值定点化最终使用的整数部分位宽。
44.根据权利要求42或43所述的数据定点化装置,其特征在于,所述第一目标层的输出值与所述第二目标层的输出值在拼接层和/或元素智能加法层进行后续处理。
45.一种数据定点化装置,其特征在于,包括:
前向传播计算模块,用于计算输入样本在神经网络的第一目标层的参考输出值;
确定模块,用于确定为输出值预设的输出值总位宽和预设的第一符号位宽;
输出值位宽确定模块,用于根据所述前向传播计算模块得到的所述参考输出值的大小确定输出值整数部分位宽;根据所述确定模块确定的所述输出值总位宽、所述第一符号位宽和所述输出值整数部分位宽,确定输出值小数部分位宽,其中,所述第一符号位宽、所述输出值整数部分位宽和所述输出值小数部分位宽作为所述第一目标层在输出值定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
46.根据权利要求45所述的数据定点化装置,其特征在于,所述参考输出值为所述输入样本在所述第一目标层的最大输出值。
47.根据权利要求45或46所述的数据定点化装置,其特征在于,所述数据定点化装置还包括权重位宽确定模块,用于:
确定为权重系数预设的权重定点总位宽和预设的第二符号位宽;
根据所述第一目标层中最大权重系数的大小确定权重整数部分位宽;
根据所述权重定点总位宽、所述第二符号位宽和所述权重整数部分位宽,确定权重小数部分位宽,
其中,将所述第二符号位宽、所述权重整数部分位宽和所述权重小数部分位宽确定为所述第一目标层在权重系数定点化时使用的符号位宽、整数部分位宽和小数部分位宽。
48.根据权利要求47所述的数据定点化装置,其特征在于,所述最大权重系数为对所述神经网络的至少两层进行合并预处理后形成的所述第一目标层的权重系数的最大值。
49.根据权利要求45所述的数据定点化装置,其特征在于,所述数据定点化装置还包括预处理模块,用于:
对所述神经网络的至少两层进行合并预处理,得到合并后形成的所述第一目标层。
50.根据权利要求49所述的数据定点化装置,其特征在于,所述参考输出值为所述多个输入样本中每个所述输入样本在合并后形成的所述第一目标层的所述参考输出值。
51.根据权利要求49所述的数据定点化装置,其特征在于,所述预处理模块对对所述神经网络的至少两层进行合并预处理,得到合并后形成的所述第一目标层,包括:
所述预处理模块对对所述神经网络的卷积层和归一化层进行合并预处理,得到所述第一目标层;或,
所述预处理模块对对所述神经网络的卷积层和缩放层进行合并预处理,得到所述第一目标层;或,
所述预处理模块对对所述神经网络的卷积层、归一化层和缩放层进行合并预处理,得到所述第一目标层。
52.根据权利要求45所述的数据定点化装置,其特征在于,所述第一目标层包括卷积层、转置卷积层、归一化层、缩放层、池化层、全连接层、拼接层、元素智能加法层和激活层中的一层或至少两层合并后的层。
53.根据权利要求45所述的数据定点化装置,其特征在于,所述数据定点化装置还包括对齐模块,用于:
确定所述神经网络的第二目标层在输出值定点化时使用的整数部分位宽,使所述第二目标层在输出值定点化时使用的整数部分位宽和所述第一目标层在输出值定点化时使用的整数部分位宽相等。
54.根据权利要求53所述的数据定点化装置,其特征在于,所述第一目标层的输出值与所述第二目标层的输出值在拼接层和/或元素智能加法层进行后续处理。
55.一种数据处理装置,其特征在于,包括:
预处理模块,用于对神经网络的至少两层进行合并预处理;
运算模块,用于基于所述预处理模块合并预处理后的神经网络进行神经网络运算。
56.根据权利要求55所述的数据处理装置,其特征在于,所述预处理模块对神经网络的至少两层进行合并预处理,包括:
所述预处理模块对所述神经网络的卷积层和归一化层进行合并预处理;或,
所述预处理模块对所述神经网络的卷积层和缩放层进行合并预处理;或,
所述预处理模块对所述神经网络的卷积层、归一化层和缩放层进行合并预处理。
57.根据权利要求55或56所述的数据处理装置,其特征在于,所述数据处理装置还包括确定模块,用于:
确定所述至少两层进行合并预处理后形成的第一目标层的权重系数。
58.根据权利要求55或56所述的数据处理装置,其特征在于,所述运算模块基于合并预处理后的神经网络进行神经网络运算,包括:
所述运算模块对所述至少两层进行合并预处理后形成的第一目标层进行定点化计算。
59.根据权利要求58所述的数据处理装置,其特征在于,所述运算模块对所述至少两层进行合并预处理后形成的第一目标层进行定点化计算,包括:
所述运算模块根据权利要求1至12中任一项所述的数据定点化方法确定所述第一目标层定点化使用的整数部分位宽。
60.一种数据对齐装置,其特征在于,包括:
第一确定模块,用于从神经网络中确定需数据对齐的多个层;
第二确定模块,用于根据所述多个层中每层输出值定点化应使用的整数部分位宽,确定所述多个层输出值定点化最终使用的整数部分位宽,其中,所述多个层中任意两层输出值定点化最终使用的整数部分位宽相等。
61.根据权利要求60所述的数据对齐装置,其特征在于,所述数据对齐装置还包括第三确定模块,用于:
根据权利要求1至12中任一项所述的数据定点化方法确定所述多个层中每层输出值定点化应使用的整数部分位宽。
62.根据权利要求60或61所述的数据对齐装置,其特征在于,所述第二确定模块确定所述多个层输出值定点化最终使用的整数部分位宽,包括:
所述第二确定模块将所述多个层中定点化应使用的所有整数部分位宽中的最大值,确定为所述多个层输出值定点化最终使用的整数部分位宽。
63.一种数据定点化装置,其特征在于,包括:
前向传播计算模块,用于计算多个输入样本中每个所述输入样本在神经网络的第一目标层的最大输出值;
定点参考选取模块,用于从所述前向传播计算模块得到的多个所述最大输出值中选取一个所述最大输出值作为定点参考值;
位宽确定模块,用于根据所述定点参考选取模块选取的所述定点参考值确定参考整数部分位宽,作为所述第一目标层在输出值定点化时使用的整数部分位宽。
64.根据权利要求63所述的数据定点化装置,其特征在于,所述位宽确定模块根据所述定点参考值确定参考整数部分位宽,作为所述第一目标层在输出值定点化时使用的整数部分位宽,包括:
所述位宽确定模块根据所述定点参考值确定所述参考整数部分位宽;
所述位宽确定模块基于预设的输出值总位宽和所述参考整数部分位宽进行准确率测试,在准确率不小于预设阈值时,将所述参考整数部分位宽作为所述第一目标层在输出值定点化时使用的整数部分位宽。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/106333 WO2019075604A1 (zh) | 2017-10-16 | 2017-10-16 | 数据定点化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701250A true CN108701250A (zh) | 2018-10-23 |
CN108701250B CN108701250B (zh) | 2022-03-04 |
Family
ID=63844110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780008940.7A Expired - Fee Related CN108701250B (zh) | 2017-10-16 | 2017-10-16 | 数据定点化方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200234133A1 (zh) |
CN (1) | CN108701250B (zh) |
WO (1) | WO2019075604A1 (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108596328A (zh) * | 2018-04-26 | 2018-09-28 | 北京市商汤科技开发有限公司 | 一种定点化方法及装置、计算机设备 |
CN109754084A (zh) * | 2018-12-29 | 2019-05-14 | 北京中科寒武纪科技有限公司 | 网络结构的处理方法、装置及相关产品 |
CN109800865A (zh) * | 2019-01-24 | 2019-05-24 | 北京市商汤科技开发有限公司 | 神经网络生成及图像处理方法和装置、平台、电子设备 |
CN110070867A (zh) * | 2019-04-26 | 2019-07-30 | 珠海普林芯驰科技有限公司 | 语音指令识别方法、计算机装置及计算机可读存储介质 |
CN110298438A (zh) * | 2019-07-05 | 2019-10-01 | 北京中星微电子有限公司 | 神经网络模型的调整方法和调整装置 |
CN110512281A (zh) * | 2019-09-26 | 2019-11-29 | 衡水学院 | 快速制备碳化硅的方法 |
CN110766146A (zh) * | 2018-12-29 | 2020-02-07 | 中科寒武纪科技股份有限公司 | 一种人工智能处理器的学习任务编译方法及相关产品 |
CN110889497A (zh) * | 2018-12-29 | 2020-03-17 | 中科寒武纪科技股份有限公司 | 一种人工智能处理器的学习任务编译方法及相关产品 |
WO2020107265A1 (zh) * | 2018-11-28 | 2020-06-04 | 深圳市大疆创新科技有限公司 | 神经网络处理装置、控制方法以及计算系统 |
CN111382831A (zh) * | 2018-12-28 | 2020-07-07 | Tcl集团股份有限公司 | 加速卷积神经网络模型前向推理的方法及装置 |
CN111476362A (zh) * | 2019-01-23 | 2020-07-31 | 斯特拉德视觉公司 | 确定fl值的方法及装置 |
CN111488963A (zh) * | 2019-01-28 | 2020-08-04 | 中科寒武纪科技股份有限公司 | 神经网络计算装置和方法 |
CN111581590A (zh) * | 2020-05-07 | 2020-08-25 | 中车株洲电力机车研究所有限公司 | 一种基于定点数变量的积分计算方法及装置 |
WO2020223856A1 (zh) * | 2019-05-05 | 2020-11-12 | 深圳市大疆创新科技有限公司 | 一种基于卷积神经网络架构的数据处理方法及装置 |
CN112308216A (zh) * | 2019-07-26 | 2021-02-02 | 杭州海康威视数字技术股份有限公司 | 数据块的处理方法、装置及存储介质 |
CN112308199A (zh) * | 2019-07-26 | 2021-02-02 | 杭州海康威视数字技术股份有限公司 | 数据块的处理方法、装置及存储介质 |
CN113112008A (zh) * | 2020-01-13 | 2021-07-13 | 中科寒武纪科技股份有限公司 | 用于神经网络数据量化的方法、装置和计算机可读存储介质 |
CN113159177A (zh) * | 2021-04-22 | 2021-07-23 | 中国科学院自动化研究所 | 基于批归一化参数定点化的目标检测方法、系统、设备 |
CN113593538A (zh) * | 2021-09-02 | 2021-11-02 | 北京声智科技有限公司 | 语音特征的分类方法、相关设备及可读存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112446460A (zh) * | 2019-08-28 | 2021-03-05 | 上海寒武纪信息科技有限公司 | 用于处理数据的方法、装置以及相关产品 |
CN111831359B (zh) * | 2020-07-10 | 2023-06-23 | 北京灵汐科技有限公司 | 权重精度配置方法、装置、设备及存储介质 |
CN114692842A (zh) * | 2020-12-25 | 2022-07-01 | 京东方科技集团股份有限公司 | 图像处理单元、图像处理方法及存储介质 |
CN116108473B (zh) * | 2023-04-10 | 2023-06-27 | 极术(杭州)科技有限公司 | 多方安全计算中的数据处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622207A (zh) * | 2011-01-30 | 2012-08-01 | 中兴通讯股份有限公司 | 定点化处理方法及装置 |
CN104915654A (zh) * | 2015-06-11 | 2015-09-16 | 浙江工业大学 | 一种基于受限玻尔兹曼机的路径点数据行为识别方法 |
US20160328647A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10373050B2 (en) * | 2015-05-08 | 2019-08-06 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
-
2017
- 2017-10-16 CN CN201780008940.7A patent/CN108701250B/zh not_active Expired - Fee Related
- 2017-10-16 WO PCT/CN2017/106333 patent/WO2019075604A1/zh active Application Filing
-
2020
- 2020-04-07 US US16/842,145 patent/US20200234133A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622207A (zh) * | 2011-01-30 | 2012-08-01 | 中兴通讯股份有限公司 | 定点化处理方法及装置 |
US20160328647A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
CN104915654A (zh) * | 2015-06-11 | 2015-09-16 | 浙江工业大学 | 一种基于受限玻尔兹曼机的路径点数据行为识别方法 |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108596328A (zh) * | 2018-04-26 | 2018-09-28 | 北京市商汤科技开发有限公司 | 一种定点化方法及装置、计算机设备 |
WO2020107265A1 (zh) * | 2018-11-28 | 2020-06-04 | 深圳市大疆创新科技有限公司 | 神经网络处理装置、控制方法以及计算系统 |
CN111382831B (zh) * | 2018-12-28 | 2024-04-16 | Tcl科技集团股份有限公司 | 加速卷积神经网络模型前向推理的方法及装置 |
CN111382831A (zh) * | 2018-12-28 | 2020-07-07 | Tcl集团股份有限公司 | 加速卷积神经网络模型前向推理的方法及装置 |
US11544567B2 (en) | 2018-12-29 | 2023-01-03 | Cambricon Technologies Corporation Limited | Network structure processing method and device and related products |
CN110766146A (zh) * | 2018-12-29 | 2020-02-07 | 中科寒武纪科技股份有限公司 | 一种人工智能处理器的学习任务编译方法及相关产品 |
CN110889497A (zh) * | 2018-12-29 | 2020-03-17 | 中科寒武纪科技股份有限公司 | 一种人工智能处理器的学习任务编译方法及相关产品 |
CN109754084A (zh) * | 2018-12-29 | 2019-05-14 | 北京中科寒武纪科技有限公司 | 网络结构的处理方法、装置及相关产品 |
CN110766146B (zh) * | 2018-12-29 | 2021-05-11 | 中科寒武纪科技股份有限公司 | 一种人工智能处理器的学习任务编译方法及相关产品 |
CN111476362B (zh) * | 2019-01-23 | 2024-05-03 | 斯特拉德视觉公司 | 确定fl值的方法及装置 |
CN111476362A (zh) * | 2019-01-23 | 2020-07-31 | 斯特拉德视觉公司 | 确定fl值的方法及装置 |
CN109800865B (zh) * | 2019-01-24 | 2021-03-23 | 北京市商汤科技开发有限公司 | 神经网络生成及图像处理方法和装置、平台、电子设备 |
CN109800865A (zh) * | 2019-01-24 | 2019-05-24 | 北京市商汤科技开发有限公司 | 神经网络生成及图像处理方法和装置、平台、电子设备 |
CN111488963A (zh) * | 2019-01-28 | 2020-08-04 | 中科寒武纪科技股份有限公司 | 神经网络计算装置和方法 |
CN111488963B (zh) * | 2019-01-28 | 2023-11-24 | 中科寒武纪科技股份有限公司 | 神经网络计算装置和方法 |
CN110070867A (zh) * | 2019-04-26 | 2019-07-30 | 珠海普林芯驰科技有限公司 | 语音指令识别方法、计算机装置及计算机可读存储介质 |
WO2020223856A1 (zh) * | 2019-05-05 | 2020-11-12 | 深圳市大疆创新科技有限公司 | 一种基于卷积神经网络架构的数据处理方法及装置 |
CN110298438A (zh) * | 2019-07-05 | 2019-10-01 | 北京中星微电子有限公司 | 神经网络模型的调整方法和调整装置 |
CN110298438B (zh) * | 2019-07-05 | 2024-04-26 | 北京中星微电子有限公司 | 神经网络模型的调整方法和调整装置 |
CN112308199A (zh) * | 2019-07-26 | 2021-02-02 | 杭州海康威视数字技术股份有限公司 | 数据块的处理方法、装置及存储介质 |
CN112308216B (zh) * | 2019-07-26 | 2024-06-18 | 杭州海康威视数字技术股份有限公司 | 数据块的处理方法、装置及存储介质 |
CN112308199B (zh) * | 2019-07-26 | 2024-05-10 | 杭州海康威视数字技术股份有限公司 | 数据块的处理方法、装置及存储介质 |
CN112308216A (zh) * | 2019-07-26 | 2021-02-02 | 杭州海康威视数字技术股份有限公司 | 数据块的处理方法、装置及存储介质 |
CN110512281A (zh) * | 2019-09-26 | 2019-11-29 | 衡水学院 | 快速制备碳化硅的方法 |
CN113112008A (zh) * | 2020-01-13 | 2021-07-13 | 中科寒武纪科技股份有限公司 | 用于神经网络数据量化的方法、装置和计算机可读存储介质 |
CN113112008B (zh) * | 2020-01-13 | 2024-05-10 | 中科寒武纪科技股份有限公司 | 用于神经网络数据量化的方法、装置和计算机可读存储介质 |
CN111581590B (zh) * | 2020-05-07 | 2023-08-29 | 中车株洲电力机车研究所有限公司 | 一种基于定点数变量的积分计算方法及装置 |
CN111581590A (zh) * | 2020-05-07 | 2020-08-25 | 中车株洲电力机车研究所有限公司 | 一种基于定点数变量的积分计算方法及装置 |
CN113159177A (zh) * | 2021-04-22 | 2021-07-23 | 中国科学院自动化研究所 | 基于批归一化参数定点化的目标检测方法、系统、设备 |
CN113593538B (zh) * | 2021-09-02 | 2024-05-03 | 北京声智科技有限公司 | 语音特征的分类方法、相关设备及可读存储介质 |
CN113593538A (zh) * | 2021-09-02 | 2021-11-02 | 北京声智科技有限公司 | 语音特征的分类方法、相关设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108701250B (zh) | 2022-03-04 |
WO2019075604A1 (zh) | 2019-04-25 |
US20200234133A1 (en) | 2020-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108701250B (zh) | 数据定点化方法和装置 | |
US20180260710A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
US12020145B2 (en) | End-to-end data format selection for hardware implementation of deep neural networks | |
JP2018124681A (ja) | 演算処理装置、情報処理装置、方法、およびプログラム | |
CN106855952B (zh) | 基于神经网络的计算方法及装置 | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
US20230196202A1 (en) | System and method for automatic building of learning machines using learning machines | |
JP2019139338A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
EP4318313A1 (en) | Data processing method, training method for neural network model, and apparatus | |
CN112749300B (zh) | 用于视频分类的方法、装置、设备、存储介质和程序产品 | |
CN112906865B (zh) | 神经网络架构搜索方法、装置、电子设备及存储介质 | |
CN114677548B (zh) | 基于阻变存储器的神经网络图像分类系统及方法 | |
CN110337636A (zh) | 数据转换方法和装置 | |
KR20210090249A (ko) | 이미지 처리 방법, 장치, 차량 탑재 연산 플랫폼, 전자 디바이스 및 시스템 | |
CN114781650B (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
CN112819157A (zh) | 神经网络训练的方法及装置、智能行驶控制的方法及装置 | |
CN113222813A (zh) | 图像超分辨率重建方法、装置、电子设备及存储介质 | |
CN110874627A (zh) | 数据处理方法、数据处理装置及计算机可读介质 | |
CN110503182A (zh) | 深度神经网络中的网络层运算方法及装置 | |
CN110929854B (zh) | 一种数据处理方法、装置及硬件加速器 | |
CN112561050B (zh) | 一种神经网络模型训练方法及装置 | |
CN116795324A (zh) | 混合精度浮点乘法装置和混合精度浮点数处理方法 | |
CN113761934B (zh) | 一种基于自注意力机制的词向量表示方法及自注意力模型 | |
CN113610856B (zh) | 训练图像分割模型和图像分割的方法和装置 | |
US20210312269A1 (en) | Neural network device for neural network operation, method of operating neural network device, and application processor including neural network device |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220304 |