CN116128023A - 硬件加速器、电子装置和用于神经网络的装置 - Google Patents
硬件加速器、电子装置和用于神经网络的装置 Download PDFInfo
- Publication number
- CN116128023A CN116128023A CN202210973764.3A CN202210973764A CN116128023A CN 116128023 A CN116128023 A CN 116128023A CN 202210973764 A CN202210973764 A CN 202210973764A CN 116128023 A CN116128023 A CN 116128023A
- Authority
- CN
- China
- Prior art keywords
- input data
- batch
- hardware accelerator
- layer
- bitwise
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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/048—Activation functions
-
- 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/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
提供硬件加速器、电子装置和用于神经网络的装置。一种硬件加速器,所述硬件加速器包括:比较器;同或(XNOR)门;累加器;以及乘法和累加(MAC)运算器,其中,神经网络的基本块包括:第一批量归一化层、量化层、卷积层、激活层和第二批量归一化层,并且其中,基本块由通过第一批量归一化运算、符号函数运算、移位卷积运算、激活函数运算、第二批量归一化运算和残差连接操作的组合的装置驱动。
Description
本申请要求于2021年11月11日提交到韩国知识产权局的第10-2021-0154992号韩国专利申请的权益,该韩国专利申请的全部公开通过引用出于所有目的包含于此。
技术领域
下面的描述涉及具有神经网络(NN)的方法和装置。
背景技术
在人工智能(AI)的领域中实现的卷积神经网络可比其他AI技术具有更高的性能。然而,当卷积人工神经网络(ANN)被加深和加宽以用更多数据进行训练并达到高的性能时,卷积ANN的模型的大小可增加,并且运算时间可基于用于处理的运算的数量而增加。
为了解决这样的问题,方法可减小卷积ANN的大小。例如,可存在将卷积ANN的结构设计为微小(或轻量级)的方法,在其中ANN的分支被剪枝的训练的方法和将权重的值量化为更少的位(n位量化)的方法。
发明内容
本发明内容被提供从而以简要的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,也不意在用于帮助确定要求保护的主题的范围。
在一个总体方面,一种装置包括:比较器;同或(XNOR)门;累加器;以及乘法和累加(MAC)运算器,其中,神经网络的基本块包括:第一批量归一化层、量化层、卷积层、激活层和第二批量归一化层,并且其中,基本块通过第一批量归一化运算、符号函数运算、逐位卷积运算、激活函数运算、第二批量归一化运算和残差连接运算的组合由所述装置驱动。
比较器可被配置为:通过将对转变的输入数据执行的符号函数运算的结果与预定值进行比较,来量化输入数据。
第二批量归一化运算可包括:第一部分和第二部分,并且转移的输入数据可反应使用第一批量归一化运算确定的第一批量归一化的输入数据的第二部分。
XNOR门和累加器可被配置为执行逐位卷积运算。
第二批量归一化运算可包括:第一部分和第二部分,并且MAC运算器可被配置为执行激活函数运算、残差连接运算和针对所述第一部分的运算。
MAC运算器可被配置为:通过将激活函数应用于逐位卷积运算的逐位卷积运算结果,确定输出数据;将所述第一部分与输出数据相乘;以及执行与输入数据相加的运算。
激活函数可包括:线性修正单元(ReLU)函数。
在另一总体方面,一种处理器实现的方法包括:通过使用比较器将对转变的输入数据执行符号函数运算的结果与预定值进行比较,来量化输入数据;使用同或(XNOR)门和累加器执行逐位卷积运算;以及使用乘法和累加(MAC)运算器执行激活函数运算和残差连接运算。
第二批量归一化运算可包括:第一部分和第二部分,并且转变的输入数据可反应使用第一批量归一化运算确定的第一批量归一化的输入数据的第二部分。
第二批量归一化运算可包括:第一部分和第二部分,并且使用MAC运算器执行运算的步骤可包括:执行激活函数运算、残差连接运算和针对所述第一部分的运算。
使用MAC运算器执行运算的步骤可包括:通过将激活函数应用于逐位卷积运算的逐位卷积运算结果,确定输出数据;将所述第一部分与输出数据相乘;以及执行与输入数据相加的运算。
激活函数可包括:线性修正单元(ReLU)函数。
神经网络的基本块可包括:第一批量归一化层、量化层、卷积层、激活层和第二批量归一化层,并且基本块可通过量化输入数据的步骤、执行逐位卷积运算的步骤、执行激活函数运算和残差连接运算的步骤而被驱动。
在另一总体方面,一个或多个实施例包括一种存储指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时配置所述一个或多个处理器执行在此描述的操作和方法中的任何一个、任何组合或全部。
在另一总体方面,一种电子装置包括:主机处理器,被配置为控制包括在所述电子装置中的组件的操作;以及硬件加速器,被配置为通过基于主机处理器的命令执行神经网络来处理输入数据,其中,硬件加速器可包括:比较器;同或(XNOR)门;累加器;以及乘法和累加(MAC)运算器。
比较器可被配置为:通过将对转变的输入数据执行符号函数运算的结果与预定值进行比较,来量化输入数据,XNOR门和累加器可被配置为执行逐位卷积运算,并且MAC运算器可被配置为执行激活函数运算和残差连接运算。
在另一总体方面,一种装置包括:硬件加速器,被配置为针对第一神经网络运算进行以下处理:通过将预定值与对转变的输入数据执行符号函数运算的结果进行比较,来量化输入数据,转变的输入数据使用第一批量归一化运算被确定;对量化的输入数据执行逐位卷积运算;通过将激活函数应用于逐位卷积运算的结果,确定输出数据;将第二批量归一化运算的第一部分与输出数据相乘;以及执行将相乘的结果与输入数据相加的运算。
硬件加速器的比较器可被配置为执行量化输入数据的处理,硬件加速器的同或(XNOR)门和累加器可被配置为执行逐位卷积运算,并且硬件加速器的乘法和累加(MAC)运算器可被配置为执行确定输出数据的处理、将所述第一部分与输出数据相乘的处理和执行相加的运算的处理。
硬件加速器可被配置为针对第二神经网络运算进行以下处理:基于执行相加的运算的处理的结果,执行池化、通道扩展和第三批量归一化运算中的任何一个、或者任何两个或更多的任何组合。
其他特征和方面将根据下面的具体实施方式、附图和权利要求而清楚。
附图说明
图1A示出使用人工神经网络(ANN)的深度学习计算方法的示例。
图1B示出在深度学习操作中作为输入提供的输入特征图的数据和滤波器的示例。
图1C示出执行基于深度学习的卷积运算的示例。
图2示出ANN模型的结构的示例。
图3示出操作基本块的方法的示例。
图4示出操作过渡块的方法的示例。
图5示出用于驱动基本块的电子装置的示例。
图6和图7示出用于驱动基本块的电子装置的示例。
图8示出电子装置的配置的示例。
除非另外描述或提供,否则贯穿附图和具体实施方式,相同的附图参考标号将被理解以表示相同的元件、特征和结构。附图可不按比例绘制,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可而被夸大。
具体实施方式
提供以下具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在此描述的方法、设备、和/或系统的各种改变、修改和等同物将理解本申请的公开之后而清楚。例如,在此描述的操作的顺序仅是示例,并且不限于在此阐述的顺序,而是除了必需按特定次序发生的操作之外,可如在理解本申请的公开之后将是将是清楚的那样改变。此外,为了更加清楚和简明,可省略在理解本申请的公开之后在本领域中已知的特征的描述。
虽然术语“第一”或“第二”被用于解释各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不限于该术语。相反,这些术语应仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。例如,在此描述的示例中所称的“第一”构件、组件、区域、层或部分在不脱离示例的教导的情况下还可被称为“第二”构件、组件、区域、层或部分。
贯穿说明书,当元件(诸如,层、区域或基底)被描述为“在”另一个元件“上”、“连接到”或“结合到”另一个元件时,该元件可被直接“在”在该另一元件“上”、直接“连接到”或直接“结合到”改另一元件,或可存在介于它们之间的一个或多个其他元件。相反,当元件被描述为“直接在”另一元件“上”、“直接连接到”或“直接结合到”另一个元件时,可不存在介于它们之间的其他元件。同样地,例如“在……之间”、“紧接在……之间”、“与……相邻”和“与……紧邻”的表述也可按上述描述被解释。
在此使用的术语仅出于描述具体示例的目的,不是限制本公开。如在此使用的,除非上下文另外明确地指示,否则单数形式也意在包括复数形式。如在此使用的,术语“和/或”包括相关所列项中的任何一个或者任何两个或更多个的任何组合。如在此使用的,术语“包括”、“包含”和“具有”指定存在陈述的特征、整数、步骤、操作、元件、组件、数量和/或它们的组合,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件、数量和/或它们的组合的存在或增加。在此针对示例或实施例的术语“可”的使用(例如,关于示例或实施例可包括或实现什么)意味着存在包括或实现这样的特征的至少一个示例或实施例,而全部示例不限于此。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开的理解一致的和本公开的理解之后的总体理解的含义的相同的含义。除非另外在此定义,否则术语(诸如,在通用字典中定义的术语)应被解释为具有与相关技术中的和本公开中的上下文含义相匹配的含义,不将被解释为理想化或过于形式化的含义。
示例可被实现为各种类型的产品(诸如,以个人计算机(PC)、膝上型计算机、台式计算机、智能电话、电视(TV)、智能家用电器、智能车辆、自主服务终端(kiosk)和可穿戴装置为例)。在下文中,示例将参照附图被详细描述。当参照附图描述示例时,相同的参考标号表示相同的组件,并且与其有关的重复描述将被省略。
参照图1A,在其中输入数据10被输入到ANN 20并且输出数据30通过包括一个或多个层的ANN(例如,CNN 20)被输出的结构的示例被示出。ANN可以是例如包括至少两个层的深度神经网络(DNN)。
CNN 20可用于从输入数据10提取“特征”(例如,边界、线和颜色)。CNN 20可包括多个层。每个层可接收数据,处理输入到对应层的数据,并生成将要从对应层输出的数据。从层输出的数据可以是通过对输入到CNN 20的图像或特征图与一个或多个滤波器(例如,在下面讨论的滤波器100-1至100-n)的权重值执行卷积运算而生成的特征图。CNN 20的初始层可进行操作以从输入提取相对低级的特征(例如,边缘或梯度)。CNN 20的后续层可逐步地提取更复杂的特征(例如,图像中的眼睛或鼻子)。
图1B示出在深度学习操作中作为输入提供的数据和输入特征图的滤波器的示例。
参照图1B,输入特征图100可以是输入到ANN的数值数据或图像的像素值的集合,但不限于此。在图1B中,输入特征图100可由将要使用ANN训练的目标图像的像素值而被定义。例如,输入特征图100可具有256×256个像素和值为K的深度,其中,K为正整数。然而,这样的值仅作为示例提供,并且输入特征图100的像素的大小不限于此。
N个滤波器(例如,滤波器100-1至100-n)可被形成,其中,N等于n并且N和n为正整数。滤波器100-1至100-n中的每个可包括n×n个权重。例如,滤波器100-1至100-n中的每个可具有3×3个像素和深度值K。然而,滤波器100-1至100-n中的每个的大小仅作为示例被提供,并且不限于此。
图1C示出执行基于深度学习的卷积运算的示例。
参照图1C,在ANN中执行卷积运算的处理可以是这样的处理:在每个层中通过输入特征图100与滤波器110之间的乘法和加法(MAC)运算生成输出值,并使用输出值的累积和生成输出特征图120。
执行卷积运算的处理可包括通过在当前层中从左上到右下将预定大小(即,n×n大小)的滤波器110应用于输入特征图100来执行乘法和加法运算。在下文中,使用3×3大小的滤波器110执行卷积运算的处理被描述。
例如,首先,将输入特征图100的左上侧上的第一区域101中的3×3条数据分别乘以滤波器110的权重值w11至w33的运算被执行。这里,第一区域101中的3×3条数据可以是包括与第一方向有关的三条数据和与第二方向有关的三条数据的总共九条数据x11至x33。此后,输出特征图120中的1-1输出数据y11可使用乘法运算的输出值的累积和而被生成,其中,乘法运算的输出值是x11×w11、x12×w12、x13×w13、x21×w21、x22×w22、x23×w23、x31×w31、x32×w32和x33×w33。
此后,凭借滤波器110以在输入特征图100的左上侧上从第一区域101到第二区域102的数据为单位被移动,操作可被执行。在该示例中,在用于卷积运算处理的输入特征图100中被移位的数据的条数被称为步长(stride),并且将被生成的输出特征图120的大小可基于步长而被确定。例如,当步长是1时,将包括在第二区域102中的总共九条输入数据x12至x34乘以滤波器110的权重w11至w33的运算可被执行,并且输出特征图120中的1-2输出数据y12可使用乘法运算的输出值的累积和而被生成,其中,乘法运算的输出值是x12×w11、x13×w12、x14×w13、x22×w21、x23×w22、x24×w23、x32×w31、x33×w32和x34×33。
图2示出ANN模型的结构的示例。
典型的轻量级神经网络可包括二进制ANN。虽然二进制ANN可显著地增大现有的ANN的速度并减小ANN模型的存储容量,但是可能由于现有的浮点权重和被表示为-1和1的激活函数而发生信息丢失。典型的轻量级神经网络的这样的信息丢失可导致精度下降,从而在目标被识别或检测时带来性能劣化。
例如,当典型的轻量级神经网络因为1.4和0.2是正数而将正数1.4和0.2映射到1并且在大小上差异7倍的这样的两个值被映射到相同的值时,量化错误可变得非常大。因此,二进制量化可使用典型的二进制ANN中的比例因子(scale factor)考虑数据的大小而被执行以减少量化错误。然而,比例因子还可需要通过花费时间的训练而被确定。另外,由于尺度不变(scale-invariant)特征被使用,因此深度在典型的二进制ANN中可能是不可缩放的。
相比之下,一个或多个实施例的ANN模型可以是对深度可缩放的,并且在不使用比例因子的情况下,信息丢失可被减少。
参照图2,ANN模型的示例被示出。ANN模型可由一个或多个基本块和一个或多个过渡块的组合而被形成。
也就是说,ANN模型可由多个单元块形成,并且单元块可由一个或多个基本块和一个或多个过渡块的组合形成。然而,如图2中所示,ANN模型可由四个单元块形成,并且单元块可包括三个基本块和一个过渡块,但是ANN模型不限于此。形成ANN模型的单元块的数量可被改变,并且基本块和过渡块的数量可被改变。
在下文中,操作基本块的非限制性示例方法参照图3被详细描述,并且操作过渡块的非限制性示例方法参照图4被详细描述。
图3示出操作基本块的方法的示例。
参照图3,基本块可包括第一批量归一化层310、量化层320、卷积层330、激活层340和第二批量归一化层350。
在一个示例中,第一批量归一化层310可使输入数据的分布稳定。输入数据可包括输入特征图和权重中的任何一个。
例如,梯度下降可通常使用所有训练数据以更新一次梯度。因此,ANN模型可通过获得针对所有训练数据的梯度并对所有梯度进行平均而被更新一次。然而,一次处理大量数据用这样的方法可能不容易做到,因此数据可针对训练被分为批量单元。
当训练以批量被执行时,在其中输入数据的分布针对每个层而不同的区间协变移位(interval covariant shift)可在训练处理中发生。也就是说,批量归一化层(例如,第一批量归一化层310)可被用于解决针对每个批量的数据中的差异。
批量归一化可以是即使当针对每个批量单元的数据具有各种分布时也使用针对每个批量的均值和方差进行的归一化,并且批量归一化层可以是执行批量归一化的层。
量化层320可量化第一批量归一化的输入数据。第一批量归一化的输入数据可以是通过第一批量归一化层310而稳定的输入数据。
量化层320可通过将符号函数应用于第一批量归一化的输入数据来二值化输入数据。当第一批量归一化的输入数据是正数时,量化层320可将第一批量归一化的输入数据映射到1,并且当第一批量归一化的输入数据是负值时,量化层320可通过将符号函数应用于第一批量归一化的输入数据来将第一批量归一化的输入数据映射到-1。在另一示例中,量化层320可通过将阶梯函数(step function)应用于第一批量归一化的输入数据来量化输入数据。
卷积层330可以是执行参照图1C描述的卷积运算的层。例如,卷积层330可以是3×3卷积层。
激活层340可以是使用激活函数将输入数据的加权和转换后为输出数据的层。例如,当输入数据小于0时,激活层340可使用线性整流单元(ReLU)函数输出0,并且当输入数据大于0时,激活层340可输出现有的输入数据(线性函数)。
第二批量归一化层350可对输出数据执行第二批量归一化。基本块可额外地使用第二批量归一化层350,并且在不使用比例因子的情况下生成输出数据的稳定分布。另外,第二批量归一化层350可将输出数据的分布调整为中心化-零均值化(zero-centered)。
基本块可包括将输入数据连接到第二批量归一化的输出数据的残差连接。残差连接还可被称为跳跃连接(skip connection)或快捷连接(shortcut connection)。基本块可通过残差连接获得现有的输入数据,并且仅剩余的残差信息可被额外地学习。
图4示出操作过渡块的方法的示例。
参照图4,过渡块可包括池化层410,通道扩展(upscaling)层420和第三批量归一化层430。
各种参数可用于处置或处理更高维度的数据。然而,当存在过多数量的参数时,在训练中可能发生过拟合。因此,一个或多个实施例的方法可通过减少在滤波器中使用的参数的数量来减小维度。
基本块可不改变数据的大小,因此可减小数据的大小使得ANN模型变得尺度不变的层可被使用。
池化层410可对基本块的输出数据的宽度和高度执行下采样。例如,池化层410可通过执行平均池化来提取确定的大小的值的均值。
通道扩展层420可以是复制通道预定次数的通道复制层。
过渡层可通过第三批量归一化层430将方差重置为1。
图5示出用于驱动基本块的电子装置的示例。
用于驱动基本块的电子装置500(例如,电子设备)可包括比较器510、同或(XNOR)门(或XNOR)520、累加器(ACC)530、以及乘法和累加(MAC)运算器(或MAC)540。
在一个示例中,输入数据可被输入到比较器510,比较器510的输出可被输入到XNOR门520和累加器530,XNOR门520和累加器530的输出以及输入数据可被输入到MAC运算器540。
参照图1至图4描述的输入数据可以是输入到比较器510的数据,参照图1至图4描述的量化的输入数据可以是基于输入数据生成的比较器510的输出,通过执行参照图1至图4描述的卷积运算而获得的数据可以是基于量化的输入数据生成的XNOR门520和累加器530的输出,并且参照图1至图4描述的第二批量归一化的输出数据可以是基于通过执行卷积运算获得的数据而生成的MAC运算器540的输出数据。
在下文中,操作用于驱动基本块的电子装置的方法参照图6和图7被详细描述。
图6和图7示出用于驱动基本块的电子装置示例。
参照图6,第一批量归一化层(作为非限制性示例,图3的第一批量归一化层310)和量化层(作为非限制性示例,图3的量化层320)中的操作可通过移位符号运算而被执行。
也就是说,例如,第一批量归一化层中的操作可由下面的公式1表示。
公式1:
在公式1中,x表示输入数据,y表示第一归一化的输入数据,μ表示输入数据的均值,σ表示输入数据的方差,α表示批量归一化的尺度变量,β表示批量归一化的移位变量。根据公式1,第一批量归一化层中的操作可被表示为线性操作,并且MAC可用于执行第一批量归一化层中的操作。
例如,在量化层中(例如,由符号函数sign())执行的操作可由下面的公式2表示。
公式2:
y=Sign(x)
根据公式2,在量化层中(例如,由符号函数)的操作可仅由比较器(作为非限制性示例,图5的比较器510)执行。
总之,例如,第一归一化层和量化层中的操作可由下面的公式3表示。
公式3:
根据公式3,当通道单元常量被存储时,第一批量归一化层和量化层中的操作还可仅使用比较器执行。
另外,例如,卷积层(作为非限制性示例,图3的卷积层330)和激活层(作为非限制性示例,图3的激活层340)中的操作可由下面的公式4表示,其中,fn()表示上述运算的结果,BinaryConvn()表示二进制卷积,τn是指示Signn(x)的移位程度的常数。
公式4:
fn(x):=ReLU(BinaryCon vn(ShiftedSignn(x)))
其中ShiftedSig nn(x)=sign(x+τn)
卷积层可以是对二值化的数据执行卷积运算的逐位卷积层。另外,激活层可使用ReLU函数作为激活层。
例如,电子装置可通过定义如由下面的公式5表示的变量来导出下面的公式6。
公式5:
令x′1=x,
x′2=x2-B1=A1f1(x1)+x1=A1f1(x′1)+x′1
公式6:
因此,例如,基本块的第二批量归一化的输出数据可由下面的公式7表示。根据公式5和公式6,第二批量归一化的第二部分或与作为线性操作的第二批量归一化的常数项对应的部分(例如,常数“B”)可被纳入下一基本块的移位正弦运算的移位变量之中。另外,第二批量归一化的第一部分或与作为线性操作的第二批量归一化的一次项对应的部分(例如,“A*X”)可通过MAC运算被计算。
公式7:
x′n=An-1f′n-1(x′n-1)+x′n-1.
根据公式7,x′n可通过一个MAC运算从X′n-1获得。
参照图7,比较器可通过将对转换后的输入数据执行符号函数运算的结果与预定值进行比较来量化输入数据。这里,转换后的输入数据可以是在其中第二部分被反应在第一批量归一化的输入数据中的数据。
XNOR门和累加器可执行逐位卷积运算,并且MAC运算器可通过将激活函数应用于逐位卷积运算结果来确定输出数据,将输出数据与第一部分相乘,并执行与输入数据相加的运算。
图8示出电子装置的配置的示例。
参照图8,电子装置800(例如,电子设备)包括处理器810(例如,一个或多个处理器)、存储器803(例如,一个或多个存储器)、通信模块805和传感器807(例如,一个或多个传感器)。电子装置800可包括被配置为执行上面参照图1至图7描述的操作中的任何一个、任何两个或更多个的任何组合或者全部的设备。例如,电子装置800可包括用户装置(例如,以智能电话、个人计算机(PC)、台式PC、增强现实(AR)眼镜、传感器和服务器为例)。电子装置800可以是图5的电子装置500或包括图5的电子装置500。
在一个示例中,处理器801可执行上面参照图1至图7描述的操作中的任何一个、任何两个或更多个的任何组合或者全部。例如,处理器801可包括图5的比较器510、XNOR门520、累加器530和MAC运算器540。此外,处理器801可包括主机处理器和硬件加速器两者,其中,硬件加速器包括图5的比较器510、XNOR门520、累加器530和MAC运算器540。
存储器803可以是易失性存储器或非易失性存储器,并且可存储与上面参照图1至图7描述的方法和操作有关的数据。存储器803可包括例如随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)、和/或在相关技术领域中已知的其他类型的非易失性存储器。
根据一方面的电子装置800可通过通信模块805连接到外部设备(例如,个人计算机或网络)并可交换数据。例如,电子装置800可接收由传感器807(或者,作为另一非限制性示例,通过通信模块805从外部传感器)获取的上面参照图1至图7描述的图像中的任何一个,并可输出图像中的对象的识别数据或检测数据作为结果。
在一个示例中,存储器803可存储用于实现上面参照图1至图7描述的方法和操作的编程或指令。处理器801(例如,处理器801的主机处理器)可执行存储在存储器803中的程序或指令,并可控制电子装置800(例如,处理器801的主机处理器可命令处理器801的硬件加速器以通过执行神经网络来处理输入数据)。由处理器801执行的程序的代码可被存储在存储器803中。存储器803可存储指令,该指令在由处理器801执行时配置处理器801以执行上面针对图1至图7描述的操作中的任何一个、任何两个或更多个的任何组合或者全部。
在一个示例中,电子装置800还可包括未在此示出的其他组件。例如,电子装置800还可包括包含输入装置和输出装置的输入/输出(I/O)接口,作为用于与通信模块805接口连接的方法。作为另一示例,电子装置800还可包括其他组件(诸如,收发器、各种传感器(例如,传感器807)和数据库)。
传感器807可以是或包括图像捕获传感器,并且可以是或包括例如相机。传感器807可捕获上面参照图1至图7描述的图像中的任何一个。
在此针对图1至图8描述的电子装置、比较器、XNOR门、累加器、MAC运算器、处理器、存储器、通信模块、传感器、电子装置500、比较器510、XNOR门520、累加器530、MAC运算器540、电子装置800、处理器801、存储器803、通信模块805、传感器807以及其他设备、装置、单元、模块和组件由硬件组件实现或表示硬件组件。可被用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器和被配置为执行本申请中描述的操作的任何其他电子组件。在其他示例中,执行在本申请中描述的操作的硬件组件中的一个或多个由计算硬件(例如,由一个或多个处理器或计算机)实现。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算数逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或者被配置为以限定的方式响应并执行指令以达到期望结果的任何其他装置或装置的组合)实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)以执行在本申请中描述的操作。硬件组件还可响应于指令或软件的执行而访问、操纵、处理、创建和存储数据。为了简洁,单数术语“处理器”或“计算机”可用于在本申请中描述的示例的描述中,但在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理单元、或多种类型的处理单元、或两者。例如,单个硬件组件、或者两个或更多个硬件组件可由单个处理器、或者两个或更多个处理器、或者处理器和控制器实现。一个或多个硬件组件可由一个或多个处理器、或者处理器和控制器实现,并且一个或多个其他硬件组件可由一个或多个其他处理器、或者另一处理器和另一控制器实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同处理配置中的任何一个或多个,不同处理配置的示例包括单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。
图1至图8中示出的执行在本申请中描述的操作的方法由被实现为如上所述地执行指令或软件以执行在本申请中描述的由所述方法执行的操作的计算硬件(例如,由一个或多个处理器或计算机)执行。例如,单个操作、或者两个或更多个操作可由单个处理器、或者两个或更多个处理器、或者处理器和控制器执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器执行,并且一个或多个其他操作可由一个或多个其他处理器、或者另一处理器和另一控制器执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以用于单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由硬件组件执行的操作和如上所述的方法。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。指令或软件可基于附图中示出的框图和流程图以及说明书中的对应描述使用任何编程语言来编写,附图中示出的框图和流程图以及说明书中的对应描述公开了用于执行由硬件组件执行的操作和如上所述的方法的算法。
控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件、以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储装置、硬盘驱动器(HDD)、固态驱动器(SSD)、卡型存储器(诸如,多媒体卡或微型卡(例如,安全数字(SD)或极限数字(XD)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘和任何其他装置,该任何其他装置被配置为以非暂时性方式存储指令或软件、以及任何相关联的数据、数据文件和数据结构,并将指令或软件、以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机,使得一个或多个处理器或计算机可执行指令。在一个示例中,指令或软件、以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得指令和软件、以及任何相关联的数据、数据文件和数据结构由一个或多个处理器或计算机以分布方式存储、访问和执行。
虽然本公开包括特定示例,但是,在理解本申请的公开之后将是清楚的是,在不脱离权利要求及其等同物的精神和范围的情况下,可在这些示例中做出形式和细节上的各种改变。在此描述的示例将仅被理解为描述性含义,而不是出于限制的目的。每个示例中的特征或方面的描述将被认为可应用于其它示例中的类似的特征或方面。如果描述的技术以不同的顺序被执行,和/或如果描述的系统、结构、装置或电路中的组件以不同的方式被组合和/或由其他组件或它们的等同物来代替或补充,则可获得合适的结果。
Claims (18)
1.一种硬件加速器,所述硬件加速器包括:
比较器;
同或门;
累加器;以及
乘法和累加运算器,
其中,神经网络的基本块包括:第一批量归一化层、量化层、卷积层、激活层和第二批量归一化层,并且
其中,基本块通过第一批量归一化运算、符号函数运算、逐位卷积运算、激活函数运算、第二批量归一化运算和残差连接运算的组合由所述装置驱动。
2.根据权利要求1所述的硬件加速器,其中,比较器被配置为:通过将对转换后的输入数据执行的符号函数运算的结果与预定值进行比较,来量化输入数据。
3.根据权利要求1或2所述的硬件加速器,其中,
第二批量归一化运算包括:第一部分和第二部分,并且
转换后的输入数据包括所述第二部分,并且转换后的输入数据的所述第二部分被反应在使用第一批量归一化运算确定的第一批量归一化的输入数据中。
4.根据权利要求1所述的硬件加速器,其中,同或门和累加器被配置为执行逐位卷积运算。
5.根据权利要求1所述的硬件加速器,其中,
第二批量归一化运算包括:第一部分和第二部分,以及
乘法和累加运算器被配置为执行激活函数运算、残差连接运算和针对所述第一部分的运算。
6.根据权利要求5所述的硬件加速器,其中,乘法和累加运算器被配置为:
通过将激活函数应用于逐位卷积运算的逐位卷积运算结果,确定输出数据;
将所述第一部分乘以输出数据;以及
执行与输入数据相加的运算。
7.根据权利要求6所述的硬件加速器,其中,激活函数包括:
线性修正单元函数。
8.一种用于硬件加速器的方法,所述方法包括:
通过使用硬件加速器的比较器将对转换后的输入数据执行符号函数运算的结果与预定值进行比较,来量化输入数据;
使用硬件加速器的同或门和累加器执行逐位卷积运算;以及
使用硬件加速器的乘法和累加运算器执行激活函数运算和残差连接运算。
9.根据权利要求8所述的方法,其中
第二批量归一化运算包括:第一部分和第二部分,并且
转换后的输入数据包括所述第二部分,并且转换后的输入数据的所述第二部分被反应在使用第一批量归一化运算确定的第一批量归一化的输入数据中。
10.根据权利要求8所述的方法,其中
第二批量归一化运算包括:第一部分和第二部分,并且
使用乘法和累加运算器执行运算的步骤包括:执行激活函数运算、残差连接运算和针对所述第一部分的运算。
11.根据权利要求10所述的方法,其中,使用乘法和累加运算器执行运算的步骤包括:
通过将激活函数应用于逐位卷积运算的逐位卷积运算结果来确定输出数据;
将所述第一部分与输出数据相乘;以及
执行与输入数据相加的运算。
12.根据权利要求11所述的方法,其中,激活函数包括:
线性修正单元函数。
13.根据权利要求8至12中的任何一项所述的方法,其中,
神经网络的基本块包括:第一批量归一化层、量化层、卷积层、激活层和第二批量归一化层,并且
基本块通过量化输入数据的步骤、执行逐位卷积运算的步骤、执行激活函数运算和残差连接运算的步骤而被驱动。
14.一种存储指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时,配置所述一个或多个处理器执行权利要求8至13中的任意一项所述的方法。
15.一种电子装置,所述电子装置包括:
主机处理器,被配置为控制包括在所述电子装置中的组件的操作;以及
硬件加速器,被配置为通过基于主机处理器的命令执行神经网络来处理输入数据,
其中,硬件加速器包括:
比较器;
同或门;
累加器;以及
乘法和累加运算器。
16.根据权利要求15所述的电子装置,其中,
比较器被配置为:通过将对转换后的输入数据执行符号函数运算的结果与预定值进行比较,来量化输入数据,
同或门和累加器被配置为执行逐位卷积运算,以及
乘法和累加运算器被配置为执行激活函数运算和残差连接运算。
17.一种用于神经网络的装置,所述装置包括:
硬件加速器,包括:
比较器,被配置为:通过将预定值与对转换后的输入数据执行符号函数运算的结果进行比较,来量化输入数据,转换后的输入数据使用第一批量归一化运算被确定;
同或门和累加器,被配置为对量化的输入数据执行逐位卷积运算;
乘法和累加运算器,被配置为:通过将激活函数应用于逐位卷积运算的结果,来确定输出数据,并且将第二批量归一化运算的第一部分与输出数据相乘;以及
执行将相乘的结果与输入数据相加的运算。
18.根据权利要求17所述的装置,其中,硬件加速器被配置为针对第二神经网络运算进行以下处理:基于执行相加的运算处理的结果,执行池化、通道扩展和第三批量归一化运算中的任何一个、或者任何两个或更多个的任何组合。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210154992A KR20230068823A (ko) | 2021-11-11 | 2021-11-11 | 인공 신경망 모델을 구동하기 위한 연산 방법 및 연산 장치 |
KR10-2021-0154992 | 2021-11-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116128023A true CN116128023A (zh) | 2023-05-16 |
Family
ID=86228422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210973764.3A Pending CN116128023A (zh) | 2021-11-11 | 2022-08-15 | 硬件加速器、电子装置和用于神经网络的装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230146493A1 (zh) |
KR (1) | KR20230068823A (zh) |
CN (1) | CN116128023A (zh) |
-
2021
- 2021-11-11 KR KR1020210154992A patent/KR20230068823A/ko unknown
-
2022
- 2022-08-09 US US17/883,844 patent/US20230146493A1/en active Pending
- 2022-08-15 CN CN202210973764.3A patent/CN116128023A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230146493A1 (en) | 2023-05-11 |
KR20230068823A (ko) | 2023-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108073981B (zh) | 处理卷积神经网络的方法和设备 | |
CN108229655B (zh) | 卷积神经网络(cnn)处理方法和设备 | |
US11636306B2 (en) | Implementing traditional computer vision algorithms as neural networks | |
US11887005B2 (en) | Content adaptive attention model for neural network-based image and video encoders | |
CN111989697A (zh) | 用于并行和分布式张量计算的神经硬件加速器 | |
CN110546628A (zh) | 用有向线缓冲器最小化存储器读取提高神经网络环境性能 | |
US20170097884A1 (en) | Pipelined convolutional operations for processing clusters | |
CN111428852A (zh) | 用于神经网络量化的方法和装置 | |
CN112215332B (zh) | 神经网络结构的搜索方法、图像处理方法和装置 | |
EP3528181A1 (en) | Processing method of neural network and apparatus using the processing method | |
EP3766021A1 (en) | Cluster compression for compressing weights in neural networks | |
US20190278828A1 (en) | Electronic apparatus and control method thereof | |
CN113010099A (zh) | 有效地利用存储器空间的神经网络处理设备及其操作方法 | |
CN113947703A (zh) | 通过神经网络识别图像的方法和设备 | |
CN114819050A (zh) | 训练用于图像识别的神经网络的方法和设备 | |
US20240012966A1 (en) | Method and system for providing a three-dimensional computer aided-design (cad) model in a cad environment | |
CN113407747A (zh) | 硬件加速器执行的方法、硬件加速器和神经网络装置 | |
CN116128023A (zh) | 硬件加速器、电子装置和用于神经网络的装置 | |
US20230148319A1 (en) | Method and device with calculation for driving neural network model | |
KR20200143818A (ko) | 희소 깊이 지도에서 깊이 노이즈를 제거하는 장치 및 방법 | |
US20210209473A1 (en) | Generalized Activations Function for Machine Learning | |
US20220283778A1 (en) | Method and device for encoding | |
EP4141646A1 (en) | Method and apparatus with calculation | |
US12026617B2 (en) | Neural network method and apparatus | |
US11681915B2 (en) | Neural network method and apparatus |
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 |