CN111352656A - 使用按位运算的神经网络设备和方法 - Google Patents
使用按位运算的神经网络设备和方法 Download PDFInfo
- Publication number
- CN111352656A CN111352656A CN201910822391.8A CN201910822391A CN111352656A CN 111352656 A CN111352656 A CN 111352656A CN 201910822391 A CN201910822391 A CN 201910822391A CN 111352656 A CN111352656 A CN 111352656A
- Authority
- CN
- China
- Prior art keywords
- bit
- neural network
- serial block
- feature map
- bit serial
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 157
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000003672 processing method Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims description 90
- 230000015654 memory Effects 0.000 claims description 66
- 208000011580 syndromic disease Diseases 0.000 claims description 6
- 230000004807 localization Effects 0.000 claims 1
- 239000010410 layer Substances 0.000 description 151
- 230000004913 activation Effects 0.000 description 20
- 238000001994 activation Methods 0.000 description 20
- 238000013527 convolutional neural network Methods 0.000 description 19
- 238000012549 training Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 239000013598 vector Substances 0.000 description 11
- 238000000605 extraction Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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
- 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
- G06F9/30018—Bit or string instructions
-
- 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/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- G06F17/15—Correlation function computation including computation of convolution operations
-
- 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
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/045—Combinations of 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (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)
Abstract
公开一种使用按位运算的神经网络设备和方法。所述神经网络处理方法包括:获得与神经网络中的层的权重核的第一数据对应的核位串行块;基于所述层的一个或多个输入特征图的第二数据生成特征图位串行块;以及通过使用核位串行块与特征图位串行块之间的按位运算执行所述层的卷积运算来生成输出特征图的至少一部分。
Description
本申请要求于2018年12月24日提交到韩国知识产权局的第10-2018-0168566号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及一种使用按位运算的神经网络设备和方法。
背景技术
例如,已经通过作为专门的计算架构的处理器实现的神经网络模型实现了识别的技术自动化,其中,在大量训练之后,处理器实现的神经网络模型可提供输入模式与输出模式之间的计算上直观的映射。产生这样的映射的训练能力可被称为神经网络的学习能力。此外,由于专门的训练,因此这样专门训练的神经网络可具有针对例如神经网络可能还未针对其进行训练的输入模式生成相对准确输出的泛化能力。
在神经网络用于对象识别的情况下,存在较大的存储器加载的次数和较大的操作的次数,这导致存储器空间和计算能量的低利用。
发明内容
提供本发明内容以简化的形式介绍在下面的具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求权利的主题的关键特征或必要特征,也不意在作为帮助确定要求权利的主题的范围而被使用。
在一个总体方面,一种处理器实现的神经网络处理方法包括:获得与神经网络中的层的权重核的第一数据对应的核位串行块;基于所述层的一个或多个输入特征图的第二数据生成特征图位串行块;以及通过使用核位串行块与特征图位串行块之间的按位运算执行所述层的卷积运算,生成输出特征图的至少一部分。
核位串行块和特征图位串行块可分别包括具有相同的位位置的位。
核位串行块可包括与权重核的核图的元素的多个位位置中的一个位位置对应的位,以及获得的步骤可包括:获得独立于核位串行块计算的其他核位串行块,其中,其他核位串行块均包括与所述多个位位置中的与所述多个位位置中的所述一个位位置不同的位位置对应的位。
所述多个位位置可包括最高有效位(MSB)至最低有效位(LSB)。
可通过交叉方法,分别沿权重核的通道方向从第一数据提取核位串行块,并且沿所述一个或多个输入特征图的通道方向从第二数据提取特征图位串行块,或者可通过平面方法,分别沿权重核的平面方向从第一数据提取核位串行块,并且沿所述一个或多个输入特征图中的两个或更多个的平面方向从第二数据提取特征图位串行块。
核位串行块和特征图位串行块可基于用于单指令多数据(SIMD)处理的参考位宽。
核位串行块和特征图位串行块中不满足参考位宽的空间可使用0填充。
参考位宽可以是32位、64位和128位中的任何一个。
按位运算可包括逻辑与(AND)运算和popcount运算。
核位串行块和特征图位串行块可具有相同的尺寸。
执行卷积运算的步骤可包括:在核位串行块与特征图位串行块之间执行逻辑AND运算;对逻辑AND运算的结果值执行popcount运算;以及基于popcount运算的结果值确定卷积运算的结果值。
确定卷积运算的结果值的步骤可包括:基于popcount运算的结果值执行位定位。
可基于第一数据的位位置来执行位定位。
第一数据和第二数据中的每个可由小于8位的位宽表示。
获得核位串行块的步骤可包括:从存储器获得预先存储在存储器中的核位串行块;或者基于第一数据生成核位串行块。
一种非暂时性计算机可读存储介质可存储指令,当由一个或多个处理器执行所述指令时使得所述一个或多个处理器执行处理方法。
在另一总体方面,一种神经网络处理设备包括:一个或多个处理器,被配置为:获得与神经网络中的层的权重核的第一数据对应的核位串行块;基于所述层的一个或多个输入特征图的第二数据生成特征图位串行块;以及通过使用核位串行块与特征图位串行块之间的按位运算执行所述层的卷积运算来生成输出特征图的至少一部分。
核位串行块和特征图位串行块可分别包括具有相同的位位置的位。
核位串行块和特征图位串行块可基于用于单指令多数据(SIMD)处理的参考位宽。
按位运算可包括逻辑AND运算和popcount运算。
为了执行卷积运算,所述一个或多个处理器可被配置为:在核位串行块与特征图位串行块之间执行逻辑AND运算,对逻辑AND运算的结果值执行popcount运算,并基于popcount运算的结果值确定卷积运算的结果值。
存储器可存储指令,其中,当由所述一个或多个处理器执行所述指令时,所述指令将所述一个或多个处理器配置为执行:核位串行块的获得,特征图位串行块的生成,以及输出特征图的至少一部分的生成。
在另一总体方面,一种处理器实现的神经网络处理方法包括:接收神经网络层的核和将被神经网络层处理的特征图;获得包括与所述核的元素对应的二进制元素值的核位串行块,其中,与所述核的元素对应的二进制元素值包括所述核的元素的位位置之中的预定位位置的位;获得包括与特征图的元素对应的二进制元素值的特征图位串行块,其中,与特征图的元素对应的二进制元素值包括特征图的元素的位位置之中的预定位位置的位;以及通过使用特征图位串行块与核位串行块之间的按位运算执行神经网络层的卷积运算,生成输出特征图的至少一部分。
获得特征图位串行块的步骤可包括:针对特征图的元素的位位置中的每个生成特征图位串行块,以及获得核位串行块的步骤可包括:针对所述核的元素的位位置中的每个生成核位串行块。
在一个总体方面,一种识别对象的方法,包括:接收多媒体数据;以及使用神经网络从多媒体数据识别对象,其中,针对神经网络的至少一个层中的任意一个层执行如下处理:获得与神经网络中的所述任意一个层的权重核的第一数据对应的核位串行块;基于所述任意一个层的一个或多个输入特征图的第二数据生成特征图位串行块;以及通过使用核位串行块与特征图位串行块之间的按位运算执行所述层的卷积运算,生成输出特征图的至少一部分,其中,当所述任意一个层是第一层时,所述一个或多个输入特征图对应于多媒体数据,当所述任意一个层是除了第一层之外的层时,所述一个或多个输入特征图对应于基于前一层中的卷积运算的结果值生成的前一层的输出特征图。
一种非暂时性计算机可读存储介质可存储指令,当由一个或多个处理器执行所述指令时使得所述一个或多个处理器执行识别对象的方法。
在一个总体方面,一种识别对象的设备,包括:一个或多个处理器,被配置为:接收多媒体数据;以及使用神经网络从多媒体数据识别对象,其中,所述一个或多个处理器被配置针为对神经网络的至少一个层中的任意一个层执行如下处理:获得与神经网络中的所述任意一个层的权重核的第一数据对应的核位串行块;基于所述任意一个层的一个或多个输入特征图的第二数据生成特征图位串行块;以及通过使用核位串行块与特征图位串行块之间的按位运算执行所述层的卷积运算来生成输出特征图的至少一部分,其中,当所述任意一个层是第一层时,所述一个或多个输入特征图对应于多媒体数据,当所述任意一个层是除了第一层之外的层时,所述一个或多个输入特征图对应于基于前一层中的卷积运算的结果值生成的前一层的输出特征图。
在一个总体方面,一种识别对象的方法,包括:接收多媒体数据;以及使用神经网络从多媒体数据识别对象,其中,针对神经网络的至少一个层中的任意一个层执行如下处理:接收神经网络中的所述任意一个层的核和将被神经网络中的所述任意一个层处理的特征图;获得包括与所述核的元素对应的二进制元素值的核位串行块,其中,与所述核的元素对应的二进制元素值包括所述核的元素的位位置之中的预定位位置的位;获得包括与特征图的元素对应的二进制元素值的特征图位串行块,其中,与特征图的元素对应的二进制元素值包括特征图的元素的位位置之中的预定位位置的位;以及通过使用特征图位串行块与核位串行块之间的按位运算执行神经网络中的所述任意一个层的卷积运算,生成输出特征图的至少一部分,其中,当所述任意一个层是第一层时,所述一个或多个输入特征图对应于多媒体数据,当所述任意一个层是除了第一层之外的层时,所述一个或多个输入特征图对应于基于前一层中的卷积运算的结果值生成的前一层的输出特征图。
从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出使用神经网络的处理设备的示例。
图2示出卷积神经网络(CNN)的架构的示例。
图3示出针对单个层的基于按位运算的卷积的示例。
图4示出位串行块的示例。
图5示出与单个权重核对应的位串行块的示例。
图6A至图6C示出位提取的示例。
图7A和图7B示出零填充的示例。
图8示出针对单个权重核的基于按位运算的卷积的示例。
图9示出基于按位运算的处理与基于乘法累加(MAC)运算的处理之间的比较的示例。
图10是示出使用神经网络的处理方法的示例的流程图。
图11示出使用神经网络的处理设备的示例。
图12示出电子设备的示例。
贯穿附图和具体实施方式,除非另有描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例绘制,并且为了清楚、说明和方便,附图中元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供下面的详细描述以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不受限于在此阐述的那些顺序,而是除了必须以特定的顺序发生的操作之外,可如在理解本申请的公开之后将是清楚地那样被改变。此外,为了更加清楚和简明,可省略在本申请的公开的理解之后已知的特征的描述。
在此描述的特征可以以不同的形式来实现,而不被解释为受限于在此描述的示例。相反,已提供在此描述的示例,仅用于示出在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式。
贯穿说明书,当组件被描述为“连接到”或“结合到”另一组件时,它可直接“连接到”或“结合到”所述另一组件,或者它们之间可存在一个或多个其他组件。相反,当元件被描述为“直接连接到”或“直接结合到”另一元件时,它们之间可不存在其他元件。同样地,例如“在……之间”和“紧接在……之间”以及“与……邻近”和“紧邻”的表述也可以相同的方式来解释。如在此使用的,术语“和/或”包括相关所列项的任意一个或相关所列项的任意两个或更多个的任意组合。
虽然在此可使用诸如“第一”、“第二”和“第三”的术语来描述各种构件、组件、区域、层或者部分,但是这些构件、组件、区域、层或者部分不被这些术语所限制。更确切地说,这些术语仅用于将一个构件、组件、区域、层或者部分与另一构件、组件、区域、层或者部分进行区分。因此,在不脱离示例的教导的情况下,在此描述的示例中表示的第一构件、第一组件、第一区域、第一层或者第一部分也可被称为第二构件、第二组件、第二区域、第二层或者第二部分。
在此使用的术语仅用于描述各种示例,并不用于限制公开。除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。术语“包含”、“包括”和“具有”说明存在叙述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。
除非另有定义,否则在此使用的所有术语(包括技术术语或科学术语)具有与基于本申请的公开的理解和本公开所属领域普通技术人员通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如在通用词典中定义的术语)将被解释为具有与它们在相关领域中的上下文和本申请的公开中的含义一致的含义,并且不被理想化或过于形式化地理解。在此针对示例或实施例使用术语“可”(例如,关于示例或实施例可包括或实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,但是所有示例不限于此。
此外,在示例实施例的描述中,当认为在理解本申请的公开之后由此已知的结构或功能的详细描述将导致示例实施例的模糊解释时,将省略这样的描述。
在下文中,将参照附图详细描述示例,并且附图中相同的参考标号始终表示相同的元件。
图1示出使用神经网络的处理设备的示例的示图。在下文中,使用神经网络的处理设备也可被称为神经网络处理设备(或简称为处理设备)。
例如,在本公开中,虽然设备可被描述为例如基于使用先前训练的(在下文中“原始”)参数的卷积和/或基于这样先前训练的参数选择性地执行的卷积或卷积运算实现卷积神经网络(CNN),但是实施例不限于这样仅执行这样的卷积和/或选择性的卷积运算的设备,而是实施例还包括这样的设备:其还被配置为训练CNN,以及在一个示例中使用训练的CNN和/或选择性实现的CNN,其中,在一个示例中,各个层或整个CNN被训练以执行过滤、检测、识别、拒绝、验证、分类或者其他这样的“解释的”操作或目标。在本申请中,识别可被广义地理解。例如,识别可包括过滤、检测、辨识、拒绝、验证、分类或者其他这样的“解释的”操作或目标等中的一个或多个。
参照图1,神经网络设备可获取与包括在神经网络(例如,在此讨论的神经网络的示例CNN类型的)中的一个或多个层对应的这样训练的参数,注意实施例不限于此。例如,神经网络设备可从存储器或通过外部请求或提供来获取参数(例如,如在神经网络的示例训练期间由神经网络设备确定的参数)。此外,神经网络设备可从提供的核、核元素和/或其他连接权重向量、一个或多个矩阵、或者其他格式的核、核元素和/或其他连接权重获取参数,其中,提供的核、核元素和/或其他连接权重向量、一个或多个矩阵、或者其他格式的核、核元素和/或其他连接表示训练的神经网络的一些或所有训练的核和/或加权连接。神经网络设备还可被设置或可使用核、核元素和/或其他连接权重向量、一个或多个矩阵、或者其他格式的核、核元素和/或连接权重,作为例如通过神经网络设备或通过其他处理设备或服务器对神经网络的示例训练的结果。神经网络设备代表一个或多个处理器和一个或多个非暂时性存储器(例如,诸如用于存储这样的在神经网络的卷积和/或选择性卷积运算期间和在神经网络的卷积和/或选择性卷积运算之后使用的参数的非暂时性存储器,以及以用于存储指令的非暂时性存储器,其中,当由一个或多个处理器执行所述指令时,使得一个或多个处理器实现例如在此描述的一个或多个操作或所有操作)。
神经网络包括多个层,并且每个层包括多个节点。例如,可存在输入层、至少一个隐藏层和输出层,其中,作为非限制性示例,例如,隐藏层是示例卷积层,并且附加隐藏层可存在以用于前馈操作。在这样的示例中,根据神经网络的架构,包括在邻近层中的节点可根据例如可被加权或不被加权的各个连接被选择性地连接。例如,神经网络可由前述处理器(即,一个或多个处理器,所述一个或多个处理器被配置为生成具有这样的多个层(每个层包括多个节点)的神经网络结构/架构,并被配置为在神经网络结构的邻近层中的邻近节点之间施加这样的示例加权连接,和/或在层内施加这样的示例核或加权连接,以解释施加到神经网络结构的输入数据)实现。仅作为示例,在此对输入数据的这种“解释”可包括执行的过滤、检测、识别、验证或拒绝(诸如,图像识别或验证、转换或拒绝、或输入数据二进制或多类分类、聚类(clustering)、模式观察、转换和/或回归以及神经网络的任何其他训练的目标)。因此,作为非限制性示例,在变化的实施例中,神经网络可被训练用于图像或对象检测、识别、辨识、拒绝或辨别。因此,基于训练数据和期望的解释目标,可在通过神经网络设备的训练期间变化架构、邻近节点和/或核之间的选择性连接、核元素或层内的其他连接,直到神经网络被训练到期望的解释目标的期望可接受性为止。例如,神经网络的卷积(或CNN)层可被训练用于图像或对象过滤、检测、识别、验证或拒绝,因此各个卷积核元素(例如,用于通过特征核变化特征提取的各个卷积核元素)可被训练为用于图像或对象过滤、检测、识别、验证或拒绝操作的原始期望可接受性。神经网络还可包括不同类型的神经网络,并且仅包括一个或多个卷积层(例如,用于其他目标的选择性特征提取的一个或多个卷积层)。因此,在此,尽管可从神经网络设备的角度讨论实施例,但是对CNN的这种引用并不意在将设备限制为仅实现CNN。返回到神经网络的训练,训练的神经网络的结果核、核元素和/或其他连接权重可被称为神经网络的参数(例如,被展示为卷积层的至少训练的核元素或CNN的运算的参数)。例如,可基于标记的输入图像信息或期望的相应的输出图像、过滤、分类或几何参数诸如通过反向传播算法来训练神经网络。例如,在训练中,不同隐藏层的节点之间的示例连接权重可被递归地调节,直到相应的神经网络模型被训练为具有期望的准确率或低于最大误差率为止。同样地,在训练期间,可在递归调节中调节各个层内的节点之间的示例核、核元素或连接权重。例如,分别训练的神经网络可被存储在识别设备的存储器中。在示例中,训练的神经网络可以以训练的向量、一个或多个矩阵或其他格式存储,例如,其中,向量、矩阵或其他格式的元素表示或建议相应的神经网络结构的相应的训练的参数(例如,训练的核、核元素、和/或其他加权连接)。如上所述,在此这样训练的核或核元素将被称为“原始”权重。存储的训练的神经网络还可包括超参数信息,其中,超参数信息可定义相应的神经网络的与示例存储的训练的参数对应的特定结构或架构。仅作为示例,超参数可定义输入和输出层的架构或结构,以及存在多少隐藏层和各个隐藏层的功能和结构/架构,这样的各自布置,和哪些是完全连接的、递归的、卷积(例如,包括步长和/或填充信息)、去卷积的或池化的层。超参数还可包括神经网络中的任何偏置和/或上下文节点的配置和值的信息、节点的相应的激活函数、节点类型(诸如,长短期记忆节点、门控线性单元节点或者仅被配置为执行用于输入求和的单个激活函数的节点),并且可定义神经网络的任何递归结构或任何进一步递归结构,其中,递归结构可根据训练的神经网络的实施例和解释目标而变化。
因此,参照图1,处理设备100可处理神经网络110的操作。例如,神经网络110的操作可包括对象识别(例如,识别或验证输入图像中的对象)。与将在下文中描述的神经网络110有关的处理操作的至少一部分由硬件(例如,神经形态处理器)或者硬件和指令的组合(诸如,一个或多个神经处理器(例如,实现存储在存储器中的指令的一个或多个神经处理器))来实现。
神经网络110可包括卷积神经网络(CNN)。神经网络110可通过基于深度学习,映射具有非线性关系的输入数据和输出数据来执行对象识别和对象验证。深度学习可表示用于从大数据集识别图像或话音(或语音)的机器学习方法。深度学习可被解释为优化的问题解决处理,其中,优化的问题解决处理在使用准备好的训练数据训练神经网络110的同时定位使能量(即,功耗)或损失最小化的点。深度学习可分为有监督学习和无监督学习,其中,通过有监督学习和无监督学习可获得与神经网络110的架构或模型对应的权重。通过这样获得的权重或一个或多个核的元素,输入数据和输出数据可根据神经网络的训练目标被映射。
与上面类似,神经网络110可包括多个层,其中,多个层包括输入层、至少一个隐藏层和输出层。例如,如图1中所示,包括在神经网络110中的第一层111和第二层112可以是多个层中的至少一部分。作为示例,第一层111可表示输入层,第二层112可表示至少一个隐藏层,或者第一层111和第二层112可各自表示至少一个隐藏层中的隐藏层。尽管在图1的示例中示出两个层111和112,但是神经网络110还可包括除了两个层111和112之外的更多个层。
在CNN中,输入到每个层的数据可被称为输入特征图或特征体(volume),并且从每个层输出的数据可被称为输出特征图或特征体。在一个示例中,输入到每个层的数据(输入数据)可以是多媒体数据。例如,多媒体数据可包括文本、语音、动态图像和静态图像中的至少一个。根据一个示例,层的输出特征图或特征体可对应于层中的对作为输入被层接收的(例如,从前一层接收的)输入特征图或特征体执行的卷积运算的结果,或者对应于每个层中的处理激活函数的结果。例如,由先前层的先前激活产生的示例输入特征图和示例输出特征图可被称为激活数据。例如,每个层中的卷积运算的结果或每个层中的处理激活函数的结果也可被称为激活数据。此外,输入层中的输入特征图可对应于输入图像的图像数据。
为了处理神经网络110的操作,处理设备100可针对每个层在输入特征图与权重核之间执行卷积运算,并基于卷积运算的结果生成输出特征图。权重核可具有与输入特征体的通道的数量对应的多个通道,并且还可存在导致生成多个通道的输出特征体的多个权重核。在CNN中,可对卷积层执行深度学习。处理设备100可通过将激活函数应用于卷积运算的结果来生成输出特征图。例如,激活函数可包括S形(sigmoid)、双曲正切(tanh)和修正线性单元(ReLU)。通过该激活函数,神经网络110可被分配有非线性。当神经网络110的宽度和深度足够大时,神经网络110可具有足以实现功能的容量。如上所讨论的,当神经网络110通过训练处理学习足够大量的训练数据或使用足够大量的训练数据被训练时,神经网络110可实现最佳性能。
处理设备100可使用权重核的位串行(bit serial)和输入特征图的位串行来执行基于按位运算的卷积。尽管以下描述集中于对第一层111的基于按位运算的卷积,但是可对神经网络110中的多个卷积层中的每个卷积层执行这种基于按位运算的卷积。
在图1的示例中,处理设备100可在块121和122中将第一层111的权重核w和第一层111的输入特征图x分别转换为位串行s_w和位串行s_x。例如,处理设备100可通过对权重核w和输入特征图x进行切片,将权重核w和输入特征图x分别转换为位串行s_w和位串行s_x。在用于将权重核w和输入特征图x的位级(bit level)调节为预设位级的预处理过程中,处理设备100可对权重核w和输入特征图x进行量化,并将量化的权重核w和量化的输入特征图x分别转换为位串行s_w和位串行s_x。在这个示例中,预设位级可对应于低位宽。低位宽可以是小于8位的位宽(例如,4位的位宽和/或2位的位宽)。
位串行s_w和位串行s_x可通过交叉方法沿权重核w和输入特征图x(例如,权重核w和输入特征图x是多个通道的体)的通道方向被提取,或者通过平面方法沿权重核w和输入特征图x的平面方向被提取。例如,在权重核w被预先训练的情况下,位串行s_w可基于训练的权重核w通过转换来获得,然后被存储在存储器中。在这个示例中,处理设备100可从存储器获得位串行s_w,而不是在块121中将权重核w转换为位串行s_w。
权重核可预先确定。在此,“预先”可指示在神经网络110开始之前(例如,在神经网络110开始用于使用第一层111和第二层112执行操作的推断操作之前)。神经网络110开始可指示神经网络110准备好推断。例如,神经网络110开始可指示神经网络110被加载到存储器中,或者在神经网络110被加载在存储器中之后,用于推断的输入数据被输入到神经网络110。
元素可表示包括在权重核和激活数据中的单元数据。例如,在权重核具有K×K×C尺寸的情况下,权重核可包括K×K×C个元素。权重核的元素可对应于权重值,并且激活数据的元素可对应于激活值。权重核和激活数据的元素可由预设的位宽表示。在前述示例中,权重核的K×K×C个元素可由Z位表示。权重核的元素和激活数据的元素可由相同的位宽或不同的位宽表示。
此外,通过对权重核w进行切片将权重核w转换为位串行s_w的步骤可包括通过Z个位位置中的每个来划分权重核w的元素以配置位串行s_w。因此,位串行s_w可包括通过Z个位位置中的每个而划分的权重核w的元素。例如,位串行s_w可包括Z个位串行块,其中,Z个位串行块包括与最高有效位(MSB)对应的位串行块至与最低有效位(LSB)对应的位串行块。Z个位串行块可包括具有相同位位置的K×K×C个位。位串行s_x可具有与位串行s_w的数据结构对应的数据结构。
处理设备100可在块130中基于位串行s_w与位串行s_x之间的按位运算执行卷积运算。按位运算可表示以位单元执行的位串行之间的运算。例如,按位运算可包括逻辑与(AND)运算和popcount运算(例如,用于确定阵列包含多少个“1”位的人口计数(populationcount)或popcnt运算)。
可基于两个向量的内积来计算卷积运算。例如,在位串行s_w是M位定点表示的整数向量的假设下,位串行s_w可由等式1表示。
等式1:
在等式1中,cm表示二进制向量,cm(s_w)的每个元素表示位串行s_w的元素之中的位于2m的位置的位。例如,类似地,在位串行s_x是K位定点表示的整数向量的假设下,位串行s_x可由等式2表示。
等式2:
在等式2中,ck表示二进制向量,ck(s_x)的每个元素表示位串行s_x的元素之中的位于2k的位置的位。例如,可如等式3所表示的来计算位串行s_w与位串行s_x之间的内积。
等式3:
例如,在s_w、s_x是由{-1,1}配置的向量的情况下,可使用逻辑同或(xnor)运算来代替逻辑AND运算。在这种情况下,等式1至等式3的部分可被改变。
在一个示例中,与权重核w对应的数据和与输入特征图x对应的数据可由低位宽表示。在这个示例中,低位宽可指示小于8位的位宽(例如,4位的位宽和/或2位的位宽)。与权重核w对应的数据可包括权重,并且与输入特征图x对应的数据可包括激活。权重和激活可由相同的位宽或不同的位宽表示。
卷积运算可通过数据加载和通过使用算术逻辑单元(ALU)的运算来执行。在使用ALU和较高位宽的数据的典型卷积运算中,大量的能量可被消耗以加载数据,因此较低位宽的数据可在能量消耗方面更有效。在本公开的示例中,以低位级操作的网络可被使用,并且即使具有低位级(例如,4位),它也可有利地表现出对应于全精度的性能。
按位运算可用于有效地处理低位宽数据。确定将被处理的最小数据单元可以是具有8位大小的字符。因此,当数据被处理时,具有小于8位的位宽的数据可被存储在8位或更多位的容器中,然后被处理。例如,在基于乘法累加(MAC)运算执行具有4位的位宽的权重核的元素与具有4位的位宽的输入特征图的元素之间的典型卷积运算的情况下,8位存储器空间可需要被分配给具有4位的位宽的权重核的元素和具有4位的位宽的输入特征图的元素中的每个。因此,在实现典型卷积运算时,8位存储器空间的4位存储器空间可被浪费。
然而,在本公开的示例中,当权重核和输入特征图中的每个由位串行表示时,存储器空间的利用可被提高。这至少是因为位串行可具有大于或等于8位的长度。在本公开的前述示例中,Z个位串行块中的每个可包括K×K×C个单一位。因此,在可在8位容器被填充的情况下执行运算。如在本公开的前述示例中,由于容器空间的利用增大,所以更大量的数据可被一次加载并处理,因此存储器加载的次数和操作的次数可减少。因此,与包括MAC运算的典型卷积运算相比,本公开的示例的基于按位运算的卷积运算在存储器空间的利用和计算能量方面可更有效。在诸如移动终端的有限资源环境下,存储器空间和计算能量的这种有效使用可特别有利。
在一个示例中,位串行s_w和位串行s_x可基于用于单指令多数据(SIMD)处理的参考位宽。SIMD处理可以是通过单个指令同时处理多个值的数据处理方法。例如,参考位宽可以是32位、64位和128位中的一个。例如,在128位SIMD的情况下,可通过单个指令处理128位数据。如将在下文中描述,在位串行s_w和位串行s_x中存在不满足参考位宽的空间的情况下,可用0填充该空间以用于SIMD处理。
在图1的示例中,处理设备100可在块130中基于按位运算来执行卷积运算,并可确定卷积运算的结果值R。处理设备100可基于结果值R确定第一层111的输出特征图y。例如,权重核w可以是第一层111中使用的权重核的部分,并且与权重核w对应的卷积运算的结果值R可以是输出特征图y的部分。当第一层111中使用的所有权重核与输入特征图x之间的卷积运算完成时,第一层111的输出特征图y可被确定。处理设备100可通过后处理操作(诸如,量化),将卷积运算的结果值R转换为与输入特征图x对应的数据格式来确定输出特征图y。例如,处理设备100可使用预先训练的神经网络确定与目标位编号对应的量化参数,并且通过将结果值R乘以量化参数来生成输出特征图y。
在一个示例中,处理设备100可接收多媒体数据,并且使用神经网络从多媒体数据识别对象。针对神经网络的至少一个层中的任意一个层,处理设备100可在块121中获得与神经网络中的所述任意一个层的权重核的第一数据对应的核位串行块,可在块122中基于所述任意一个层的一个或多个输入特征图的第二数据生成特征图位串行块,可在块130中通过使用核位串行块与特征图位串行块之间的按位运算执行所述层的卷积运算,生成输出特征图的至少一部分。
处理设备100可对包括第二层112的神经网络110的剩余卷积层执行与对第一层111执行的前述操作对应的操作。基于第一层111中的卷积运算的结果值生成的第一层111的输出特征图可对应于第二层112的输入特征图。也就是说,当所述任意一个层是第一层111时,所述一个或多个输入特征图可对应于多媒体数据,当所述任意一个层是除了第一层111之外的层时,所述一个或多个输入特征图可对应于基于前一层中的卷积运算的结果值生成的前一层的输出特征图。
图2示出CNN的架构的示例。图2的CNN可对应于图1的神经网络110中的多个层中的一个。
参照图2,基于权重核210与输入特征图220之间的卷积运算生成输出特征图230。在图2的这个示例中,权重核211可包括C个均具有K×K的大小的子权重核。因此,权重核211的大小可以是K×K×C,其中,K×K×C可指示包括在权重核211中的数据元素的数量。也就是说,权重核211可包括K×K×C个元素。权重核211可具有彼此不同的宽度和垂直长度。也就是说,权重核211可具有K1×K2×C的大小,其中,K1和K2彼此不同。在下文中,为了便于描述,可假设K1和K2相同。
此外,C可指示输入通道的数量。例如,CNN中的第一层的C个子权重核可包括红色、绿色和蓝色(RGB)分量(例如,针对RGB分量中的每个的输入通道)。具有K×K×C的大小的权重核均可形成单个输出通道。在图2的示例中,具有K×K×C的大小的权重核的数量可以是D个,因此,网络层可包括D个输出通道。也就是说,D可对应于输出通道的数量。
输出特征图232中的区域231可基于权重核211与输入特征图220中的区域221之间的卷积运算来确定。输出特征图232可通过针对输出特征图232中的剩余区域顺序地执行的权重核211与输入特征图220中的剩余区域之间的卷积运算来生成。在这个示例中,输入特征图的大小可以是W1×H1,并且输出特征图的大小可以是W2×H2。输出特征图的大小可小于输入特征图的大小。输入特征图220可包括C个输入特征图,输出特征图230可例如根据权重核的数量而包括D个输出特征图。
图2的网络层可对应于图1的第一层111,权重核211可对应于图1的权重核w。此外,图2的输入特征图220可对应于图1的输入特征图x,输出特征图232可对应于图1的输出特征图y。在这个示例中,输出特征图232中的区域231可基于与权重核211对应的位串行和与输入特征图220中的区域221对应的位串行之间的按位卷积运算来确定。此外,输出特征图232中的剩余区域可基于与权重核211对应的位串行和输入特征图220中的剩余区域之间的按位卷积运算来确定。当对整个权重核210完成按位卷积运算时,可确定整个输出特征图230。
图3示出针对单个层的基于按位运算的卷积的示例。在下文中将参照图3描述的卷积可应用于图1的神经网络110中的多个层中的任何一个层。将应用卷积的层在此可被称为目标层。
在图3的示例中,示出权重核W1至WD的位串行块310。处理设备可通过基于每个位位置对每个权重核的数据进行切片来生成位串行块310。在这个示例中,位串行块310中的每个可具有K×K×C尺寸。由于每个位串行块可通过按每个位位置对权重核的数据进行切片来获得,因此,每个位串行块的尺寸可对应于相应的权重核的尺寸。
例如,如示出的,权重核W1可具有K×K×C尺寸。在这个示例中,可通过按MSB至LSB的位位置中的每个对包括在权重核W1中的K×K×C个元素的数据进行切片来生成与权重核W1对应的位串行块。在这个示例中,在包括在权重核W1中的元素具有Z位的位宽的情况下,与权重核W1对应的位串行块的数量可以是Z。每个位串行块的元素可包括多个单一位。也就是说,每个位串行块可包括K×K×C个单一位。在下文中,将参照图4详细描述位串行块。
图4示出位串行块的示例。参照图4,权重核410可具有3×3×3尺寸并且可包括具有4位的位宽的元素。权重核410可被转换为四个单独的位串行块420。MSB位串行块可指示符号位。可通过将包括MSB至LSB的位的位位置应用于位串行块420并将它们相加来获得权重核410。也就是说,给定位串行块420的单一位元素的位置可对应于包括给定位位置的权重核410的元素的位置。例如,由于权重核410的(1,1)、(1,2)和(2,2)位置包括具有MSB的元素,因此,与MSB对应的位串行块420(图4中的最高位串行块420)可在(1,1)、(1,2)和(2,2)位置具有单一位元素。权重核410可对应于图3的权重核W1至WD中的一个,位串行块420可对应于与图3的权重核W1至WD中的一个对应的位串行块310。
返回参照图3,处理设备可使用位串行块310在权重核与输入特征图之间执行卷积运算,并可基于卷积运算的结果值确定输出特征图。例如,如示出的,当与权重核WD对应的输入特征图中的区域被称为第一区域时,处理设备可使用与权重核WD对应的位串行块和与第一区域对应的位串行块,对第一区域执行卷积运算。
在这个示例中,处理设备可在块321中在与权重核WD的MSB对应的位串行块和与第一区域对应的位串行块之间执行MSB卷积,并且可在块322中将位位置2MSB-1应用于MSB卷积的结果值(例如,将MSB卷积的结果值乘以位位置2MSB-1)。在块331和块332以及块341和块342中,处理设备还可执行与在块321和块322中执行的操作对应的操作。在这个示例中,块351与LSB相关,因此,乘以位位置20的步骤可被省略。处理设备对块322、332、342和351中的操作的结果值进行相加,并可确定与第一区域对应的输出特征图的元素值。处理设备可通过在权重核WD与剩余区域之间执行卷积运算来确定与权重核WD对应的输出特征图,并可通过对剩余权重核执行卷积运算来确定目标层的输出特征图。
图5示出与单个权重核对应的位串行块的示例。图5的权重核510可对应于图3的权重核W1至WD中的一个。处理设备可将权重核转换为位串行,并且位串行块可以是用于基于数据特性对位串行进行分类的单元。位串行块可被划分为位串行子块。
参照图5,权重核510可包括均由W(x,y,z)表示的K×K×C个元素。例如,如图所示,元素组520可由W(1,1,z)表示。在图5的示例中,A可指示包括在元素组520中的每个元素中的位,B可指示与权重核510对应的位串行块。A和B中的每个单元块可包括1位数据,并且每个单元块中的W(x,y,z)的表示可指示每个位的对应元素。例如,如示出的,与MSB对应的位串行块的单元块之中的包括W(1,1,1)的表示的单元块可包括与W(1,1,1)对应的元素的MSB。当位串行块被认为是存储器图(memory map)时,MSB的W(1,1,1)可对应于存储器的最低地址,并且LSB的W(K,K,C)可对应于存储器的最高地址。
可通过各种方法从权重核510提取位串行块。例如,可通过与从权重核510提取位串行块的方法相同的方法来提取输入特征图的位串行块。
图6A至图6C示出位提取的示例。位提取方法可包括交叉方法和平面方法,其中,交叉方法用于沿输入特征图和权重核的通道方向提取位串行块,平面方法用于沿输入特征图和权重核的平面方向提取位串行块。参照图6A,箭头指示方向610是通道方向。通道方向可从W(1,1,1)朝向W(1,1,2)。例如,通道方向可以是垂直于平面方向的方向。参照图6B和图6C,箭头指示方向620和630是平面方向。平面方向可从W(1,1,1)朝向W(1,2,1),或从W(1,1,1)朝向W(2,1,1)。除了上述位提取方法之外,可通过各种其他方法提取位串行块中的位。
返回参照图5,位串行子块可指示数据处理单元。包括在位串行子块中的位的数量可对应于SIMD系统的参考位宽。在SIMD系统的情况下,可基于预设的参考位宽确定将被一次处理的数据的大小。参考位宽可以是32位、62位和128位中的一个。
例如,在参考位宽与所示的C相同的情况下,可基于单个指令一次处理具有相应的尺寸和相应的位位置的位。在图5的示例中,位530指示元素组520中的元素的MSB。在这个示例中,当参考位宽与C相同时,可基于单个指令一次处理针对位530的操作。
在位串行块中存在不满足参考位宽的空间的情况下,可使用0填充该空间以用于SIMD处理。在一个示例中,可针对每个位串行子块执行零填充。在这个示例中,当参考位宽是128位并且C是100时,位串行子块中的最后28位空间可使用0填充。
在另一示例中,可针对每个位串行块执行零填充。在这个示例中,位串行块可指示基于位位置对位串行进行分类的单元。例如,权重核510可被转换为包括与MSB对应的位串行块至与LSB对应的位串行块的Z个位串行块,并且Z个位串行块中的每个可具有K×K×C位的大小。在这个示例中,当参考位宽是128位,K是4,并且C是100时,因为128×13=1664,所以位串行块的最后的64位空间可使用0填充。
图7A和图7B示出零填充的示例。参照图7A,可对位串行710的每个位串行子块执行零填充。参照图7B,可对位串行720的每个位串行子块执行零填充。
图8示出针对单个权重核的基于按位运算的卷积的示例。
参照图8,处理设备可通过在权重核810与输入特征图820之间执行基于按位运算的卷积运算来确定输出特征图832。基于按位运算的卷积运算可包括位串行之间的按位运算和位定位。位定位可对应于恢复位操作的结果值的位位置的操作。在图8中,将每个位操作的结果值乘以-2B-1、2B-2和2B-3可对应于位定位。
输入特征图820和输出特征图830分别以三个维度显示,这指示多个输入特征图和多个输出特征图可重叠。
处理设备可获得与权重核810对应的位串行块811,并可将与输入特征图820中的区域821对应的数据转换为位串行块822。区域821可对应于权重核810,并且位串行块811和位串行块822可具有相同的尺寸。以将权重核810的数据(例如,权重)转换为位串行块811的类似方式,处理设备可将与输入特征图820中的区域821对应的数据(例如,激活)转换为位串行块822。位串行块811和位串行块822可包括具有相同的位位置的位。用于表示权重的位宽B和用于表示激活的位宽C可彼此相同或不同。权重核810可对应于图3的权重核W1至WD中的一个。
例如,在权重核810具有B位的位宽的情况下,表示权重核810的权重的B位的数字可由等式4表示。
等式4:
W:(wB-1wB-2wB-3…wlw0)
在等式4中,W可指示权重,WB-1至W0指示包括在W中的位。例如,通过将位位置应用于等式4中的每个位,等式4可由等式5表示。
等式5:
在等式5中,W可被假设为有符号值。W中的第一位可以是符号位,W可由二进制补码表示。在等式5中,用于应用位位置的系数(例如,-2B-1和+2k)被称为校正系数。位串行块811可包括与它们基于等式4和等式5的位位置对应的位。例如,位串行块812可以包括与-2B-1的位位置对应的位。位串行块812可对应于图5的MSB位串行块,位串行块813可对应于图5的LSB位串行块。
例如,类似地,在输入特征图820具有C位的位宽的情况下,表示输入特征图820的激活数据的C位的数字可由等式6表示。
等式6:
在等式6中,A可指示激活数据,Ak可指示包括在A中的每个位。通过修正线性单元(ReLU)的激活数据可以是正值,因此为了方便,假设A不包括符号位。然而,在应用不同类型的激活函数的情况下,A可包括如W中的符号位。
处理设备可在图8的每个按位运算块中基于等式7执行按位运算。每个按位运算块中执行的按位运算可包括逻辑AND运算和popcount运算。
等式7:
在等式7中,“popcnt”可指示popcount运算,“and”可指示逻辑AND运算。Ai可指示位串行块822,Wj可指示位串行块811,其中,j指示位串行块811的位位置并且具有0至B-1的值。例如,在按位运算块840中,可执行基于等式8的按位运算。
等式8:
例如,处理设备可在作为位串行块811之一的第一位串行块与作为位串行块822之一的第二位串行块之间执行逻辑AND运算,可对逻辑AND运算的结果值执行popcount运算,并可基于popcount运算的结果值确定卷积运算的结果值。处理设备可基于popcount运算的结果值执行位定位。例如,处理设备可基于权重核的元素的位位置来执行位定位。
作为位串行块811之一的第一位串行块中的位可对应于MSB至LSB的位之一。当卷积运算的结果值被确定时,可独立于第一位串行块计算或操作对应于与第一位串行块的位位置不同的位位置的位串行块。例如,位串行块812的按位运算和位定位可独立于位串行块813的按位运算和位定位来执行。
当按位运算在每个按位运算块中完成时,处理设备可将位位置应用于按位运算的结果值。例如,按位运算块840中执行的按位运算可基于位串行块812,因此,按位运算块840的结果值可乘以与串行块812对应的校正系数-2B-1。
如上所述,处理设备可在位串行块811与位串行块822之间执行按位运算,将校正系数应用于按位运算的结果值,并确定输出特征图832的元素值831。在图8的这个示例中,元素值831可对应于权重核810与区域821之间的卷积运算的结果值。处理设备可通过对输入特征图820中的剩余区域执行卷积运算来确定输出特征图832,并可基于剩余权重核与输入特征图820之间的卷积运算确定输出特征图830。
图9示出本公开的示例的基于按位运算的处理和典型的基于MAC运算的处理之间的比较的示例。参照图9,权重核910和输入特征图920中的每个可包括1×1×64个元素。权重核910和输入特征图920的元素可具有2位的位宽。
在块950中,可基于MAC运算处理权重核910与输入特征图920之间的典型卷积运算。例如,在使用64位SIMD的情况下,即使当元素的位宽是2位时,也仅可一次处理8个元素。由于可确定将被处理的最小数据单元是具有8位大小的字符,因此2位元素可占用8位容器,因此64位可用于处理8个元素。因此,在典型卷积运算中,可需要8次加载操作来从存储器加载权重核910,并且可需要8次加载操作来从存储器加载输入特征图920。因此,可需要总共16次加载操作。此外,对于数据对的典型卷积运算,可需要8次运算。8次运算可包括第一数据对911和921之间的卷积运算,第二数据对912和922之间的卷积运算,以及最后一个数据对918和928之间的卷积运算。
然而,在块960中,基于按位运算处理权重核910与输入特征图920之间的本公开的卷积运算。每个位串行块的尺寸可以是1×1×64,并且每个元素可包括1位,因此每个位串行块的大小可以是64位。因此,在使用64位SIMD的情况下,可一次加载一个位串行块。因此,2次加载操作可足够从存储器加载权重核910,并且2次加载操作可足够从存储器加载输入特征图920。因此,总共4次加载操作可以是足够的。此外,对于数据对的卷积运算,4次运算可以是足够的。4次运算可包括MSB位串行块915与MSB位串行块925之间的卷积运算,MSB位串行块915与LSB位串行块926之间的卷积运算,LSB位串行块916与MSB位串行块925之间的卷积运算,以及LSB位串行块916与LSB位串行块926之间的卷积运算。
因此,与典型的基于MAC运算的处理相比,本公开的基于按位运算的处理可以以4倍的因子减少数据加载操作的次数,并且以2倍的因子减少将被执行的运算的次数。因此,与包括MAC运算的典型卷积运算相比,在存储器空间的利用和计算能量方面,本公开的示例的基于按位运算的卷积运算可更有效。在诸如移动终端的有限资源环境下,存储器空间和计算能量的这种有效使用可特别有利。
图10是示出使用神经网络的处理方法的示例的流程图。在下文中,使用神经网络的处理方法还可被称为神经网络处理方法,并且简称为处理方法。
参照图10,在操作1010中,处理设备可获得与第一数据对应的第一位串行块,其中,第一数据是与神经网络中的目标层的权重核对应的数据的至少一部分。与权重核对应的数据可对应于权重核的元素或权重。操作1010可包括:从存储器获得预先存储在存储器中的第一位串行块或者将第一数据转换为第一位串行块。当预先训练的权重核被转换为第一位串行块并且第一位串行块被存储在存储器中时,可执行从存储器获得预先存储在存储器中的第一位串行块。
在操作1020中,处理设备可将第二数据转换为第二位串行块,其中,第二数据是与神经网络中的目标层的输入特征图对应的数据的至少一部分。与输入特征图对应的数据可对应于输入特征图的元素或激活数据。
在操作1030中,处理设备可基于第一位串行块与第二位串行块之间的按位运算,对神经网络中的目标层执行卷积运算。例如,目标层可对应于图1中所示的神经网络110中的层之一。处理设备可通过改变目标层来执行操作1010至1030,使得对神经网络中的所有卷积层重复执行操作1010至1030。对于图10的流程图的处理方法的更详细描述,可参考上面参照图1至图9提供的描述。
图11示出处理设备的示例。
参照图11,处理设备1100可接收输入图像,并处理与输入图像相关联的神经网络的操作。例如,神经网络的操作可包括识别或验证输入图像中的对象。处理设备1100可执行在此描述的与处理神经网络有关的操作中的至少一个,并向用户提供处理神经网络的结果。处理设备1100可在处理神经网络的操作的同时执行在此描述的基于按位运算的卷积。
处理设备1100可包括至少一个处理器1110和存储器1120。存储器1120可连接到处理器1110并存储可由处理器1110执行的指令,以及由处理器1110处理的数据或将由处理器1110处理的数据。例如,在权重核被预先训练的情况下,训练的权重核可被预先转换为位串行,并且位串行可被存储在存储器1120中。处理设备1100可从存储器1120获得位串行。存储器1120可包括非暂时性计算机可读介质(例如,高速随机存取存储器(RAM))和/或非易失性计算机可读存储介质(例如,至少一个盘存储装置、闪存装置和其他非易失性固态存储装置)。
处理器1110可执行指令以执行上面参照图1至图10描述的操作中的至少一个。例如,当存储在存储器1120中的指令由处理器1110执行时,处理器1110可获得与第一数据对应的第一位串行块,可将第二数据转换为第二位串行块,并基于第一位串行块与第二位串行块之间的按位运算对目标层执行卷积运算,其中,第一数据是与神经网络中的目标层的权重核对应的数据的至少一部分,第二数据是与神经网络中的目标层的输入特征图对应的数据的至少一部分。
图12示出电子设备的示例。
参照图12,电子设备1200可接收输入图像并处理与输入图像相关联的神经网络的操作。例如,神经网络的操作可包括识别或验证输入特征图像中的对象。电子设备1200可执行关于处理神经网络的操作的上述的基于按位运算的卷积。电子设备1200可包括上面参照图1至图10描述的处理设备,或执行上面参照图1至图10描述的处理设备的功能。
电子设备1200可包括处理器1210、存储器1220、相机1230、存储装置1240、输入装置1250、输出装置1260和网络接口1270。处理器1210、存储器1220、相机1230、存储装置1240、输入装置1250、输出装置1260和网络接口1270可通过通信总线1280彼此通信。
处理器1210可执行电子设备1200中的功能和指令。例如,处理器1210可处理存储在存储器1220或存储装置1240中的指令。处理器1210可执行上面参照图1至图11描述的操作中的至少一个。
存储器1220可存储将用于处理神经网络的操作的信息。存储器1220可包括计算机可读存储介质或计算机可读存储装置。存储器1220可存储将由处理器1210执行的指令,并且在电子设备1200正在执行指令或应用的同时存储相关的信息。
相机1230可捕获静止图像、视频图像或这两种图像。相机1230可捕获由用户输入的用于面部验证的面部区域的图像。相机1230还可提供包括对象的深度信息的三维(3D)图像。
存储装置1240可包括计算机可读存储介质或计算机可读存储装置。存储装置1240可存储包括将用于处理神经网络的信息(诸如,以权重核和权重核的位串行为例)的数据库(DB)。与存储器1220相比,存储装置1240可将更大量的信息存储更长的时间段。例如,存储装置1240可包括磁性硬盘、光盘、闪存、软盘以及相关技术领域中公知的其他类型的非易失性存储器。
输入装置1250可通过传统的输入方法(例如,键盘和鼠标)和/或新的输入方法(例如,触摸输入、语音输入和图像输入)从用户接收输入。例如,输入装置1250可包括键盘、鼠标、触摸屏、麦克风和可从用户检测输入并将检测到的输入发送到电子设备1200的其他装置。
输出装置1260可通过视觉、听觉或触觉通道向用户提供电子设备1200的输出。例如,输出装置1260可包括显示器、触摸屏、扬声器、振动发生器以及可向用户提供输出的其他装置。网络接口1270可通过有线网络或无线网络与外部装置通信。
在此针对图1至图12描述的神经网络处理设备、电子设备、处理设备100、处理设备1100、至少一个处理器1110、存储器1120、电子设备1200、处理器1210、存储器1220、相机1230、存储装置1240、输入装置1250、输出装置1260、网络接口1270、总线1280以及其他设备、单元、模块、装置和其他组件通过硬件组件来实现或代表硬件组件。可用于执行在本申请中描述的操作的硬件组件的示例适当地包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器和被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,执行在本申请中描述的操作的硬件组件中的一个或多个通过计算硬件(例如,通过一个或多个处理器或计算机)来实现。可通过一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现处理器或计算机。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简单起见,单数术语“处理器”或“计算机”可用于本申请中描述的示例的描述,但是在其他的示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件或多种类型的处理元件或二者。例如,单个硬件组件或者两个或更多个硬件组件可通过单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可通过一个或多个处理器、或者处理器和控制器来实现,一个或多个其他硬件组件可通过一个或多个其他处理器,或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,其中,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理以及多指令多数据(MIMD)多处理。
图1至图12中示出的执行在本申请中描述的操作的方法通过计算硬件(例如,通过一个或多个处理器或计算机)来执行,其中,计算硬件被实现为如上所述地执行指令或软件,以执行在本申请中描述的由所述方法所执行的操作。例如,单个操作或者两个或更多个操作可通过单个处理器或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可通过一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任意组合,以单独地或共同地指示或配置一个或多个处理器或计算机如机器或专用计算机那样进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可基于附图中示出的块图和流程图以及在此使用的相应描述,使用任何编程语言编写指令或软件,其中,附图中示出的框图和流程图以及说明书中的相应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件、以及任何相关联的数据、数据文件以及数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(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 (24)
1.一种神经网络处理方法,包括:
获得与神经网络中的层的权重核的第一数据对应的核位串行块;
基于所述层的一个或多个输入特征图的第二数据生成特征图位串行块;以及
通过使用核位串行块与特征图位串行块之间的按位运算执行所述层的卷积运算,生成输出特征图的至少一部分。
2.根据权利要求1所述的神经网络处理方法,其中,核位串行块和特征图位串行块分别包括具有相同的位位置的位。
3.根据权利要求1所述的神经网络处理方法,其中,
核位串行块包括多个第一核位串行块,其中,每个第一核位串行块包括与权重核的元素的多个位位置中的相应的一个位位置对应的位。
4.根据权利要求3所述的神经网络处理方法,其中,所述多个位位置包括最高有效位至最低有效位。
5.根据权利要求1所述的神经网络处理方法,其中,
通过交叉方法,分别沿权重核的通道方向从第一数据提取核位串行块,并且沿所述一个或多个输入特征图的通道方向从第二数据提取特征图位串行块,或者
通过平面方法,分别沿权重核的平面方向从第一数据提取核位串行块,并且沿所述一个或多个输入特征图的平面方向从第二数据提取特征图位串行块。
6.根据权利要求1所述的神经网络处理方法,其中,核位串行块和特征图位串行块基于用于单指令多数据处理的参考位宽。
7.根据权利要求6所述的神经网络处理方法,其中,核位串行块和特征图位串行块中不满足参考位宽的空间使用0填充。
8.根据权利要求6所述的神经网络处理方法,其中,参考位宽是32位、64位和128位中的任何一个。
9.根据权利要求1所述的神经网络处理方法,其中,按位运算包括逻辑与运算和popcount运算。
10.根据权利要求1所述的神经网络处理方法,其中,核位串行块和特征图位串行块具有相同的尺寸。
11.根据权利要求1所述的神经网络处理方法,其中,执行卷积运算的步骤包括:
在核位串行块与特征图位串行块之间执行逻辑与运算;
对逻辑与运算的结果值执行popcount运算;以及
基于popcount运算的结果值确定卷积运算的结果值。
12.根据权利要求11所述的神经网络处理方法,其中,确定卷积运算的结果值的步骤包括:
基于popcount运算的结果值执行位定位。
13.根据权利要求11所述的神经网络处理方法,其中,基于第一数据的位位置来执行位定位。
14.根据权利要求1所述的神经网络处理方法,其中,第一数据和第二数据中的每个由小于8位的位宽表示。
15.根据权利要求1所述的神经网络处理方法,其中,获得核位串行块的步骤包括:
从存储器获得预先存储在存储器中的核位串行块;或者
基于第一数据生成核位串行块。
16.一种存储指令的非暂时性计算机可读存储介质,当由一个或多个处理器执行所述指令时使得所述一个或多个处理器执行权利要求1所述的神经网络处理方法。
17.一种神经网络处理设备,包括:
一个或多个处理器,被配置为:
获得与神经网络中的层的权重核的第一数据对应的核位串行块;
基于所述层的一个或多个输入特征图的第二数据生成特征图位串行块;以及
通过使用核位串行块与特征图位串行块之间的按位运算执行所述层的卷积运算来生成输出特征图的至少一部分。
18.根据权利要求17所述的神经网络处理设备,其中,核位串行块和特征图位串行块分别包括具有相同的位位置的位。
19.根据权利要求17所述的神经网络处理设备,其中,核位串行块和特征图位串行块基于用于单指令多数据处理的参考位宽。
20.根据权利要求17所述的神经网络处理设备,其中,按位运算包括逻辑与运算和popcount运算。
21.根据权利要求17所述的神经网络处理设备,其中,为了执行卷积运算,所述一个或多个处理器被配置为:在核位串行块与特征图位串行块之间执行逻辑与运算,对逻辑与运算的结果值执行popcount运算,并基于popcount运算的结果值确定卷积运算的结果值。
22.根据权利要求17所述的神经网络处理设备,还包括:存储器,存储指令,其中,当由所述一个或多个处理器执行所述指令时,所述指令将所述一个或多个处理器配置为执行:核位串行块的获得,特征图位串行块的生成,以及输出特征图的至少一部分的生成。
23.一种神经网络处理方法,包括:
接收神经网络层的核和将被神经网络层处理的特征图;
获得包括与所述核的元素对应的二进制元素值的核位串行块,其中,与所述核的元素对应的二进制元素值包括所述核的元素的位位置之中的预定位位置的位;
获得包括与特征图的元素对应的二进制元素值的特征图位串行块,其中,与特征图的元素对应的二进制元素值包括特征图的元素的位位置之中的预定位位置的位;以及
通过使用特征图位串行块与核位串行块之间的按位运算执行神经网络的卷积运算,生成输出特征图的至少一部分。
24.根据权利要求23所述的神经网络处理方法,
其中,获得特征图位串行块的步骤包括:针对特征图的元素的位位置中的每个生成特征图位串行块,以及
其中,获得核位串行块的步骤包括:针对所述核的元素的位位置中的每个生成核位串行块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180168566A KR102562320B1 (ko) | 2018-12-24 | 2018-12-24 | 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치 |
KR10-2018-0168566 | 2018-12-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111352656A true CN111352656A (zh) | 2020-06-30 |
Family
ID=68242357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910822391.8A Pending CN111352656A (zh) | 2018-12-24 | 2019-09-02 | 使用按位运算的神经网络设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11586886B2 (zh) |
EP (1) | EP3674986A1 (zh) |
KR (1) | KR102562320B1 (zh) |
CN (1) | CN111352656A (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220171829A1 (en) * | 2019-03-11 | 2022-06-02 | Untether Ai Corporation | Computational memory |
US11688032B2 (en) * | 2019-08-16 | 2023-06-27 | Meta Platforms, Inc. | Three-dimensional convolution pipeline with memory organizer unit |
CN112114874B (zh) * | 2020-08-20 | 2021-10-15 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备和存储介质 |
CN111985634A (zh) * | 2020-08-21 | 2020-11-24 | 北京灵汐科技有限公司 | 神经网络的运算方法、装置、计算机设备及存储介质 |
CN111932437B (zh) * | 2020-10-10 | 2021-03-05 | 深圳云天励飞技术股份有限公司 | 图像处理方法、装置、电子设备及计算机可读存储介质 |
KR102549120B1 (ko) * | 2020-12-24 | 2023-06-29 | 서경대학교 산학협력단 | 딥러닝 하드웨어 가속기를 구비하는 bspe 코어 |
CN113691792B (zh) * | 2021-08-03 | 2022-07-29 | 上海交通大学 | 基于3d卷积的视频比特位深扩展方法、装置及介质 |
US11886973B2 (en) * | 2022-05-30 | 2024-01-30 | Deepx Co., Ltd. | Neural processing unit including variable internal memory |
KR102482300B1 (ko) * | 2022-07-06 | 2022-12-29 | 주식회사 스퀴즈비츠 | 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치 |
KR102482728B1 (ko) * | 2022-07-06 | 2022-12-29 | 주식회사 스퀴즈비츠 | 비트 시리얼 연산 방법 및 컴퓨터 기록 매체 |
KR20240008747A (ko) * | 2022-07-12 | 2024-01-19 | 오픈엣지테크놀로지 주식회사 | 데이터 스케일을 고려한 콘볼루션 데이터의 양자화 방법, 이를 위한 하드웨어 가속기, 및 이를 이용한 컴퓨팅 장치 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018192500A1 (zh) * | 2017-04-19 | 2018-10-25 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
CN108921292A (zh) * | 2018-05-02 | 2018-11-30 | 东南大学 | 面向深度神经网络加速器应用的近似计算系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8345984B2 (en) * | 2010-01-28 | 2013-01-01 | Nec Laboratories America, Inc. | 3D convolutional neural networks for automatic human action recognition |
KR101687813B1 (ko) | 2015-03-30 | 2016-12-20 | 상명대학교 서울산학협력단 | 화상 증폭 방법 |
US9582726B2 (en) | 2015-06-24 | 2017-02-28 | Qualcomm Incorporated | Systems and methods for image processing in a deep convolution network |
US10497089B2 (en) | 2016-01-29 | 2019-12-03 | Fotonation Limited | Convolutional neural network |
CA2990709C (en) | 2016-05-26 | 2018-09-04 | The Governing Council Of The University Of Toronto | Accelerator for deep neural networks |
CN108351974A (zh) | 2016-07-17 | 2018-07-31 | Gsi 科技公司 | 在恒定的处理时间内查找k个极值 |
US10621486B2 (en) | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
KR102631381B1 (ko) | 2016-11-07 | 2024-01-31 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
KR102359556B1 (ko) | 2016-11-11 | 2022-02-08 | 삼성전자주식회사 | 지문 영상을 이용한 사용자 인증 방법 및 사용자 인증을 위한 부호화 모델 생성 방법 |
KR102313796B1 (ko) | 2017-01-25 | 2021-10-20 | 한국전자통신연구원 | 뉴로모픽 연산 장치 |
US20190043193A1 (en) * | 2017-08-01 | 2019-02-07 | Retina-Ai Llc | Systems and Methods Using Weighted-Ensemble Supervised-Learning for Automatic Detection of Retinal Disease from Tomograms |
US10853034B2 (en) * | 2018-03-30 | 2020-12-01 | Intel Corporation | Common factor mass multiplication circuitry |
US11275998B2 (en) * | 2018-05-31 | 2022-03-15 | Intel Corporation | Circuitry for low-precision deep learning |
-
2018
- 2018-12-24 KR KR1020180168566A patent/KR102562320B1/ko active IP Right Grant
-
2019
- 2019-08-16 US US16/542,803 patent/US11586886B2/en active Active
- 2019-09-02 CN CN201910822391.8A patent/CN111352656A/zh active Pending
- 2019-10-08 EP EP19201997.4A patent/EP3674986A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018192500A1 (zh) * | 2017-04-19 | 2018-10-25 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
CN108921292A (zh) * | 2018-05-02 | 2018-11-30 | 东南大学 | 面向深度神经网络加速器应用的近似计算系统 |
Non-Patent Citations (2)
Title |
---|
MEGHAN COWAN等: ""Automating Generation of Low Precision Deep Learning Operators"", 《ARXIV》, pages 1 - 3 * |
王建民等: "《Verilog HDL数字系统设计》", 哈尔滨工业大学出版社, pages: 12 - 16 * |
Also Published As
Publication number | Publication date |
---|---|
KR102562320B1 (ko) | 2023-08-01 |
EP3674986A1 (en) | 2020-07-01 |
US11586886B2 (en) | 2023-02-21 |
KR20200079059A (ko) | 2020-07-02 |
US20200202200A1 (en) | 2020-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352656A (zh) | 使用按位运算的神经网络设备和方法 | |
US11593625B2 (en) | Method and apparatus with neural network parameter quantization | |
US20200372276A1 (en) | Convolutional neural network processing method and apparatus | |
CN110689109A (zh) | 神经网络方法和装置 | |
US20210081798A1 (en) | Neural network method and apparatus | |
EP3295385A1 (en) | Fixed point neural network based on floating point neural network quantization | |
US20190228307A1 (en) | Method and apparatus with data processing | |
CN111340177A (zh) | 基于嵌套位表示的神经网络处理方法和设备 | |
US11720789B2 (en) | Fast nearest neighbor search for output generation of convolutional neural networks | |
US20210182670A1 (en) | Method and apparatus with training verification of neural network between different frameworks | |
US20220108180A1 (en) | Method and apparatus for compressing artificial neural network | |
CN111105017A (zh) | 神经网络量化方法、装置及电子设备 | |
CN112396085A (zh) | 识别图像的方法和设备 | |
CN112668381A (zh) | 用于识别图像的方法和设备 | |
CN113010099A (zh) | 有效地利用存储器空间的神经网络处理设备及其操作方法 | |
CN107402905B (zh) | 基于神经网络的计算方法及装置 | |
CN112446888A (zh) | 图像分割模型的处理方法和处理装置 | |
CN112819151A (zh) | 用于识别图像的方法和设备以及训练方法 | |
CN113407747A (zh) | 硬件加速器执行的方法、硬件加速器和神经网络装置 | |
CN113408693A (zh) | 识别图像的方法和设备 | |
CN110874633A (zh) | 具有多位神经形态操作的神经形态方法和设备 | |
Gaihua et al. | Instance segmentation convolutional neural network based on multi-scale attention mechanism | |
US20220253709A1 (en) | Compressing a Set of Coefficients for Subsequent Use in a Neural Network | |
CN113055546A (zh) | 处理图像的系统和方法 | |
US20220108156A1 (en) | Hardware architecture for processing data in sparse neural network |
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 |