Nothing Special   »   [go: up one dir, main page]

CN112651485A - 识别图像的方法和设备以及训练神经网络的方法和设备 - Google Patents

识别图像的方法和设备以及训练神经网络的方法和设备 Download PDF

Info

Publication number
CN112651485A
CN112651485A CN202011086791.6A CN202011086791A CN112651485A CN 112651485 A CN112651485 A CN 112651485A CN 202011086791 A CN202011086791 A CN 202011086791A CN 112651485 A CN112651485 A CN 112651485A
Authority
CN
China
Prior art keywords
data
layer
global
local
current 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.)
Pending
Application number
CN202011086791.6A
Other languages
English (en)
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.)
Samsung Electronics Co Ltd
Korea Advanced Institute of Science and Technology KAIST
Original Assignee
Samsung Electronics Co Ltd
Korea Advanced Institute of Science and Technology KAIST
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 Samsung Electronics Co Ltd, Korea Advanced Institute of Science and Technology KAIST filed Critical Samsung Electronics Co Ltd
Publication of CN112651485A publication Critical patent/CN112651485A/zh
Pending legal-status Critical Current

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/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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
    • 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
    • G06N3/045Combinations of networks
    • 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
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/95Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Multimedia (AREA)
  • Image Analysis (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

公开识别图像的方法和设备以及训练神经网络的方法和设备。所述方法包括:获得待识别的图像数据作为神经网络的输入数据;针对神经网络内的至少一个层中的当前层,通过对当前层的输入数据执行当前层的操作来产生当前层的输出数据;基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据;将局部量化数据存储在存储器中;基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据;将全局量化数据作为下一层的输入数据提供给下一层,以执行下一层的操作;以及基于神经网络的最终层的操作产生的输出数据,输出图像识别结果。

Description

识别图像的方法和设备以及训练神经网络的方法和设备
本申请要求于2019年10月11日在韩国知识产权局提交的第10-2019-0126298号韩国专利申请的权益,所述韩国专利申请的公开通过引用完整地包含于此。
技术领域
本公开涉及识别图像的方法和设备以及训练用于识别图像的神经网络的方法和设备。
背景技术
神经网络被广泛地用于图像识别技术。神经网络是基于使用生物大脑作为模型的计算架构的计算系统。根据神经网络技术的最新发展,在各种类型的电子系统中通过使用神经网络设备来分析输入图像数据,并提取有效信息。
神经网络设备对复杂的输入图像数据执行大的计算量。因此,需要高效地处理网络操作的技术,以允许神经网络设备分析输入图像数据并实时提取信息。特别地,低功率和高性能嵌入式系统(诸如,智能电话)具有有限的资源,因此,需要用于在减少处理复杂的输入图像数据所需的资源的数量的同时最小化各种处理操作中的准确度损失的技术。
发明内容
本公开的各种实施例提供一种用于量化神经网络的数据的方法和设备。还提供一种计算机可读记录介质,所述计算机可读记录介质上记录有用于在计算机上执行以上方法的程序。
另外的方面将部分地在下面的描述中阐述,并且部分地从描述中将是清楚的,或者可通过公开的所呈现的实施例的实践而得知。
根据本公开的一个方面,一种识别图像的方法包括:获得待识别的图像数据作为神经网络的输入数据;针对神经网络内的至少一个层中的当前层,通过对当前层的输入数据执行当前层的操作来产生当前层的输出数据,其中,当前层的输出数据包括多个输出通道;基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;将局部量化数据存储在存储器中;基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;将全局量化数据作为下一层的输入数据提供给下一层,以执行下一层的操作;以及基于神经网络的最终层的操作产生的输出数据,输出图像识别结果。
获得局部量化数据的步骤包括:通过基于与前一层对应的全局最大值,针对每个输出通道恢复由当前层的操作产生的输出数据,来获得全局恢复数据,与前一层对应的全局最大值基于通过恢复由前一层的操作产生的输出数据获得的数据而生成。
获得局部量化数据的步骤包括:通过基于作为每个输出通道的全局恢复数据的最大值的局部最大值,对每个输出通道的全局恢复数据进行初次量化,来获得局部量化数据,使得每个输出通道的全局恢复数据的最大值被量化为相同值。
获得全局量化数据的步骤包括:通过基于作为每个输出通道的全局恢复数据的最大值的局部最大值,恢复每个输出通道的局部量化数据来获得局部恢复数据,使得局部量化数据被恢复为初次量化之前的数据。
获得全局量化数据的步骤包括:通过基于作为局部恢复数据的最大值的全局最大值,对每个输出通道的局部恢复数据进行二次量化来获得全局量化数据,使得局部恢复数据被量化到相同的尺度。
获得局部量化数据的步骤还包括:基于与前一层对应的全局最大值恢复由当前层的操作产生的输出数据;以及通过对恢复的数据执行池化操作、排列归一化或使用激活函数的激活,来获得全局恢复数据。
所述方法还包括:存储通过计算当前层的所有输出通道中的每个输出通道的全局恢复数据的最大值而获得的局部最大值;以及将与当前层对应的全局最大值存储在寄存器中,与当前层对应的全局最大值通过计算局部最大值中的最大值而获得。
针对每个输出通道顺序地执行获得局部量化数据的步骤。
当当前层为神经网络的第一层时,通过对待识别的图像数据执行第一层的操作来产生第一层的输出数据,当当前层为除了神经网络的第一层之外的层时,通过对基于前一层的输出数据获得的全局量化数据执行当前层的操作来产生当前层的输出数据。
根据本公开的另一方面,一种训练用于识别图像的神经网络的方法包括:获得训练图像数据;基于训练图像数据对神经网络执行训练,其中,在训练的每次迭代中,针对神经网络内的至少一个层中的当前层,基于当前层的输出数据获得下一层的输入数据的步骤包括:基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,当前层的输出数据包括多个输出通道,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;将局部量化数据存储在存储器中;基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;以及将全局量化数据作为下一层的输入数据提供给下一层,以执行下一层的操作。
当前层的操作和下一层的操作基于反向传播,并且当前层的操作的输出数据和下一层的操作的输入数据包括损失梯度和权重梯度中的任意一种。
当当前层为神经网络的第一层时,通过对训练图像数据执行当前层的操作来产生第一层的输出数据;当当前层为除了神经网络的第一层之外的层时,通过对基于前一层的输出数据获得的全局量化数据执行当前层的操作来产生当前层的输出数据。
根据本公开的另一方面,一种识别图像的设备包括:存储器;以及处理器,被配置为通过执行至少一个程序来基于获得的图像数据对神经网络执行推断,以执行图像识别。处理器还被配置为:获得待识别的图像数据作为神经网络的输入数据;针对神经网络内的至少一个层中的当前层,通过对当前层的输入数据执行当前层的操作来产生当前层的输出数据,其中,当前层的输出数据包括多个输出通道;基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;将局部量化数据存储在存储器中;基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;将全局量化数据作为下一层的输入数据提供给下一层,以执行下一层的操作;以及基于神经网络的最终层的操作产生的输出数据,输出图像识别结果。
当当前层为神经网络的第一层时,通过对待识别的图像数据执行第一层的操作来产生第一层的输出数据,当当前层为除了神经网络的第一层之外的层时,通过对基于前一层的输出数据获得的全局量化数据执行当前层的操作来产生当前层的输出数据。
处理器还被配置为:通过基于与前一层对应的全局最大值,针对每个输出通道恢复由当前层的操作产生的输出数据,来获得全局恢复数据,与前一层对应的全局最大值基于通过恢复由前一层的操作产生的输出数据获得的数据而生成。
处理器还被配置为:通过基于作为每个输出通道的全局恢复数据的最大值的局部最大值,对每个输出通道的全局恢复数据进行初次量化,来获得局部量化数据,使得每个输出通道的全局恢复数据的最大值被量化为相同值。
处理器还被配置为:通过基于作为每个输出通道的全局恢复数据的最大值的局部最大值,恢复每个输出通道的局部量化数据来获得局部恢复数据,使得局部量化数据被恢复为初次量化之前的数据。
处理器还被配置为:通过基于作为局部恢复数据的最大值的全局最大值,对每个输出通道的局部恢复数据进行二次量化来获得全局量化数据,使得局部恢复数据被量化到相同的尺度。
处理器还被配置为:基于与前一层对应的全局最大值恢复由当前层的操作产生的输出数据;以及通过对恢复的数据执行池化操作、排列归一化或使用激活函数的激活,来获得全局恢复数据。
处理器还被配置为:存储通过计算当前层的所有输出通道中的每个输出通道的全局恢复数据的最大值而获得的局部最大值;以及将与当前层对应的全局最大值存储在寄存器中,与当前层对应的全局最大值通过计算局部最大值中的最大值而获得。
处理器还被配置为:顺序地获得每个输出通道的局部量化数据。
根据本公开的另一方面,一种训练用于识别图像的神经网络的设备包括:存储器;以及处理器,被配置为:获得训练图像数据,基于训练图像数据对神经网络执行训练。处理器还被配置为:在训练的每次迭代中,针对神经网络内的至少一个层中的当前层,基于当前层的输出数据获得下一层的输入数据,其中,所述获得的步骤包括:基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,当前层的输出数据包括多个输出通道,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;将局部量化数据存储在存储器中;基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;以及将全局量化数据作为下一层的输入数据提供给下一层,以执行下一层的操作。
处理器还被配置为:基于反向传播执行当前层的操作和下一层的操作,并且当前层的操作的输出数据和下一层的操作的输入数据包括损失梯度和权重梯度中的任意一种。
根据本公开的一个方面,一种量化神经网络的数据的方法包括:基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;将局部量化数据存储在存储器中以执行下一层的操作;基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;以及提供全局量化数据作为用于下一层的操作的输入数据。
根据本公开的另一方面,一种计算机可读记录介质在其上记录有用于在计算机上执行所述方法的程序。
根据本公开的另一方面,一种用于量化神经网络的数据的设备包括存储器和处理器,存储器中存储至少一个程序,并且处理器被配置为:通过执行所述至少一个程序来量化神经网络的数据,其中,处理器还被配置为:基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;将局部量化数据存储在存储器中以执行下一层的操作;基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;以及提供全局量化数据作为用于下一层的操作的输入数据。
附图说明
从以下结合附图的详细描述,公开的特定实施例的以上和其他方面、特征和优点将更加清楚,在附图中:
图1是用于描述根据本公开的实施例的神经网络的示例的示图;
图2是用于描述根据本公开的实施例的神经网络的架构的示例的示图;
图3是用于描述根据本公开的实施例的前向传播和反向传播的示例的示图;
图4是用于描述根据本公开的实施例的在前向传播和反向传播中的卷积层的操作的示例的示图;
图5是用于描述根据本公开的实施例的用于识别图像的神经网络学习装置和神经网络推断装置的示例的示图;
图6是用于描述根据本公开的实施例的量化神经网络的数据的示例的示图;
图7是示出根据本公开的实施例的量化神经网络的数据的方法的示例的流程图;
图8是示出根据本公开的实施例的存储局部最大值和全局最大值的示例的流程图;
图9是用于描述根据本公开的实施例的量化神经网络的数据的示例的示图;
图10是用于描述根据本公开的实施例的获得局部最大值和全局最大值的示例的示图;
图11是用于描述根据本公开的实施例的针对每个输出通道的初次量化和二次量化的示例的示图;
图12是示出根据本公开的实施例的使用图7中所示的方法的神经网络的数据的量化算法的示图;
图13是用于描述根据本公开的实施例的量化神经网络的数据的示例的示图;以及
图14是根据实施例的用于识别图像的神经网络设备的示例的框图。
具体实施方式
现在将详细参照实施例,实施例的示例在附图中示出,其中,相同的参考标号始终表示相同的元件。在这点上,本实施例可具有不同的形式,并且不应被解释为限于在此阐述的描述。因此,以下仅通过参照附图来描述实施例以解释多个方面。如在此使用的,术语“和/或”包括相关联的所列项中的一个或多个的任何组合和所有组合。当诸如“……中的至少一个”的表述在一列元素之后时,修饰整列元素,而不修饰列中的单个元素。
虽然在实施例中使用的术语利用目前普遍使用的通用术语来选择,但是术语可根据本领域普通技术人员的意图、司法先例或新技术的引入而变化。另外,在具体情况下,申请人可自愿选择术语,在这种情况下,术语的含义在相应的描述部分公开。因此,说明书中使用的术语不应由术语的简单名称来定义,而是由术语的含义和贯穿说明书的内容来定义。
贯穿本公开的说明书的整体,如果假设某个部分包括某个组件,则除非描写了与对应组件相反的特定含义,否则术语“包括”表示对应组件还可包括其他组件。在实施例中使用的诸如“单元”等的术语指示用于处理至少一个功能或操作的单元,并且可以以硬件、软件或者以硬件和软件的组合来实现。
在下文中,将参照附图详细描述实施例。然而,实施例可以以各种形式实现,并且不限于在此描述的示例。
在下文中,将参照附图详细描述实施例。
图1是用于描述根据本公开的实施例的神经网络的示例的示图。
图1中示出的神经网络1可以是但不限于深度神经网络(DNN)的示例。例如,神经网络1可以是包括输入层layer1、多个隐藏层layer2、layer3、layer4和layer5以及输出层layer6的DNN。
当利用DNN实现神经网络1时,神经网络1可包括能够处理有效信息的许多层。因此,与利用包括单层的神经网络相比,利用神经网络1,可处理更复杂的数据集。同时,神经网络1在图1中被示出为包括六个层,但是该示出仅仅是示例。换句话说,神经网络1可包括比图1中所示的层多或少的层。也就是说,神经网络1可包括与图1所示的层不同的各种结构的层。
图2是用于描述根据本公开的实施例的神经网络的架构的示例的示图。
虽然在图2中示出了神经网络2中的一些卷积层,但是除了所示出的卷积层,神经网络2还可包括池化层、全连接层等。
神经网络2可被实现为具有输出特征图的多个层的架构。在一个示例中,神经网络2可以是用于对象识别(诸如,图像识别)的神经网络。在神经网络2中,利用被称为核的滤波器对输入图像执行操作,其结果是,特征图被输出至下一层。使用另一滤波器对作为至下一层的输入特征图的输出特征图再次执行操作,产生新的输出特征图。当像这样重复执行操作时,可通过神经网络2最终输出关于输入图像的特征的识别结果。
例如,当具有24×24像素大小的输入图像被输入到图2的神经网络2时,通过利用第一滤波器的操作,输入图像可被输出为四个通道的特征图,每个通道的特征图具有20×20像素大小。也就是说,可针对四个输出通道中的每个输出通道输出特征图。可通过子采样(或池化)操作将四个通道的输出特征图输出为四个通道的具有10×10像素大小的特征图。其后,可通过使用相应的滤波器的重复操作和子采样(或池化)操作来减小特征图的大小,最后,可输出均具有1×1像素大小的特征。在神经网络2中,可在若干层中重复执行所述操作和子采样(或池化)操作,以便从输入图像滤波并输出可表示整个输入图像的鲁棒特征,并且通过输出的最终特征得到作为非限制性示例的输入图像的识别结果。在神经网络2中,可在至少一个层中执行将当前层的输出数据进行量化以提供给下一层作为下一层的输入数据的处理。在这样的处理中,浮点格式的数据可被量化为定点格式,或者定点格式的数据可经过运算处理然后被量化回定点格式。基于以上内容,理解在此讨论的示例实施例包括具有神经网络2的操作中的各种组合中的一个或多个或所有的这样的层、级、边缘等的实施例。
参照图3和图4,将描述前向传播和反向传播。
图3是用于描述根据本公开的实施例的前向传播和反向传播的示例的示图。
在图3中,示出了卷积层3的一部分。图3的卷积层3可包括输入特征图X、滤波器F和输出特征图O。
输入特征图X、滤波器F和输出特征图O可分别对应于输入激活(诸如,来自前一层的输出激活)、权重和输出激活。通过前向传播对输入特征图X和滤波器F执行卷积运算,产生输出特征图O。这样的卷积前向传播也被称为推断操作。
例如,可使用滑动窗口方案对滤波器F和输入特征图X进行卷积运算。更具体地讲,将第一窗口中的输入激活乘以权重,并且对乘积进行求和。第一窗口沿任意轴方向(例如,x轴、y轴或z轴)移动以形成第二窗口。将第二窗口中的输入激活乘以权重,并且对乘积进行求和。随着以这种方式连续地执行卷积运算,生成输出特征图O。
虽然在图3中示出了一个输入特征图X和一个滤波器F,但是可对多个输入特征图X和多个滤波器F执行卷积运算以生成输出特征图O。
一旦生成最终输出特征图,就可将最终输出特征图与预期结果进行比较,从而生成损失函数。可执行训练神经网络的处理以最小化损失函数的损失。
为了最小化损失函数的损失,损失梯度
Figure BDA0002720628830000091
可反向传播。损失梯度可表示激活的梯度。
对反向传播的损失梯度
Figure BDA0002720628830000092
和具有从滤波器F重新排列的元素的滤波器执行卷积运算,产生用于反向传播到前一层的损失梯度
Figure BDA0002720628830000093
对损失梯度
Figure BDA0002720628830000094
和输入特征图X执行卷积运算,产生权重梯度
Figure BDA0002720628830000095
图4是用于描述根据本公开的实施例的在前向传播和反向传播中的卷积层的操作的示例的示图。
可通过前向传播对输入特征图X和滤波器F执行卷积运算,产生输出特征图O。更具体地讲,一旦使用输入特征图X的激活和滤波器F的权重来执行乘法累加(MAC)运算,就可生成输出特征图O的激活。
例如,可使用等式1生成输入特征图
Figure BDA0002720628830000096
和滤波器
Figure BDA0002720628830000097
的输出特征图
Figure BDA0002720628830000098
[等式1]
o11=x11f11+x12f12+x21f21+x22f22
o12=x12f11+x13f12+x22f21+x23f22
o21=x21f11+x22f12+x31f21+x32f22
o22=x22f11+x23f12+x32f21+x33f22
xii指示输入特征图X的激活,fii指示滤波器F的权重,oii指示输出特征图O的结果激活(其中,i是大于0的整数)。
可对反向传播损失梯度
Figure BDA0002720628830000099
和具有重新排列的元素的滤波器F′进行卷积运算,产生用于反向传播到前一层的损失梯度
Figure BDA00027206288300000910
更具体地讲,一旦使用损失梯度
Figure BDA0002720628830000101
的元素和滤波器F'的权重来执行MAC操作,就可生成损失梯度
Figure BDA0002720628830000102
的元素。在一个示例中,可通过将滤波器F的元素旋转180°来生成滤波器F'。
例如,可使用等式2从反向传播损失梯度
Figure BDA0002720628830000103
和具有重新排列的元素的滤波器
Figure BDA0002720628830000104
生成用于反向传播到前一层的损失梯度
Figure BDA0002720628830000105
[等式2]
Figure BDA0002720628830000106
Figure BDA0002720628830000107
Figure BDA0002720628830000108
Figure BDA0002720628830000109
Figure BDA00027206288300001010
Figure BDA00027206288300001011
Figure BDA00027206288300001012
Figure BDA00027206288300001013
Figure BDA00027206288300001014
可对反向传播损失梯度
Figure BDA00027206288300001015
和输入特征图X执行卷积运算,产生权重梯度
Figure BDA00027206288300001016
更具体地讲,一旦使用损失梯度
Figure BDA00027206288300001017
的元素和输入特征图X的激活来执行MAC操作,就可生成权重梯度
Figure BDA0002720628830000111
的元素。
例如,可通过使用等式3从输入特征图
Figure BDA0002720628830000112
和从当前层反向传播的损失梯度
Figure BDA0002720628830000113
生成用于反向传播到前一层的权重梯度
Figure BDA0002720628830000114
[等式3]
Figure BDA0002720628830000115
Figure BDA0002720628830000116
Figure BDA0002720628830000117
Figure BDA0002720628830000118
图5是用于描述根据本公开的实施例的用于识别图像的神经网络学习装置和神经网络推断装置的示例的示图。
参照图5,神经网络学习装置51可以是具有各种处理功能(诸如,创建和训练(或学习)神经网络、量化神经网络的数据或重新训练神经网络的功能)的计算装置。例如,神经网络学习装置51可利用各种类型的装置(诸如,个人计算机(PC)、服务器装置、移动装置等)来实现。
神经网络学习装置51可通过基于训练图像数据重复训练(学习)给定的初始神经网络来创建训练的神经网络52。在训练的每次迭代中,浮点格式的数据可在训练处理中被量化为定点格式,或者定点格式的数据可经过运算处理然后被量化回定点格式。可针对神经网络内的至少一个层执行这样的量化处理。
神经网络学习装置51可将训练的神经网络52传递到诸如神经网络推断装置53的硬件加速器。神经网络推断装置53基于获得的图像数据对训练的神经网络52执行推断,以执行图像识别。神经网络推断装置53可包括在移动装置、嵌入式装置等中。作为用于驱动神经网络54的硬件的神经网络推断装置53可以以相对低的功率或低的性能来实现,因此可针对定点运算而不是浮点运算来适当地实现。神经网络推断装置53的功能不限于驱动神经网络54,并且可包括神经网络学习装置51的功能。在一个示例中,神经网络推断装置53可执行这里的训练操作,神经网络学习装置51可执行这里描述的推断操作。
神经网络推断装置53可对应于但不限于用于驱动神经网络的专用模块(诸如,神经处理器(NPU)、张量处理器(TPU)、神经引擎等)。神经网络推断装置53可包括在但不限于使用神经网络执行语音识别、图像识别等的自主车辆、机器人、智能电话、平板装置、增强现实(AR)装置、物联网(IoT)装置等中。
图6是用于描述根据本公开的实施例的量化神经网络的数据的示例的示图。
在驱动或训练神经网络时,可重复执行以下处理:由计算器61(也被称为MAC阵列)执行当前层的操作,量化作为操作的结果输出的数据,将量化的数据存储在存储器62中,以及读取存储在存储器62中的数据并将读取的数据输入到计算器61中,以用于至下一层的操作。
在前向传播中,由操作产生的输出数据可包括激活。在反向传播中,由操作产生的输出数据可包括损失梯度和权重梯度。
同时,在量化之前,由操作产生的输出数据可存储在用作高速缓存的片上存储器中。
包括在具有相对低的处理性能的智能电话、平板、可穿戴装置等中的神经网络推断装置可具有有限的片上存储器的空间。最后,为了通过具有有限资源的神经网络推断装置来驱动或训练神经网络,需要在充分减少由片上存储器使用的空间的同时量化数据。
在下文中,将参照图7至图8描述量化神经网络的数据的方法。
图7是示出根据本公开的实施例的量化神经网络的数据的方法的示例的流程图。
图7中示出的流程图可包括由稍后将参照图14描述的神经网络设备1400按时间顺序处理的操作。下面描述的事项可应用于神经网络设备1400。
在操作710中,神经网络设备1400的处理器1420可基于当前层的每个输出通道的局部最大值,对全局恢复数据进行初次(第一)量化,从而获得局部量化数据,全局恢复数据基于与前一层对应的全局最大值从当前层的操作的输出数据而恢复。
前一层和当前层可以是但不限于DNN的输入层、隐藏层和输出层等。前一层和当前层可以是但不限于卷积神经网络包括的层。前一层和当前层可以是但不限于卷积层、池化层、平坦化层、归一化层、全连接层等。
当神经网络设备1400通过前向传播驱动神经网络时,由当前层的操作产生的输出数据可包括激活。可选地,当神经网络设备1400通过反向传播训练神经网络时,由当前层的操作产生的输出数据可包括损失梯度或权重梯度。
处理器1420可基于与前一层对应的全局最大值恢复由当前层的操作产生的输出数据,从而生成全局恢复数据。数据恢复可表示在数据被反量化到量化之前的尺度(scale)。
处理器1420可基于与前一层对应的全局最大值来恢复由当前层的操作产生的输出数据,并且执行子操作(诸如,池化操作、排列归一化、使用激活函数的激活等),从而生成全局恢复数据。
处理器1420可将噪声添加到由当前层的操作产生的输出数据以生成全局恢复数据。通过对通过将噪声添加到输出数据而生成的全局恢复数据执行初次量化,可改善神经网络的学习性能。噪声可以是但不限于高斯噪声、均匀噪声、白噪声等。
与前一层对应的全局最大值可以是基于由前一层的操作产生的输出数据生成的值。例如,与前一层对应的全局最大值可以是当从前一层的操作产生的输出数据被恢复时恢复的输出数据中的最大值。
可基于等式4恢复由当前层的操作产生的输出数据。为了恢复由当前层的操作产生的输出数据,与前一层对应的全局最大值可用作等式4中的max(|x|),并且当前层的操作的输出数据可被用作maxqn(x)。
[等式4]
Figure BDA0002720628830000131
处理器1420可针对当前层的每个输出通道恢复由当前层的操作产生的输出数据。当针对当前层的每个输出通道恢复由当前层的操作产生的输出数据时,可针对当前层的每个输出通道生成全局恢复数据。可基于当前层的每个输出通道的单独的参考值来量化针对当前层的每个输出通道生成的全局恢复数据。
处理器1420可针对当前层的每个输出通道顺序地恢复由当前层的操作产生的输出数据。例如,在当前层包括三个输出通道时,处理器1420可在恢复第一输出通道的输出数据之后,恢复第二输出通道的输出数据,然后恢复第三输出通道的输出数据。
处理器1420可通过基于当前层的每个输出通道的局部最大值,对全局恢复数据进行初次量化来生成局部量化数据。基于当前层的每个输出通道的局部最大值的初次量化可表示基于当前层的每个输出通道的单独的参考值的量化。局部最大值可以是当前层的每个输出通道的全局恢复数据的最大值。
可基于等式5和等式6来量化全局恢复数据。为了对全局恢复数据进行初次量化,当前层的每个输出通道的局部最大值可被用作等式5,并且全局恢复数据可被用作x。在等式5和等式6中,n可指示用于量化的级别的比特的数量。
[等式5]
Figure BDA0002720628830000141
[等式6]
Figure BDA0002720628830000142
处理器1420可针对当前层的每个输出通道的全局恢复数据顺序地执行初次量化。例如,在当前层包括三个输出通道时,处理器1420可在量化第一输出通道的全局恢复数据之后,量化第二输出通道的全局恢复数据,然后量化第三输出通道的全局恢复数据。当针对每个输出通道顺序地量化全局恢复数据时,可减少片上存储器用于量化处理的资源的量。
处理器1420可针对当前层的每个输出通道顺序地执行关于由当前层的操作产生的输出数据的恢复和初次量化。例如,在当前层包括三个输出通道时,处理器1420可在恢复并量化第一输出通道的输出数据之后,恢复并量化第二输出通道的输出数据,然后恢复并量化第三输出通道的输出数据。
在操作720中,处理器1420可将局部量化数据存储在存储器中以执行下一层的操作。存储器可以是神经网络设备1400的存储器1410,也可以是包括在处理器1420中的片上存储器。
下一层可以是但不限于DNN的输入层、隐藏层和输出层等。下一层可以是但不限于卷积神经网络中包括的层。下一层可以是但不限于卷积层、池化层、平坦化层、归一化层、全连接层等。
在操作730中,处理器1420可基于与当前层对应的全局最大值,对局部恢复数据执行二次量化,从而获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复。
处理器1420可基于每个输出通道的局部最大值来恢复局部量化数据,从而生成局部恢复数据。可基于与初次量化中的局部最大值相同的局部最大值针对每个输出通道恢复局部量化数据。局部量化数据可通过基于每个输出通道的局部最大值被恢复而被反量化到量化之前的尺度。例如,局部恢复数据可与全局恢复数据相同。
可基于等式4来恢复局部量化数据。为了恢复局部量化数据,当前层的每个输出通道的局部最大值可被用作等式4的max(|x|),并且局部量化数据可被用作maxqn(x)。
处理器1420可针对当前层的每个输出通道顺序地恢复局部量化数据。例如,在当前层包括三个输出通道时,处理器1420可在恢复第一输出通道的局部量化数据之后,恢复第二输出通道的局部量化数据,然后恢复第三输出通道的局部量化数据。
处理器1420可基于与当前层对应的全局最大值对局部恢复数据执行二次量化,从而生成全局量化数据。
与当前层对应的全局最大值可以是全局恢复数据中的最大值。可基于当前层的每个输出通道的局部最大值来计算与当前层对应的全局最大值。例如,与当前层对应的全局最大值可以是当前层的所有输出通道的局部最大值之中的最大值。
可基于等式5和等式6对局部恢复数据进行二次量化。为了对局部恢复数据进行二次量化,与当前层对应的全局最大值可被用作等式5的max(|x|)。
处理器1420可针对当前层的每个输出通道顺序地对局部恢复数据执行二次量化。例如,在当前层包括三个输出通道时,处理器1420可在量化第一输出通道的局部恢复数据之后量化第二输出通道的局部恢复数据,然后量化第三输出通道的局部恢复数据。
处理器1420可针对当前层的每个输出通道顺序地执行关于局部量化数据的恢复和二次量化。例如,在当前层包括三个输出通道时,处理器1420可在恢复并量化第一输出通道的局部量化数据之后恢复并量化第二输出通道的局部量化数据,然后恢复并量化第三输出通道的局部量化数据。
在操作740中,处理器1420可提供全局量化数据作为用于下一层的操作的输入数据。
图8是示出根据本公开的实施例的存储局部最大值和全局最大值的示例的流程图。
在操作810中,处理器1420可将当前层的所有输出通道的局部最大值存储在处理器1420的寄存器中。例如,处理器1420可将局部最大值存储在寄存器文件中。
处理器1420可通过计算当前层的所有输出通道中的每个输出通道的全局恢复数据的最大值来获得局部最大值。
处理器1420可将局部最大值顺序地存储在寄存器中。例如,在当前层包括三个输出通道时,处理器1420可存储从第一输出通道的全局恢复数据计算的局部最大值,存储从第二输出通道的全局恢复数据计算的局部最大值,然后存储从第三输出通道的全局恢复数据计算的局部最大值。
处理器1420可读取存储在寄存器中的局部最大值,以在后续处理中恢复局部量化数据。
在操作820中,处理器1420可将与当前层对应的全局最大值(局部最大值之中的最大值)存储在寄存器中。
处理器1420可通过计算当前层的所有输出通道的局部最大值中的最大值来获得与当前层对应的全局最大值。
处理器1420可读取存储在寄存器中的全局最大值,以在后续处理中对局部恢复数据进行二次量化。
图9是用于描述根据本公开的实施例的量化神经网络的数据的示例的示图。
在神经网络中,计算器910(也可被称为“MAC阵列”)可执行卷积运算。下面描述的计算器可被包括在处理器1420的处理单元中。计算器910可在执行当前层的操作之后执行下一层的操作。由当前层的操作产生的输出数据可在通过初次量化和二次量化之后用于下一层的操作。
当神经网络通过前向传播进行操作时,由当前层的操作产生的输出数据940可包括激活。当神经网络通过反向传播来训练时,由当前层的操作产生的输出数据940可包括损失梯度或权重梯度。
处理器1420可基于与前一层对应的全局最大值来恢复输出数据940,从而生成全局恢复数据950。处理器1420可基于与前一层对应的全局最大值来恢复输出数据940,并且执行诸如池化操作、排列归一化、使用激活函数的激活等的子操作,从而生成全局恢复数据950。处理器1420可将噪声添加到输出数据940以生成全局恢复数据。
处理器1420可针对当前层的每个输出通道恢复输出数据940。处理器1420可针对当前层的每个输出通道顺序地恢复输出数据940。例如,在当前层包括n个输出通道时(n是大于1的自然数),处理器1420可在恢复第一输出通道的输出数据941之后,恢复第二输出通道的输出数据942,最后恢复第n输出通道的输出数据943。
处理器1420可从全局恢复数据950计算局部最大值Local Max#1、Local Max#2、……、Local Max#n。例如,在当前层包括n个输出通道时,处理器1420可计算第一输出通道的全局恢复数据951的最大值作为局部最大值Local Max#1,计算第二输出通道的全局恢复数据952的最大值作为局部最大值Local Max#2,最后计算第n输出通道的全局恢复数据953的最大值作为局部最大值Local Max#n。计算的局部最大值Local Max#1、Local Max#2、……、Local Max#n可存储在处理器1420的寄存器930中。
处理器1420可从局部最大值Local Max#1、Local Max#2、……、Local Max#n计算与当前层对应的全局最大值Global Max。例如,处理器1420可计算局部最大值Local Max#1、Local Max#2、……、Local Max#n中的最大值作为与当前层对应的全局最大值GlobalMax。计算的全局最大值Global Max可存储在寄存器930中。
处理器1420可基于局部最大值Local Max#1、Local Max#2、……、Local Max#n来对全局恢复数据950进行初次量化,从而生成局部量化数据960。
处理器1420可针对当前层的每个输出通道对全局恢复数据950进行初次量化。处理器1420可针对当前层的每个输出通道对全局恢复数据950顺序地执行初次量化。例如,在当前层包括n个输出通道时,处理器1420可在基于局部最大值Local Max#1来量化第一输出通道的全局恢复数据951之后,基于局部最大值Local Max#2来量化第二输出通道的全局恢复数据952,最后基于局部最大值Local Max#n来量化第n输出通道的全局恢复数据953。
局部量化数据960可存储在存储器920中以用于下一层的操作。存储器920可以是神经网络设备1400的存储器1410,或者是包括在处理器1420中的片上存储器。
处理器1420可从存储器920加载局部量化数据970,并基于当前层的每个输出通道的局部最大值恢复加载的局部量化数据970,从而生成局部恢复数据980。可从寄存器930读取当前层的每个输出通道的局部最大值。
处理器1420可针对当前层的每个输出通道恢复局部量化数据970。处理器1420可针对当前层的每个输出通道顺序地恢复局部量化数据970。例如,在当前层包括n个输出通道时,处理器1420可在基于局部最大值Local Max#1恢复第一输出通道的局部量化数据971之后,基于局部最大值Local Max#2恢复第二输出通道的局部量化数据972,最后基于局部最大值Local Max#n恢复第n输出通道的局部量化数据973。
局部恢复数据980可与全局恢复数据950相同。例如,在当前层包括n个输出通道时,第一输出通道的全局恢复数据951可与局部恢复数据981相同,第二输出通道的全局恢复数据952可与局部恢复数据982相同,最后,第n输出通道的全局恢复数据953可与局部恢复数据983相同。
处理器1420可基于与当前层对应的全局最大值Global Max对局部恢复数据980进行二次量化,从而生成全局量化数据990。可从寄存器930读取与当前层对应的全局最大值Global Max。
处理器1420可针对当前层的每个输出通道对局部恢复数据980进行二次量化。处理器1420可针对当前层的每个输出通道对局部恢复数据980顺序地执行二次量化。例如,在当前层包括n个输出通道时,处理器1420可在基于全局最大值Global Max量化第一输出通道的局部恢复数据981之后,基于全局最大值Global Max量化第二输出通道的局部恢复数据982,最后基于全局最大值Global Max量化第n输出通道的局部恢复数据983。
处理器1420可针对所有输出通道对局部恢复数据980执行二次量化,从而将局部恢复数据980量化到相同的尺度。
全局量化数据990可被输入到计算器910以用于下一层的操作。
图10是用于描述根据本公开的实施例的获得局部最大值和全局最大值的示例的示图。
在当前层包括四个输出通道时,可针对四个输出通道中的每个计算局部最大值。
处理器1420可从第一输出通道的全局恢复数据1010计算第一输出通道的局部最大值Local Max#1。例如,处理器1420可计算第一输出通道的全局恢复数据1010的最大值6作为局部最大值Local Max#1。
同样地,处理器1420可从第二输出通道的全局恢复数据1020、第三输出通道的全局恢复数据1030和第四输出通道的全局恢复数据1040来计算第二输出通道的局部最大值Local Max#2、第三输出通道的局部最大值Local Max#3和第四输出通道的局部最大值Local Max#4。
处理器1420可从局部最大值Local Max#1、Local Max#2、Local Max#3和LocalMax#4来计算与当前层对应的全局最大值Global Max。例如,处理器1420可计算局部最大值Local Max#1、Local Max#2、Local Max#3和Local Max#4中的最大值18作为全局最大值Global Max。
图11是用于描述根据本公开的实施例的针对每个输出通道的初次量化和二次量化的示例的示图。
更具体地讲,图11示出将从包括两个输出通道的当前层的操作产生的输出数据1111和1121初次量化和二次量化为8比特的示例。
处理器1420可恢复第一通道的输出数据1111,从而生成第一通道的全局恢复数据1112。处理器1420可基于与前一层对应的全局最大值Global Max@Previous Layer来恢复第一通道的输出数据1111。例如,可基于等式4恢复输出数据1111,更具体地讲,可基于与前一层对应的全局最大值Global Max@Previous Layer 64来恢复输出数据1111的值为144/28的数据,从而生成值为8的全局恢复数据。例如,当max(|x|)是64并且maxqn(x)是144/28时,可使用等式4生成值为8的全局恢复数据x。
处理器1420可计算第一通道的局部最大值Local Max#1。例如,处理器1420可计算全局恢复数据1112的最大值8作为局部最大值Local Max#1。
处理器1420可基于第一通道的局部最大值Local Max#1来对第一通道的全局恢复数据1112进行初次量化,从而生成第一通道的局部量化数据1113。例如,可基于等式5和等式6来对全局恢复数据1112进行初次量化,更具体地讲,可基于第一通道的局部最大值Local Max#1 8来对全局恢复数据1112的值为2的数据进行初次量化,从而生成值为160/28的局部量化数据。例如,当x是2并且max(|x|)是8时,可使用等式5生成值为160/28的局部量化数据maxqn(x)。
类似地,处理器1420可恢复第二通道的输出数据1121,从而生成第二通道的全局恢复数据1122。处理器1420可基于与前一层对应的全局最大值Global Max@PreviousLayer来恢复输出数据1121。例如,可基于与前一层对应的全局最大值Global Max@Previous Layer 64,来恢复输出数据1121的值为384/28的数据,从而生成值为128的全局恢复数据。例如,当max(|x|)是64并且maxqn(x)是384/28时,可使用等式4生成值为128的全局恢复数据x。
同样地,处理器1420可计算第二通道的局部最大值Local Max#2。例如,处理器1420可计算全局恢复数据1122的最大值128作为局部最大值Local Max#2。
同样地,处理器1420可基于第二通道的局部最大值Local Max#2来对第二通道的全局恢复数据1122进行初次量化,从而生成第二通道的局部量化数据1123。例如,可基于第二通道的局部最大值Local Max#2 128,对全局恢复数据1122的值为32的数据进行初次量化,从而生成值为160/28的局部量化数据。例如,当x是32并且max(|x|)是128时,可使用等式5生成值为160/28的局部量化数据maxqn(x)。
处理器1420可从第一通道的局部最大值Local Max#1和第二通道的局部最大值Local Max#2来计算与当前层对应的全局最大值Global Max@Current Layer。例如,处理器1420可计算第一通道的局部最大值Local Max#1和第二通道的局部最大值Local Max#2中的最大值128作为与当前层对应的全局最大值Global Max@CurrentLayer。
第一通道的局部最大值Local Max#1、第二通道的局部最大值Local Max#2和与当前层对应的全局最大值Global Max@CurrentLayer可存储在处理器1420的寄存器中。
处理器1420可恢复第一通道的局部量化数据1113,从而生成第一通道的局部恢复数据1114。处理器1420可基于第一通道的局部最大值Local Max#1来恢复第一通道的局部量化数据1113。例如,可基于等式4恢复局部量化数据1113,更具体地讲,可基于第一通道的局部最大值Local Max#1 8,来恢复局部量化数据1113的值为144/28的数据,从而生成值为1的局部恢复数据。例如,当max(|x|)是8并且maxqn(x)是144/28时,可使用等式4生成值为1的局部恢复数据x。
处理器1420可基于与当前层对应的全局最大值Global Max@Current Layer对第一通道的局部恢复数据1114进行二次量化,从而生成第一通道的全局量化数据1115。例如,可基于等式5和等式6对局部恢复数据1114进行二次量化,更具体地讲,可基于与当前层对应的全局最大值Global Max@Current Layer 128,对局部恢复数据1114的值为4的数据进行二次量化,从而生成值为132/28的全局量化数据。例如,当x是4并且max(|x|)是128时,可使用等式5生成值为132/28的全局量化数据maxqn(x)。
同样地,处理器1420可恢复第二通道的局部量化数据1123,从而生成第二通道的局部恢复数据1124。处理器1420可基于第二通道的局部最大值Local Max#2来恢复第二通道的局部量化数据1123。例如,可基于第二通道的局部最大值Local Max#2 128,来恢复局部量化数据1123的值为144/28的数据,从而生成值为16的局部恢复数据。例如,当max(|x|)是128并且maxqn(x)是144/28时,可使用等式4生成值为16的局部恢复数据x。
处理器1420可基于与当前层对应的全局最大值Global Max@Current Layer对第二通道的局部恢复数据1124进行二次量化,从而生成第二通道的全局量化数据1125。例如,可基于与当前层对应的全局最大值Global Max@Current Layer 128,对局部恢复数据1124的值为64的数据进行二次量化,从而生成值为192/28的全局量化数据。例如,当x是64并且max(|x|)是128时,可使用等式5生成值为192/28的全局量化数据maxqn(x)。
图12是示出根据本公开的实施例的使用图7中示出的方法的神经网络的数据的量化算法的示图。
参照图12,在量化算法中,对反向传播损失梯度进行量化。
在操作1201中,处理器1420可恢复当前层的每个输入通道的局部量化数据loss_gradientG,从而生成局部恢复数据loss_gradient。在这种情况下,当前层的输入通道可对应于前向传播中的输出通道。处理器1420可基于局部最大值local_maxcin来恢复局部量化数据loss_gradientG
在操作1202中,处理器1420可量化当前层的每个输入通道的局部恢复数据loss_gradient,从而生成全局量化数据loss_gradientG。处理器1420可基于全局最大值global_maxi来量化局部恢复数据loss_gradient,从而生成全局量化数据loss_gradientG
在操作1203中,处理器1420可对全局量化数据loss_gradientG执行卷积运算。
在操作1204中,处理器1420可针对当前层的每个输出通道恢复由当前层的操作产生的输出数据loss_gradientG。在这种情况下,当前层的输出通道可对应于前向传播中的输入通道。可基于全局最大值global_maxi来恢复输出数据loss_gradientG
在操作1205中,处理器1420可对恢复的数据执行子操作(诸如,排列归一化、池化操作、使用激活函数的激活等),从而生成全局恢复数据。
在操作1206中,处理器1420可计算当前层的每个输出通道的局部最大值local_maxcout
在操作1207中,处理器1420可量化当前层的每个输出通道的全局恢复数据loss_gradient,从而生成局部量化数据loss_gradientG。处理器1420可基于局部最大值local_maxcout来量化全局恢复数据loss_gradient,从而生成局部量化数据loss_gradientG
在操作1208中,处理器1420可从针对当前层的所有输出通道获得的局部最大值local_maxC1、local_maxC2、……来计算全局最大值global_max1-1
图13是用于描述根据本公开的实施例的量化神经网络的数据的示例的示图。
在神经网络中,计算器(也被称为“MAC阵列”)1310可执行卷积运算。计算器1310可在执行当前层的操作之后执行下一层的操作。在通过量化之后,由当前层的操作产生的输出数据可用于下一层的操作中。
当神经网络通过前向传播进行操作时,由当前层的操作产生的输出数据1330可包括激活。当神经网络通过反向传播进行训练时,由当前层的操作产生的输出数据1330可包括损失梯度或权重梯度。
处理器1420可预测用于恢复输出数据1330的全局最大值。例如,处理器1420可基于由前一层的操作产生的输出数据来预测全局最大值。例如,处理器1420可基于量化中数据变化的方面来预测全局最大值。
处理器1420可基于预测的全局最大值来恢复输出数据1330,从而生成全局恢复数据1340。处理器1420可基于预测的全局最大值来恢复输出数据1330,并且执行子操作(诸如,池化操作、排列归一化、使用激活函数的激活等),从而生成全局恢复数据1340。处理器1420可基于预测的全局最大值来恢复输出数据1330,并且将噪声添加到恢复的数据,从而生成全局恢复数据1340。
处理器1420可恢复当前层的每个输出通道的输出数据1330。处理器1420可顺序地恢复当前层的每个输出通道的输出数据1330。例如,在当前层包括n个输出通道时,处理器1420可在恢复第一输出通道的输出数据1331之后,恢复第二输出通道的输出数据1332,最后恢复第n输出通道的输出数据1333。
处理器1420可从全局恢复数据1340计算局部最大值。例如,在当前层包括n个输出通道时,处理器1420可计算第一输出通道的全局恢复数据1341的最大值作为第一输出通道的局部最大值,计算第二输出通道的全局恢复数据1342的最大值作为第二输出通道的局部最大值,最后计算第n输出通道的全局恢复数据1343的最大值作为第n输出通道的局部最大值。
处理器1420可通过基于局部最大值量化全局恢复数据1340来生成局部量化数据1350。
处理器1420可量化当前层的每个输出通道的全局恢复数据1340。处理器1420可顺序地量化当前层的每个输出通道的全局恢复数据1340。例如,在当前层包括n个输出通道时,处理器1420可基于第一输出通道的局部最大值来量化第一输出通道的全局恢复数据1341,基于第二输出通道的局部最大值来量化第二输出通道的全局恢复数据1342,最后基于第n输出通道的局部最大值来量化第n输出通道的全局恢复数据1343。
处理器1420可基于当前层的每个输出通道的局部最大值与预测的全局最大值之间的差来补偿局部量化数据1350,从而生成全局量化数据1360。例如,当每个输出通道的局部最大值和预测的全局最大值彼此相等时,处理器1420可将局部量化数据1350设置为全局量化数据1360。例如,当每个输出通道的局部最大值小于预测的全局最大值时,处理器1420可以以与局部最大值和预测的全局最大值之间的差成比例地减小局部量化数据1350的这样的方式执行补偿,从而生成全局量化数据1360。
处理器1420可补偿当前层的每个输出通道的局部量化数据1350。处理器1420可顺序地补偿当前层的每个输出通道的局部量化数据1350。例如,在当前层包括n个输出通道时,处理器1420可基于第一局部最大值与预测的全局最大值之间的差来补偿第一输出通道的局部量化数据1351,基于第二局部最大值与预测的全局最大值之间的差来补偿第二输出通道的局部量化数据1352,最后基于第n局部最大值与预测的全局最大值之间的差来补偿第n输出通道的局部量化数据1353。
因为处理器1420生成全局量化数据1360而不将局部最大值存储在寄存器中,所以可减少寄存器在量化中使用的资源的量。
全局量化数据1360可存储在存储器1320中并从存储器1320读取,并且被输入到计算器1310以用于下一层的操作。存储器1320可以是神经网络设备1400的存储器1410,也可以是包括在处理器1420中的片上存储器。
图14是根据本公开实施例的用于识别图像的神经网络设备的示例的框图。
参照图14,用于识别图像的神经网络设备1400可包括存储器1410和处理器1420。虽然在图14中未示出,但是神经网络设备1400可与外部存储器连接。图14中示出的神经网络设备1400可包括与当前实施例相关联的组件。因此,对于本领域普通技术人员明显的是,在神经网络设备1400中还可包括除图14中所示的组件之外的其他通用组件。
神经网络设备1400可以是参照图1和图2实现上述神经网络的设备。例如,神经网络设备1400可利用各种类型的装置(诸如,个人计算机(PC)、服务器装置、移动装置、嵌入式装置等)来实现。详细地,神经网络设备1400可包括在使用神经网络执行图像识别的智能电话、平板装置、增强现实(AR)装置、物联网(IoT)装置、自主车辆、机器人装置或医疗装置中,但不限于此。神经网络设备1400可对应于安装在这样的装置上的专用硬件(HW)加速器,并且可以是作为用于驱动神经网络的专用模块的HW加速器(诸如,神经处理器(NPU)、张量处理器(TPU)或神经引擎)。神经网络设备1400可以是图5的神经网络学习装置51或神经网络推断装置53。
存储器1410存储在神经网络设备1400中处理的各种数据。例如,存储器1410可存储在神经网络设备1400中处理或待处理的数据,以用于处理数据。此外,存储器1410可存储将由神经网络设备1400驱动的应用或驱动程序。
例如,存储器1410可包括随机存取存储器(RAM)(诸如,动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM))、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、CD-ROM、蓝光盘、光盘存储设备、硬盘驱动器(HDD)、固态驱动器(SSD)或闪存。
处理器1420控制用于在神经网络中执行神经网络设备1400的总体功能。例如,处理器1420通常可通过执行存储在存储器1410中的程序来控制神经网络设备1400以处理数据。处理器1420可被实现为包括在神经网络设备1400中的中央处理器(CPU)、图形处理器(GPU)或应用处理器(AP),但不限于此。
处理器1420可从存储器1410读取数据(例如,图像数据、特征图数据或核数据)或向存储器1410写入数据(例如,图像数据、特征图数据或核数据),并通过使用读取的/写入的数据来执行神经网络。当执行神经网络时,处理器1420可驱动设置在其中的处理单元以重复地执行输入特征图与核之间的运算,从而生成与输出特征图相关的数据。这里,可基于各种因素(诸如,输入特征图的通道的数量、核的通道的数量、输入特征图的大小、核的大小以及值的精度)来确定操作的操作计数。
例如,处理单元可包括用于运算的逻辑电路。更具体地,处理单元可包括利用乘法器、加法器和累加器的组合实现的计算器。乘法器可包括多个子乘法器的组合,并且加法器也可包括多个子加法器的组合。
处理器1420还可包括负责寄存器(或寄存器文件)和高速缓存以处理操作的片上存储器以及分配各种操作数(诸如,输入特征图的像素值或滤波器的权重)的分配器。例如,分配器可将要由处理单元执行的操作所需的操作数(诸如,像素值和权重)从存储在存储器1410中的数据分配到片上存储器。然后,分配器可将分配到片上存储器的操作数再次分配到用于操作的处理单元。
同时,本公开的前述实施例可被编写为可在计算机上执行的程序,并且可通过使用计算机可读记录介质在操作程序的通用数字计算机上实现。在本公开的上述实施例中使用的数据的结构可使用各种方法被记录在计算机可读记录介质上。计算机可读记录介质的示例包括磁存储介质(例如,ROM、软盘、硬盘等)、光记录介质(例如,CD-ROM或DVD)等。
应当理解,在此描述的实施例应当仅在描述性意义上来考虑,而不是出于限制的目的。每个实施例内的特征或方面的描述通常应被认为可用于本公开的其他实施例中的其他类似特征或方面。虽然已经参照附图描述了一个或多个实施例,但是本领域普通技术人员将理解,在不脱离由权利要求限定的精神和范围的情况下,可在其中进行形式和细节上的各种改变。

Claims (24)

1.一种识别图像的方法,所述方法包括:
获得待识别的图像数据作为神经网络的输入数据;
针对神经网络内的至少一个层中的当前层,通过对当前层的输入数据执行当前层的操作来产生当前层的输出数据,其中,当前层的输出数据包括多个输出通道;
基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;
将局部量化数据存储在存储器中;
基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;
将全局量化数据作为下一层的输入数据提供给下一层,以执行下一层的操作;以及
基于神经网络的最终层的操作产生的输出数据,输出图像识别结果。
2.根据权利要求1所述的方法,其中,获得局部量化数据的步骤包括:通过基于与前一层对应的全局最大值,针对每个输出通道恢复由当前层的操作产生的输出数据,来获得全局恢复数据,与前一层对应的全局最大值基于通过恢复由前一层的操作产生的输出数据获得的数据而生成。
3.根据权利要求1所述的方法,其中,获得局部量化数据的步骤包括:通过基于作为每个输出通道的全局恢复数据的最大值的局部最大值,对每个输出通道的全局恢复数据进行初次量化,来获得局部量化数据,使得每个输出通道的全局恢复数据的最大值被量化为相同值。
4.根据权利要求1所述的方法,其中,获得全局量化数据的步骤包括:通过基于作为每个输出通道的全局恢复数据的最大值的局部最大值,恢复每个输出通道的局部量化数据来获得局部恢复数据,使得局部量化数据被恢复为初次量化之前的数据。
5.根据权利要求1所述的方法,其中,获得全局量化数据的步骤包括:通过基于作为局部恢复数据的最大值的全局最大值,对每个输出通道的局部恢复数据进行二次量化来获得全局量化数据,使得局部恢复数据被量化到相同的尺度。
6.根据权利要求1所述的方法,其中,获得局部量化数据的步骤还包括:
基于与前一层对应的全局最大值恢复由当前层的操作产生的输出数据;以及
通过对恢复的数据执行池化操作、排列归一化或使用激活函数的激活,来获得全局恢复数据。
7.根据权利要求1所述的方法,还包括:
存储通过计算当前层的所有输出通道中的每个输出通道的全局恢复数据的最大值而获得的局部最大值;以及
将与当前层对应的全局最大值存储在寄存器中,与当前层对应的全局最大值通过计算局部最大值中的最大值而获得。
8.根据权利要求1所述的方法,其中,针对每个输出通道顺序地执行获得局部量化数据的步骤。
9.根据权利要求1所述的方法,其中,当当前层为神经网络的第一层时,通过对待识别的图像数据执行第一层的操作来产生第一层的输出数据,当当前层为除了神经网络的第一层之外的层时,通过对基于前一层的输出数据获得的全局量化数据执行当前层的操作来产生当前层的输出数据。
10.一种训练用于识别图像的神经网络的方法,所述方法包括:
获得训练图像数据;
基于训练图像数据对神经网络执行训练,
其中,在训练的每次迭代中,针对神经网络内的至少一个层中的当前层,基于当前层的输出数据获得下一层的输入数据的步骤包括:
基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,当前层的输出数据包括多个输出通道,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;
将局部量化数据存储在存储器中;
基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;以及
将全局量化数据作为下一层的输入数据提供给下一层,以执行下一层的操作。
11.根据权利要求10所述的方法,其中,当前层的操作和下一层的操作基于反向传播,并且
当前层的操作的输出数据和下一层的操作的输入数据包括损失梯度和权重梯度中的任意一种。
12.根据权利要求10所述的方法,其中,当当前层为神经网络的第一层时,通过对训练图像数据执行当前层的操作来产生第一层的输出数据;当当前层为神经网络的第一层之外的层时,通过对基于前一层的输出数据获得的全局量化数据执行当前层的操作来产生当前层的输出数据。
13.一种存储指令的非暂时性计算机可读存储介质,所述指令当由处理器执行时,配置处理器执行如权利要求1至权利要求12中的任一项所述的方法。
14.一种识别图像的设备,所述设备包括:
存储器;以及
处理器,被配置为通过执行至少一个程序来基于获得的图像数据对神经网络执行推断,以执行图像识别,
其中,处理器还被配置为:
获得待识别的图像数据作为神经网络的输入数据;
针对神经网络内的至少一个层中的当前层,通过对当前层的输入数据执行当前层的操作来产生当前层的输出数据,其中,当前层的输出数据包括多个输出通道;
基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;
将局部量化数据存储在存储器中;
基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;
将全局量化数据作为下一层的输入数据提供给下一层,以执行下一层的操作;以及
基于神经网络的最终层的操作产生的输出数据,输出图像识别结果。
15.根据权利要求14所述的设备,其中,当当前层为神经网络的第一层时,通过对待识别的图像数据执行第一层的操作来产生第一层的输出数据,当当前层为除了神经网络的第一层之外的层时,通过对基于前一层的输出数据获得的全局量化数据执行当前层的操作来产生当前层的输出数据。
16.根据权利要求14所述的设备,其中,处理器还被配置为:通过基于与前一层对应的全局最大值,针对每个输出通道恢复由当前层的操作产生的输出数据,来获得全局恢复数据,与前一层对应的全局最大值基于通过恢复由前一层的操作产生的输出数据获得的数据而生成。
17.根据权利要求14所述的设备,其中,处理器还被配置为:通过基于作为每个输出通道的全局恢复数据的最大值的局部最大值,对每个输出通道的全局恢复数据进行初次量化,来获得局部量化数据,使得每个输出通道的全局恢复数据的最大值被量化为相同值。
18.根据权利要求14所述的设备,其中,处理器还被配置为:通过基于作为每个输出通道的全局恢复数据的最大值的局部最大值,恢复每个输出通道的局部量化数据来获得局部恢复数据,使得局部量化数据被恢复为初次量化之前的数据。
19.根据权利要求14所述的设备,其中,处理器还被配置为:通过基于作为局部恢复数据的最大值的全局最大值,对每个输出通道的局部恢复数据进行二次量化来获得全局量化数据,使得局部恢复数据被量化到相同的尺度。
20.根据权利要求14所述的设备,其中,处理器还被配置为:
基于与前一层对应的全局最大值恢复由当前层的操作产生的输出数据;以及
通过对恢复的数据执行池化操作、排列归一化或使用激活函数的激活,来获得全局恢复数据。
21.根据权利要求14所述的设备,其中,处理器还被配置为:
存储通过计算当前层的所有输出通道中的每个输出通道的全局恢复数据的最大值而获得的局部最大值;以及
将与当前层对应的全局最大值存储在寄存器中,与当前层对应的全局最大值通过计算局部最大值中的最大值而获得。
22.根据权利要求14所述的设备,其中,处理器还被配置为:顺序地获得每个输出通道的局部量化数据。
23.一种训练用于识别图像的神经网络的设备,所述设备包括:
存储器;以及
处理器,被配置为:获得训练图像数据,基于训练图像数据对神经网络执行训练,
其中,处理器还被配置为:在训练的每次迭代中,针对神经网络内的至少一个层中的当前层,基于当前层的输出数据获得下一层的输入数据,
其中,基于当前层的输出数据获得下一层的输入数据的步骤包括:
基于当前层的每个输出通道的局部最大值,通过对全局恢复数据进行初次量化来获得局部量化数据,当前层的输出数据包括多个输出通道,全局恢复数据基于与前一层对应的全局最大值从由当前层的操作产生的输出数据而恢复;
将局部量化数据存储在存储器中;
基于与当前层对应的全局最大值,通过对局部恢复数据进行二次量化来获得全局量化数据,局部恢复数据基于每个输出通道的局部最大值从局部量化数据而恢复;以及
将全局量化数据作为下一层的输入数据提供给下一层,以执行下一层的操作。
24.根据权利要求23所述的设备,其中,处理器还被配置为:
基于反向传播执行当前层的操作和下一层的操作,并且
当前层的操作的输出数据和下一层的操作的输入数据包括损失梯度和权重梯度中的任意一种。
CN202011086791.6A 2019-10-11 2020-10-12 识别图像的方法和设备以及训练神经网络的方法和设备 Pending CN112651485A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2019-0126298 2019-10-11
KR1020190126298A KR20210043295A (ko) 2019-10-11 2019-10-11 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치

Publications (1)

Publication Number Publication Date
CN112651485A true CN112651485A (zh) 2021-04-13

Family

ID=71452074

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011086791.6A Pending CN112651485A (zh) 2019-10-11 2020-10-12 识别图像的方法和设备以及训练神经网络的方法和设备

Country Status (4)

Country Link
US (1) US12106219B2 (zh)
EP (1) EP3805994A1 (zh)
KR (1) KR20210043295A (zh)
CN (1) CN112651485A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113238988A (zh) * 2021-06-08 2021-08-10 中科寒武纪科技股份有限公司 优化深度神经网络的参数的处理系统、集成电路及板卡
WO2022257920A1 (zh) * 2021-06-08 2022-12-15 中科寒武纪科技股份有限公司 优化深度神经网络的参数的处理系统、集成电路及板卡
CN117009729A (zh) * 2023-10-08 2023-11-07 之江实验室 基于softmax的数据处理方法及装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113657584B (zh) * 2021-08-31 2024-04-09 安谋科技(中国)有限公司 神经网络模型计算方法、数据处理方法、电子设备及介质
KR102700766B1 (ko) * 2023-08-18 2024-08-30 한국전자기술연구원 메모리 최적화 기반 딥러닝 네트워크 혼합 정밀도 양자화 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018199721A1 (ko) 2017-04-28 2018-11-01 서울대학교 산학협력단 뉴럴네트워크에서 데이터 처리를 가속화하는 방법 및 장치
KR102034661B1 (ko) 2017-04-28 2019-10-21 서울대학교산학협력단 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치
US11232346B2 (en) 2017-06-06 2022-01-25 The Regents Of The University Of Michigan Sparse video inference processor for action classification and motion tracking
KR102601604B1 (ko) 2017-08-04 2023-11-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
CN109543826A (zh) 2017-09-21 2019-03-29 杭州海康威视数字技术股份有限公司 一种基于深度神经网络的激活量量化方法及装置
US11442889B2 (en) 2018-09-28 2022-09-13 Intel Corporation Dynamic deep learning processor architecture

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113238988A (zh) * 2021-06-08 2021-08-10 中科寒武纪科技股份有限公司 优化深度神经网络的参数的处理系统、集成电路及板卡
WO2022257920A1 (zh) * 2021-06-08 2022-12-15 中科寒武纪科技股份有限公司 优化深度神经网络的参数的处理系统、集成电路及板卡
CN117009729A (zh) * 2023-10-08 2023-11-07 之江实验室 基于softmax的数据处理方法及装置
CN117009729B (zh) * 2023-10-08 2024-01-26 之江实验室 基于softmax的数据处理方法及装置

Also Published As

Publication number Publication date
KR20210043295A (ko) 2021-04-21
EP3805994A1 (en) 2021-04-14
US20210110270A1 (en) 2021-04-15
US12106219B2 (en) 2024-10-01

Similar Documents

Publication Publication Date Title
US10909418B2 (en) Neural network method and apparatus
CN112651485A (zh) 识别图像的方法和设备以及训练神经网络的方法和设备
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
JP6998968B2 (ja) ディープニューラルネットワークの実行方法、実行装置、学習方法、学習装置及びプログラム
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
US11875255B2 (en) Method and apparatus for processing data
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
US20240338556A1 (en) Dynamic variable bit width neural processor
CN113222102B (zh) 用于神经网络模型量化的优化方法
JP7562265B2 (ja) ニューラルネットワークのコンボルーション演算を処理する方法及び装置
US11544526B2 (en) Computing device and method
EP4379607A1 (en) Neural network accelerator, and data processing method for neural network accelerator
US20210397963A1 (en) Method and apparatus for neural network model compression with micro-structured weight pruning and weight unification
EP3637327A1 (en) Computing device and method
KR20190098671A (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
CN114792387A (zh) 图像恢复方法和设备
US20210406690A1 (en) Efficient weight clipping for neural networks
CN115222039A (zh) 预训练语言模型的稀疏训练方法和深度语言计算系统
KR20200135059A (ko) 데이터를 처리하는 방법 및 장치
EP3832551B1 (en) Method and apparatus for processing data
JP7000586B2 (ja) データ処理システムおよびデータ処理方法
US20230185527A1 (en) Method and apparatus with data compression
Randive et al. Evaluation of Model Compression Techniques
CN117591785A (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