[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN107688855B - 针对于复杂神经网络的分层量化方法与装置 - Google Patents

针对于复杂神经网络的分层量化方法与装置 Download PDF

Info

Publication number
CN107688855B
CN107688855B CN201610698184.2A CN201610698184A CN107688855B CN 107688855 B CN107688855 B CN 107688855B CN 201610698184 A CN201610698184 A CN 201610698184A CN 107688855 B CN107688855 B CN 107688855B
Authority
CN
China
Prior art keywords
layer
concat
output
quantization
layers
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
Application number
CN201610698184.2A
Other languages
English (en)
Other versions
CN107688855A (zh
Inventor
余金城
姚颂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of CN107688855A publication Critical patent/CN107688855A/zh
Application granted granted Critical
Publication of CN107688855B publication Critical patent/CN107688855B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)

Abstract

本发明涉及人工神经网络(ANN),例如卷积神经网络(CNN),尤其涉及如何通过对复杂神经网络的定点量化来实现压缩和加速人工神经网络。

Description

针对于复杂神经网络的分层量化方法与装置
引用的优先申请
本申请要求在先提交的中国专利申请201610663201.9、“一种优化人工神经网络的方法”和中国专利申请201610663563.8“一种用于实现ANN的深度处理单元”的优先权。
技术领域
本发明涉及人工神经网络(ANN),例如卷积神经网络(CNN),尤其涉及如何通过对复杂神经网络的定点量化来实现压缩和加速人工神经网络。
背景技术
基于人工神经网络,尤其是卷积神经网络(CNN,Convolutional Neural Network)的方法在很多应用中都取得了极大的成功,尤其是在计算机视觉领域一直得到最强大的和广泛使用。
图像分类是计算机视觉(CV)中的一个基本问题。卷积神经网络(CNN)使得图像分类精度取得很大的进步。在Image-Net Large Scale Vision Recognition Challenge(ILSVRC)2012,Krizhevsky等人表示,通过在分类任务取得84.7%的前5项准确率,其中CNN具有很大作用,这是明显高于其他传统的图像分类方法。在接下来的几年里,例如在ILSVRC2013,ILSVRC2014和ILSVRC2015,精度提高到88.8%,93.3%和96.4%。
虽然基于CNN的方法具有最先进的性能,但与传统方法相比需要更多的计算和内存资源。大多数基于CNN方法必须依赖于大型服务器。然而,对于嵌入式系统有一个不可忽视的市场,这个市场要求高精度且能实时目标识别,如自动驾驶汽车和机器人。但对于嵌入式系统,有限的电池和资源是严重的问题。
卷积神经网络在当前图像处理领域有着非常广泛的应用,神经网络有训练方法简单、计算结构统一的特点。但是神经网络存储计算量都很大。现在的系统中许多采用32位或者64位浮点数数字表示系统。然而神经网络的数据中存在大量冗余,用低bit的定点数在一些情况下对神经网络的数据结果影响不大。
在过去的专利申请中,发明人已经提出了针对卷积神经网络的逐层变精度定点化方法及装置。例如,针对于简单的无分支的神经网络的方案。具体而言,只能针对于纯串行的神经网络(神经网络的任意一层Layer N,有且仅有一个前驱层,有且仅有一个后继层),如图2所示,并且不对神经网络进行重新训练。基本流程包括:对于输入的神经网络,按从输入到输出,逐层按一个函数使得误差最小化,确定下来每一层的精度,直到最后一层。
上述方案采用定点方法逐层传播,每一层的定点都要依赖之前层。对于网络结构存在分支与分支合并的情况没有办法处理。上述方案对于现在流行的网络(GoogLeNet,SqueezeNet等)并不适用。
发明内容
该发明的目标就是为了解决带分支网络的定点问题。本发明设计了一种方案在给定定点数位宽的时候确定定点数小数点的位置,同时分析数据的动态范围,发现神经网络每一层的动态范围不同,所以我们提出了根据不同层对各层中不同参数分别定点的方法。
根据本发明的一方面,提出了一种量化人工神经网络(ANN)的方法,所述方法包括:(a)对所述人工神经网络中每一层的输出的数值范围进行定点量化;(b)确定所述人工神经网络中的各个子网络,其中每个子网络以级联层作为最后一层,其中每个级联层把前一级多个层的输出合并为一个输出;(c)针对每个子网络,基于级联层的输出的定点量化范围,修改所述级联层的前一级各个层的输出的定点量化范围。
根据本发明的另一方面,本发明提出了一种量化人工神经网络(ANN)的方法,其中所述ANN是有分支的神经网络,至少包括:第1、第2、…第n个卷积层(CONV层),第1、第2、…第m个全连层(FC层),第1、第2、…第l个CONCAT层,其中所述n、m、l为正整数,所述方法包括:对所述CONV层、FC层、CONCAT层中每一层的输出的数值范围进行定点量化;确定所述ANN中的多个子网络,每个子网络以CONCAT层作为最后一层,其中每个CONCAT层把前一级的多个层的输出合并为一个输出;针对每个子网络,基于CONCAT层的输出的定点量化范围,修改所述CONCAT层的前一级每一层的输出的定点量化范围。
根据本发明的又一方面,本发明提出了一种量化人工神经网络(ANN)的装置,其中所述ANN是有分支的神经网络,至少包括:第1、第2、…第n个卷积层(CONV层),第1、第2、…第m个全连层(FC层),第1、第2、…第l个CONCAT层,其中所述n、m、l为正整数,所述装置包括:数据定点量化装置,用于对所述CONV层、FC层、CONCAT层中每一层的输出的数值范围进行定点量化;CONCAT层确定装置,用于确定所述ANN中的多个子网络,每个子网络以CONCAT层作为最后一层,其中每个CONCAT层把前一级的多个层的输出合并为一个输出;定点调整装置,用于对每个子网络,基于CONCAT层的输出的定点量化范围,修改所述CONCAT层的输入的定点量化范围。
根据本发明提出的另一方面,在动态量化中,允许神经网络有多层并联的结构,例如图6中的”DepthConcat”表示的层。定点量化的基本流程:对于输入的神经网络,按从输入到输出分成数个级,某一层的多个并联输入算作一级;逐级按一个函数使得误差最小化,确定下来每一级的精度,直到最后一级。
根据本发明提出的另一方面,进行了进一步改进,可以支持跨层、RoI pooling层这样一些之前不支持层,是一个更加全面和新颖的量化方法。
附图说明
图1显示了典型的CNN的示意图。
图2显示了对CNN压缩、量化、编译从而实现优化加速的原理图。
图3显示了图2所示流程中的量化步骤的示意图。
图4显示了串联连接的CNN网络中各个卷积层、全连层以及各层输出的示意图。
图5显示了针对串联连接的CNN的量化方案。
图6a-6c显示了存在并联连接和串联连接的复杂CNN的例子GoogLeNet。
图7显示了针对复杂的CNN的CONCAT操作。
图8显示了CONCAT操作的原理图。
图9显示了针对复杂CNN的量化方案。
图10显示了基于本发明实施例的根据CONCAT层来调整前一级输入的定点量化位置的例子。
具体实施方式
本申请的一部分内容曾经被发明人姚颂的学术文章“Going Deeper WithEmbedded FPGA Platform for Convolutional Neural Network”(2016.2)所发表。本申请包含上述文章的内容,并且在其基础上进行了更多的改进。
本申请中,将主要以图像处理为例来说明本发明对CNN的改进。本申请的方案适用于各种人工神经网络,包括深度神经网络(DNN)、循环神经网络(RNN)与卷积神经网络(CNN)。以下以CNN为例进行说明
CNN基本概念
CNN在广泛的视觉相关任务中都达到最先进的性能。为帮助理解本申请中分析的基于CNN图像分类算法,我们首先介绍了CNN的基础知识,介绍图像网络数据集和现有CNN模型。
如图1所示,典型的CNN由一系列有序运行的层组成。
CNN模型的参数被称为“权重”(weights)。CNN的第一层读取输入图像,并输出一系列的特征图(map)。下面的层读取由上一层产生的特征图,并输出新的特征图。最后一个分类器(classifier)输出输入图像可能属于的每一类别的概率。CONV层(卷积层)和FC层(全连层)是CNN中两种基本层类型。CONV层后,通常有汇集层(Pooling layers)。
在本申请中,对于一个CNN层,
Figure BDA0001084771220000051
表示第j个输入特征图(input feature map),
Figure BDA0001084771220000052
表示第i个输出特征图(output feature map),bi表示第i个输出图的偏置项。
对于CONV层,nin和nout分别代表输入和输出特征图的数量。
对于FC层,nin和nout分别代表输入和输出特征向量的长度。
CONV层(Convolutional layers,卷积层)的定义:CONV层以一系列特征图作为输入,并以卷积内核卷积获得输出特征图。
通常与CONV层相连的非线性层,即,非线性激励函数,被施加到输出特征图中的每个元素。
CONV层可以用表达式1表示:
Figure BDA0001084771220000053
其中gi,j是应用到第j个输入特征图和第i个输出特征图的卷积内核。
FC层(Fully-Connected layers,全连层)的定义:FC层应用于输入特征向量上的一个线性变换:
fout=Wfin+b (2)
W是一个nout×nin变换矩阵,b是偏置项。值得注意,对于FC层,输入的不是几个二维特征图的组合,而是一个特征向量。因此,在表达式2中,参数nin和nout实际上对应于输入和输出特征向量的长度。
汇集(pooling)层:通常与CONV层相连,用于输出每个特征图中的每个分区(subarea)的最大值或平均值。Pooling最大值可以由表达式3表示:
Figure BDA0001084771220000054
其中p是汇集内核的大小。这种非线性的“降采样”不仅为下一层降低了特征图的大小和计算,还提供了一种平移不变(translation invariance)。
CNN可用于前向推理过程中进行图像分类。但在对任何任务使用CNN之前,应该首先训练CNN数据集。最近的研究表明,对于一个给定任务的基于大数据集的前向培训的CNN模型可以用于其他任务,并在网络权值(network weights)中实现高精度的微小调整,这个微小调整叫做“微调(fine-tune)”。CNN的培训主要是在大型服务器上实现。对于嵌入式FPGA平台,我们专注于加速CNN的推理过程。
图2示出了为了加速CNN从处理流程和硬件架构的角度提出的整套技术方案。
图2左侧显示了人工神经网络模型,即要优化的目标。在图2中间显示了如何压缩、量化、编译CNN模型以减少内存占用和操作数量,同时最大限度地减少精度损失。图2右侧显示了为压缩后的CNN提供的专用硬件。
串联神经网络的动态量化方案
图3显示了图2的量化步骤的更多细节。
对于一个定点数,它的值表示如下:
Figure BDA0001084771220000061
其中bw是数的位宽度,fl是可以是负的部分的长度(fractional length)。
为了将浮点数转换成定点数的同时得到最高精度,提出了一个动态精度数据量化策略和自动工作流程。
与以前的静态精度量化策略不同,所提出的数据量化流程中,fl对于不同的层和特征图集是动态变化的,同时在一个层中保持静态,以尽量减少每层的截断误差。
如图3所示,本申请所提出的量化流程主要由两个阶段组成:权重量化阶段和数据量化阶段。
权重量化阶段的目的是找到一个层的权重的最佳fl,如表达式5:
Figure BDA0001084771220000071
其中W是权重,W(bw,fl)代表在给定的bw和fl下的W的定点格式。
可选地,首先分析了每一层权重的动态范围,例如通过采样进行估计。之后,为了避免数据溢出,初始化fl。此外,我们在初始fl的邻域搜索最优fl
可选地,在权重定点量化步骤中,采用另一种方式来寻找最佳fl,如表达式6。
Figure BDA0001084771220000072
其中,i代表在bw位中的某一位,ki为该位权重。采用表达式6的方式,对不同的位给予不同的权重,再计算最优的fl
数据量化阶段旨在为CNN模型的两层之间的特征图集寻找最优fl。在此阶段,可以使用训练数据集(bench mark)来训练CNN。所述训练数据集可以为data set0。
可选地,首先完成所有CNN的CONV层、FC层的权重量化,再进行数据量化。此时,把训练数据集输入到已经被量化权重的CNN,经过CONV层、FC层的逐层处理,得到各层输入特征图。
针对每一层输入特征图,使用贪婪算法逐层比较定点CNN模型和浮点CNN模型的中间数据,以减少精度损失。每一层的优化目标如表达式7所示:
Figure BDA0001084771220000073
在表达式7中,当A表示一层(例如某一CONV层或FC层)的计算,x表示输入,x+=A·x时,x+代表该层的输出。值得注意的是,对于CONV层或FC层,直接结果x+具有比给定的标准更长的位宽度。因此,当最佳fl选择时需要截断。最后,整个数据量化配置生成。
根据本发明的另一个实施例,在数据定点量化步骤中,采用另一种方式来寻找最佳fl,如表达式8。
Figure BDA0001084771220000074
其中,i代表在bw位中的某一位,ki为该位权重。与表达式6的方式类似,对不同的位给予不同的权重,再计算最优的fl
上述数据量化步骤得到最优的fl
另外,权重量化和数据量化可以交替进行。就数据处理的流程顺序而言,所述ANN的卷积层(CONV层)、全连层(FC层)中各个层为串联关系,所述训练数据集被所述ANN的CONV层和FC层依次处理时得到的各个特征图集。
具体而言,所述权重量化步骤和所述数据量化步骤根据所述串联关系交替进行,其中在所述权重量化步骤完成其中当前一层的定点量化之后、开始下一层的定点量化之前,对当前一层所输出的特征图集执行数据量化步骤。
上述逐层变精度定点化方法及装置适用于简单的无分支的神经网络的方案。
图4示出了纯串行的神经网络,神经网络的任意一层Layer N,有且仅有一个前驱层,有且仅有一个后继层。基本流程:对于输入的神经网络,按从输入到输出,逐层按一个函数使得误差最小化,确定下来每一层的精度,直到最后一层。
图5所示的定点方式:采用逐层定点的方式寻找最合适的定点位置。
可以看到,图5的方法需要在线生成定点数神经网络。所谓“在线”,就是选取若干典型图片,对该系列图片进行测试,在对这些图片进行测试的过程中才能知道中间的结果。由于图5的方案采用了逐层定点的方式对神经网络进行定点,所以需要一个支持定点数的测试工具,工具的输入时已经经过定点上一层的输出结果,工具的输出是该层定点数网络的结果。
复杂网络的定点动态量化方案
图5的方案采用定点方法逐层传播,每一层的定点都要依赖之前层。对于网络结构存在分支与分支合并的情况没有办法处理。
图5的方案对于现在流行的网络(GoogLeNet,SqueezeNet等)并不适用。图5的方法每一层的定点操作都依赖于上一层的定点结果,所以对网络结构有很大限制。
图6a-6c示出了复杂的神经网络的一个例子GoogLeNet,其中网络有多个分支,同时包括串联、并联的关系,图6c是GoogLeNet模型的输入,图6a是GoogLeNet模型的输出。图6所示的复杂网络GoogLeNet的更多信息可以参看Christian Szegedy等人的Going deeperwith convolutions一文。
对于有分支的网络(例如GoogLeNet),对于多层的级联(CONCAT,concatenation)操作,上层有多个层的输出接入到CONCAT的输入。
CONCAT操作就是指将各输入层的数据按照通道进行连接(级联,CONCATenation)而成新的一层,再输出给下一层。例如CONCAT的输入有两层:输入A和输入B,输入A的特征图尺寸为WxH,通道数为C1,而输入B的特征图尺寸为WxH,通道数为C2。经过CONCAT层之后的特征图维度为WxHx(C1+C2)。
如图7所示的一个例子中,CONCAT层有4个输入,1*1的卷积层、3*3的卷积层、5*5的卷积层、3*3的最大汇集层,CONCAT层把这4个输入级联起来,提供一个输出。有分支的复杂神经网络需要CONCAT操作,从而神经网络模型中存在相应的CONCAT层。
图8示出了CONCAT层执行的操作的例子。
BLOB(binary large object)是二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。BLOB可以理解为一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
在本发明实施例中,BLOB可以理解为四维的数据结构。CONCAT层把前一级的多个层的输出的BLOB1、BLOB2、…BLOBn级联为一个输出。
进一步,在硬件中实现CONCAT操作,通过修改各输入BLOB1、BLOB2、…BLOBn在内存中摆放的位置(内存地址)来实现分支的合并。
如图8所示,BLOB 1,2,3……n的定点配置信息可能不一致。然而,实际的硬件中,要求CONCAT层的所有输入的定点配置是一致的。如果定点配置信息不一致,会导致CONCAT层的数据冲突,神经网络无法再逐层向下一层运行。
如图9所示,为了解决上述问题,我们采用新方法来确定神经网络的输入范围的定点位置。
在图9所示的方法中,CNN(卷积神经网络)是有分支的神经网络,至少包括:第1、第2、…第n个卷积层(CONV层),第1、第2、…第m个全连层(FC层),第1、第2、…第l个CONCAT层,其中所述n、m、l为正整数。
图9左侧分支所示的权重参数流程与图5的大致相同。与图5所示方法不同,在图9右侧分支的数据量化流程中,包括如下步骤。
第一,对所述CNN的各层(CONV层、FC层、CONCAT层中的每一层)的输出的数值范围进行估计,其中该数值是浮点数。
根据本发明的一个实施例,其中第一步骤包括:把输入数据提供给所述CNN,所述输入数据被所述CNN的m个卷积层(CONV层)、n个全连层(FC层)、l个CONCAT层处理,得到各层的输出。
第二,把上述输出的数值范围从浮点数定点量化为定点数。
上述步骤把每层的输出从浮点数量化为定点数,其中针对每层的输出动态地选取量化范围,该量化范围在所述该层是不变的。
根据本发明的一个实施例,可以采用公式7或8的方式来计算最优fl,从而确定定点量化范围。
第三,基于CONCAT层的输出的定点量化范围,修改所述CONCAT层的各个输入的定点量化范围。
第三步骤包括:确定所述CNN中的各个CONCAT层,其中每个CONCAT层把前一级的多个层的输出合并为自己的一个输出。例如,可以从所述CNN的网络模型中找出多个子网络,每个子网络以CONCAT层作为最后一层,从而以所述子网络作为单位进行处理。
根据本发明的一个实施例,第三步骤还包括:对CONCAT层的前一级的多个层的输出,比较所述CONCAT层的前一级每层输出的定点量化范围与所述CONCAT层的输出的定点量化范围。如果不相同,则把该输入的定点量化范围修改为与所述CONCAT层的输出的定点量化范围。
根据本发明的一个实施例,第三步骤还包括:如果一个CONCAT层的前一级某个输入是另一个CONCAT层,则把所述另一个CONCAT层作为另一个子网络,迭代执行步骤第三步骤。
如图9左侧分支所示,跟据本发明的一个实施例,还包括:权重定点量化步骤,把CONV层、FC层和CONCAT层中各层的权重从浮点数量化为定点数。
此外,图9所示的左侧分支的权重量化流程和右侧分支的数据量化流程可以同时执行,也可以交替执行。
例如,执行数据定点量化步骤之前,先对所有的CONV层、FC层和CONCAT层完成所述权重定点量化步骤。
或者,所述权重量化步骤和所述数据量化步骤可以交替进行。按照输入数据被处理的顺序,在所述权重量化步骤完成所述卷积层(CONV层)、全连层(FC层)、CONCAT层的当前一层的定点量化之后、在开始下一层的定点量化之前,对该层的输出执行数据量化步骤。
根据本发明的一个实施例,还额外包括第四步骤:在第三步骤之后,输出所述CONV层、FC层、CONCAT层中各个层的输出的定点量化范围。
图10示出了基于本发明实施例的根据CONCAT层来调整前一级输入的定点量化位置的例子。
图10的例子中,CONCAT层有两个输入,分别是卷积层CONV3、CONV4,CONV3层的输入为CONV2,CONV2层的输入是CONV1。
依据图9的流程,第一步骤包括:把数据输入到神经网络中,得到各个层的输出数据,并确定各层的输出的数值范围。例如,图10示出了各个CONV层和CONCAT层的输出的数值范围,例如以高斯分布。
第二步骤,把各层的输出的数值范围从浮点数定点量化为定点数。例如,参考公式4,假设把浮点数量化为8位的定点数,即,bw=8。例如,CONV3层的输出定点为fl=5,CONV4层的输出定点为fl=3,CONCAT层的输出定点为fl=4。
第三步骤,基于所述CONCAT层的输出的定点配置信息,来修改所述CONCAT层的各个输入CONV3、CONV4的定点量化范围。
例如,比较所述CONV3的输出的定点量化范围(fl=5)与所述CONCAT层的输出的定点量化范围(fl=4)。两者不相同,则把CONV3的输出的定点量化范围修改为与所述CONCAT层的输出的定点量化范围。因此,CONV3的输出的定点量化范围被修改fl=4。
接下来,比较所述CONV4的输出的定点量化范围(fl=3)与所述CONCAT层的输出的定点量化范围(fl=4),两者不相同,则把CONV4的输出的定点量化范围修改为与所述CONCAT层的输出的定点量化范围。因此,CONV4的输出的定点量化范围被修改fl=4。
如果CONCAT层还有其他输入,则以类似方式进行修改。
另外,如果CONCAT层CONCAT1的某个输入也是一个CONCAT层CONCAT1,则执行迭代操作。首先,将后者CONCAT2视为前一级的输入,依照输出CONCAT1的定点配置进行修改;然后,再将修改后的CONCAT2作为输出,修改CONCAT2的前一级各个输入的定点配置。
此外,应当理解,本发明的方案适用于各种形式的复杂人工神经网络,而不仅限于具有CONCAT级联操作的、带有分支的人工神经网络。此外,CONCAT操作也应当作为广义来理解,即,把不同的子网络(或,网络分支)组合为一个网络的操作。
此外,本发明说明书和权利要求中的“多个”是指两个或两个以上。
需要说明的是,本说明书中的各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (25)

1.一种量化人工神经网络(ANN)的方法,其中所述ANN是有分支的神经网络,至少包括:第1、第2、…第n个卷积层(CONV层),第1、第2、…第m个全连层(FC层),第1、第2、…第l个级联层(CONCAT层),其中所述n、m、l为正整数,所述方法包括:
(a)对所述CONV层、FC层、CONCAT层中每一层的输出的数值范围进行定点量化;
(b)确定所述ANN中的各个子网络,每个子网络以CONCAT层作为最后一层,其中每个CONCAT层把前一级多个层的输出合并为一个输出;
(c)针对每个子网络,基于CONCAT层的输出的定点量化范围,修改所述CONCAT层的前一级各个层的输出的定点量化范围。
2.根据权利要求1的方法,其中步骤c包括:
针对CONCAT层的前一级的多个层,比较所述CONCAT层的前一级每一层的输出的定点量化范围与所述CONCAT层的输出的定点量化范围,如果不相同,则把前一级该层输出的定点量化范围修改为与所述CONCAT层的输出的定点量化范围。
3.根据权利要求1的方法,其中步骤c包括:
如果所述子网络的最后一层是CONCAT层、且该CONCAT层的某个输入是另一个CONCAT层,则把所述另一个CONCAT层作为另一个子网络,执行步骤c。
4.根据权利要求1的方法,其中步骤a包括:
把输入数据提供给所述ANN,所述输入数据被所述ANN的m个卷积层(CONV层)、n个全连层(FC层)、l个CONCAT层处理,把每层的输出从浮点数量化为定点数,其中针对每层的输出动态地选取量化范围,该量化范围在该层是不变的。
5.根据权利要求4的方法,所述把每层的输出从浮点数量化为定点数进一步包括:
使用如下表达式来表示定点数y:
Figure FDA0002836796980000021
其中bw是定点数的位宽度,fl是负的部分的长度;
寻找所述输入数据被所述ANN的CONV层、FC层、CONCAT层处理时得到的各层的输出的最优fl
6.根据权利要求5的方法,其中寻找最优fl的步骤包括:
分析每层的输出的浮点数取值范围;
基于所述范围,给fl设置一个初始值;
以如下表达式在初始值的邻域搜索最优fl,基于所述fl的定点数表达与浮点数表达之间的误差最小,
Figure FDA0002836796980000022
其中x+=A·x,A表示CONV层、FC层或CONCAT层中的任一层,x表示提供给所述任一层的输入,x+代表所述任一层的输出,
Figure FDA0002836796980000023
代表x+的浮点格式,x+(bw,fl)代表在给定的bw和fl下的x+的定点格式。
7.根据权利要求5所述的方法,其中寻找最优fl的步骤包括:
分析每层的输出的浮点数取值范围;
基于所述范围,给fl设置一个初始值;
以如下表达式在初始值的邻域搜索最优fl
Figure FDA0002836796980000024
其中x+=A·x,A表示CONV层、FC层或CONCAT层中的任一层,x表示提供给所述任一层的输入,x+代表所述任一层的输出;
i代表在bw个位中的某一位,ki为该位权重,
Figure FDA0002836796980000031
代表该位的x+的浮点格式,x+(bw,fl)i代表在给定的bw和fl下的该位的x+的定点格式。
8.根据权利要求1的方法,还包括:
在步骤c之后,输出所述CONV层、FC层、CONCAT层中每一层的输出的定点量化范围。
9.根据权利要求1的方法,还包括:
权重定点量化步骤,把CONV层、FC层和CONCAT层中各层的权重从浮点数量化为定点数。
10.根据权利要求9的方法,所述把ANN的卷积层(CONV层)、全连层(FC层)和CONCAT层中每一层的权重参数从浮点数量化为定点数包括:针对各层的权重参数动态地选取量化范围,该量化范围在该层内部不变。
11.根据权利要求10的方法,所述针对各层的权重参数动态地选取量化范围进一步包括:
使用如下表达式来表示定点数y:
Figure FDA0002836796980000032
其中bw是定点数的位宽度,fl是负的部分的长度;
寻找针对每一层权重的最优fl,以表示量化的权重。
12.根据权利要求11的方法,其中寻找最优fl的步骤包括:
估计每一层的权重参数的浮点数取值范围;
基于所述范围,给fl设置一个初始值;
以如下表达式在初始值的邻域搜索最优fl,使得所述fl的定点数权重参数与浮点数权重参数之间的误差最小,
Figure FDA0002836796980000041
其中W是权重参数,W(bw,fl)代表在给定的bw和fl下的W的定点格式,Wfloat代表W的浮点格式。
13.根据权利要求11所述的方法,其中寻找最优fl的步骤包括:
估计每一层的权重参数的浮点数取值范围;
基于所述范围,给fl设置一个初始值;
以如下表达式在初始值的邻域搜索最优fl
Figure FDA0002836796980000042
其中W是权重参数,
i代表在bw个位中的某一位,ki为该位权重,W(bw,fl)i代表在给定的bw和fl下的该位的W的定点格式,
Figure FDA0002836796980000043
代表该位的W的浮点格式。
14.根据权利要求9的方法,还包括:
在步骤a之前,对所有的CONV层、FC层和CONCAT层完成所述权重定点量化步骤。
15.根据权利要求9的方法,还包括:
所述权重量化步骤和所述步骤a交替进行,其中在所述权重量化步骤完成所述卷积层(CONV层)、全连层(FC层)、CONCAT层的当前一层的定点量化之后、在开始下一层的定点量化之前,对该层的输出执行步骤a。
16.一种量化人工神经网络(ANN)的装置,其中所述ANN是有分支的神经网络,至少包括:第1、第2、…第n个卷积层(CONV层),第1、第2、…第m个全连层(FC层),第1、第2、…第l个级联层(CONCAT层),其中所述n、m、l为正整数,所述装置包括:
数据定点量化装置,用于对所述CONV层、FC层、CONCAT层中每一层的输出的数值范围进行定点量化;
CONCAT层确定装置,用于确定所述ANN中的各个子网络,每个子网络以CONCAT层作为最后一层,其中每个CONCAT层把前一级多个层的输出合并为一个输出;
定点调整装置,用于对每个子网络,基于CONCAT层的输出的定点量化范围,修改所述CONCAT层的前一级各个层的输出的定点量化范围。
17.根据权利要求16的装置,其中定点调整装置被配置为:
针对CONCAT层的前一级多个层的输出,比较所述CONCAT层的前一级每一层的输出的定点量化范围与所述CONCAT层的输出的定点量化范围,如果不相同,则把前一级该层输出的定点量化范围修改为与所述CONCAT层的输出的定点量化范围。
18.根据权利要求16的装置,其中定点调整装置被配置为:
如果所述子网络的最后一层是CONCAT层、且该CONCAT层的某个输入是另一个CONCAT层,则把所述另一个CONCAT层作为另一个子网络,再进行定点调整操作。
19.根据权利要求16的装置,其中数据定点量化装置被配置为:
把输入数据提供给所述ANN,所述输入数据被所述ANN的m个卷积层(CONV层)、n个全连层(FC层)、l个CONCAT层处理,把每层的输出从浮点数量化为定点数,其中针对每层的输出动态地选取量化范围,该量化范围在该层是不变的。
20.根据权利要求16的装置,还包括:
权重定点量化装置,用于把CONV层、FC层和CONCAT层中各层的权重从浮点数量化为定点数。
21.一种量化人工神经网络(ANN)的方法,所述方法包括:
(a)对所述人工神经网络中每一层的输出的数值范围进行定点量化;
(b)确定所述人工神经网络中的各个子网络,其中每个子网络以级联层作为最后一层,其中每个级联层把前一级多个层的输出合并为一个输出;
(c)针对每个子网络,基于级联层的输出的定点量化范围,修改所述级联层的前一级各个层的输出的定点量化范围。
22.根据权利要求21的方法,其中步骤c包括:针对所述级联层的前一级的多个层,比较所述级联层的前一级每一层的输出的定点量化范围与所述级联层的输出的定点量化范围,如果不相同,则把前一级该层输出的定点量化范围修改为与所述级联层的输出的定点量化范围。
23.根据权利要求21的方法,其中步骤c包括:如果所述子网络的最后一层是级联层、且该级联层的某个输入是另一个级联层,则把所述另一个级联层作为另一个子网络,执行步骤c。
24.根据权利要求21的方法,其中所述ANN是有分支的神经网络,至少包括:第1、第2、…第n个卷积层(CONV层),第1、第2、…第m个全连层(FC层),第1、第2、…第l个级联层(CONCAT层)。
25.根据权利要求24的方法,其中步骤a包括:
把输入数据提供给所述ANN,所述输入数据被所述ANN的m个卷积层(CONV层)、n个全连层(FC层)、l个级联层(CONCAT层)处理,把每层的输出从浮点数量化为定点数,其中针对每层的输出动态地选取量化范围,该量化范围在该层是不变的。
CN201610698184.2A 2016-08-12 2016-08-19 针对于复杂神经网络的分层量化方法与装置 Active CN107688855B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201610663201 2016-08-12
CN2016106632019 2016-08-12
CN2016106635638 2016-08-12
CN201610663563 2016-08-12

Publications (2)

Publication Number Publication Date
CN107688855A CN107688855A (zh) 2018-02-13
CN107688855B true CN107688855B (zh) 2021-04-13

Family

ID=61127258

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610698184.2A Active CN107688855B (zh) 2016-08-12 2016-08-19 针对于复杂神经网络的分层量化方法与装置
CN201610695285.4A Active CN107657316B (zh) 2016-08-12 2016-08-19 通用处理器与神经网络处理器的协同系统设计

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201610695285.4A Active CN107657316B (zh) 2016-08-12 2016-08-19 通用处理器与神经网络处理器的协同系统设计

Country Status (1)

Country Link
CN (2) CN107688855B (zh)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11740898B2 (en) 2018-02-13 2023-08-29 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
KR102354722B1 (ko) 2018-02-13 2022-01-21 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 계산 장치 및 방법
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN110162162B (zh) 2018-02-14 2023-08-18 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
CN108564165B (zh) * 2018-03-13 2024-01-23 上海交通大学 卷积神经网络定点化优化的方法及系统
US11768979B2 (en) * 2018-03-23 2023-09-26 Sony Corporation Information processing device and information processing method
CN108491890B (zh) * 2018-04-04 2022-05-27 百度在线网络技术(北京)有限公司 图像方法和装置
CN108510067B (zh) * 2018-04-11 2021-11-09 西安电子科技大学 基于工程化实现的卷积神经网络量化方法
CN110413255B (zh) * 2018-04-28 2022-08-19 赛灵思电子科技(北京)有限公司 人工神经网络调整方法和装置
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
CN108805265B (zh) * 2018-05-21 2021-03-30 Oppo广东移动通信有限公司 神经网络模型处理方法和装置、图像处理方法、移动终端
KR20190136431A (ko) * 2018-05-30 2019-12-10 삼성전자주식회사 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
CN110555508B (zh) * 2018-05-31 2022-07-12 赛灵思电子科技(北京)有限公司 人工神经网络调整方法和装置
CN110555450B (zh) * 2018-05-31 2022-06-28 赛灵思电子科技(北京)有限公司 人脸识别神经网络调整方法和装置
CN110598839A (zh) * 2018-06-12 2019-12-20 华为技术有限公司 卷积神经网络系统和卷积神经网络量化的方法
CN109034025A (zh) * 2018-07-16 2018-12-18 东南大学 一种基于zynq的人脸关键点检测系统
KR102519467B1 (ko) 2018-08-28 2023-04-06 캠브리콘 테크놀로지스 코퍼레이션 리미티드 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체
KR20200026455A (ko) * 2018-09-03 2020-03-11 삼성전자주식회사 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법
WO2020056718A1 (zh) * 2018-09-21 2020-03-26 华为技术有限公司 在设备中的神经网络模型的量化方法和装置
WO2020062392A1 (zh) 2018-09-28 2020-04-02 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
WO2020075957A1 (ko) * 2018-10-08 2020-04-16 주식회사 디퍼아이 분산처리용 인공신경망 연산 가속화 장치, 이를 이용한 인공신경망 가속화 시스템, 및 그 인공신경망의 가속화 방법
CN109389120A (zh) * 2018-10-29 2019-02-26 济南浪潮高新科技投资发展有限公司 一种基于zynqMP的目标检测装置
CN109523016B (zh) * 2018-11-21 2020-09-01 济南大学 面向嵌入式系统的多值量化深度神经网络压缩方法及系统
CN109740619B (zh) * 2018-12-27 2021-07-13 北京航天飞腾装备技术有限责任公司 用于目标识别的神经网络终端运行方法和装置
CN111385462A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN109711367B (zh) * 2018-12-29 2020-03-06 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN110889497B (zh) * 2018-12-29 2021-04-23 中科寒武纪科技股份有限公司 一种人工智能处理器的学习任务编译方法及相关产品
DE102020100209A1 (de) * 2019-01-21 2020-07-23 Samsung Electronics Co., Ltd. Neuronale Netzwerkvorrichtung, neuronales Netzwerksystem und Verfahren zur Verarbeitung eines neuronalen Netzwerkmodells durch Verwenden eines neuronalen Netzwerksystems
US10592799B1 (en) * 2019-01-23 2020-03-17 StradVision, Inc. Determining FL value by using weighted quantization loss values to thereby quantize CNN parameters and feature values to be used for optimizing hardware applicable to mobile devices or compact networks with high precision
CN110009096A (zh) * 2019-03-06 2019-07-12 开易(北京)科技有限公司 基于嵌入式设备的目标检测网络模型优化方法
CN111832738B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11934940B2 (en) 2019-04-18 2024-03-19 Cambricon Technologies Corporation Limited AI processor simulation
EP3770823A4 (en) 2019-06-12 2021-01-27 Shanghai Cambricon Information Technology Co., Ltd QUANTIFICATION PARAMETER DETERMINATION PROCESS FOR NEURONAL NETWORK, AND RELATED PRODUCT
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
CN110348562B (zh) * 2019-06-19 2021-10-15 北京迈格威科技有限公司 神经网络的量化策略确定方法、图像识别方法和装置
CN110309877B (zh) * 2019-06-28 2021-12-07 北京百度网讯科技有限公司 一种特征图数据的量化方法、装置、电子设备及存储介质
CN110569713B (zh) * 2019-07-22 2022-04-08 北京航天自动控制研究所 一种利用dma控制器实现数据串并行二维传输的目标探测系统及方法
CN111344719A (zh) * 2019-07-22 2020-06-26 深圳市大疆创新科技有限公司 基于深度神经网络的数据处理方法、装置及移动设备
US11635893B2 (en) * 2019-08-12 2023-04-25 Micron Technology, Inc. Communications between processors and storage devices in automotive predictive maintenance implemented via artificial neural networks
EP4020321A4 (en) 2019-08-23 2024-01-17 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD, APPARATUS, COMPUTER APPARATUS AND STORAGE MEDIUM
CN112446460A (zh) * 2019-08-28 2021-03-05 上海寒武纪信息科技有限公司 用于处理数据的方法、装置以及相关产品
CN110837890A (zh) * 2019-10-22 2020-02-25 西安交通大学 一种面向轻量级卷积神经网络的权值数值定点量化方法
CN110990060B (zh) * 2019-12-06 2022-03-22 北京瀚诺半导体科技有限公司 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法
CN111144511B (zh) * 2019-12-31 2020-10-20 上海云从汇临人工智能科技有限公司 基于神经网络的图像处理方法、系统、介质及电子终端
CN111178522B (zh) * 2020-04-13 2020-07-10 杭州雄迈集成电路技术股份有限公司 一种软硬件协同加速方法、系统及计算机可读存储介质
CN111626414B (zh) * 2020-07-30 2020-10-27 电子科技大学 一种动态多精度神经网络加速单元
CN112561933A (zh) * 2020-12-15 2021-03-26 深兰人工智能(深圳)有限公司 图像分割方法及装置
US12112265B2 (en) 2020-12-18 2024-10-08 Analog Devices International Unlimited Company Architecture for running convolutional networks on memory and mips constrained embedded devices
CN113240101B (zh) * 2021-05-13 2022-07-05 湖南大学 卷积神经网络软硬件协同加速的异构SoC实现方法
CN113361695B (zh) * 2021-06-30 2023-03-24 南方电网数字电网研究院有限公司 卷积神经网络加速器
CN115705482A (zh) * 2021-07-20 2023-02-17 腾讯科技(深圳)有限公司 模型量化方法、装置、计算机设备及存储介质
CN114708180B (zh) * 2022-04-15 2023-05-30 电子科技大学 具有动态范围保持的预失真图像比特深度量化和增强方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016039651A1 (en) * 2014-09-09 2016-03-17 Intel Corporation Improved fixed point integer implementations for neural networks
CN105760933A (zh) * 2016-02-18 2016-07-13 清华大学 卷积神经网络的逐层变精度定点化方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100388234C (zh) * 2005-12-09 2008-05-14 中兴通讯股份有限公司 一种基于有限状态机的对内存变量改写进行监控的方法
CN104794102B (zh) * 2015-05-14 2018-09-07 哈尔滨工业大学 一种加速实现Cholesky分解的嵌入式片上系统
CN105224482B (zh) * 2015-10-16 2018-05-25 浪潮(北京)电子信息产业有限公司 一种fpga加速卡高速存储系统
CN105630735A (zh) * 2015-12-25 2016-06-01 南京大学 一种基于可重构计算阵列的协处理器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016039651A1 (en) * 2014-09-09 2016-03-17 Intel Corporation Improved fixed point integer implementations for neural networks
CN105760933A (zh) * 2016-02-18 2016-07-13 清华大学 卷积神经网络的逐层变精度定点化方法及装置

Also Published As

Publication number Publication date
CN107657316A (zh) 2018-02-02
CN107688855A (zh) 2018-02-13
CN107657316B (zh) 2020-04-07

Similar Documents

Publication Publication Date Title
CN107688855B (zh) 针对于复杂神经网络的分层量化方法与装置
CN108009625B (zh) 人工神经网络定点化后的微调方法和装置
US10643124B2 (en) Method and device for quantizing complex artificial neural network
KR102693803B1 (ko) 2차원 이미지들로부터 3차원 객체 모델들의 생성
US10802992B2 (en) Combining CPU and special accelerator for implementing an artificial neural network
US20210027098A1 (en) Weakly Supervised Image Segmentation Via Curriculum Learning
WO2018016608A1 (ja) ニューラルネットワーク装置、車両制御システム、分解処理装置、及びプログラム
US11586924B2 (en) Determining layer ranks for compression of deep networks
JP2015197702A (ja) 情報処理装置、情報処理方法
CN113128478B (zh) 模型训练方法、行人分析方法、装置、设备及存储介质
US11694301B2 (en) Learning model architecture for image data semantic segmentation
Faraone et al. Customizing low-precision deep neural networks for FPGAs
CN114863407B (zh) 一种基于视觉语言深度融合的多任务冷启动目标检测方法
Lahoud et al. Self-binarizing networks
Cai et al. On-device image classification with proxyless neural architecture search and quantization-aware fine-tuning
KR20210039921A (ko) 신경망 모델을 최적화하도록 구성된 심층 신경망 시스템의 동작 방법
CN112966754B (zh) 样本筛选方法、样本筛选装置及终端设备
Suganuma et al. Designing convolutional neural network architectures using cartesian genetic programming
Zhu et al. Two-branch encoding and iterative attention decoding network for semantic segmentation
CN110728359B (zh) 搜索模型结构的方法、装置、设备和存储介质
WO2024060839A9 (zh) 对象操作方法、装置、计算机设备以及计算机存储介质
Park et al. Training deep neural network in limited precision
US20220130137A1 (en) Method and apparatus for searching neural network architecture
Chen et al. Search for efficient deep visual-inertial odometry through neural architecture search
Chu et al. Mixed-precision quantized neural network with progressively decreasing bitwidth for image classification and object detection

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
TA01 Transfer of patent application right

Effective date of registration: 20180606

Address after: 100083, 17 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant after: Beijing deep Intelligent Technology Co., Ltd.

Address before: 100084 Wang Zhuang Road, 1, Haidian District, Beijing, Tsinghua Tongfang Technology Plaza, block D, 1705

Applicant before: Beijing insight Technology Co., Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190927

Address after: 2100 San Jose Rojack Avenue, California, USA

Applicant after: XILINX INC

Address before: 100083, 17 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant before: Beijing Shenjian Intelligent Technology Co., Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant