CN110874627B - 数据处理方法、数据处理装置及计算机可读介质 - Google Patents
数据处理方法、数据处理装置及计算机可读介质 Download PDFInfo
- Publication number
- CN110874627B CN110874627B CN201811034336.4A CN201811034336A CN110874627B CN 110874627 B CN110874627 B CN 110874627B CN 201811034336 A CN201811034336 A CN 201811034336A CN 110874627 B CN110874627 B CN 110874627B
- Authority
- CN
- China
- Prior art keywords
- target
- data
- parameter set
- parameter sets
- parameter
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 121
- 238000003672 processing method Methods 0.000 title abstract description 11
- 238000013139 quantization Methods 0.000 claims abstract description 205
- 238000013528 artificial neural network Methods 0.000 claims abstract description 98
- 238000000034 method Methods 0.000 claims abstract description 55
- 239000013598 vector Substances 0.000 claims description 42
- 230000015654 memory Effects 0.000 claims description 33
- 238000004422 calculation algorithm Methods 0.000 claims description 28
- 238000012549 training Methods 0.000 claims description 16
- 239000000872 buffer Substances 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 4
- 238000003709 image segmentation Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 abstract description 46
- 239000011159 matrix material Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000013527 convolutional neural network Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- PXXLQQDIFVPNMP-UHFFFAOYSA-N 3-(diethylcarbamoyl)benzoic acid Chemical group CCN(CC)C(=O)C1=CC=CC(C(O)=O)=C1 PXXLQQDIFVPNMP-UHFFFAOYSA-N 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000000137 annealing Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000007635 classification algorithm Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Biophysics (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Image Analysis (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种数据处理方法、数据处理装置及计算机可读介质,该方法包括:将待处理的数据输入到目标网络;所述目标网络为包含至少一个卷积层的神经网络,一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,所述目标网络中的第一参数集合和第二参数集合为同一卷积层中计算特征图的不同点所用到的卷积核和偏置的集合,所述第一参数集合和所述第二参数集合包含的参数均为量化后的参数且对应不同的量化系数,所述目标网络用于对输入数据进行目标处理;通过所述目标网络对所述待处理的数据进行所述目标处理,得到输出结果;可以大大提高目标处理的精度,并节省计算时间。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、数据处理装置及计算机可读介质。
背景技术
大数据技术和人工智能技术的进步,推动着数据处理的革命性变化。人们不仅对数据处理提出了高精度的要求,更在精确度的基础上扩展出了实时、低功耗、智能等要求。
从存储的角度,现有的深度神经网络(Deep Neural Network,DNN)以及卷积神经网络(Convolutional Neural Network,CNN)等神经网络都是存储浮点型数据。一个DNN一般需要几十兆至上百兆的存储资源,导致DNN很难移植到手机等终端设备进行使用。从计算的角度,一个DNN需要进行大量的乘、加等运算,在一些对实时性要求比较高的应用场景,采用浮点型数据进行计算,很难满足实时性要求。例如自动驾驶场景中,需要多个网络同时进行计算。从硬件设计的角度,现有的DNN只能够运行在以浮点型数据运算的中央处理器(Central Processing Unit,CPU)上。当消耗更小、运算更快的现场可编程门阵列(Field-Programmable Gate Array,FPGA)实现DNN算法时,考虑到硬件资源等限制条件,浮点数的运算必须转变为更低存储的定点数。目前,将神经网络中的浮点型数据量化为整型数据是提高神经网络的运算速度以及减少占用的存储空间的主要手段,成为一个重要的研究方向。
传统的神经网络的量化方法是通过对每一层的权重整体进行统计之后确定量化系数,每一层对应一个量化方案。但是,这种量化方法的精度较低,不能满足精度较高的应用场景的需求。
发明内容
本申请提供了一种数据处理方法、数据处理装置及计算机可读介质,可提高量化的精度,并减少硬件开销。
第一方面本申请提供了一种数据处理方法,该方法包括:
将待处理的数据输入到目标网络;所述目标网络为包含至少一个卷积层的神经网络,一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,所述目标网络中的第一参数集合和第二参数集合为同一卷积层中计算特征图的不同点所用到的卷积核和偏置的集合,所述第一参数集合和所述第二参数集合包含的参数均为量化后的参数且对应不同的量化系数,所述目标网络用于对输入数据进行目标处理;
通过所述目标网络对所述待处理的数据进行所述目标处理,得到输出结果。
本申请的执行主体为数据处理装置,所述数据处理装置可以是手机、笔记本电脑、台式电脑、平板电脑、可穿戴设备以及服务器等。所述目标网络可以是所述数据处理装置当前存储的神经网络,即预置的神经网络;也可以是所述数据处理装置从其他设备,例如云端服务器,获取的神经网络;还可以是所述数据处理装置量化参考网络得到的神经网络,所述参考网络为训练得到的用于对输入数据进行所述目标处理的神经网络。所述目标处理可以是目标检测、图像分割、目标识别、目标分类、目标跟踪等各种处理。可选的,所述目标网络中的第一参数集合和第二参数集合包含的数据均为整型数据。可以理解,所述目标网络的卷积层包含的各项参数均为整型数据,这样卷积层在进行卷积运算或点积运算时,可以大大降低运算量。另外,同一卷积层中的不同参数集合可以对应不同的量化系数。也就是说,同一个卷积层可以采用多种量化系数对卷积核(权重)和偏置进行量化,可以有效提高量化的精度。
本申请实施例中,通过采用以卷积核和偏置的组合为量化单位的神经网络对待处理数据进行目标操作,可以大大提高目标处理的精度,并节省计算时间。
在一个可选的实现方式中,所述目标网络为量化参考网络得到的神经网络,所述参考网络为训练得到的用于对输入数据进行所述目标处理的神经网络,所述目标网络中的第三参数集合与所述第一参数集合属于不同的卷积层且对应的量化系数相同。
在实际应用中,目标网络可以对应F个量化系数,该目标网络包含的任一个参数集合对应这F个量化系数中的一个。也就是说,目标网络包含的每个参数集合均是利用这F个量化系数中的一个量化系数进行量化得到的。每个量化系数对应一种量化方式。可见,目标网络仅对应F种量化方式。在采用放大器对参数集合进行量化的情况下,数据处理装置采用F个放大器就可以完成量化操作。在采用移位器对参数集合进行量化的情况下,移位器对参数集合进行量化也仅需要F种移位操作。这样可以大大减少量化的工作量,并降低硬件的开销。
在该实现方式中,不同卷积层中的参数集合可以对应相同的量化系数,不仅可以提高目标处理的精度,还可以降低硬件的开销。
在一个可选的实现方式中,量化所述参考网络得到所述目标网络的方法包括:获取所述参考网络的至少一个卷积层包含的N个参数集合,所述N个参数集合中任一个参数集合为计算特征图中的一个参数所用到的卷积核和偏置的集合,N≥2;将所述N个参数集合分成M类,M≥2;确定所述M类对应的M个量化系数;根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络,所述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,所述目标类为所述M类中所述第四参数集合对应的类。
在该实现方式中,将参考网络包含的N个参数集合分为M类,并确定每一类中的参数集合对应的量化系数,进而对该参考网络进行量化;可以提高量化的精度,并减少量化操作的工作量。
在一个可选的实现方式中,所述将待处理的数据输入到目标网络之前,所述方法还包括:
获取所述参考网络的至少一个卷积层包含的N个参数集合,N≥2;
将所述N个参数集合分成M类,M≥2;
确定所述M类对应的M个量化系数,所述M个量化系数与所述M类一一对应;
根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络,所述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,所述目标类为所述M类中所述第四参数集合对应的类。
在实际应用中,数据处理装置在对待处理的数据进行目标处理之前,可以对当前的神经网络(参考网络)进行量化得到目标网络,以便于利用该目标网络对待处理的数据进行量化。在该实现方式中,通过对N个参数集合进行分类,可以将对应的量化系数最接近的参数集合分到同一类。也就是说,将所需的量化方式相同的参数集合分到同一类,同一类中的参数集合采用相同的量化系数进行量化。
在该实现方式中,将参考网络包含的N个参数集合分为M类,并确定每一类中的参数集合对应的量化系数,进而对该参考网络进行量化;可以提高量化的精度,并减少量化操作的工作量。
在一个可选的实现方式中,所述确定所述M类对应的M个量化系数包括:
确定所述M类对应的M个中心点,所述M个中心点与所述M类一一对应;
根据所述M个中心点分别确定与所述M类一一对应的所述M个量化系数。
在该实现方式中,通过确定各类对应的中心点,可以准确地确定各类对应的量化系数,实现简单。
在一个可选的实现方式中,所述根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络包括:
在利用移位器对所述N个参数集合进行量化的情况下,按照目标顺序对所述N个参数集合进行排序,所述目标顺序用于减少量化所述N个参数集合时,所述移位器所需移位的次数;
根据所述M个量化系数,按照所述目标顺序依次对所述N个参数集合进行量化。
在该实现方式中,通过按照目标顺序依次对N个参数集合进行量化,可以减少移位器的移位操作,实现简单。
在一个可选的实现方式中,所述按照目标顺序对所述N个参数集合进行排序之前,所述方法还包括:
确定与所述M个量化系数一一对应的M个移位因子;
确定所述N个参数集合分别对应的移位因子;所述第四参数集合对应的移位因子为所述移位器量化所述第四参数集合所需移位的次数;
根据所述N个参数集合分别对应的移位因子确定量化所述N个参数集合的顺序,得到所述目标顺序。
在该实现方式中,根据N个参数集合分别对应的移位因子确定量化这N个参数集合的顺序,以便于减少移位器的移位次数,实现简单。
在一个可选的实现方式中,所述将所述N个参数集合分成M类包括:
确定所述N个参数集合对应的N组参数,所述N组参数与所述N个参数集合一一对应,所述N组参数中的目标组参数包含目标参数集合对应的最大值、最小值、均值、中位数中的至少一种,所述目标参数集合包含于所述N各参数集合且与所述目标组参数相对应;
采用聚类算法将所述N组参数分成所述M类;
根据所述所述N组参数的分类结果,确定所述N个参数集合对应的所述M类,所述目标组参数对应的类为所述目标参数集合对应的类。
在该实现方式中,通过各参数集合对应的最大值、最小值、均值、中位数等中的一个或多个参数对各参数集合进行分类,计算简单,可以得到较好的分类效果。
在一个可选的实现方式中,所述采用聚类算法将所述N组参数分成M类包括:
确定与所述N组参数一一对应的N个向量;
采用聚类算法将所述N个向量分成所述M类。
可选的,采用k-平均算法将所述N个向量分成所述M类。在实际应用中,可以采用多种启发式算法对N组向量进行分类,本申请不作限定。
在该实现方式中,利用聚类算法对N组参数对应的N个向量进行分类,分类效率高。
在一个可选的实现方式中,所述第一参数集合和所述第二参数集合包含的参数均为整型数据,所述过所述目标网络对所述待处理的数据进行所述目标处理,得到输出结果包括:
计算所述第一参数集合包含的卷积核与中间数据的卷积或点积,得到第一数据,所述中间数据为所述第一参数集合所属的卷积层输入的数据;
计算所述第一参数集合包含的偏置和所述第一数据之和,得到第二数据;
对所述第二数据进行反量化,得到第三数据,所述第三数据为浮点型数据;
将所述第三数据存入缓冲区,所述第三数据用于计算所述输出结果。
数据处理装置利用卷积层量化后的整型数据对输入的数据进行卷积运算或点积运算,可以降低卷积层的运算量。另外,数据处理装置对卷积层输出的数据进行反量化后,将数据存入缓冲区以便于后续的处理;可以提高目标处理的精度。
在该实现方式中,通过利用量化后的参数集合进行卷积运算或点积运算以及对卷积层输出的数据进行反量化;可以降低卷积层的运算量,并提高目标处理的精度。
第二方面,本申请提供了一种数据处理装置,该数据处理装置包括:
输入单元,用于将待处理的数据输入到目标网络;所述目标网络为包含至少一个卷积层的神经网络,一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,所述目标网络中的第一参数集合和第二参数集合为同一卷积层中计算特征图的不同点所用到的卷积核和偏置的集合,所述第一参数集合和所述第二参数集合包含的参数均为量化后的参数且对应不同的量化系数,所述目标网络用于对输入数据进行目标处理;
计算单元,用于通过所述目标网络对所述待处理的数据进行所述目标处理,得到输出结果。
本申请实施例中,通过采用以卷积核和偏置的组合为量化单位的神经网络对待处理数据进行目标操作,可以大大提高目标处理的精度,并节省计算时间。
在一个可选的实现方式中,所述目标网络为量化参考网络得到的神经网络,所述参考网络为训练得到的用于对输入数据进行所述目标处理的神经网络,所述目标网络中的第三参数集合与所述第一参数集合属于不同的卷积层且对应的量化系数相同。
在该实现方式中,不同卷积层中的参数集合可以对应相同的量化系数,不仅可以提高目标处理的精度,还可以降低硬件的开销。
在一个可选的实现方式中,量化所述参考网络得到所述目标网络的方法包括:获取所述参考网络的至少一个卷积层包含的N个参数集合,所述N个参数集合中任一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,N≥2;将所述N个参数集合分成M类,M≥2;确定所述M类对应的M个量化系数;根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络,所述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,所述目标类为所述M类中所述第四参数集合对应的类。
在该实现方式中,将参考网络包含的N个参数集合分为M类,并确定每一类中的参数集合对应的量化系数,进而对该参考网络进行量化;可以提高量化的精度,并减少量化操作的工作量。
在一个可选的实现方式中,所述装置还包括:
获取单元,用于获取所述参考网络的至少一个卷积层包含的N个参数集合,N≥2;
聚类单元,用于将所述N个参数集合分成M类,M≥2;
确定单元,用于确定所述M类对应的M个量化系数,所述M个量化系数与所述M类一一对应;
量化单元,用于根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络,所述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,所述目标类为所述M类中所述第四参数集合对应的类。
在该实现方式中,将参考网络包含的N个参数集合分为M类,并确定每一类中的参数集合对应的量化系数,进而对该参考网络进行量化;可以提高量化的精度,并减少量化操作的工作量
在一个可选的实现方式中,所述确定单元,具体用于确定所述M类对应的M个中心点,所述M个中心点与所述M类一一对应;根据所述M个中心点分别确定与所述M类一一对应的所述M个量化系数。
在该实现方式中,通过确定各类对应的中心点,可以准确地确定各类对应的量化系数,实现简单。
在一个可选的实现方式中,所述装置还包括:
排序单元,用于在利用移位器对所述N个参数集合进行量化的情况下,按照目标顺序对所述N个参数集合进行排序,所述目标顺序用于减少量化所述N个参数集合时,所述移位器所需移位的次数;
所述量化单元,具体用于根据所述M个量化系数,按照所述目标顺序依次对所述N个参数集合进行量化。
在该实现方式中,通过按照目标顺序依次对N个参数集合进行量化,可以减少移位器的移位操作,实现简单。
在一个可选的实现方式中,所述确定单元,具体用于确定与所述M个量化系数一一对应的M个移位因子;确定所述N个参数集合分别对应的移位因子;所述第四参数集合对应的移位因子为所述移位器量化所述第四参数集合所需移位的次数;根据所述N个参数集合分别对应的移位因子确定量化所述N个参数集合的顺序,得到所述目标顺序。
在该实现方式中,根据N个参数集合分别对应的移位因子确定量化这N个参数集合的顺序,以便于减少移位器的移位次数,实现简单。
在一个可选的实现方式中,所述确定单元,具体用于确定所述N个参数集合对应的N组参数,所述N组参数与所述N个参数集合一一对应,所述N组参数中的目标组参数包含目标参数集合对应的最大值、最小值、均值、中位数中的至少一种,所述目标参数集合包含于所述N各参数集合且与所述目标组参数相对应;
所述聚类单元,具体用于采用聚类算法将所述N组参数分成所述M类;根据所述所述N组参数的分类结果,确定所述N个参数集合对应的所述M类,所述目标组参数对应的类为所述目标参数集合对应的类。
在该实现方式中,通过各参数集合对应的最大值、最小值、均值、中位数等中的一个或多个参数对各参数集合进行分类,计算简单,可以得到较好的分类效果。
在一个可选的实现方式中,所述确定单元,具体用于确定与所述N组参数一一对应的N个向量;
所述聚类单元,具体用于采用聚类算法将所述N个向量分成所述M类。
在该实现方式中,利用聚类算法对N组参数对应的N个向量进行分类,分类效率高。
在一个可选的实现方式中,所述装置还包括:
计算单元,用于计算所述第一参数集合包含的卷积核与中间数据的卷积或点积,得到第一数据,所述中间数据为所述第一参数集合所属的卷积层输入的数据;计算所述第一参数集合包含的偏置和所述第一数据之和,得到第二数据;
反量化单元,用于对所述第二数据进行反量化,得到第三数据,所述第三数据为浮点型数据;
存储单元,用于将所述第三数据存入缓冲区,所述第三数据用于计算所述输出结果。
在该实现方式中,通过利用量化后的参数集合进行卷积运算或点积运算以及对卷积层输出的数据进行反量化;可以降低卷积层的运算量,并提高目标处理的精度。
第三方面,本发明实施例提供了另一种数据处理装置,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面以及上述第一方面任意实现方式的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面以及上述第一方面任意实现方式的方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1为本申请提供的一种数据处理方法的流程图;
图2为本申请实施例提供的一种放大器实现量化操作的示意图;
图3为本申请实施例提供的一种参数集合的量化顺序的示意图;
图4为本申请实施例提供的一种量化前的神经网络与量化后的神经网络的对比图;
图5为本申请实施例提供的一种训练神经网络的方法流程图;
图6为本申请实施例提供的一种基于量化后的神经网络的处理方法流程图;
图7为本申请实施例提供的一种图片识别方法;
图8为本申请实施例提供的一种神经网络中的卷积层的计算方法;
图9为本申请实施例提供的一种数据处理装置的结构示意图;
图10为本申请实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
本申请提出了一种以卷积核和偏置的组合为单位进行量化的量化方案,同时考虑硬件开销,在满足硬件限制的条件下寻求以卷积核和偏置的组合为单位的量化方案。
在实际应用中,神经网络的输入数据往往需要经过卷积运算获得结果。在卷积运算中一般需要采用32位的浮点数(float32)进行运算。但是在实际应用中,使用浮点数进行计算既慢又浪费存储空间。故而,在实际硬件实现中,一般将32位浮点数运算转化成8位的整型数据(Int8)进行运算,并且尽量保证结果与浮点运算的结果误差较小或满足应用的需要。将32位浮点数转化成8位的整形数据的操作为一种量化操作。量化操作的实现,需要考虑硬件的开销问题。下面介绍一下数据处理装置执行量化操作时的硬件开销问题。
要理解硬件开销的问题,我们以运行卷积神经网络(Convolutional NeuralNetwork,CNN)网络为例。数据处理装置可以将权值存储在ReRAM单元,输入外部电压转换为电流的过程就是乘法操作,通过电流的叠加实现加法操作,从而实现快速的矩阵运算。由于ReRAM采用的是模拟电路,电压电流包括信号采样都有一定的范围的,因此保持原网络的高精度计算是不可能的,需要将原网络的参数量化为低比特数据(如int8类型)再进行计算。在模拟电路中,量化的工作是可以通过设置放大器来实现的。在数字电路中,量化的工作是移位器通过移位操作实现的。一种量化方案对应一个放大器的设置。从硬件的角度来看,我们希望能尽可能地减少所需的放大器的数量,或者,尽可以减少移位器的移位次数。也就使得我们的量化方案需要满足以下条件:(1)从量化的角度来看,我们需要找到一个较优的量化方案组合,使得量化之后的损失较少。(2)从硬件实现的角度来看,我们希望量化方案的变化尽可能地少,这样可以减少硬件上移位设置的操作,或者放大器的数量。
传统的神经网络的量化方法,都是通过对每一卷积层的权重整体进行统计之后确定量化系数,每一卷积层对应一个量化方案。但是在这种量化方式中,每个卷积层对应同一个量化系数,未考虑同一卷积层包含的多个参数集合(卷积核和偏置的组合)之间的差异,导致量化的精度损失较大。也就是说,同一卷积层中的不同参数集合可能需要采用不同的量化系数进行量化。这样才能保证这一层的量化精度。从另一方面来看,如果参数集合个数过多导致量化方案过多的话,在硬件实现上又是不可行的,因为每一种量化方案的实现都依赖于一种具体的硬件设置。因此,我们需要解决如何平衡精度损失与硬件实现的问题。
本申请以硬件开销少和提高量化精度为出发点,提出了一种高效的量化方法。而具体到量化的步骤,为了保证神经网络的精度不受影响,需要针对数据里不同的特性设置不同的量化方案,再通过硬件的设置,实现量化。首先可以将参数集合按一定规律进行分组。例如可以采用等分、聚类等方法对各卷积层内的参数集合进行分组(分类),而组的种类是有限的,从而减少了总的量化方案个数,达到一定程度上减少硬件开销的目的。另外,通过分组可以有针对性的确定各个参数集合所需的量化系数,进而提高量化精度。可以理解,同一卷积层的权重和偏置可以采用多种量化方案,不同卷积层中的权重和偏置可以采用相同的量化方案。
下面具体介绍本申请提供的一种数据处理方法(量化方法)。图1为本申请提供的一种数据处理方法的流程图,如图1所示,该方法可包括:
101、数据处理装置获取参考网络的至少一个卷积层包含的N个参数集合。
N≥2,即N为大于或等于2的整数。上述数据处理装置可以是手机、笔记本电脑、台式电脑以及服务器等。上述N个参数集合可以是上述参考网络包括的全部的参数集合。在实际应用中,数据处理装置读取各卷积层中的所有参数集合,得到N个参数集合。上述参考网络为训练得到的用于对输入数据进行目标处理的神经网络。举例来说,参考网络为人脸识别网络,目标处理为人脸识别。
102、数据处理装置将上述N个参数集合分成M类。
M≥2,即M为大于或等于2的整数。
在一个可选的实现方式中,上述将上述N个参数集合分成M类包括:
确定上述N个参数集合对应的N组参数,上述N组参数与上述N个参数集合一一对应,上述N组参数中的目标组参数包含目标参数集合对应的最大值、最小值、均值、中位数中的至少一种,上述目标参数集合包含于上述N各参数集合且与上述目标组参数相对应;
采用聚类算法将上述N组参数分成上述M类;
根据上述N组参数的分类结果,确定上述N个参数集合对应的上述M类,上述目标组参数对应的类为上述目标参数集合对应的类。
上述N组参数包含的参数类型和参数数量均相同。举例来说,每一组参数均包含与该组参数相对应的参数集合对应的最大值、最小值、均值、中位数。本申请实施例不对每组参数包含的参数类型和参数数量作限定。也就是说,可以采用除参数集合对应的最大值、最小值、均值、中位数之外的参数构建参数集合对应的向量。可以理解,可以采用多种方式确定各参数集合对应的向量。
上述采用聚类算法将上述N组参数分成M类可以是确定与上述N组参数一一对应的N个向量;采用聚类算法将上述N个向量分成上述M类。举例来说,第一组参数为{12.036;17.273;15.691;14.258},则该第一组参数对应的向量为[12.036;17.273;15.691;14.258]。在实际应用中,数据处理装置可以采用k-平均算法等分类算法对N个向量进行聚类,进而将这N个向量分成M类。k-平均算法的目的是:把N个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。可选的,数据处理装置采用退火算法、最大期望算法等算法对N个向量进行聚类。每个分类的聚类中心可以是这一类的中心点。利用聚类方法(如K-means),根据一定的距离(如欧式距离)对所有的向量完成聚类。
103、数据处理装置确定上述M类对应的M个量化系数。
上述M个量化系数与上述M类一一对应。
在一个可选的实现方式中,上述确定上述M类对应的M个量化系数包括:
确定上述M类对应的M个中心点,上述M个中心点与上述M类一一对应;
根据上述M个中心点分别确定与上述M类一一对应的上述M个量化系数。
可选的,一个类对应的中心点为属于该类的各参数集合对应的聚类中心。
可以理解,每个参数集合对应一个向量,这个向量可以是由多种属性如平均值、最大值、最小值等构成的。M个中心点中任一个中心点均对应一个向量。一个类对应的中心点为这一类对应的所有向量对应的几何中心点,即这一类包含的各个参数集合对应的各向量对应的几何中心点。也就是说,计算每个类别内的各个向量的几何平均向量,用该几何平均向量作为该类别的几何中心点(中心点)。举例来说,某一类对应两个向量,即{a,b,c}和{d,e,f},这一类对应的几何中心点为{(a+d)/2,(b+e)/2,(c+f)/2}。在实际应用中,可以用每一类对应的中心点的平均值项(根据需要可以用中位数等),作为该类的量化倍数。
104、根据上述M个量化系数分别对上述N个参数集合进行量化,得到上述目标网络,上述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,上述目标类为上述M类中上述第四参数集合对应的类。
一个参数集合对应的量化系数为该参数集合所属的类对应的量化系数。
量化操作的硬件实现可以是移位器的移位操作,也可以是放大器的放大操作。在实际应用中,可以采用同一个移位器对多个参数集合进行量化。数据处理装置使用移位器量化属于不同类的参数集合时,移位器所需的移位次数不同。数据处理装置使用移位器量化各参数集合的顺序不同,移位器完成量化操作所需的移位次数不同。下面介绍一种可以减少移位器的移位次数的量化方法,具体如下:上述根据上述M个量化系数分别对上述N个参数集合进行量化,得到上述目标网络包括:
在利用移位器对上述N个参数集合进行量化的情况下,按照目标顺序对上述N个参数集合进行排序,上述目标顺序用于减少量化上述N个参数集合时,上述移位器所需移位的次数;
根据上述M个量化系数,按照上述目标顺序依次对上述N个参数集合进行量化。
可选的,数据处理装置依次对上述M类包含的各参数集合进行量化。举例来说,数据处理装置从第一类到第M类依次对各类包含的参数集合进行量化。采用这种方式,仅需M个放大器,每一个放大器对一个类包含的参数集合进行量化。可选的,采用一个移位器依次对每一类包含的各参数集合进行量化,在对一个类包含的各参数集合完成量化后,将移位器调整到适合量化下一类包含的该参数集合的状态。图2为本申请实施例提供的一种放大器实现量化操作的示意图,如图2所示,每个放大器对一个分组(分类)包含的各参数集合进行量化,每个放大器连接一个采样器,每个采样器用于对放大器输入的信号进行采样,得到量化后的数据。通过放大器和采样器实现量化操作是本领域常用的技术手段,这里不再详述。每个权重分组对应一个分类。在实际应用中,可以采用一个放大器和一个采样器对属于同一类的参数集合进行量化。
可选的,数据处理装置依次量化参数网络包含的各卷积层的参数集合。在利用移位器依次对各卷积层包含的参数集合进行量化之前,需要确定量化各参数集合的顺序。本申请实施例提供了一种确定各卷积层包含的参数集合的量化顺序的方法,具体如下:上述按照目标顺序对上述N个参数集合进行排序之前,上述方法还包括:
确定与上述M个量化系数一一对应的M个移位因子;
确定上述N个参数集合分别对应的移位因子;上述第四参数集合对应的移位因子为上述移位器量化上述第四参数集合所需移位的次数;
根据上述N个参数集合分别对应的移位因子确定量化上述N个参数集合的顺序,得到上述目标顺序。
一个移位因子对应一个移位器的移位次数。一个参数集合对应的移位因子为该参数集合对应的量化系数对应的移位因子。根据量化系数确定移位因子是本领域的常用技术手段,这里不再详述。可以理解,数据处理装置可以根据量化系数确定移位器的移位次数。一个参数集合对应的移位因子为移位器对该参数集合进行量化所需的移位次数。在实际应用中,数据处理装置以最小化移位器总的移位次数为目标,根据各参数集合对应的移位因子,确定量化这N个参数集合的顺序。图3为本申请实施例提供的一种参数集合的量化顺序的示意图,如图3所示,N个参数集合分成ABCD四类,移位次数(移位因子)的大小关系是:A<B<C<D,假设移位器对这4类参数集合进行量化分别需要向右移动i,j,k,l次,则第一层(Layer 1)中各参数集合的量化顺序依次为ABCD,第二层中各参数的量化顺序为DCBA,即分别向左移动0,k,j,i次。
在该实现方式中,将参考网络包含的N个参数集合分为M类,并确定每一类中的参数集合对应的量化系数,进而对该参考网络进行量化;可以提高量化的精度,并减少硬件开销。
前述实施例介绍了一种神经网络的数据处理方法,为了说明神经网络量化前与量化后的区别,下面以实现图片识别功能的神经网络为例,介绍神经网络量化前与量化后的区别。图4为本申请实施例提供的一种量化前的神经网络与量化后的神经网络的对比图,如图4所示,神经网络包含输入单元、计算处理单元以及输出单元,量化前的神经网络和量化后的神经网络的输入单元均是通过摄像头获得图片,并将图像数据输入到神经网络;量化前的神经网络和量化后的神经网络的输出单元均是根据激活函数得到图片属于某个类别的概率值,确定图片的类别;量化前的神经网络和量化后的神经网络的区别在于,量化前的神经网络的计算处理单元进行计算时,各卷积层的参数(权重和偏置)为浮点型数据(float32),量化后的神经网络的计算处理单元进行计算时,各卷积层的参数(权重和偏置)为整型数据(Int8)。计算处理单元为下文提到的计算单元。量化后的神经网络中的各权重和偏置被量化为整型数据,一方面可以减少占用的存储空间,另一方面可以减少计算的运算量。
前述实施例是对训练好的神经网络进行量化。也就是说,对一个神经网络进行量化之前,之前对该神经网络完成训练。下面介绍一种训练神经网络的方法。图5为本申请实施例提供的一种训练神经网络的方法流程图,如图5所示,该方法可包括:
501、数据处理装置将图像数据输入到神经网络。
所示图像数据可以是待进行目标处理的图像数据。举例来说,图像数据为人脸图像数据,目标处理为人脸识别。
502、神经网络前向传播。
神经网络可以通过输入的特征向量经过层层推导得到最终输出,并通过这些输出结果来解决分类或者回归问题。实际上,神经网络是采用前向传播算法实现层层推导的。前向传播是本领域常用的技术手段,这里不再详述。
503、神经网络得到输出结果。
输出结果可以是图像数据的分类结果。
504、神经网络根据输出结果与图像数据的标注结果的比对结果调整权值和偏置。
数据处理装置可以存储有各图像数据的标注结果。
504、神经网络收敛后,停止训练。
举例来说,神经网络用于对输入的人脸图像进行人脸识别,人脸识别的准确率达到一定值后,停止训练。停止训练后,当前的神经网络为训练得到的网络,即训练好的神经网络。
在该实施例中,通过前向传播算法可快速地调整神经网络的权值和偏置,实现简单。
前面介绍的是神经网络的量化方法,下面介绍量化后的神经网络的应用。图6为本申请实施例提供的一种基于量化后的神经网络的处理方法流程图,如图6所示,该方法可包括:
601、将待处理的数据输入到目标网络;上述目标网络为包含至少一个卷积层的神经网络,一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,上述目标网络中的第一参数集合和第二参数集合为同一卷积层中计算特征图的不同点所用到的卷积核和偏置的集合,上述第一参数集合和上述第二参数集合包含的参数均为量化后的参数且对应不同的量化系数,上述目标网络用于对输入数据进行目标处理。
上述目标网络可以是上述数据处理装置当前存储的神经网络,即预置的神经网络;也可以是上述数据处理装置从其他设备,例如云端服务器,获取的神经网络;还可以是上述数据处理装置量化参考网络得到的神经网络,上述参考网络为训练得到的用于对输入数据进行上述目标处理的神经网络。上述目标处理可以是目标检测、图像分割、目标识别、目标分类、目标跟踪等各种处理。可选的,上述目标网络中的第一参数集合和第二参数集合包含的数据均为整型数据。可以理解,上述目标网络的卷积层包含的各项参数均为整型数据,这样卷积层在进行卷积运算或点积运算时,可以大大降低运算量。另外,同一卷积层中的不同参数集合可以对应不同的量化系数。也就是说,同一个卷积层可以采用多种量化系数对卷积核(权重)和偏置进行量化,可以有效提高量化的精度。
在一个可选的实现方式中,上述目标网络为量化参考网络得到的神经网络,上述参考网络为训练得到的用于对输入数据进行上述目标处理的神经网络,上述目标网络中的第三参数集合与上述第一参数集合属于不同的卷积层且对应的量化系数相同。
在实际应用中,目标网络可以对应F个量化系数,该目标网络包含的任一个参数集合对应这F个量化系数中的一个。也就是说,目标网络包含的每个参数集合均是利用这F个量化系数中的一个量化系数进行量化得到的。每个量化系数对应一种量化方式。可见,目标网络仅对应F种量化方式。在采用放大器对参数集合进行量化的情况下,数据处理装置采用F个放大器就可以完成量化操作。在采用移位器对参数集合进行量化的情况下,移位器对参数集合进行量化也仅需要F种移位操作。这样可以大大减少量化的工作量,并降低硬件的开销。
在该实现方式中,不同卷积层中的参数集合可以对应相同的量化系数,不仅可以提高目标处理的精度,还可以降低硬件的开销。
在一个可选的实现方式中,量化上述参考网络得到上述目标网络的方法包括:获取上述参考网络的至少一个卷积层包含的N个参数集合,上述N个参数集合中任一个参数集合为计算特征图中的一个参数所用到的卷积核和偏置的集合,N≥2;将上述N个参数集合分成M类,M≥2;确定上述M类对应的M个量化系数;根据上述M个量化系数分别对上述N个参数集合进行量化,得到上述目标网络,上述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,上述目标类为上述M类中上述第四参数集合对应的类。前述实施例详述了量化方法,这里不再详述。
在该实现方式中,将参考网络包含的N个参数集合分为M类,并确定每一类中的参数集合对应的量化系数,进而对该参考网络进行量化;可以提高量化的精度,并减少量化操作的工作量。
602、通过上述目标网络对上述待处理的数据进行上述目标处理,得到输出结果。
在一个可选的实现方式中,上述第一参数集合和上述第二参数集合包含的参数均为整型数据,上述通过上述目标网络对上述待处理的数据进行上述目标处理,得到输出结果包括:
计算上述第一参数集合包含的卷积核与中间数据的卷积或点积,得到第一数据,上述中间数据为上述第一参数集合所属的卷积层输入的数据;
计算上述第一参数集合包含的偏置和上述第一数据之和,得到第二数据;
对上述第二数据进行反量化,得到第三数据,上述第三数据为浮点型数据;
将上述第三数据存入缓冲区,上述第三数据用于计算上述输出结果。
数据处理装置利用卷积层量化后的整型数据对输入的数据进行卷积运算或点积运算,可以降低卷积层的运算量。另外,数据处理装置对卷积层输出的数据进行反量化后,将数据存入缓冲区以便于后续的处理;可以提高目标处理的精度。
在该实现方式中,通过利用量化后的参数集合进行卷积运算或点积运算以及对卷积层输出的数据进行反量化;可以降低卷积层的运算量,并提高目标处理的精度。
本申请实施例中,通过采用以卷积核和偏置的组合为量化单位的神经网络对待处理数据进行目标操作,可以大大提高目标处理的精度,并节省计算时间。
下面介绍一个利用量化后的神经网络进行人脸识别的实施例。图7为本申请实施例提供的一种图片识别方法,该方法可包括:
701、数据处理装置将图片输入到目标网络。
上述目标网络为量化后的神经网络,可用于图片识别。上述目标网络可以读取上述图片每个点的像素值。在实际应用,通过训练可以得到用于图片识别的参考网络,通过对该参考网络进行量化得到目标网络。
702、数据处理装置通过上述目标网络计算上述图片属于各类别的概率,并输出概率值。
上述概率值可以指示上述图片属于各类别的概率。目标网络的卷积层在计算时采用量化后的卷积核和偏置对输入的数据进行处理,可以大大降低计算的复杂度。
703、数据处理装置根据上述概率值确定上述图片的类别。
可选的,数据处理装置确定概率值最高的类别为上述图片的类别。
本申请实施例中,通过量化后的神经网络对图片进行分类,可以大大降低计算的复杂度。
前述实施例未详述如何利用量化后的神经网络对卷积层读入的数据进行处理,下面提供一种卷积层的处理过程。由于深度神经网络的逐层推理特点,一般数据从第一层开始计算,直至推理到最后一层。图8为本申请实施例提供的一种神经网络中的卷积层的计算方法,如图8所示,该方法可包括:
801、第i卷积层读入特征图数据Di。
特征图数据Di为第i卷积层待处理的数据,即前一层输出的特征图数据或输入的待处理数据。首先设置i=1,每次循环后i增加1,直至最后一层。
802、读入i层第j个卷积核的序号aij。
803、根据序号aij读入相应移位因子bij。
数据处理装置可以存储中各序号对应的移位因子。
804、根据序号aij读入i层第j个卷积核Dij。
卷积核中的数据为量化后的整型数据。
805、计算卷积核Dij与特征图数据Di的卷积Ei或点积Ei。
806、对Ei加偏置bias,并根据移位因子移位Ei。
神经网络中各层的偏置为量化后的整型数据。
807、将计算结果D(i+1)写入缓冲区。
计算结果为本次卷积计算或点积计算得到的结果。
808、判断是否计算完本层的计算。
若是,则进入下一层,否则,继续利用本层剩余的卷积核进行计算,即执行802(读入读入i层第(j+1)个卷积核的序号)。
809、判断是否计算完所有层。
若是,则停止计算,否则,计算下一层,即执行801(第(i+1)卷积层读入特征图数据)。
810、停止计算。
在本申请实施例中,通过卷积层利用量化后的卷积核和偏置进行卷积运算或点积运算,可以大大降低计算的复杂度,提高计算效率。
图9为本申请实施例提供的一种数据处理装置的结构示意图,如图9所示,该装置包括:
输入单元901,用于将待处理的数据输入到目标网络;上述目标网络为包含至少一个卷积层的神经网络,一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,上述目标网络中的第一参数集合和第二参数集合为同一卷积层中计算特征图的不同点所用到的卷积核和偏置的集合,上述第一参数集合和上述第二参数集合包含的参数均为量化后的参数且对应不同的量化系数,上述目标网络用于对输入数据进行目标处理;
计算单元902,用于通过上述目标网络对上述待处理的数据进行上述目标处理,得到输出结果。
具体实现方式与图6中的方式相同,这里不再详述。
在一个可选的实现方式中,上述目标网络为量化参考网络得到的神经网络,上述参考网络为训练得到的用于对输入数据进行上述目标处理的神经网络,上述目标网络中的第三参数集合与上述第一参数集合属于不同的卷积层且对应的量化系数相同。
在该实现方式中,不同卷积层中的参数集合可以对应相同的量化系数,不仅可以提高目标处理的精度,还可以降低硬件的开销。
在一个可选的实现方式中,量化上述参考网络得到上述目标网络的方法包括:获取上述参考网络的至少一个卷积层包含的N个参数集合,上述N个参数集合中任一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,N≥2;将上述N个参数集合分成M类,M≥2;确定上述M类对应的M个量化系数;根据上述M个量化系数分别对上述N个参数集合进行量化,得到上述目标网络,上述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,上述目标类为上述M类中上述第四参数集合对应的类。
在该实现方式中,将参考网络包含的N个参数集合分为M类,并确定每一类中的参数集合对应的量化系数,进而对该参考网络进行量化;可以提高量化的精度,并减少量化操作的工作量。
在一个可选的实现方式中,上述装置还包括:
获取单元903,具体用于获取上述参考网络的至少一个卷积层包含的N个参数集合,N≥2;
聚类单元904,用于将上述N个参数集合分成M类,M≥2;
确定单元905,用于确定上述M类对应的M个量化系数,上述M个量化系数与上述M类一一对应;
量化单元906,用于根据上述M个量化系数分别对上述N个参数集合进行量化,得到上述目标网络,上述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,上述目标类为上述M类中上述第四参数集合对应的类。
在该实现方式中,将参考网络包含的N个参数集合分为M类,并确定每一类中的参数集合对应的量化系数,进而对该参考网络进行量化;可以提高量化的精度,并减少量化操作的工作量
在一个可选的实现方式中,上述确定单元905,具体用于确定上述M类对应的M个中心点,上述M个中心点与上述M类一一对应;根据上述M个中心点分别确定与上述M类一一对应的上述M个量化系数。
在该实现方式中,通过确定各类对应的中心点,可以准确地确定各类对应的量化系数,实现简单。
在一个可选的实现方式中,上述装置还包括:
排序单元907,用于在利用移位器对上述N个参数集合进行量化的情况下,按照目标顺序对上述N个参数集合进行排序,上述目标顺序用于减少量化上述N个参数集合时,上述移位器所需移位的次数;
上述量化单元906,具体用于根据上述M个量化系数,按照上述目标顺序依次对上述N个参数集合进行量化。
在该实现方式中,通过按照目标顺序依次对N个参数集合进行量化,可以减少移位器的移位操作,实现简单。
在一个可选的实现方式中,上述确定单元905,具体用于确定与上述M个量化系数一一对应的M个移位因子;确定上述N个参数集合分别对应的移位因子;上述第四参数集合对应的移位因子为上述移位器量化上述第四参数集合所需移位的次数;根据上述N个参数集合分别对应的移位因子确定量化上述N个参数集合的顺序,得到上述目标顺序。
在该实现方式中,根据N个参数集合分别对应的移位因子确定量化这N个参数集合的顺序,以便于减少移位器的移位次数,实现简单。
在一个可选的实现方式中,上述确定单元905,具体用于确定上述N个参数集合对应的N组参数,上述N组参数与上述N个参数集合一一对应,上述N组参数中的目标组参数包含目标参数集合对应的最大值、最小值、均值、中位数中的至少一种,上述目标参数集合包含于上述N各参数集合且与上述目标组参数相对应;
上述聚类单元904,具体用于采用聚类算法将上述N组参数分成上述M类;根据上述N组参数的分类结果,确定上述N个参数集合对应的上述M类,上述目标组参数对应的类为上述目标参数集合对应的类。
在该实现方式中,通过各参数集合对应的最大值、最小值、均值、中位数等中的一个或多个参数对各参数集合进行分类,计算简单,可以得到较好的分类效果。
在一个可选的实现方式中,上述确定单元905,具体用于确定与上述N组参数一一对应的N个向量;
上述聚类单元904,具体用于采用聚类算法将上述N个向量分成上述M类。
在该实现方式中,利用聚类算法对N组参数对应的N个向量进行分类,分类效率高。
在一个可选的实现方式中,上述计算单元902,用于计算上述第一参数集合包含的卷积核与中间数据的卷积或点积,得到第一数据,上述中间数据为上述第一参数集合所属的卷积层输入的数据;计算上述第一参数集合包含的偏置和上述第一数据之和,得到第二数据;上述装置还包括:
反量化单元908,用于对上述第二数据进行反量化,得到第三数据,上述第三数据为浮点型数据;
存储单元909,用于将上述第三数据存入缓冲区,上述第三数据用于计算上述输出结果。
在该实现方式中,通过利用量化后的参数集合进行卷积运算或点积运算以及对卷积层输出的数据进行反量化;可以降低卷积层的运算量,并提高目标处理的精度。
图10是本发明实施例提供的一种数据处理装置的的硬件结构图,该数据处理装置包括中央处理器(Central Processing Unit,CPU)、神经网络处理器(Neural NetworkProcessing Unit,NPU)以及外部存储器。神经网络处理器NPU 100NPU作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路100,通过控制器1004控制运算电路1003提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路1003内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路1003是二维脉动阵列。运算电路1003还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1003是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器1002中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器1001中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器1008accumulator中。
统一存储器1006用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器1005Direct Memory Access Controller,DMAC被搬运到权重存储器1002中。输入数据也通过DMAC被搬运到统一存储器1006中。
BIU为Bus Interface Unit即,总线接口单元510,用于AXI总线与DMAC和取指存储器1009Instruction Fetch Buffer的交互。
总线接口单元1010(Bus Interface Unit,简称BIU),用于取指存储器1009从外部存储器获取指令,还用于存储单元访问控制器1005从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器1006或将权重数据搬运到权重存储器1002中或将输入数据数据搬运到输入存储器1001中。
向量计算单元1007多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/FC层网络计算,如Pooling(池化),Batch Normalization(批归一化),LocalResponse Normalization(局部响应归一化)等。
在一些实现种,向量计算单元能1007将经处理的输出的向量存储到统一缓存器1006。例如,向量计算单元1007可以将非线性函数应用到运算电路1003的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元1007生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1003的激活输入,例如用于在神经网络中的后续层中的使用。
控制器1004连接的取指存储器(instruction fetch buffer)1009,用于存储控制器1004使用的指令;
统一存储器1006,输入存储器1001,权重存储器1002以及取指存储器1009均为On-Chip存储器。外部存储器私有于该NPU硬件架构。CPU可实现获取单元901、输入单元902、聚类单元903、确定单元904、排序单元906的功能。NPU可实现计算单元908的功能。上述数据处理装置还放大器或移位器(图10中未示出),用于实现量化单元905和反量化单元907的功能。存储单元909的功能由统一存储器1006实现。
在本发明的实施例中提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现:将待处理的数据输入到目标网络;上述目标网络为包含至少一个卷积层的神经网络,一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,上述目标网络中的第一参数集合和第二参数集合为同一卷积层中计算特征图的不同点所用到的卷积核和偏置的集合,上述第一参数集合和上述第二参数集合包含的参数均为量化后的参数且对应不同的量化系数,上述目标网络用于对输入数据进行目标处理;通过上述目标网络对上述待处理的数据进行上述目标处理,得到输出结果。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (20)
1.一种数据处理方法,其特征在于,包括:
将待处理的数据输入到目标网络;所述目标网络为包含至少一个卷积层的神经网络,一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,所述目标网络中的第一参数集合和第二参数集合为同一卷积层中计算特征图的不同点所用到的卷积核和偏置的集合,所述第一参数集合和所述第二参数集合包含的参数均为量化后的参数且对应不同的量化系数,所述目标网络用于对输入数据进行目标处理;
通过所述目标网络对所述待处理的数据进行所述目标处理,得到输出结果,所述待处理的数据为图像数据,所述目标处理为目标检测、图像分割、目标识别、目标分类、或目标跟踪中的任一项;
所述第一参数集合和所述第二参数集合包含的参数均为整型数据,所述通过所述目标网络对所述待处理的数据进行所述目标处理,得到输出结果包括:
计算所述第一参数集合包含的卷积核与中间数据的卷积或点积,得到第一数据,所述中间数据为所述第一参数集合所属的卷积层输入的数据;
计算所述第一参数集合包含的偏置和所述第一数据之和,得到第二数据;
对所述第二数据进行反量化,得到第三数据,所述第三数据为浮点型数据;
将所述第三数据存入缓冲区,所述第三数据用于计算所述输出结果。
2.根据权利要求1所述的方法,其特征在于,所述目标网络为量化参考网络得到的神经网络,所述参考网络为训练得到的用于对输入数据进行所述目标处理的神经网络,所述目标网络中的第三参数集合与所述第一参数集合属于不同的卷积层且对应的量化系数相同。
3.根据权利要求2所述的方法,其特征在于,量化所述参考网络得到所述目标网络的方法包括:获取所述参考网络的至少一个卷积层包含的N个参数集合,所述N个参数集合中任一个参数集合为计算特征图中的一个参数所用到的卷积核和偏置的集合,N≥2;将所述N个参数集合分成M类,M≥2;确定所述M类对应的M个量化系数;根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络,所述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,所述目标类为所述M类中所述第四参数集合对应的类。
4.根据权利要求1所述的方法,其特征在于,所述将待处理的数据输入到目标网络之前,所述方法还包括:
获取参考网络的至少一个卷积层包含的N个参数集合,N≥2;
将所述N个参数集合分成M类,M≥2;
确定所述M类对应的M个量化系数,所述M个量化系数与所述M类一一对应;
根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络,所述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,所述目标类为所述M类中所述第四参数集合对应的类。
5.根据权利要求3或4所述的方法,其特征在于,所述确定所述M类对应的M个量化系数包括:
确定所述M类对应的M个中心点,所述M个中心点与所述M类一一对应;
根据所述M个中心点分别确定与所述M类一一对应的所述M个量化系数。
6.根据权利要求3或4所述的方法,其特征在于,所述根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络包括:
在利用移位器对所述N个参数集合进行量化的情况下,按照目标顺序对所述N个参数集合进行排序,所述目标顺序用于减少量化所述N个参数集合时,所述移位器所需移位的次数;
根据所述M个量化系数,按照所述目标顺序依次对所述N个参数集合进行量化。
7.根据权利要求6所述的方法,其特征在于,所述按照目标顺序对所述N个参数集合进行排序之前,所述方法还包括:
确定与所述M个量化系数一一对应的M个移位因子;
确定所述N个参数集合分别对应的移位因子;所述第四参数集合对应的移位因子为所述移位器量化所述第四参数集合所需移位的次数;
根据所述N个参数集合分别对应的移位因子确定量化所述N个参数集合的顺序,得到所述目标顺序。
8.根据权利要求4所述的方法,其特征在于,所述将所述N个参数集合分成M类包括:
确定所述N个参数集合对应的N组参数,所述N组参数与所述N个参数集合一一对应,所述N组参数中的目标组参数包含目标参数集合对应的最大值、最小值、均值、中位数中的至少一种,所述目标参数集合包含于所述N个参数集合且与所述目标组参数相对应;
采用聚类算法将所述N组参数分成所述M类;
根据所述N组参数的分类结果,确定所述N个参数集合对应的所述M类,所述目标组参数对应的类为所述目标参数集合对应的类。
9.根据权利要求8所述的方法,其特征在于,所述采用聚类算法将所述N组参数分成M类包括:
确定与所述N组参数一一对应的N个向量;
采用聚类算法将所述N个向量分成所述M类。
10.一种数据处理装置,其特征在于,包括:
输入单元,用于将待处理的数据输入到目标网络;所述目标网络为包含至少一个卷积层的神经网络,一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,所述目标网络中的第一参数集合和第二参数集合为同一卷积层中计算特征图的不同点所用到的卷积核和偏置的集合,所述第一参数集合和所述第二参数集合包含的参数均为量化后的参数且对应不同的量化系数,所述目标网络用于对输入数据进行目标处理;
计算单元,用于通过所述目标网络对所述待处理的数据进行所述目标处理,得到输出结果,所述待处理的数据为图像数据,所述目标处理为目标检测、图像分割、目标识别、目标分类、或目标跟踪中的任一项;
所述计算单元,用于计算所述第一参数集合包含的卷积核与中间数据的卷积或点积,得到第一数据,所述中间数据为所述第一参数集合所属的卷积层输入的数据;计算所述第一参数集合包含的偏置和所述第一数据之和,得到第二数据;所述装置还包括:
反量化单元,用于对所述第二数据进行反量化,得到第三数据,所述第三数据为浮点型数据;
存储单元,用于将所述第三数据存入缓冲区,所述第三数据用于计算所述输出结果。
11.根据权利要求10所述的装置,其特征在于,所述目标网络为量化参考网络得到的神经网络,所述参考网络为训练得到的用于对输入数据进行所述目标处理的神经网络,所述目标网络中的第三参数集合与所述第一参数集合属于不同的卷积层且对应的量化系数相同。
12.根据权利要求11所述的装置,其特征在于,量化所述参考网络得到所述目标网络的方法包括:获取所述参考网络的至少一个卷积层包含的N个参数集合,所述N个参数集合中任一个参数集合为计算特征图中的一个点所用到的卷积核和偏置的集合,N≥2;将所述N个参数集合分成M类,M≥2;确定所述M类对应的M个量化系数;根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络,所述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,所述目标类为所述M类中所述第四参数集合对应的类。
13.根据权利要求10所述的装置,其特征在于,所述装置还包括:
获取单元,用于获取参考网络的至少一个卷积层包含的N个参数集合,N≥2;
聚类单元,用于将所述N个参数集合分成M类,M≥2;
确定单元,用于确定所述M类对应的M个量化系数,所述M个量化系数与所述M类一一对应;
量化单元,用于根据所述M个量化系数分别对所述N个参数集合进行量化,得到所述目标网络,所述N个参数集合中的第四参数集合对应的量化系数为目标类对应的量化系数,所述目标类为所述M类中所述第四参数集合对应的类。
14.根据权利要求13所述的装置,其特征在于,
所述确定单元,具体用于确定所述M类对应的M个中心点,所述M个中心点与所述M类一一对应;根据所述M个中心点分别确定与所述M类一一对应的所述M个量化系数。
15.根据权利要求13所述的装置,其特征在于,所述装置还包括:
排序单元,用于在利用移位器对所述N个参数集合进行量化的情况下,按照目标顺序对所述N个参数集合进行排序,所述目标顺序用于减少量化所述N个参数集合时,所述移位器所需移位的次数;
所述量化单元,具体用于根据所述M个量化系数,按照所述目标顺序依次对所述N个参数集合进行量化。
16.根据权利要求15所述的装置,其特征在于,
所述确定单元,具体用于确定与所述M个量化系数一一对应的M个移位因子;确定所述N个参数集合分别对应的移位因子;所述第四参数集合对应的移位因子为所述移位器量化所述第四参数集合所需移位的次数;根据所述N个参数集合分别对应的移位因子确定量化所述N个参数集合的顺序,得到所述目标顺序。
17.根据权利要求13所述的装置,其特征在于,
所述确定单元,具体用于确定所述N个参数集合对应的N组参数,所述N组参数与所述N个参数集合一一对应,所述N组参数中的目标组参数包含目标参数集合对应的最大值、最小值、均值、中位数中的至少一种,所述目标参数集合包含于所述N个参数集合且与所述目标组参数相对应;
所述聚类单元,具体用于采用聚类算法将所述N组参数分成所述M类;根据所述N组参数的分类结果,确定所述N个参数集合对应的所述M类,所述目标组参数对应的类为所述目标参数集合对应的类。
18.根据权利要求17所述的装置,其特征在于,
所述确定单元,具体用于确定与所述N组参数一一对应的N个向量;
所述聚类单元,具体用于采用聚类算法将所述N个向量分成所述M类。
19.一种数据处理装置,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-9任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811034336.4A CN110874627B (zh) | 2018-09-04 | 2018-09-04 | 数据处理方法、数据处理装置及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811034336.4A CN110874627B (zh) | 2018-09-04 | 2018-09-04 | 数据处理方法、数据处理装置及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110874627A CN110874627A (zh) | 2020-03-10 |
CN110874627B true CN110874627B (zh) | 2024-06-28 |
Family
ID=69716124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811034336.4A Active CN110874627B (zh) | 2018-09-04 | 2018-09-04 | 数据处理方法、数据处理装置及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110874627B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113780513B (zh) * | 2020-06-10 | 2024-05-03 | 杭州海康威视数字技术股份有限公司 | 网络模型量化、推理方法、装置、电子设备及存储介质 |
CN113919479B (zh) * | 2020-06-30 | 2022-11-08 | 华为技术有限公司 | 一种提取数据特征的方法和相关装置 |
CN113554149B (zh) * | 2021-06-18 | 2022-04-12 | 北京百度网讯科技有限公司 | 神经网络处理单元npu、神经网络的处理方法及其装置 |
CN115081588A (zh) * | 2022-05-30 | 2022-09-20 | 华为技术有限公司 | 一种神经网络参数量化方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831444B2 (en) * | 2016-04-04 | 2020-11-10 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
CN106203283A (zh) * | 2016-06-30 | 2016-12-07 | 重庆理工大学 | 基于三维卷积深度神经网络和深度视频的动作识别方法 |
CN108256544B (zh) * | 2016-12-29 | 2019-07-23 | 杭州光启人工智能研究院 | 图片分类方法和装置、机器人 |
CN107644254A (zh) * | 2017-09-09 | 2018-01-30 | 复旦大学 | 一种卷积神经网络权重参数量化训练方法及*** |
-
2018
- 2018-09-04 CN CN201811034336.4A patent/CN110874627B/zh active Active
Non-Patent Citations (2)
Title |
---|
《Quantized Convolutional Neural Networks for Mobile Devices》;Jiaxiang Wu等;《IEEE Xplore》;第1-3节 * |
《Toward a Stable Quantized Convolutional Neural Networks:An Embedded Perspective》;Motaz Al-Hami等;《ResearchGate》;第1-7节 * |
Also Published As
Publication number | Publication date |
---|---|
CN110874627A (zh) | 2020-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478144B (zh) | 一种数据处理装置和方法 | |
CN110874627B (zh) | 数据处理方法、数据处理装置及计算机可读介质 | |
CN108701250B (zh) | 数据定点化方法和装置 | |
US11593658B2 (en) | Processing method and device | |
Li et al. | A high performance FPGA-based accelerator for large-scale convolutional neural networks | |
US11307865B2 (en) | Data processing apparatus and method | |
US10802992B2 (en) | Combining CPU and special accelerator for implementing an artificial neural network | |
US20190164043A1 (en) | Low-power hardware acceleration method and system for convolution neural network computation | |
US20180330235A1 (en) | Apparatus and Method of Using Dual Indexing in Input Neurons and Corresponding Weights of Sparse Neural Network | |
CN112200295B (zh) | 稀疏化卷积神经网络的排序方法、运算方法、装置及设备 | |
WO2023231794A1 (zh) | 一种神经网络参数量化方法和装置 | |
US20200184245A1 (en) | Improper neural network input detection and handling | |
WO2022028323A1 (zh) | 分类模型的训练方法、超参数的搜索方法以及装置 | |
CN113326930A (zh) | 数据处理方法、神经网络的训练方法及相关装置、设备 | |
WO2022088063A1 (zh) | 神经网络模型的量化方法和装置、数据处理的方法和装置 | |
CN110647974A (zh) | 深度神经网络中的网络层运算方法及装置 | |
CN112926570A (zh) | 一种自适应比特网络量化方法、***及图像处理方法 | |
CN114677548A (zh) | 基于阻变存储器的神经网络图像分类***及方法 | |
CN115601692A (zh) | 数据处理方法、神经网络模型的训练方法及装置 | |
CN112085175B (zh) | 基于神经网络计算的数据处理方法和装置 | |
US10733498B1 (en) | Parametric mathematical function approximation in integrated circuits | |
US11423313B1 (en) | Configurable function approximation based on switching mapping table content | |
CN111382839B (zh) | 剪枝神经网络的方法和装置 | |
WO2023109748A1 (zh) | 一种神经网络的调整方法及相应装置 | |
Al Maashri et al. | Hardware acceleration for neuromorphic vision algorithms |
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 |