CN108009625B - 人工神经网络定点化后的微调方法和装置 - Google Patents

人工神经网络定点化后的微调方法和装置 Download PDF

Info

Publication number
CN108009625B
CN108009625B CN201611033156.5A CN201611033156A CN108009625B CN 108009625 B CN108009625 B CN 108009625B CN 201611033156 A CN201611033156 A CN 201611033156A CN 108009625 B CN108009625 B CN 108009625B
Authority
CN
China
Prior art keywords
layer
ann
point
tuning
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611033156.5A
Other languages
English (en)
Other versions
CN108009625A (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
Priority to CN201611033156.5A priority Critical patent/CN108009625B/zh
Publication of CN108009625A publication Critical patent/CN108009625A/zh
Application granted granted Critical
Publication of CN108009625B publication Critical patent/CN108009625B/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/04Architecture, e.g. interconnection topology

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

提供了一种调整人工神经网络的方法和装置。人工神经网络至少包括两个或更多个卷积层以及至少一个全连接层,并且所述方法包括:对所述网络中的多个层的输出的数值范围和权重参数进行定点化以得到定点化的网络;将定点化的所述多个层转为浮点数以便将所述网络转换回浮点数网络;以及通过使用训练数据进行训练,微调所述浮点数网络中至少一层的权重参数。还可以将经微调的权重参数重新定点化。另外,可以筛选出几个关键层,通常是全连接层。这些层在训练和实际网络使用过程中都使用浮点数,并且可以在普通层微调并定点化之后,再对关键层进行微调。通过利用训练数据对定点过后的网络进行微调,能够提升网络的性能和计算效果。

Description

人工神经网络定点化后的微调方法和装置
技术领域
本发明涉及人工神经网络(ANN),例如卷积神经网络(CNN),尤其涉及神经网络定点化过后的网络参数微调,由此提高定点化后的准确性。
背景技术
基于人工神经网络,尤其是卷积神经网络(CNN,Convolutional Neural Network)的方法在很多应用中都取得了极大的成功。在计算机视觉领域,特别是针对图像分类问题,卷积神经网络(CNN)的引入使得图像分类的精度大幅提高。
虽然基于CNN的方法具有先进的性能,但与传统方法相比需要更多的计算和内存资源,因此大多数基于CNN的方法需要依赖于大型服务器。然而,许多嵌入式系统也希望具有由CNN方法实现的高精度实时目标识别功能。不过将功能强大的CNN用于小型系统必须克服资源有限的问题。
现有CNN系统中多采用32位或64位浮点数数字表示系统,然而在某些情况下,使用低bit的定点数对神经网络的数据结果影响不大。因此针对现有CNN参数具备大量冗余的事实,可以通过神经网络定点化来大幅降低资源使用量。之前已经有工作对神经网络进行定点化研究。
本发明的发明人也已提出了针对简单无分支CNN的逐层变精度定点化方法及装置。另外,对于现在流行的带分支的网络结构(例如,GoogLeNet,SqueezeNet等),本发明的发明人还提出了根据不同层对各层中不同参数分别定点的方案,该方案能够基于级联层输出的定点化范围,修改所述级联层的前一级各个层的输出的定点化范围。
上述方案采用的定点策略直接对已经训练好的神经网络进行定点、不需要任何训练数据就可以对网络进行定点,并且具有速度快和效率高的优点。但是在上述方案中,定点过后精度会下降。在网络层数变深或者网络设计用来解决回归问题的情况下,网络性能的退化会非常严重。
发明内容
为了解决上述网络性能退化的问题,本发明提出了一种在有训练数据的情况下网络调整策略,结合现有的神经网络定点方法,对一些层进行重新训练微调(fine-tune),取得优于直接网络定点的技术效果。
根据本发明的一个方面,提出了一种量化人工神经网络(ANN)的方法,其中所述ANN至少包括:两个或更多个卷积层(CONV层)以及至少一个全连接层(FC层),所述方法包括:网络定点化步骤,对所述ANN中的多个层的输出的数值范围和权重参数进行定点化以得到定点化的ANN;网络浮点化步骤,将定点化的所述多个层转为浮点数以便将所述ANN转换回浮点数ANN;权重微调步骤,通过使用训练数据进行训练,微调所述浮点数ANN中至少一层的权重参数。
根据本发明的另一个方面,提出了一种调整人工神经网络(ANN)的装置,其中所述ANN至少包括:两个或更多个卷积层(CONV层)以及至少一个全连接层(FC层),所述装置包括:网络定点化装置,对所述ANN中的多个层的输出的数值范围和权重参数进行定点化以得到定点化的ANN;网络浮点化装置,将定点化的所述多个层转为浮点数以便将所述ANN转换回浮点数ANN;以及权重微调装置,通过使用训练数据进行训练,微调所述浮点数ANN中至少一层的权重参数。
根据本发明的又一个方面,微调的可以是之前定点化的多个层,并且可以在微调之后将所述多个层的权重再转化成定点数。
根据本发明的再一个方面,所述ANN中至少有一层始终保持为浮点数层,并且可以在前述多个层重新定点化之后再微调浮点数层。
根据本发明的另一个方面,进行定点、浮点化、微调、再定点的上述ANN可以是包括级联层(CONCAT层)的复杂神经网络。该复杂神经网络中也可以有层保持为浮点数层,并在多个层微调并定点化之后再调整该浮点数层。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了典型的CNN的示意图。
图2示出了对CNN压缩、量化、编译从而实现优化加速的原理图。
图3示出了串联连接的CNN网络中各个卷积层、全连层以及各层输出的示意图。
图4示出了针对串联连接的CNN的量化方案。
图5示出了针对复杂的CNN的CONCAT操作。
图6示出了CONCAT操作的原理图。
图7示出了针对复杂CNN的量化方案。
图8示出了一种CNN调整方案。
图9示出了另一种CNN调整方案。
图10示出了一种CNN调整方案的后续操作。
图11示出了一种适用于复杂CNN的优选调整方案。
图12示出了一种神经网络调整装置。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本申请中,将主要以图像处理为例来说明本发明对CNN的改进。本申请的方案适用于各种人工神经网络,包括深度神经网络(DNN)、循环神经网络(RNN)与卷积神经网络(CNN)。以下以CNN为例进行说明
CNN基本概念
CNN在广泛的视觉相关任务中都达到最先进的性能。为帮助理解本申请中分析的基于CNN图像分类算法,我们首先介绍了CNN的基础知识,介绍图像网络数据集和现有CNN模型。
如图1所示,典型的CNN由一系列有序运行的层组成。
CNN模型的参数被称为“权重”(weights)。CNN的第一层读取输入图像,并输出一系列的特征图(map)。下面的层读取由上一层产生的特征图,并输出新的特征图。最后一个分类器(classifier)输出该输入图像可能属于的每一类别的概率。CONV层(卷积层)和FC层(全连接层)是CNN中两种基本层类型。CONV层后通常还接有池化层(Pooling layers)。
CONV层(Convolutional layers,卷积层)以一系列特征图作为输入,并以卷积内核卷积获得输出特征图。池化层通常与CONV层相连,用于输出每个特征图中的每个分区(sub area)的最大值或平均值,由此通过亚采样降低计算量,同时保持某种程度的位移、尺度和形变不变性。一个CNN中可以包括卷积层和池化层之间的多个交替,由此逐步降低空间分辨率并增加特征映射的数量。随后可以连接至至少一个全连接层,通过应用于输入特征向量上的线性变换,得到包括多个特征值的一维向量输出。
CNN可用于前向推理过程中进行图像分类。但在对任何任务使用CNN之前,应该首先训练CNN数据集。最近的研究表明,对于一个给定任务的基于大数据集的前向培训的CNN模型可以用于其他任务,并在网络权值(network weights)中实现高精度的微小调整,这个微小调整叫做“微调(fine-tune)”。
在对CNN的训练过程中,通常先不考虑对实际图像分类中使用的位于网络最末端的分类器的训练,而是专注于CNN本身,尤其是CONV层和FC层(有时还包括池化层)的训练。在训练过程中,输入训练数据,使用BP算法(误差反向传播算法)根据得到的误差函数反向调整CNN各层的权重,由此训练得到各层的权重参数。
CNN的培训主要是在大型服务器上实现。对于嵌入式平台,例如包括FPGA的SoC平台,则专注于加速CNN的推理过程。
图2示出了为了加速CNN从处理流程和硬件架构的角度提出的整套技术方案。图2左侧显示了人工神经网络模型,即要优化的目标。在图2中间显示了如何通过去冗余来压缩、定点化、编译CNN模型,由此减少内存占用和操作数量,同时最大限度地减少精度损失。图2右侧显示了为压缩后的CNN提供的专用硬件。
串联神经网络的动态量化方案
如下将针对图2的定点化步骤进行具体描述。
对于一个定点数,它的值表示如下:
Figure BDA0001138710500000041
其中bw是数的位宽,fl是可以是小数部分的长度(fractional length)。
为了将浮点数转换成定点数的同时得到最高精度,提出了一个动态精度数据化策略和自动工作流程。与以前的静态精度量化策略不同,所提出的数据量化流程中,fl对于不同的层和特征图集是动态变化的,同时在一个层中保持静态,以尽量减少每层的截断误差。
本申请所提出的定点量化流程主要由两个阶段组成:权重量化阶段和数据量化阶段。权重量化阶段的目的是找到一个层的权重的最佳fl。可选地,可以首先分析了每一层权重的动态范围,例如通过采样进行估计。之后,为了避免数据溢出,初始化fl并在初始fl的邻域搜索最优fl。可选地,还可以采用其他方式来寻找最佳fl,例如对不同的位给予不同的权重,再计算最优的fl
数据量化阶段旨在为CNN模型的两层之间的特征图集寻找最优fl。在此阶段,可以使用训练数据(bench mark)来训练CNN。所述训练数据可以为data set 0。
可选地,首先完成所有CNN的CONV层、FC层的权重量化,再进行数据化。此时,把训练数据输入到权重已经定点化的CNN,经过CONV层、FC层的逐层处理,得到各层输入特征图。
针对每一层输入特征图,使用贪婪算法逐层比较定点CNN模型和浮点CNN模型的中间数据,以减少精度损失。在另一个实施例中,还可以采用其他方式来寻找数据定点化步骤中的fl,例如对不同的位给予不同的权重,再计算最优的fl
另外,权重定点化和数据定点化可以交替进行。就数据处理的流程顺序而言,所述ANN的卷积层(CONV层)、全连层(FC层)中各个层为串联关系,所述训练数据被所述ANN的CONV层和FC层依次处理时得到的各个特征图集。
具体而言,上述权重量化和数据量化步骤可以根据串联关系交替进行,其中在权重量化步骤完成其中当前一层的定点化之后、开始下一层的定点化之前,对当前一层所输出的特征图集执行数据量化步骤。
上述逐层变精度定点化方法及装置适用于简单的无分支的神经网络的方案。
图3示出了纯串行的神经网络,对于神经网络的任意一层Layer N,有且仅有一个前驱层,有且仅有一个后继层。基本流程:对于输入的神经网络,按从输入到输出,逐层按一个函数使得误差最小化,确定下来每一层的精度,直到最后一层。
图4显示了针对串联连接的CNN的量化方案。在图4所示的方案中,CNN包括多个卷积层(CONV层)和至少一个全连接层(FC层),并且该方案采用逐层定点的方式寻找最合适的定点位置。从图中可以看出,图4的方法需要在线生成定点数神经网络。所谓“在线”,就是选取若干典型图片,对该系列图片进行测试,在对这些图片进行测试的过程中才能知道中间的结果。由于图4的方案采用了逐层定点的方式对神经网络进行定点,所以需要一个支持定点数的测试工具,工具的输入是已经经过定点上一层的输出结果,工具的输出是该层定点数网络的结果。
复杂网络的定点动态量化方案
图4的方案采用定点方法逐层传播,每一层的定点都要依赖之前层。对于网络结构存在分支与分支合并的情况没有办法处理。
在有分支的网络(例如GoogLeNet)中,对于多层的级联(CONCAT,concatenation)操作,上层有多个层的输出接入到CONCAT的输入。CONCAT操作就是指将各输入层的数据按照通道级联而成新的一层,再输出给下一层。例如CONCAT的输入有两层:输入A和输入B,输入A的特征图尺寸为WxH,通道数为C1,而输入B的特征图尺寸为WxH,通道数为C2。经过CONCAT层之后的特征图维度为WxHx(C1+C2)。图5示出了针对复杂CNN的CONCAT操作的一个例子。如图5所示,CONCAT层有4个输入,1*1的卷积层、3*3的卷积层、5*5的卷积层、3*3的最大汇集层,CONCAT层把这4个输入级联起来,提供一个输出。有分支的复杂神经网络需要CONCAT操作,从而神经网络模型中存在相应的CONCAT层。
图6示出了CONCAT层执行的操作的例子。
BLOB(binary large object)是二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB可以理解为一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。在本发明实施例中,BLOB可以理解为四维的数据结构。CONCAT层把前一级的多个层的输出的BLOB1、BLOB2、…BLOBn级联为一个输出。
进一步,在硬件中实现CONCAT操作,通过修改各输入BLOB1、BLOB2、…BLOBn在内存中摆放的位置(内存地址)来实现分支的合并。
如图6所示,BLOB1,2,3…n的定点配置信息可能不一致。然而,实际的硬件中,要求CONCAT层的所有输入的定点配置是一致的。如果定点配置信息不一致,会导致CONCAT层的数据冲突,神经网络无法再逐层向下一层运行。如图7所示,为了解决上述问题,我们采用新方法来确定神经网络的输入范围的定点位置。
在图7所示的方法中,CNN(卷积神经网络)是有分支的神经网络,包括多个卷积层(CONV层)、至少一个全连接层(FC层)和至少一个CONCAT层。图7左侧分支所示的权重参数流程与图4的大致相同。与图4所示方法不同,在图7右侧分支的数据量化流程中,包括如下步骤。
第一,对所述CNN的各层(CONV层、FC层、CONCAT层中的每一层)的输出的数值范围进行估计,其中该数值是浮点数。
根据本发明的一个实施例,其中第一步骤包括:把输入数据提供给所述CNN,所述输入数据被CNN的多个卷积层(CONV层)、至少一个全连层(FC层)、至少一个CONCAT层处理,得到各层的输出。
第二,把上述输出的数值范围从浮点数定点化为定点数。
上述步骤把每层的输出从浮点数量化为定点数,其中针对每层的输出动态地选取量化范围,该量化范围在所述该层是不变的。
第三,基于CONCAT层的输出的定点化范围,修改所述CONCAT层的各个输入的定点化范围。
第三步骤包括:确定所述CNN中的各个CONCAT层,其中每个CONCAT层把前一级的多个层的输出合并为自己的一个输出。例如,可以从所述CNN的网络模型中找出多个子网络,每个子网络以CONCAT层作为最后一层,从而以所述子网络作为单位进行处理。
根据本发明的一个实施例,第三步骤还包括:对CONCAT层的前一级的多个层的输出,比较所述CONCAT层的前一级每层输出的定点化范围与所述CONCAT层的输出的定点化范围。如果不相同,则把该输入的定点化范围修改为与所述CONCAT层的输出的定点化范围。
根据本发明的一个实施例,第三步骤还包括:如果一个CONCAT层的前一级某个输入是另一个CONCAT层,则把所述另一个CONCAT层作为另一个子网络,迭代执行步骤第三步骤。
如图7左侧分支所示,根据本发明的一个实施例,还包括:权重定点化步骤,把CONV层、FC层和CONCAT层中各层的权重从浮点数量化为定点数。
此外,图7所示的左侧分支的权重量化流程和右侧分支的数据量化流程可以同时执行,也可以交替执行。例如,执行数据定点化步骤之前,先对所有的CONV层、FC层和CONCAT层完成所述权重定点化步骤。
或者,所述权重量化步骤和所述数据量化步骤可以交替进行。按照输入数据被处理的顺序,在所述权重量化步骤完成所述卷积层(CONV层)、全连层(FC层)、CONCAT层的当前一层的定点化之后、在开始下一层的定点化之前,对该层的输出执行数据量化步骤。
根据本发明的一个实施例,还额外包括第四步骤:在第三步骤之后,输出所述CONV层、FC层、CONCAT层中各个层的输出的定点化范围。
定点后的微调方案
图4和图7分别描述了针对简单串联网络和复杂神经网络的动态定点量化方案。但本发明的发明人发现,网络精度在定点过后会有所下降。在网络层数变深或者网络被设计用来解决回归问题的情况下,网络性能会严重退化。有鉴于此,本发明的发明人通过使用训练数据训练,能够进一步微调定点过后的网络,取得优于直接定点神经网络的性能。
图8示出了根据本发明一个实施例的神经网络调整方案的例子。图8的上部所示的神经网络量化流程与图4的大致相同。与图4所示不同的是,图8还包括下部的微调分支,优选可以包括如下步骤:
第一,网络浮点化步骤,将在上部定点化的多个层转为浮点数以便将CNN转换回浮点数CNN。
根据本发明的一个实施例,在上部定点化的可以是该CNN中的所有层,例如,图3中全部的CONV层和FC层。因此,在执行该网络浮点化步骤时,可以将上述定点化的层全部强制浮点化。
根据本发明的另一个实施例,定点化的可以仅仅是CNN中的部分层。可以根据实际的需求(例如,精度需求、硬件资源状况等),选择神经网络中适于定点化的层。例如,在一个实施例中,可以将诸如CONV层定点化,但保持所有FC层的浮点化。而在执行该网络浮点化步骤时,可以仅强制浮点化之前被定点化的部分层。
第二,权重微调步骤,通过使用训练数据进行训练,微调该浮点数CNN中至少一层的权重参数。
在一个实施例中,选择已在上部定点化并在前一步骤被重新定点化的层进行微调。例如,可以对CNN中的各个CONV层进行微调。在其他实施例中,也可以微调在前一直保持为浮点化的层。
在一个实施例中,上述微调可以是训练数据输入网络,并且根据相应得到的表示了实际结果和真值结果之间差异的误差函数,使用BP算法调整该浮点数CNN中至少一层的参数。倘若连续两次微调得到的整体权重参数变化小,则指示各层的权重参数已经调整至(或者接近)最优值,因此可以结束上述微调。
通过将定点过后的网络(或其部分层)强制转化为浮点数,然后在此浮点数网络的基础对网络进行微调,能够得到相比于原始浮点网络,分布上更接近最优值的参数。这时,经过微调的网络参数仍然是浮点数。
在随后的网络实际运行中可以直接使用这些浮点化的网络参数。然而,优选将浮点数CNN中的多个层的权重参数重新定点化。图9示出了根据本发明另一个实施例的神经网络调整方案的例子。与图8不同的是,下部的微调部分在图9中变为右侧分支,并且经过该右侧分支浮点化微调的网络可以使用图中左侧的分支进行重新定点,以得到重新定点的网络。这一浮点化微调以及重新定点的过程同样可以使用误差函数由bp算法找出最优或接近最优的值。类似地,倘若连续两次微调和定点操作之间的权重参数(例如,各层权重之和或其平均)变小,则意味着已经找出各层权重的优化值(此时为定点值),于是便能够结束图9的操作,并进行后续的操作。
该重新定点的网络与在前的新浮点网络的残差比原始定点网络和原始浮点网络之间的残差更小。这样,在新浮点网络和原始浮点网络性能接近的情况下,重新定点化的网络(微调后)会比原始定点化网络(微调前)具备更好的性能,并且仍然具备定点化网络简化计算的优良性能。
由于训练过程中采用浮点数,但在前向过程中却使用定点数,因此在根据图9的网络中,训练和运行数据的表示有差异,这就使得良好的训练结果有时并不能代表良好的实际运行结果。针对这种情况,本发明还可以优选地包括图10的操作。在一个实施例中,图9的后续操作包括图10的操作,由此得到一个完整的优选方案。
在网络训练的过程中,可以筛选出少数几个层作为关键层,并且保持这几个层在训练过程中始终使用浮点数。在一个实施例中,关键层可以是网络中的FC层。这些FC层可以在网络中的CONV层进行定点化、浮点化微调、再定点化的过程中始终保持浮点。在CONV层的权重参数调整完毕之后,再对这些FC层进行调整。在随后的实际使用网络的过程中,仍然保证这些FC层使用的是浮点数。
根据图10的实施例能够保证在训练和实际运行的过程的数据表示没有差异,使得训练结果的好坏能够准确预测运行结果的好坏,由此进一步提升网络的性能。
可以理解,包括CONCAT层或是带有其他分支的复杂人工神经网络同样可以利用本发明的定点化后微调的方法。虽然图11直接示出了应用于复杂网络的优选实施例,但是本领域技术人员显见的是,类似图8和图9的微调实施例也可以用于复杂人工神经网络,在此不再赘述。
定点后微调方案的装置实现
根据本发明的定点后微调方案也可由装置实现。图12示出了用于实现本发明技术方案的一种调整ANN的装置。ANN至少包括两个或更多个卷积层(CONV层)以及至少一个全连接层(FC层)。该装置1200包括网络定点化装置1210、网络浮点化装置1220和权重微调装置1230。
网络定点化装置1210对网络多个层的输出的数值范围和权重参数进行定点化。网络浮点化装置1220将定点化的所述多个层转为浮点数以便将ANN转换回浮点数ANN。权重微调装置1230通过使用训练数据进行训练,微调浮点数ANN中至少一层的权重参数。
在一个实施例中,权重微调装置1230微调的是之前从定点化转换回浮点化的多个层的权重。
在一个实施例中,该装置1200还优选地包括重新定点化装置1240。重新定点化装置1240在微调之后将浮点化的多个层的权重参数重新定点化。
在一个实施例中,该神经网络包括至少一个浮点数层,优选为FC层,例如,一个卷积神经网络末端的所有FC层。这一个或多个层的其输出的数值范围和/或参数始终保持为浮点数。浮点数层可由权重微调装置1230微调,也可以在重新定点化装置1240定点化那些被定点化再浮点化的层之后,由浮点数层微调装置1250进行微调。优选地,该权重微调装置1230和浮点数层微调装置1250可由同一模块实现。
在实际应用中,上述各个功能模块可由处理器实现。例如,在如图2所示的结构中,可由通用处理系统对在可编程逻辑模块(例如,FPGA)上实现的人工神经网络进行调整,由此得到技术简化且性能优化的适于小型化实现的人工神经网络。
此外,应当理解,本发明的方案适用于各种形式的人工神经网络。不仅包括简单的串联连接的网络,还包括具有CONCAT级联操作的、带有分支的人工神经网络,以及其他形式的神经网络。此外,CONCAT操作也应当作为广义来理解,即,把不同的子网络(或,网络分支)组合为一个网络的操作。
此外,本发明说明书和权利要求中的“多个”是指两个或两个以上。
需要说明的是,本说明书中的各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解的是,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (17)

1.一种调整人工神经网络ANN的方法,其中所述ANN至少包括:两个或更多个卷积层CONV层以及至少一个全连接层FC层,所述方法包括:
网络定点化步骤,对所述ANN中的多个层的输出的数值范围和权重参数进行定点化以得到定点化的ANN;
网络浮点化步骤,将定点化的所述多个层转为浮点数以便将所述ANN转换回浮点数ANN;以及
权重微调步骤,通过使用训练数据进行训练,微调所述浮点数ANN中至少一层的权重参数,
其中,所述ANN还包括至少一个级联层CONCAT层,其中,所述网络定点化步骤包括:
CONCAT层定点化步骤,对每个CONCAT层的输出的数值范围和权重参数进行定点化;
子网络确定步骤,确定所述ANN中的各个子网络,每个子网络以CONCAT层作为最后一层,其中每个CONCAT层修改前一级多个层的输出BLOB1、BLOB2、…BLOBn的内存地址以将所述BLOB1、BLOB2、…BLOBn合并为一个输出;
前级修改步骤,基于CONCAT层的输出的定点化范围,修改所述CONCAT层的前一级各个层的输出的定点化范围,
其中,定点化的所述多个层包括所述ANN中的两个或更多个卷积层以及至少一个CONCAT层中的每一层,
其中,所述权重微调步骤微调的所述至少一层包括所述CONCAT层,并且在权重微调步骤之后执行所述CONCAT层定点化步骤、所述子网络确定步骤以及所述前级修改步骤。
2.如权利要求1所述的调整人工神经网络ANN的方法,其中,所述权重微调步骤包括:
通过使用训练数据进行训练,微调所述多个层的浮点化权重参数。
3.如权利要求1所述的调整人工神经网络ANN的方法,还包括:
在权重微调步骤之后的重新定点化步骤,将浮点数ANN中的所述多个层的权重参数重新定点化。
4.如权利要求3所述的调整人工神经网络ANN的方法,其中,所述ANN包括至少一个浮点数层,其输出的数值范围和/或参数始终保持为浮点数。
5.如权利要求4所述的调整人工神经网络ANN的方法,其中,所述至少一个浮点数层是所述至少一个FC层。
6.如权利要求4所述的调整人工神经网络ANN的方法,其中,所述权重微调步骤包括:
通过使用训练数据进行训练,微调所述至少一个浮点数层的浮点化权重参数。
7.如权利要求4所述的调整人工神经网络ANN的方法,还包括:
在重新定点化步骤之后的浮点数层微调步骤,通过使用训练数据进行训练,微调所述至少一个浮点数层的权重参数。
8.如权利要求1所述的调整人工神经网络ANN的方法,其中,在所述权重微调步骤中,在现有值的邻域寻找权重参数的优化值。
9.如权利要求1所述的调整人工神经网络ANN的方法,其中,根据两次连续微调之间微调层的权重参数的变化变小,判断所述权重微调步骤的完成。
10.如权利要求1所述 的调整人工神经网络ANN的方法,对所述多个层的权重参数进行定点化包括:针对所述多个层中的每一层的权重参数动态地选取定点化范围,该定点化范围在当前一层内部不变。
11.如权利要求1所述的调整人工神经网络ANN的方法,其中,所述网络定点化步骤包括如下之一:
在对所述输出的数值范围进行定点化之前,对所述多个层中的每一层完成所述权重定点化;或者
所述输出的数值范围定点化和所述权重定点化交替进行,其中在所述权重定点化步骤完成所述多个层的当前一层的定点化之后、在开始下一层的定点化之前,对当前一层的输出执行数值范围的定点化。
12.一种调整人工神经网络ANN的装置,其中所述ANN至少包括:两个或更多个卷积层CONV层以及至少一个全连接层FC层,所述装置包括:
网络定点化装置,对所述ANN中的多个层的输出的数值范围和权重参数进行定点化以得到定点化的ANN;
网络浮点化装置,将定点化的所述多个层转为浮点数以便将所述ANN转换回浮点数ANN;以及
权重微调装置,通过使用训练数据进行训练,微调所述浮点数ANN中至少一层的权重参数,
其中,所述ANN还包括至少一个级联层CONCAT层,其中,所述网络定点化装置包括:
CONCAT层定点化装置,对每个CONCAT层的输出的数值范围和权重参数进行定点化;
子网络确定装置,确定所述ANN中的各个子网络,每个子网络以CONCAT层作为最后一层,其中CONCAT层修改前一级多个层的输出BLOB1、BLOB2、…BLOBn的内存地址以将所述BLOB1、BLOB2、…BLOBn合并为一个输出;
前级修改装置,基于CONCAT层的输出的定点化范围,修改所述CONCAT层的前一级各个层的输出的定点化范围,
其中,定点化的所述多个层包括所述ANN中的两个或更多个卷积层以及至少一个CONCAT层中的每一层,
其中,所述权重微调装置微调的所述至少一层包括所述CONCAT层,并且在权重微调装置执行操作之后,所述CONCAT层定点化装置、所述子网络确定装置以及所述前级修改装置执行操作。
13.如权利要求12所述的调整人工神经网络ANN的装置,其中,所述权重微调装置微调所述多个层的浮点化权重参数。
14.如权利要求12所述的调整人工神经网络ANN的装置,还包括:
重新定点化装置,在所述权重微调装置微调之后将浮点数ANN中的所述多个层的权重参数重新定点化。
15.如权利要求14所述的调整人工神经网络ANN的装置,其中,所述ANN包括至少一个浮点数层,其输出的数值范围和/或参数始终保持为浮点数。
16.如权利要求15所述的调整人工神经网络ANN的装置,其中,所述至少一个浮点数层是所述至少一个FC层。
17.如权利要求15所述的调整人工神经网络ANN的装置,还包括:
浮点数层微调装置,在重新定点化装置重新定点化之后通过使用训练数据进行训练,微调所述至少一个浮点数层的权重参数。
CN201611033156.5A 2016-11-01 2016-11-01 人工神经网络定点化后的微调方法和装置 Active CN108009625B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611033156.5A CN108009625B (zh) 2016-11-01 2016-11-01 人工神经网络定点化后的微调方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611033156.5A CN108009625B (zh) 2016-11-01 2016-11-01 人工神经网络定点化后的微调方法和装置

Publications (2)

Publication Number Publication Date
CN108009625A CN108009625A (zh) 2018-05-08
CN108009625B true CN108009625B (zh) 2020-11-06

Family

ID=62048541

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611033156.5A Active CN108009625B (zh) 2016-11-01 2016-11-01 人工神经网络定点化后的微调方法和装置

Country Status (1)

Country Link
CN (1) CN108009625B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110555450B (zh) * 2018-05-31 2022-06-28 赛灵思电子科技(北京)有限公司 人脸识别神经网络调整方法和装置
CN110555508B (zh) * 2018-05-31 2022-07-12 赛灵思电子科技(北京)有限公司 人工神经网络调整方法和装置
CN110598723B (zh) * 2018-06-13 2023-12-12 赛灵思电子科技(北京)有限公司 人工神经网络调整方法和装置
CN110929858A (zh) * 2018-09-20 2020-03-27 耐能智慧股份有限公司 算数框架系统及操作浮点至定点算数框架的方法
US11663464B2 (en) * 2018-09-20 2023-05-30 Kneron (Taiwan) Co., Ltd. Deep neural network with low-precision dynamic fixed-point in reconfigurable hardware design
WO2020097837A1 (en) 2018-11-15 2020-05-22 Lingdong Technology (Beijing) Co.Ltd System and method for real-time supervised machine learning in on-site environment
CN109359727B (zh) * 2018-12-07 2022-01-11 北京字节跳动网络技术有限公司 神经网络的结构确定方法、装置、设备及可读介质
CN111353517B (zh) * 2018-12-24 2023-09-26 杭州海康威视数字技术股份有限公司 一种车牌识别方法、装置及电子设备
CN109711358B (zh) * 2018-12-28 2020-09-04 北京远鉴信息技术有限公司 神经网络训练方法、人脸识别方法及系统和存储介质
CN111695671B (zh) * 2019-03-12 2023-08-08 北京地平线机器人技术研发有限公司 训练神经网络的方法及装置、电子设备
CN110070867B (zh) * 2019-04-26 2022-03-11 珠海普林芯驰科技有限公司 语音指令识别方法、计算机装置及计算机可读存储介质
CN110298438B (zh) * 2019-07-05 2024-04-26 北京中星微电子有限公司 神经网络模型的调整方法和调整装置
WO2021016932A1 (zh) * 2019-07-31 2021-02-04 深圳市大疆创新科技有限公司 数据处理方法、装置及计算机可读存储介质
CN110472700B (zh) * 2019-10-14 2020-06-16 深兰人工智能芯片研究院(江苏)有限公司 一种基于卷积神经网络的参数填充方法与装置
US11797850B2 (en) 2020-07-09 2023-10-24 Lynxi Technologies Co., Ltd. Weight precision configuration method and apparatus, computer device and storage medium
CN111831356B (zh) * 2020-07-09 2023-04-07 北京灵汐科技有限公司 权重精度配置方法、装置、设备及存储介质
CN112396178A (zh) * 2020-11-12 2021-02-23 江苏禹空间科技有限公司 一种提高cnn网络压缩效率的方法
CN112561933A (zh) * 2020-12-15 2021-03-26 深兰人工智能(深圳)有限公司 图像分割方法及装置
CN112541438A (zh) * 2020-12-15 2021-03-23 深兰人工智能(深圳)有限公司 文本识别方法及装置
CN113026457B (zh) * 2021-03-23 2022-08-12 广联达科技股份有限公司 道路施工的标段确定方法及确定装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101847087B (zh) * 2010-04-28 2012-03-28 中国科学院自动化研究所 一种支持定浮点可重构的横向求和网络结构
US8743493B1 (en) * 2013-01-16 2014-06-03 Lsi Corporation Fixed-point processing using quantization levels based on floating-point processing
CN104346440B (zh) * 2014-10-10 2017-06-23 浙江大学 一种基于神经网络的跨媒体哈希索引方法
US9563825B2 (en) * 2014-11-20 2017-02-07 Adobe Systems Incorporated Convolutional neural network using a binarized convolution layer
CN105760933A (zh) * 2016-02-18 2016-07-13 清华大学 卷积神经网络的逐层变精度定点化方法及装置

Also Published As

Publication number Publication date
CN108009625A (zh) 2018-05-08

Similar Documents

Publication Publication Date Title
CN108009625B (zh) 人工神经网络定点化后的微调方法和装置
CN107688855B (zh) 针对于复杂神经网络的分层量化方法与装置
US11847561B2 (en) Adaptive artificial neural network selection techniques
JP7218805B2 (ja) ソフトクロスエントロピー損失を用いたセマンティックセグメンテーション
US10643124B2 (en) Method and device for quantizing complex artificial neural network
RU2747445C1 (ru) Устройство обработки данных, способ обработки данных и носитель данных
US20180197084A1 (en) Convolutional neural network system having binary parameter and operation method thereof
CN110097084B (zh) 通过投射特征训练多任务学生网络的知识融合方法
CN113469283A (zh) 一种图像分类方法、图像分类模型的训练方法及设备
Faraone et al. Customizing low-precision deep neural networks for FPGAs
CN111598238A (zh) 深度学习模型的压缩方法及装置
US20220092391A1 (en) System and method of using neuroevolution-enhanced multi-objective optimization for mixed-precision quantization of deep neural networks
Lahoud et al. Self-binarizing networks
CN115546601A (zh) 一种多目标识别模型及其构建方法、装置及应用
US9443168B1 (en) Object detection approach using an ensemble strong classifier
US11500767B2 (en) Method and device for determining a global memory size of a global memory size for a neural network
KR102374525B1 (ko) 키워드 스폿팅 장치, 방법 및 컴퓨터 판독 가능한 기록매체
CN116257751A (zh) 基于在线协作与特征融合的蒸馏方法与装置
CN113743593A (zh) 神经网络量化方法、系统、存储介质及终端
Chu et al. Mixed-precision quantized neural network with progressively decreasing bitwidth for image classification and object detection
CN112149805A (zh) 基于框架搜索的深度神经网络的加速与压缩方法及系统
Kollek et al. Improving neural network architecture compression by multi-grain pruning
US20240185033A1 (en) Method for training graph neural network, apparatus for processing pre-trained graph neural network, and storage medium storing instructions to perform method for training graph neural network
US20230409869A1 (en) Process for transforming a trained artificial neuron network
CN117010452A (zh) 神经网络搜索方法、装置、设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180606

Address after: 100083, 17 floor, four building four, 1 Wang Zhuang Road, Haidian District, Beijing.

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

Address before: 100083, 8 floor, 807 building, four building, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant before: Beijing insight Technology Co., Ltd.

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

Effective date of registration: 20190926

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

Applicant after: XILINX INC

Address before: 100083, 17 floor, four building four, 1 Wang Zhuang Road, Haidian District, Beijing.

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

GR01 Patent grant
GR01 Patent grant