CN111507456A - 具有卷积神经网络处理的方法和装置 - Google Patents

具有卷积神经网络处理的方法和装置 Download PDF

Info

Publication number
CN111507456A
CN111507456A CN201911321489.1A CN201911321489A CN111507456A CN 111507456 A CN111507456 A CN 111507456A CN 201911321489 A CN201911321489 A CN 201911321489A CN 111507456 A CN111507456 A CN 111507456A
Authority
CN
China
Prior art keywords
feature map
input feature
value
convolution kernel
weight
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
CN201911321489.1A
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
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from KR1020190038606A external-priority patent/KR20200095300A/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111507456A publication Critical patent/CN111507456A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • G06T7/33Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods
    • 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
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

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

Abstract

一种神经网络装置包括:一个或多个处理器,包括:控制器,被配置为基于输入特征图的特征和卷积核的特征中的任一项或者两者,将要在并行运算中共享的共享运算数确定为输入特征图的像素值之中的像素值和卷积核的权重值之中的权重值中的任一项;以及一个或多个处理单元,被配置为基于所确定的共享运算数来执行并行运算。

Description

具有卷积神经网络处理的方法和装置
相关申请的交叉引用
本申请要求于2019年1月31日在美国专利商标局递交的美国临时申请No.62/799,190和于2019年4月2日在韩国知识产权局递交的韩国专利申请No.10-2019-0038606的权益,其全部公开内容通过引用整体并入本文中。
技术领域
本公开涉及具有卷积神经网络处理的方法和装置。
背景技术
神经网络指代计算架构。某些电子系统可以通过使用神经网络设备来分析输入数据并提取有效信息。
神经网络设备可以针对输入数据执行大量运算。
发明内容
提供了本发明内容以用简化形式来介绍下面在具体实施方式中进一步描述的构思的选择。本发明内容不旨在标识所请求保护的主题的关键特征或基本特征,也不旨在用作帮助确定所请求保护的主题的范围。
在一个总体实施例中,神经网络装置包括:一个或多个处理器,包括:控制器,被配置为基于输入特征图的特征和卷积核的特征中的任一项或者两者,将要在并行运算中共享的共享运算数确定为输入特征图的像素值之中的像素值和卷积核的权重值之中的权重值中的任一项;以及一个或多个处理单元,被配置为基于所确定的共享运算数来执行并行运算。
一个或多个处理单元可以被配置为:响应于控制器将共享运算数确定为输入特征图的像素值,在输入特征图的像素值和卷积核的权重值之间并行地执行并行运算。
控制器可以被配置为:将共享运算数确定为输入特征图的第一像素值,并且将另一共享运算数确定为输入特征图的第二像素值,并且一个或多个处理单元可以包括:一个或多个第一处理单元,被配置为在输入特征图的第一像素值与卷积核的权重值之间并行地执行并行运算;以及一个或多个第二处理单元,被配置为在输入特征图的第二像素值与卷积核的权重值之间并行地执行并行运算。
一个或多个处理单元可以被配置为:响应于控制器将共享运算数确定为卷积核的权重值,在卷积核的权重值和输入特征图的像素值之间并行地执行并行运算。
控制器可以被配置为:将共享运算数确定为卷积核的第一权重值,并且将另一共享运算数确定为卷积核的第二权重值,并且一个或多个处理单元可以包括:一个或多个第一处理单元,被配置为在卷积核的第一权重值和输入特征图的像素值之间并行地执行并行运算;以及一个或多个第二处理单元,被配置为在卷积核的第二权重值和输入特征图的像素值之间并行地执行并行运算。
共享运算数、输入特征图的像素值和卷积核的权重值均涉及神经网络的第一层,并且控制器还可以被配置为:对于神经网络的第二层,基于第二层的输入特征图的特征和第二层的卷积核的特征中的任一项或者两者,将第二层的共享运算数确定为第二层的输入特征图的像素值和第二层的卷积核的权重值中的任一项。
输入特征图的特征可以包括输入特征图内具有零值的像素的百分比和输入特征图的形状中的任一项或两者,以及卷积核的特征可以包括卷积核内具有零值的权重的百分比。
控制器可以被配置为响应于卷积核中的具有零值的权重的百分比大于设置值,将共享运算数确定为卷积核的权重值。
共同共享共享运算数的一个或多个处理单元的数量可以等于输入特征图的输入通道的像素的数量和卷积核的输出通道的数量中的任一项。
一个或多个处理器可以被配置为在具有三维(3D)大小的输入特征图和具有四维(4D)大小的卷积核之间执行3D卷积运算。
一个或多个处理单元可以被配置为跳过并行运算之中的具有共享运算数为0的并行运算。
响应于控制器将共享运算数确定为输入特征图的像素值,一个或多个处理单元可以被配置为:响应于输入特征图的像素值之中的第一像素值为0,跳过并行运算之中的在第一像素值与卷积核的权重值之中的第一权重值之间的并行运算,以及执行并行运算之中的输入特征图的像素值之中的第二像素值和卷积核的权重值之中的第二权重值之间的并行运算。
响应于控制器确定共享运算数是卷积核的权重值,一个或多个处理单元可以被配置为:响应于卷积核的权重值之中的第一权重值为0,跳过并行运算之中的在第一权重值和输入特征图的像素值之中的第一像素值之间的并行运算,以及执行并行运算之中的在卷积核的权重值之中的第二权重值和输入特征图的像素值之中的第二像素值之间的并行运算。
所述装置还可以包括存储器,所述存储器存储指令,所述指令当由一个或多个处理器执行时,配置一个或多个处理器执行以下操作:获得卷积核比特串行块;生成特征图比特串行块;以及生成输出特征图的至少一部分。
在另一总体方面中,一种处理器实现的神经网络方法包括:基于输入特征图的特征和卷积核的特征中的任一项或者两者,将要在并行运算中共享的共享运算数确定为输入特征图的像素值之中的像素值和卷积核的权重值之中的权重值中的任一项;以及基于所确定的共享运算数来执行并行运算。
所述确定可以包括将共享运算数确定为输入特征图的像素值,以及所述执行可以包括在输入特征图的像素值和卷积核的权重值之间并行地执行并行运算。
所述确定可以包括将共享运算数确定为卷积核的权重值,以及所述执行可以包括在卷积核的权重值和输入特征图的像素值之间并行地执行并行运算。
所述执行可以包括跳过并行运算之中的具有共享运算数为0的并行运算。
所述确定可以包括将共享运算数确定为输入特征图的像素值,以及所述执行包括:响应于输入特征图的像素值之中的第一像素值为0,跳过并行运算之中的在第一像素值与卷积核的权重值之中的第一权重值之间的并行运算,以及执行并行运算之中的在输入特征图的像素值之中的第二像素值和卷积核的权重值之中的第二权重值之间的并行运算。
所述确定可以包括将共享运算数确定为卷积核的权重值,以及所述执行可以包括:当卷积核的权重值之中的第一权重值为0时,跳过并行运算之中的在第一权重值和输入特征图的像素值之中的第一像素值之间的并行运算,以及执行并行运算之中的在卷积核的权重值之中的第二权重值和输入特征图的像素值之中的第二像素值之间的并行运算。
一种非暂时性计算机可读存储介质可以存储指令,所述指令在被一个或多个处理器执行时,使得一个或多个处理器执行所述方法。
在另一总体方面中,一种处理器实现的神经网络方法包括:获得输入特征图和卷积核;将共享运算数确定为输入特征图的像素值之中的像素值和卷积核的权重值之中的权重值中的任一项;通过在卷积核的每个权重值和每个像素值中的任何一个与共享运算数之间执行运算来确定输出特征图的像素值。
输入特征图的像素值可以与输入特征图的通道之中的第一通道相对应,权重值与卷积核的通道之中的第一通道相对应,并且输出特征图的每一个像素值可以与输出特征图的通道之中的相应通道中的相同位置相对应。
确定共享运算数可以包括:响应于输入特征图的二维面积大小小于或等于设置值,将共享运算数确定为输入特征图的像素值;以及响应于输入特征图的二维面积大小大于或等于另一设置值,将共享运算数确定为卷积核的权重值。
附图说明
通过以下结合附图对实施例的描述,这些和/或其他方面将变得显而易见并且更容易理解,在附图中:
图1示出了根据一个或多个实施例的神经网络的架构。
图2A和图2B示出了神经网络中的卷积运算。
图3示出了根据一个或多个实施例的神经网络装置的硬件结构。
图4示出了根据一个或多个实施例的神经网络装置中包括的控制器和硬件处理单元。
图5A和图5B示出了根据一个或多个实施例的硬件处理单元,其被配置为基于共享运算数来执行并行运算。
图6示出了根据一个或多个实施例用于控制器基于输入特征图的形状来确定共享运算数的处理。
图7示出了根据一个或多个实施例的硬件处理单元,其被配置为基于作为处理单元的共享运算数的输入特征图的像素值来执行并行运算。
图8示出了根据一个或多个实施例的硬件处理单元,其被配置为基于作为处理单元的共享运算数的输入特征图的像素值来执行并行运算。
图9示出了根据一个或多个实施例的硬件处理单元,其被配置为基于作为共享运算数的卷积核的权重值来执行并行运算。
图10示出了根据一个或多个实施例的硬件处理单元,其被配置为基于作为共享运算数的卷积核的权重值来执行并行运算。
图11示出了根据一个或多个实施例的硬件处理单元基于共享运算数为零来执行零跳过的处理。
图12示出了根据一个或多个实施例的用于硬件处理单元基于共享运算数为零来执行零跳过的处理。
图13示出了根据一个或多个实施例的神经网络装置的操作方法。
具体实施方式
提供以下详细描述以帮助读者获得对本文所描述的方法、装置和/或系统的全面理解。然而,在理解了本申请的公开内容之后,本文描述的方法、装置和/或系统的各种改变、修改和等同物将是显而易见的。例如,本文所述的操作的顺序仅仅是示例,并不限于本文中阐述的那些顺序,而是可以被改变成在理解本申请的公开内容之后将是显而易见的顺序,除了操作必须以特定顺序出现之外。此外,为了更加清楚和简洁,可以省略对本领域已知的特征的描述。
在实施例的描述中,当一部件连接到另一部件时,不仅包括直接连接该部件的情况,还包括通过它们之间的另一部件电连接该部件的情况。此外,当部件包括构成元件时,除非另外特别说明,否则意味着该实施例可以包括其他元件而非排除其他元件。
本文中使用的术语仅用于描述各种示例,而不用于限制本公开。除非上下文另外明确指示,否则冠词“一”、“一个”和“该”也意在包括复数形式。术语“包括”、“包含”和“具有”表示存在所阐述的特征、数目、操作、构件、元件和/或其组合,但并不排除存在或添加一个或多个其他特征、数目、操作、构件、元件和/或其组合。
尽管本文中可以使用诸如“第一”、“第二”和“第三”之类的术语来描述各种构件、组件、区域、层或部,但是这些构件、组件、区域、层或部不受这些术语限制。相反,这些术语仅用于将一个构件、组件、区域、层或部与另一构件、组件、区域、层或部加以区分。因此,在不脱离示例的教导的情况下,本文中描述的示例中提及的第一构件、组件、区域、层或部也可以被称为第二构件、组件、区域、层或部。
除非另外定义,否则本文使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员在对本申请的公开加以理解之后通常所理解的含义相同的含义。诸如在常用词典中定义的术语应被解释为其含义与在相关技术和/或本申请的公开的上下文中的含义相同,而不应将被解释为理想的或过于正式的含义,除非本文明确如此定义。
现在将详细参考实施例,在附图中示出了实施例的示例,其中,贯穿附图类似的附图标记指代类似的元件。在这点上,一个或多个实施例可以具有不同形式,并且不应解释为受限于本文阐述的描述。因此,以下仅通过参考附图来描述实施例,以说明本描述的各个方面。如本文所使用的,术语“和/或”包括关联列出的项目中的一个或多个项目的任意和所有组合。诸如“……中的至少一个”之类的表述在元素列表之前时修饰整个元素列表,而不是修饰列表中的单独元素。
以下实施例涉及具有卷积神经网络处理的方法和装置。
图1示出了根据一个或多个实施例的神经网络的架构。
参考图1,神经网络1可以是深度神经网络(DNN)或者n层神经网络的架构。DNN或n层神经网络可以与卷积神经网络(CNN)、循环神经网络(RNN)、深度信念网络、受限玻耳兹曼机相对应。例如,神经网络1可以体现为CNN,但不限于此。在图1中,示出了与神经网络1的示例相对应的CNN的一些卷积层,但是除了所示的卷积层之外,CNN还可以包括池化层或全连接层。
因此,如图所示,神经网络1可以体现为具有包括输入图像层、特征图生成层和输出层在内的多个层的架构。在神经网络1中,使用被称为卷积核的过滤器对输入图像执行卷积运算,且作为结果,可以输出特征图(或者激活图或者卷积特征)。以输出特征图作为输入特征图再次对其与卷积核执行卷积运算,并且输出新的特征图。当如此重复执行卷积运算时,可以通过神经网络1来最终输出与输入图像的特征有关的识别结果。
例如,当向图1的神经网络1输入具有24×24像素大小的输入图像时,可以通过与卷积核进行卷积运算将输入图像输出为具有四通道的特征图,每个通道的特征图具有20×20像素大小。然后,可以通过重复与卷积核进行卷积运算来减小20×20特征图的大小,并且最后可以输出各自具有1×1像素大小的特征。在神经网络1中,可以在若干层中重复执行卷积运算和子采样(或池化)运算,以便从输入图像中过滤并输出可以表示整个输入图像的鲁棒特征,并且通过输出的最终特征来导出输入图像的识别结果。基于以上所述,应当理解,本文讨论的示例实施例包括具有神经网络1的运算中的具有各种组合形式的一个或多个这样的层、级、边等或者所有这样的层、级、边等的实施例。
图2A和图2B示出了神经网络中的卷积运算。
在一个或多个实施例中,输入特征图210可以具有6×6像素大小,卷积核220可以具有3×3像素大小,并且输出特征图230可以具有4×4像素大小(如图2A的示例中所示),但是大小不限于此,并且神经网络可以包括具有各种大小的特征图和卷积核。在输入特征图210、卷积核220和输出特征图230中定义的值全都仅是示例值,并且实施例不限于此。输入特征图的每个像素可以包括像素值。
卷积核220可以在输入特征图210上滑动的同时以具有3×3像素大小的区域(或拼块)为单位执行卷积运算。卷积运算可以包括以下运算:输出特征图230的每个像素值是通过对将输入特征图210的任何区域的每个像素值乘以卷积核220中的对应位置处的每个元素的权重而获得的值进行相加而获得的。例如,卷积核220首先针对输入特征图210的第一区域211执行卷积运算。例如,第一区域211的像素值1、2、3、4、5、6、7、8和9可以分别乘以卷积核220的元素的权重-1、-3、+4、+7、-2、-1、-5、+3和+1,且可以获得作为结果的值-1、-6、12、28、-10、-6、-35、24和9。接下来,可以将所获得的值-1、-6、12、28、-10、-6、-35、24和9相加以获得值15,并且输出特征图230的第一行和第一列上的像素值231可以被确定为值15。输出特征图230的第一行和第一列上的像素值231与第一区域211相对应。类似地,可以在输入特征图210的第二区域212与卷积核220之间执行卷积运算,且因此输出特征图230的第一行和第二列的像素值232可以被确定为4。可以在输入特征图的第一区域至第十六区域与卷积核220之间分别执行卷积运算,使得确定针对输出特征图230的每个位置的像素值。例如,可以在第十六区域213(例如,输入特征图210的最后窗口)与卷积核220之间执行卷积运算,且因此输出特征图230的第四行和第四列的像素值233可以被确定为11。也就是说,输入特征图210与卷积核220之间的卷积运算可以通过重复处理输入特征图210和卷积核220中的彼此相对应的元素的值的乘法以及乘法结果之和来执行,并且可以生成输出特征图230作为卷积运算的结果。
已经参考图2A描述了二维(2D)卷积运算。然而,在其他示例中,可以执行三维(3D)卷积运算,其中,存在具有多个通道的输入特征图、卷积核和输出特征图,如将参考图2B描述的示例那样。
参考图2B,输入特征图201可以具有3D大小,在输入特征图201中可以有X个输入通道,并且每个输入通道的2D输入特征图可以具有H行和W列的大小,其中,X、W和H各自是自然数。卷积核202可以具有四维(4D)大小,并且各自具有R行和S列大小的2D卷积核可以存在X个输入通道和Y个输出通道,其中,R、S和Y各自是自然数。例如,卷积核202的通道的数量可以对应于(例如,可以等于)输入特征图201的输入通道的数量X和输出特征图203的输出通道的数量Y,并且每个通道的2D卷积核可以具有R行和S列的大小。输出特征图203可以经由具有3D大小的输入特征图201和具有4D大小的卷积核202之间的3D卷积运算来生成,并且作为3D卷积运算的结果,输出特征图203可以具有Y个通道。
经由一个2D输入特征图与一个2D卷积核之间的卷积运算来生成输出特征图的处理可以是如上面参考图2A所描述的那样,且可以在输入特征图201的X个输入通道与卷积核202的Y个输出通道之间重复执行如以上参考图2A所述的2D卷积运算,以生成Y个输出通道的输出特征图203。基于以上所述,应理解:本文所讨论的示例实施例可以包括具有输入特征图中的X个通道和/或输出特征图的Y个通道中的具有各种组合形式的一个或多个通道、或者所有通道的实施例。
图3示出了根据一个或多个实施例的神经网络装置的硬件架构。
在一个或多个实施例中,神经网络装置100可以是和/或可以被实现为各种类型的设备中的任何一种,例如个人计算机(PC)、服务器、移动设备和嵌入式设备,并且例如可以是或者可以包括智能电话、平板设备、增强现实(AR)设备、物联网(IoT)设备、自主车辆、机器人或医疗设备,其使用神经网络层和/或由本文所讨论的节点卷积交互的层中的一个或多个层构成的神经网络的任何一个或任何组合来执行语音识别、图像识别和图像分类,但是不限于此。在另一示例中,神经网络装置100可以对应于安装在这样的设备上的专用硬件(HW)加速器,并且可以是诸如神经处理单元(NPU)、张量处理单元(TPU)、或神经引擎之类的HW加速器,作为非限制性示例,其是用于驱动神经网络的专用模块,但不限于此。
参考图3,神经网络装置100可以包括处理器110和存储器120。神经网络装置100的组件之中的与一个或多个实施例相关的组件在图3中示出。然而,在理解本公开之后,本领域普通技术人员将理解:除了图3中所示的那些组件之外,神经网络装置100还可以包括通用组件。
处理器110可以控制用于在神经网络装置100中执行神经网络的所有功能。例如,处理器110可以通过在神经网络装置100中执行存储器120中存储的指令来控制神经网络装置100的所有功能。处理器110可以被实现为神经网络装置100中包括的中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)等,但是不限于此。
存储器120是用于存储在神经网络装置100中处理的各条数据的硬件。例如,存储器120可以存储在神经网络装置100中的经处理的或要处理的数据。此外,存储器120可以存储要由神经网络装置100驱动的应用、驱动程序等。存储器120可以包括随机存取存储器(RAM)(例如,动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM))、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、CD-ROM、蓝光光盘、其他光盘存储设备、硬盘驱动器(HDD)、固态驱动器(SSD)或闪存,但不限于此。
处理器110从存储器120读取和/或向其写入神经网络数据(例如,图像数据、特征图数据或卷积核数据),并通过使用读取/写入的神经网络数据来执行神经网络。当执行神经网络时,处理器110可以驱动其中提供卷积运算的处理单元,以在输入特征图与卷积核之间重复执行卷积运算,由此生成与输出特征图相关的数据。这里,卷积运算的运算计数可以是基于各种因素来确定的,例如输入特征图的通道数、卷积核的通道数、输入特征图的大小、卷积核的大小和值的精度。
处理器110可以获得输入特征图和卷积核,并且可以在输入特征图和卷积核之间执行卷积运算。处理器110可以包括硬件处理单元112,以便执行卷积运算。处理单元112可以并行执行卷积运算,并且可以分别包括用于卷积运算的逻辑电路。详细地,处理单元112中的每一个可以包括运算器,包括乘法器、加法器和累加器的组合。乘法器可以被体现为多个子乘法器的组合,并且加法器可以被体现为多个子加法器的组合。
处理器110还可以包括:片上存储器,其执行高速缓存功能以执行卷积运算;以及调度器,其调度各种运算数(例如,输入特征图的像素值和卷积核的权重)。调度器可以根据输入特征图的像素值和卷积核的权重的数据向片上存储器调度运算数(例如,处理单元112执行运算所需的像素值和权重),其中,数据被存储在存储器120中。调度器还可以向处理单元112调度被调度给片上存储器的运算数以进行卷积运算。
处理器110可以包括控制器114,控制器114确定处理单元112要处理的运算数。在输入特征图和卷积核之间的卷积运算期间,控制器114可以将要在处理单元112执行的并行运算中共享的共享运算数确定为以下各项之一:输入特征图的像素值或卷积核的权重值。根据示例,在第一输入特征图和第一卷积核之间的卷积运算期间,控制器114可以将共享运算数确定为第一输入特征图的像素值。根据另一示例,在第二输入特征图和第二卷积核之间的卷积运算期间,控制器114可以将共享运算数确定为第二卷积核的权重值。
控制器114可以基于输入特征图的特征或卷积核的特征中的至少一项,将共享运算数确定为以下各项之一:输入特征图的像素值或卷积核的权重值。详细地,控制器114可以基于输入特征图内具有零值的像素的百分比、卷积核内具有零值的权重的百分比、或输入特征图的形状中的至少一项,将共享运算数确定为以下各项之一:输入特征图的像素值或者卷积核的权重值。根据示例,当输入特征图内具有零值的像素的百分比等于或大于预设临界值时,控制器114可以将共享运算数确定为输入特征图的像素值。控制器114可以基于先前层中的输入特征图内具有零值的像素的百分比来确定当前层中的输入特征图内具有零值的像素的百分比。根据另一示例,当在卷积核内具有零值的权重的百分比等于或大于预设临界值时,控制器114可以将共享运算数确定为卷积核的权重值。根据另一示例,当输入特征图的输入通道的数量较大或者二维(2D)输入特征图的大小较小时,控制器114可以将共享运算数确定为输入特征图的像素值。
对于神经网络的每个层,控制器114可以将共享运算数确定为以下各项之一:输入特征图的像素值或卷积核的权重值。例如,在第一层的输入特征图和第一层的卷积核之间的卷积运算期间,控制器114可以将第一层的共享运算数确定为第一层的输入特征图的像素值。在第二层的输入特征图和第二层的卷积核之间的卷积运算期间,控制器114可以将第二层的共享运算数确定为第二层的卷积核的权重值。换句话说,每次改变层时,控制器114可以将共享运算数从输入特征图的像素值改变为卷积核的权重,或者可以将共享运算数从卷积核的权重改变为输入特征图的像素值。
处理单元112可以基于由控制器114确定的共享运算数来执行并行运算。例如,当第一输入特征图的像素值被确定为共享运算数时,处理单元112可以共同接收第一输入特征图的像素值作为运算数对中的一个运算数,并且可以接收第一卷积核的不同权重值来作为另一运算数。作为另一示例,当第一卷积核的权重值被确定为共享运算数时,处理单元112可以共同接收第一卷积核的权重值作为运算数对中的一个运算数,并且可以接收第一输入特征图的不同的像素值来作为另一运算数。因为处理单元112共同接收共享运算数并执行并行运算,因此处理单元112可以实现标量向量乘法运算。处理单元112可以通过执行并行运算来输出输出值,并且输出值可被累加在输出特征图中。
因为神经网络装置100能够控制处理单元112对共享运算数加以共享,因此可以同等地控制处理单元112,从而简化硬件结构并降低硬件成本。此外,因为神经网络装置100能够将处理单元112的共享运算数确定为以下各项之一:输入特征图的像素值或卷积核的权重值,因此可以选择共享运算数以有效地使用卷积运算的并行性。根据示例,为了更有效地实现零跳过,神经网络装置100可以将共享运算数确定为以下各项之一:输入特征图的像素值或卷积核的权重值。下面将参考图11和图12来描述详细的实施例。根据另一示例,神经网络装置100可以根据一个层的输入特征图的形状来选择共享运算数,以更有效地实现处理单元112的并行运算。将参考图6来描述详细的实施例。
当神经网络装置100在具有3D大小的输入特征图和具有4D大小的卷积核之间执行三维(3D)卷积运算时,尽管输入特征图和卷积核的维度彼此不同,但是神经网络装置100可以将输入特征图的像素值或卷积核的权重值之一确定为共享运算数,且从而可以实现能够执行并行运算的硬件结构。
图4示出了根据一个或多个实施例的神经网络装置中包括的控制器和硬件处理单元。在示例中,控制器和处理单元分别与图3的控制器114和处理单元112相对应。为了便于说明,下面将使用该示例来讨论示例,注意实施例不限于此。
作为非限制性示例,控制器114可以从存储器120获得输入特征图和卷积核。也就是说,尽管图4的操作将是参考神经网络装置100来说明的,但是实施例不限于此。控制器114可以基于输入特征图的至少一个特征和/或卷积核的至少一个特征,将输入特征图的像素值之一或者卷积核的权重值之一确定为要由处理单元112共享的共享运算数。
控制器114可以控制输入特征图的像素值和卷积核的权重值被输入到处理单元112,并且可以特别地控制预定共享运算数被共同输入到处理单元112。根据示例,当输入特征图的像素值被确定为共享运算数时,控制器114可以控制输入特征图的像素值被输入到每个处理单元112,并且可以控制卷积核的不同权重值被分别输入到不同的处理单元112。换句话说,控制器114可以控制卷积核的不同权重值作为运算数1至n被分别输入到不同的处理单元112。根据另一示例,当卷积核的权重值被确定为共享运算数时,控制器114可以控制卷积核的权重值被输入到每个处理单元112,并且可以控制输入特征图的不同的像素值分别被输入到不同的处理单元112。换句话说,控制器114可以控制输入特征图的不同像素值作为运算数1至n分别输入到不同的处理单元112。在控制器114的控制下,处理器110的调度器可以将包括共享运算数在内的运算数对调度给每个处理单元112。如图4所示,处理单元112的硬件处理单元1至n可以各自分别对共享运算数和相应的运算数1至n执行一个或多个运算以生成相应的输出1至n,而实施例不限于此。
因为每个处理单元112可以是硬件乘法器、加法器和累加器中的任何两个或更多个的任何一个或任何组合,因此每个处理单元112可以经由关于输入的运算数对的乘法和/或加法运算来输出输出值(输出1至n),并且输出值(输出1至n)可以被累加到输出特征图内。此外,因为每个处理单元112可以在共享运算数和不同运算数(例如,相应运算数)之间执行运算,因此处理单元112可以实现1×n硬件架构,该1×n硬件架构实现标量(共享运算数)-向量(运算数1、运算数2、直至运算数n)乘法运算。
图5A和图5B示出了硬件处理单元,其被配置为基于处理单元的共享运算数来执行并行运算。在示例中,控制器和处理单元分别与图3的控制器114和处理单元112相对应。为了便于说明,下面将使用该示例来讨论示例,注意实施例不限于此。
在一个或多个实施例中,如图5A所示,控制器114可以将卷积核的第一权重值w_1确定为处理单元112的共享运算数。然后,控制器114可以控制第一权重值w_1输入到16个处理单元112中的每一个处理单元112,并且可以控制输入特征图的16个像素值IFM1至IFM16分别输入到16个处理单元112。例如,图5A的16个像素值IFM1至IFM16可以是与输入特征图IFM的第一输入通道相对应的像素值。16个处理单元112中的每一个处理单元112可以通过针对输入的运算数对执行一个或多个运算来输出16个输出值,并且16个输出值可被累加到输出特征图OFM中。
在一个或多个实施例中,如图5B所示,控制器114可以将输入特征图的第一像素值IFM1确定为处理单元112的共享运算数。然后,控制器114可以控制第一像素值IFM1输入到16个处理单元112中的每一个处理单元112,并且可以控制卷积核的16个权重值w_1至w_16分别输入到16个处理单元112。例如,卷积核的16个权重值w_1至w_16可以是卷积核的16个输出通道的相应权重值。16个处理单元112中的每一个处理单元112可以通过针对输入的运算数对执行一个或多个运算来输出16个输出值,并且16个输出值可被累加到输出特征图OFM内。
在图5A和图5B中,输入特征图的一个输入通道的像素数、卷积核的输出通道数和处理单元112的数量都是16。然而,这仅是示例,且实施例不限于此。
图6示出了用于控制器基于输入特征图的形状来确定共享运算数的处理。在示例中,控制器和处理单元分别与图3的控制器114和处理单元112相对应,并且为了便于说明,下面将使用该示例来讨论示例,注意实施例不限于此。
在一个或多个实施例中,控制器114可以基于输入特征图的形状来确定处理单元112的共享运算数。例如,控制器114可以考虑输入特征图的输入通道数或每个输入通道的2D输入特征图的大小来确定共享运算数。
根据示例,当确定(例如,响应于确定)输入特征图610的一个通道的2D输入特征图的大小较大并且输入特征图610的通道数较小时,控制器114可以将处理单元112的共享运算数确定为卷积核的(一个或多个)权重值。例如,当确定输入特征图610的面积值(W×H)较大并且其深度值C较小(例如,浅深度)时,控制器114可以将处理单元112的共享运算数确定为卷积核的(一个或多个)权重值。随着输入特征图610的面积值(W×H)增加并且其深度值C减小,与通过重复使用输入特征图的像素值来执行卷积运算相比,由于通过重复使用卷积核的权重值来执行卷积运算可以更有效地实现处理单元112的并行运算,且因此控制器114可以将卷积核的权重值确定为共享运算数。例如,当确定输入特征图610的面积值(W×H)大于或等于预设临界值和/或其深度值C小于或等于预设临界值时,控制器114可以将处理单元112的共享运算数确定为卷积核的权重值。作为另一示例,控制器114可以基于面积值(W×H)和深度值C之间的比较来确定处理单元112的共享运算数。例如,当与深度值C相比确定面积值(W×H)足够大时,控制器114可以将处理单元112的共享运算数确定为卷积核的权重值。例如,当确定面积值(W×H)大于或等于被确定为深度值C的倍数或一部分的预设临界值时,控制器114可以将处理单元112的共享运算数确定为卷积核的权重值。
根据另一示例,当确定(例如,响应于确定)输入特征图620的一个通道的2D输入特征图的大小较小并且输入特征图620的输入通道数较大时,控制器114可以将处理单元112的共享运算数确定为输入特征图的像素值。例如,当确定输入特征图620的面积值(W×H)较小并且其深度值C较大时,控制器114可以将处理单元112的共享运算数确定为输入特征图的像素值。随着输入特征图610的面积值(W×H)减小并且其深度值C增加,与通过重复使用卷积核的权重值来执行卷积运算相比,由于通过重复使用输入特征图的像素值来执行卷积运算可以更有效地实现处理单元112的并行运算,且因此控制器114可以将输入特征图的像素值确定为共享运算数。例如,当确定输入特征图620的面积值(W×H)小于或等于预设临界值和/或其深度值C大于或等于预设临界值时,控制器114可以将处理单元112的共享运算数确定为输入特征图的像素值。作为另一示例,控制器114可以基于面积值(W×H)和深度值C之间的比较来确定处理单元112的共享运算数。例如,当与面积值(W×H)相比确定深度值C足够大时,控制器114可以将处理单元112的共享运算数确定为输入特征图的像素值。例如,当确定深度值C大于或等于被确定为面积值(W×H)的倍数或一部分的预设临界值时,控制器114可以将处理单元112的共享运算数确定为输入特征图的像素值。
随着顺序执行针对神经网络的各层的卷积运算,基于一层的输入特征图所生成的该层的输出特征图可以具有比该层的输入特征图小的“面积值(W×H)与深度值C比”,其中,后面的层的输入特征图可以是(或者可以基于)该层的输出特征图,使得神经网络的早期层的输入特征图可以具有与图6的输入特征图610的形状相似的形状,并且神经网络的晚期层的输入特征图可以具有与图6的输入特征图620的形状相似的形状。因此,控制器114可以将处理单元112的共享运算数确定为神经网络的早期层中的卷积核的权重值,并且可以将处理单元112的共享运算数确定为神经网络的晚期层中的输入特征图的像素值。
图7示出了根据一个或多个实施例的硬件处理单元,其被配置为基于作为处理单元的共享运算数的输入特征图IFM的像素值来执行并行运算。在示例中,控制器和处理单元分别与图3的控制器114和处理单元112相对应,并且为了便于说明,下面将使用该示例来讨论示例,注意实施例不限于此。
控制器114可以将共享运算数确定为输入特征图IFM的像素值。因此,控制器114可以控制输入特征图IFM的像素值被共同输入到处理单元112。
例如,控制器114可以控制输入特征图IFM的第一像素值IFM1作为共享运算数输入到每个处理单元112,并且还可以控制卷积核的权重值w_1、w_2直至w_m分别输入到处理单元112。第一像素值IFM1可以是与输入特征图IFM的第0个输入通道的位置(0,0)相对应的像素值,并且卷积核的权重值w_1、w_2直至w_m中的每一个权重值可以是与卷积核的m个输出通道中的每一个输出通道中的第0个输入通道的位置(0,0)相对应的权重值。
处理单元112之中的第一处理单元可以通过在第一像素值IFM1和权重值w_1之间执行乘法和/或加法运算来输出输出值O0(0,0),并且处理单元112之中的第m处理单元可以通过在第一像素值IFM1和权重值w_m之间执行乘法和加法运算来输出输出值Om-1(0,0)。换句话说,处理单元112可以通过在第一像素值IFM1和权重值w_1、w_2直至w_m中的每一个权重值之间执行乘法和/或加法运算来输出输出值O0(0,0)、O1(0,0)直至Om-1(0,0),其中乘法和/或加法运算可以包括标量向量乘法运算。此外,输出值O0(0,0)、O1(0,0)直至Om-1(0,0)可被分别累加到输出特征图OFM的第0输出通道至第m输出通道。例如,每个输出值可以涉及输出特征图的相应的通道,并且可以涉及输出特征图的相同2D位置。
类似地,控制器114可以控制输入特征图IFM的另一像素值作为共享运算数输入到每个处理单元112,并且还可以控制卷积核的不同的权重值分别输入到处理单元112。然后,处理单元112可以通过在输入特征图IFM的另一像素值与卷积核的不同的权重值中的每一个权重值之间执行乘法和/或加法运算来输出输出值,并且输出值可被累加到输出特征图OFM。
图8示出了根据一个或多个实施例的硬件处理单元,其被配置为基于作为处理单元的共享运算数的输入特征图IFM的像素值来执行并行运算。在示例中,控制器和处理单元分别与图3的控制器114和处理单元112相对应,并且为了便于说明,下面将使用该示例来讨论示例,注意实施例不限于此。
控制器114可以将共享运算数确定为输入特征图IFM的第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4。第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4可以是分别与输入特征图IFM的第0输入通道的位置(0,0)、(0,1)、(1,0)和(1,1)相对应的像素值。控制器114可以控制第一像素值IFM1作为共享运算数输入到处理单元112之中的每个第一处理单元171,并且还可以控制卷积核的权重值w_1、w_2直至w_m分别输入到第一处理单元171。类似地,控制器114可以控制第二像素值IFM2作为共享运算数输入到处理单元112之中的每个第二处理单元172,并且还可以控制卷积核的权重值w_1、w_2直至w_m分别输入到第二处理单元172。类似地,控制器114可以控制第三像素值IFM3作为共享运算数输入到处理单元112之中的每个第三处理单元173,并且还可以控制卷积核的权重值w_1、w_2直至w_m分别输入到第三处理单元173。类似地,控制器114可以控制第四像素值IFM4作为共享运算数输入到处理单元112之中的每个第四处理单元174,并且还可以控制卷积核的权重值w_1、w_2直至w_m分别输入到第四处理单元174。例如,控制器114可以控制来自IFM缓冲器(0,0)至IFM缓冲器(1,1)这些缓冲器的第一像素值IFM1至第四像素值IFM4分别输入到第一处理单元171至第四处理单元174,并且可以控制来自权重缓冲器这一缓冲器的权重值w_1、w_2直至w_m分别输入到第一处理单元171至第四处理单元174。
第一处理单元171可以通过在第一像素值IFM1和权重值w_1、w_2直至w_m中的每一个权重值之间执行乘法运算来输出输出值O0(0,0)、O1(0,0)直至Om-1(0,0)(例如,如上参考图7所述)。第二处理单元172可以通过在第二像素值IFM2和权重值w_1、w_2直至w_m中的每一个权重值之间执行乘法运算来输出输出值O0(0,1)、O1(0,1)直至Om-1(0,1)。第三处理单元173可以通过在第三像素值IFM3和权重值w_1、w_2直至w_m中的每一个权重值之间执行乘法运算来输出输出值O0(1,0)、O1(1,0)直至Om-1(1,0)。第四处理单元174可以通过在第四像素值IFM4和权重值w_1、w_2直至w_m中的每一个权重值之间执行乘法运算来输出输出值O0(1,1)、O1(1,1)直至Om-1(1,1)。因此,由第一处理单元171至第四处理单元174输出的输出值O0~m-1(0,0)、O0~m-1(0,1)、O0~m-1(1,0)、O0~m-1(1,1)可被累加到输出特征图OFM。
图7和图8中所示的大小为H×W并且包括n个输入通道的输入特征图IFM、大小为Tir并且包括n个输入通道和m个输出通道的卷积核、以及大小为Tr×Tc并且包括m个输出通道的输出特征图OFM中的各个图仅是示例,并且实施例不限于此。图7和图8中所示的输入特征图IFM的第一像素值至第四像素值的位置以及卷积核的权重值w_1、w_2直至w_m的位置也仅是示例,并且实施例不限于此。
图9示出了根据一个或多个实施例的硬件处理单元,其被配置为基于作为处理单元的共享运算数的卷积核的权重值来执行并行运算。在示例中,处理单元与图3的处理单元112相对应,并且为了便于说明,下面将使用该示例来讨论示例,注意实施例不限于此。
在一个或多个实施例中,控制器114可以将共享运算数确定为卷积核的权重值。因此,控制器114可以控制卷积核的权重值被共同地输入到处理单元112。
例如,控制器114可以控制卷积核的第一权重值w_1作为共享运算数输入到每个处理单元112,并且还可以控制输入特征图IFM的第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4分别输出到处理单元112。卷积核的第一权重值w_1可以是与卷积核的第0输出通道和第0输入通道的位置(0,0)相对应的权重值。第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4可以是分别与输入特征图IFM的第0输入通道中的位置(0,0)、(0,1)、(1,0)和(1,1)相对应的像素值。
处理单元112之中的第一处理单元可以通过在第一权重值w_1和第一像素值IFM1之间执行乘法和/或加法运算来输出输出值O0(0,0))。类似地,处理单元112之中的第二处理单元、第三处理单元和第四处理单元可以通过分别在第一权重值w_1和第二像素值IFM2之间执行乘法和/或加法运算、在第一权重值w_1和第三像素值IFM3之间执行乘法和/或加法运算、以及在第一权重值w_1和第四像素值IFM4之间执行乘法和/或加法运算,来分别输出输出值O0(0,1)、输出值O0(1,0)和输出值O0(1,1)。换句话说,处理单元112可以通过在第一权重值w_1和第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4中的每一个像素值之间执行乘法和/或加法运算,来分别输出输出值O0(0,0)、O0(0,1)、O0(1,0)和O0(1,1),其中乘法和/或加法运算可以包括标量向量乘法运算。输出值O0(0,0)、O0(0,1)、O0(1,0)和O0(1,1)可被累加到输出特征图OFM。例如,每个输出值可以涉及输出特征图的相应的2D位置,并且可以涉及输出特征图的相同通道。
类似地,控制器114可以控制卷积核的另一权重值作为共享运算数输入到每个处理单元112,并且还可以控制输入特征图IFM的不同的像素值分别输入到处理单元112。然后,处理单元112可以通过在卷积核的另一权重值与输入特征图IFM的不同的像素值中的每一个像素值之间执行乘法和/或加法运算来输出输出值,并且输出值可被累加到输出特征图OFM。
图10示出了根据一个或多个实施例的硬件处理单元,其被配置为基于作为处理单元的共享运算数的卷积核的权重值来执行并行运算。在示例中,控制器和处理单元分别与图3的控制器114和处理单元112相对应,并且为了便于说明,下面将使用该示例来讨论示例,注意实施例不限于此。
控制器114可以将共享运算数确定为卷积核的第一权重值w_1、第二权重值w_2、第三权重值w_3和第四权重值w_4。第一权重值w_1、第二权重值w_2、第三权重值w_3和第四权重值w_4可以是与以下各项相对应的权重值:分别与第0输出通道、第一输出通道、第二输出通道和第三输出通道相对应的第0输入通道的位置(0,0)。控制器114可以控制第一权重值w_1作为共享运算数输入到处理单元112之中的每个第一处理单元191,并且还可以控制输入特征图IFM的第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4分别输入到第一处理单元191。类似地,控制器114可以控制第二权重值w_2作为共享运算数输入到处理单元112之中的每个第二处理单元192,并且还可以控制输入特征图IFM的第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4分别输入到第二处理单元192。类似地,控制器114可以控制第三权重值w_3作为共享运算数输入到处理单元112之中的每个第三处理单元193,并且还可以控制输入特征图IFM的第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4分别输入到第三处理单元193。类似地,控制器114可以控制第四权重值w_4作为共享运算数输入到处理单元112之中的每个第四处理单元194,并且还可以控制输入特征图IFM的第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4分别输入到第四处理单元194。
第一处理单元191可以通过在第一权重值w_1和第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4中的每一个像素值之间执行乘法运算,来输出输出值O0(0,0)、O0(0,1)、O0(1,0)和O0(1,1)(例如,如上参考图9所述)。第二处理单元192可以通过在第二权重值w_2和第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4中的每一个像素值之间执行乘法运算,来输出输出值O1(0,0)、O1(0,1)、O1(1,0)和O1(1,1)。第三处理单元193可以通过在第三权重值w_3和第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4中的每一个像素值之间执行乘法运算,来输出输出值O2(0,0)、O2(0,1)、O2(1,0)和O2(1,1)。第四处理单元194可以通过在第四权重值w_4和第一像素值IFM1、第二像素值IFM2、第三像素值IFM3和第四像素值IFM4中的每一个像素值之间执行乘法运算,来输出输出值O3(0,0)、O3(0,1)、O3(1,0)和O3(1,1)。因此,由第一处理单元191、第二处理单元192、第三处理单元193和第四处理单元194输出的输出值O0(0~1,0~1)、O1(0~1,0~1)、O2(0~1,0~1)和O3(0~1,0~1)可被累加到输出特征图OFM。
图9和图10中所示的大小为H×W并且包括n个输入通道的输入特征图IFM、大小为Tir并且包括n个输入通道和m个输出通道的卷积核、以及大小为Tr×Tc并且包括m个输出通道的输出特征图OFM中的各个图仅是示例,并且实施例不限于此。图9和图10中所示的第一权重值w_1至第四权重值w_4的位置和第一像素值IFM1、第二像素值IFM2、第三像素值IFM3或第四像素值IFM4的位置仅是示例,并且实施例不限于此。
返回参考图3,处理单元112可以基于由控制器114确定的共享运算数来执行并行运算。此时,当共享运算数为0时,处理单元112可以跳过并行运算。换句话说,处理单元112可以基于共享运算数来实现零跳过。
例如,控制器114可以将输入特征图的像素值确定为共享运算数,例如,如上面参考图5B、图7和/或图8所述。根据示例,当输入特征图的第一像素值为0时,处理单元112可以跳过输入特征图的第一像素值与卷积核的第一权重值之间的并行运算。因此,处理单元112可以执行输入特征图中的非0的第二像素值(而不是为0的第一像素值)与卷积核的第二权重值之间的并行运算。根据另一示例,当卷积核的所有第一权重值都为0时,处理单元112可以跳过输入特征图的第一像素值与卷积核的第一权重值之间的并行运算,并且可以执行输入特征图的第二像素值与卷积核的第二权重值之间的并行运算。
作为另一示例,控制器114可以将卷积核的权重值确定为共享运算数,例如,如上面参考图5A、图9和/或图10所述。根据示例,当卷积核的第一权重值为0时,处理单元112可以跳过卷积核的第一权重值与输入特征图的第一像素值之间的并行运算。因此,处理单元112可以执行卷积核的非0的第二权重值(而不是为0的第一权重值)与输入特征图的第二像素值之间的并行运算。根据另一示例,当输入特征图的所有第一像素值都为0时,处理单元112可以跳过卷积核的第一权重值与第一像素值之间的并行运算,并且可以执行卷积核的第二权重值和第二像素值之间的并行运算。
因为神经网络装置100可以如上所述地通过处理单元112的共享运算数是否为0或者处理单元112的全部剩余的运算数是否为0来实现零跳过,因此可以实现针对零跳过的简化的硬件结构。
图11示出了根据一个或多个实施例的用于硬件处理单元基于共享运算数为零来执行零跳过的处理。在示例中,处理单元与图3的处理单元112相对应,并且为了便于说明,下面将使用该示例来讨论示例,注意实施例不限于此。
在一个或多个实施例中,处理单元112可以在第(N-1)周期中通过基于作为共享运算数的输入特征图IFM的第一像素值IFM1执行并行运算来输出输出值。例如,处理单元112可以通过在位于输入特征图IFM的第0输入通道的(0,0)处的第一像素值IFM1和位于分别与卷积核的第0输出通道至第(m-1)输出通道相对应的第0输入通道的(0,0)处的权重值之间执行并行运算,来输出输出值。输出值可被累加到作为输出特征图OFM的第0输出通道至第(m-1)输出通道的位置(0,0)的O0~m-1(0,0)。
然后,处理单元112可以在第N个周期中基于输入特征图IFM的第二像素值IFM2来执行并行运算。然而,当确定第二像素值IFM2为0时,处理单元112可以跳过第二像素值IFM2与权重值之间的并行运算。例如,处理单元112可以跳过在位于输入特征图IFM的第一输入通道的(0,0)处的第二像素值IFM2和位于分别与卷积核的第0输出通道至第(m-1)输出通道相对应的第一输入通道的(0,0)处的权重值之间的并行运算。
然后,处理单元112可以在第N个周期中通过基于输入特征图IFM的第三像素值IFM3执行并行运算来输出输出值。详细地,处理单元112可以通过在位于输入特征图IFM的第二输入通道的(0,0)处的第三像素值IFM3和位于分别与卷积核的第0输出通道至第(m-1)输出通道相对应的第二输入通道的(0,0)处的权重值之间执行并行运算,来输出输出值。输出值可被累加到作为输出特征图OFM的第0输出通道至第(m-1)输出通道的位置(0,0)的O0~m-1(0,0)。
因此,当第二像素值IFM2为0时,处理单元112可以在第一像素值IFM1之后基于第三像素值IFM3来执行并行运算,并且输出特征图OFM上的累加了基于第一像素值IFM1的输出值的位置可以与输出特征图OFM上的累加了基于第三像素值IFM3的输出值的位置相同。因此,神经网络装置100可以经由零跳过来减少卷积运算的运算计数和其运算时间段,并且同时可以将累加输出值的位置维持为相同,且因此高效地处理了神经网络的卷积运算。
图12示出了根据一个或多个实施例的用于硬件处理单元基于共享运算数为零来执行零跳过的处理。在示例中,处理单元分别与图3的处理单元112相对应,并且为了便于说明,下面将使用该示例来讨论示例,注意实施例不限于此。
在一个或多个实施例中,处理单元112可以在第(N-1)周期中通过基于作为共享运算数的卷积核的第一权重值w_1执行并行运算来输出输出值。例如,处理单元112可以通过在位于卷积核的第0输出通道和第0输入通道的(0,0)处的第一权重值w_1与位于输入特征图IFM的第0输入通道的(0~1,0~1)处的像素值执行并行运算来输出输出值。输出值可被累加到作为输出特征图OFM的第0输出通道的(0~1,0~1)的O0(0~1,0~1)。
然后,处理单元112可以在第N个周期中基于卷积核的第二权重值w_2来执行并行运算。然而,当确定第二权重值w_2为0时,处理单元112可以跳过第二权重值w_2与像素值之间的并行运算。例如,处理单元112可以跳过位于卷积核的第0输出通道和第一输入通道的(0,0)处的第二权重值w_2与位于输入特征图IFM的第一输入通道的(0~1,0~1)处的像素值之间的并行运算。
然后,处理单元112可以在第N个周期中通过基于卷积核的第三权重值w_3执行并行运算来输出输出值。详细地,处理单元112可以通过在位于卷积核的第0输出通道和第二输入通道的(0,0)处的第三权重值w_3与位于输入特征图IFM的第二输入通道的(0~1,0~1)处的像素值之间执行并行运算来输出输出值。输出值可被累加到作为输出特征图OFM的第0输出通道的(0~1,0~1)的O0(0~1,0~1)。
因此,当第二权重值w_2为0时,处理单元112可以在第一权重值w_1之后基于第三权重值w_3来执行并行运算,并且输出特征图OFM上的累加了基于第一权重值w_1的输出值的位置可以与输出特征图OFM上的累加了基于第三权重值w_3的输出值的位置相同。因此,神经网络装置100可以经由零跳过来减少卷积运算的运算计数和其运算时间段,并且同时可以将累加输出值的位置维持为相同,且因此高效地处理神经网络的卷积运算。
图13示出了根据一个或多个实施例的神经网络装置的操作方法。
图13的操作方法可以通过图1至图12的神经网络装置100的组件来执行,且这里将省略对其的冗余描述。
在操作1310中,神经网络装置100可以基于输入特征图的特征或者卷积核的特征中的至少一项,将要在并行运算中共享的共享运算数确定为以下各项之一:输入特征图的像素值和卷积核的权重值。根据示例,在第一输入特征图和第一卷积核之间的卷积运算期间,神经网络装置100可以将共享运算数确定为第一卷积核的权重值。根据另一示例,在第二输入特征图和第二卷积核之间的卷积运算期间,神经网络装置100可以将共享运算数确定为第二输入特征图的像素值。
神经网络装置100可以基于输入特征图的特征或卷积核的特征中的至少一项,将共享运算数确定为以下各项之一:输入特征图的像素值或卷积核的权重值。例如,神经网络装置100可以基于输入特征图内具有零值的像素的百分比、卷积核内具有零值的权重的百分比、或输入特征图的形状中的至少一项,将共享运算数确定为以下各项之一:输入特征图的像素值或者卷积核的权重值。
对于神经网络的每个层,神经网络装置100可以将共享运算数确定为以下各项之一:输入特征图的像素值或卷积核的权重值。例如,在第一层的输入特征图和第一层的卷积核之间的卷积运算期间,神经网络装置100可以将第一层的共享运算数确定为第一层的卷积核的权重值。在第二层的输入特征图和第二层的卷积核之间的卷积运算期间,神经网络装置100可以将第二层的共享运算数确定为第二层的输入特征图的像素值。
在操作1320中,神经网络装置100可以基于共享运算数来执行并行运算。例如,当第一输入特征图的像素值被确定为共享运算数时,神经网络装置100可以在第一输入特征图的像素值与第一卷积核的权重值之间执行并行运算。作为另一示例,当第一卷积核的权重值被确定为共享运算数时,神经网络装置100可以在第一卷积核的权重值与第一输入特征图的像素值之间执行并行运算。神经网络装置100可以将经由并行运算所获得的输出值累加到输出特征图。
当所确定的共享运算数为0时,神经网络装置100可以跳过该并行运算。根据示例,当第一像素值为0时,神经网络装置100可以跳过第一像素值和卷积核的第一权重值之间的并行运算。因此,神经网络装置100可以执行非0的第二像素值(而不是为0的第一像素值)与卷积核的第二权重值之间的并行运算。根据另一示例,当第一权重值为0时,神经网络装置100可以跳过第一权重值和输入特征图的第一像素值之间的并行运算。因此,神经网络装置100可以执行非0的第二权重值(而不是为0的第一权重值)与输入特征图的第二像素值之间的并行运算。
根据一个或多个实施例,因为可以将针对卷积运算的并行运算中要共享的共享运算数确定为输入特征图的像素值或卷积核的权重值中的一项,因此可以更有效地实现卷积运算的并行性。
根据一个或多个实施例,当执行具有3D大小的输入特征图和具有4D大小的卷积核之间的3D卷积运算时,尽管输入特征图和卷积核的维度彼此不同,但是可以将输入特征图的像素值或者卷积核的权重值之一确定为共享运算数,且因此可以实现能够执行并行运算的硬件结构。
根据一个或多个实施例,因为通过处理单元的共享运算数是否为0或者处理单元的所有剩余运算数是否为0来实现零跳过,因此可以实现用于零跳过的简化的硬件结构。
本文中关于图1至图13描述的神经网络装置100、控制器114、处理单元112、存储器120、缓冲器(IFM缓冲器、权重缓冲器)和其他装置、单元、模块、设备和其他组件通过硬件组件来实现或者表示硬件组件。在适当的情况下可用于执行本申请中所描述的操作的硬件组件的示例包括控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器、以及被配置为执行本申请所述的操作的任何其他电子组件。在其它示例中,执行本申请中所述的操作的一个或多个硬件组件通过计算硬件来实现(例如,通过一个或多个处理器或计算机来实现)。处理器或计算机可以由以下项实现:一个或多个处理元件(比如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器、或被配置为以定义的方式响应并执行指令以实现期望的结果的任何其它设备或设备的组合。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可以执行指令或软件(比如,操作系统(OS)和在OS上运行的一个或多个软件应用)来执行本申请所述的操作。硬件组件还可以响应于指令或软件的执行来访问、操纵、处理、创建和存储数据。为了简洁起见,在本申请中描述的示例的描述中可以使用单数术语“处理器”或“计算机”,但是在其他示例中可以使用多个处理器或计算机,或者处理器或计算机可以包括多个处理元件、或多种类型的处理元件、或两者兼有。例如,单个硬件组件或者两个或更多个硬件组件可以由单个处理器、或两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可以由一个或多个处理器、或处理器和控制器来实现,并且一个或多个其它硬件组件可以由一个或多个其它处理器或另一处理器和另一控制器来实现。一个或多个处理器或者处理器和控制器可以实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可以具有不同的处理配置中的任一种或多种,所述处理配置的示例包括单处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理、和多指令多数据(MIMD)多处理。
执行本申请中所述的操作的图1至图13所示的方法是由计算硬件来执行的,例如,由如以上描述而实现的执行指令或软件以执行本申请所述的操作(通过所述方法实现的操作)的一个或多个处理器或计算机来执行的。例如,单个操作或者两个或更多个操作可以由单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可以由一个或多个处理器或者处理器和控制器执行,并且一个或多个其它操作可以由一个或多个其它处理器或者另一处理器和另一控制器执行。一个或多个处理器或者处理器和控制器可以执行单个操作或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可以被编写为计算机程序、代码段、指令或其任何组合,用于单独或共同指示或配置一个或多个处理器或计算机以作为机器或专用计算机操作从而执行由上述硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码,例如由编译器生成的机器代码。在另一示例中,指令或软件包括由一个或多个处理器或者计算机使用解译器来执行的更高级代码。可以基于附图中所示的框图和流程图以及本文中使用的对应描述(其公开了用于执行由如上所述的硬件组件和方法执行的操作的算法)使用任何编程语言来编写指令或软件。
用于控制计算硬件(例如,一个或多个处理器或计算机)实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可以被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或其上。非暂时性计算机可读存储介质的示例包括:只读存储器(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.根据权利要求1所述的装置,其中,所述一个或多个处理单元被配置为:响应于所述控制器将所述共享运算数确定为所述卷积核的权重值,在所述卷积核的所述权重值和所述输入特征图的像素值之间并行地执行所述并行运算。
5.根据权利要求1所述的装置,其中
所述控制器被配置为将所述共享运算数确定为所述卷积核的第一权重值,并且将另一共享运算数确定为所述卷积核的第二权重值,以及
所述一个或多个处理单元包括:
一个或多个第一处理单元,被配置为在所述卷积核的所述第一权重值和所述输入特征图的像素值之间并行地执行所述并行运算;以及
一个或多个第二处理单元,被配置为在所述卷积核的所述第二权重值和所述输入特征图的像素值之间并行地执行所述并行运算。
6.根据权利要求1所述的装置,其中
所述共享运算数、所述输入特征图的所述像素值和所述卷积核的所述权重值涉及神经网络的第一层,以及
所述控制器还被配置为:对于所述神经网络的第二层,基于所述第二层的输入特征图的特征和所述第二层的卷积核的特征中的任一项或者两者,将所述第二层的共享运算数确定为所述第二层的输入特征图的像素值和所述第二层的卷积核的权重值中的任一项。
7.根据权利要求1所述的装置,其中
所述输入特征图的特征包括所述输入特征图内具有零值的像素的百分比和所述输入特征图的形状中的任一项或两者,以及
所述卷积核的特征包括所述卷积核内具有零值的权重的百分比。
8.根据权利要求1所述的装置,其中,所述控制器被配置为响应于所述卷积核中的具有零值的权重的百分比大于设置值,将所述共享运算数确定为所述卷积核的权重值。
9.根据权利要求1所述的装置,其中,共同共享所述共享运算数的所述一个或多个处理单元的数量等于所述输入特征图的输入通道的像素的数量和所述卷积核的输出通道的数量中的任一项。
10.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为在具有三维3D大小的所述输入特征图和具有四维4D大小的所述卷积核之间执行3D卷积运算。
11.根据权利要求1所述的装置,其中,所述一个或多个处理单元被配置为跳过所述并行运算之中的具有共享运算数为0的并行运算。
12.根据权利要求1所述的装置,其中,响应于所述控制器将所述共享运算数确定为所述输入特征图的像素值,所述一个或多个处理单元被配置为:
响应于所述输入特征图的像素值之中的第一像素值为0,跳过所述并行运算之中的在所述第一像素值与所述卷积核的权重值之中的第一权重值之间的并行运算,以及
执行所述并行运算之中的在所述输入特征图的像素值之中的第二像素值和所述卷积核的权重值之中的第二权重值之间的并行运算。
13.根据权利要求1所述的装置,其中,响应于所述控制器将所述共享运算数确定为所述卷积核的权重值,所述一个或多个处理单元被配置为:
响应于所述卷积核的权重值之中的第一权重值为0,跳过所述并行运算之中的在所述第一权重值和所述输入特征图的像素值之中的第一像素值之间的并行运算,以及
执行所述并行运算之中的在所述卷积核的权重值之中的第二权重值和所述输入特征图的像素值之中的第二像素值之间的并行运算。
14.根据权利要求1所述的装置,还包括存储器,所述存储器存储指令,所述指令当由所述一个或多个处理器执行时,配置所述一个或多个处理器执行以下操作:获得卷积核比特串行块;生成特征图比特串行块;以及生成输出特征图的至少一部分。
15.一种处理器实现的神经网络方法,所述方法包括:
基于输入特征图的特征和卷积核的特征中的任一项或者两者,将要在并行运算中共享的共享运算数确定为所述输入特征图的像素值之中的像素值和所述卷积核的权重值之中的权重值中的任一项;以及
基于所确定的共享运算数来执行所述并行运算。
16.根据权利要求15所述的方法,其中
所述确定包括将所述共享运算数确定为所述输入特征图的像素值,以及
所述执行包括在所述输入特征图的所述像素值和所述卷积核的权重值之间并行地执行所述并行运算。
17.根据权利要求15所述的方法,其中
所述确定包括将所述共享运算数确定为所述卷积核的权重值,以及
所述执行包括在所述卷积核的所述权重值和所述输入特征图的像素值之间并行地执行所述并行运算。
18.根据权利要求15所述的方法,其中
所述执行包括跳过所述并行运算之中的具有共享运算数为0的并行运算。
19.根据权利要求15所述的方法,其中
所述确定包括将所述共享运算数确定为所述输入特征图的像素值,以及
所述执行包括:
响应于所述输入特征图的像素值之中的第一像素值为0,跳过所述并行运算之中的在所述第一像素值与所述卷积核的权重值之中的第一权重值之间的并行运算,以及
执行所述并行运算之中的在所述输入特征图的像素值之中的第二像素值和所述卷积核的权重值之中的第二权重值之间的并行运算。
20.根据权利要求15所述的方法,其中
所述确定包括将所述共享运算数确定为所述卷积核的权重值,以及
所述执行包括:
当所述卷积核的权重值之中的第一权重值为0时,跳过所述并行运算之中的在所述第一权重值和所述输入特征图的像素值之中的第一像素值之间的并行运算,以及
执行所述并行运算之中的在所述卷积核的权重值之中的第二权重值和所述输入特征图的像素值之中的第二像素值之间的并行运算。
21.一种存储指令的非暂时性计算机可读存储介质,所述指令在被一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求15所述的方法。
22.一种处理器实现的神经网络方法,所述方法包括:
获得输入特征图和卷积核;
将共享运算数确定为所述输入特征图的像素值之中的像素值和所述卷积核的权重值之中的权重值中的任一项;以及
通过在所述卷积核的每个权重值和每个像素值中的任何一项与所述共享运算数之间执行运算来确定输出特征图的像素值。
23.根据权利要求22所述的方法,其中,所述输入特征图的像素值与所述输入特征图的通道之中的第一通道相对应,所述权重值与所述卷积核的通道之中的第一通道相对应,并且所述输出特征图的每一个像素值与所述输出特征图的通道之中的相应通道中的相同位置相对应。
24.根据权利要求22所述的方法,其中,确定共享运算数包括:
响应于所述输入特征图的二维面积大小小于或等于设置值,将所述共享运算数确定为所述输入特征图的像素值;以及
响应于所述输入特征图的二维面积大小大于或等于另一设置值,将所述共享运算数确定为所述卷积核的权重值。
CN201911321489.1A 2019-01-31 2019-12-19 具有卷积神经网络处理的方法和装置 Pending CN111507456A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962799190P 2019-01-31 2019-01-31
US62/799,190 2019-01-31
KR10-2019-0038606 2019-04-02
KR1020190038606A KR20200095300A (ko) 2019-01-31 2019-04-02 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치

Publications (1)

Publication Number Publication Date
CN111507456A true CN111507456A (zh) 2020-08-07

Family

ID=69185480

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911321489.1A Pending CN111507456A (zh) 2019-01-31 2019-12-19 具有卷积神经网络处理的方法和装置

Country Status (3)

Country Link
US (1) US20200250842A1 (zh)
EP (1) EP3690757A1 (zh)
CN (1) CN111507456A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
KR20210082970A (ko) * 2019-12-26 2021-07-06 삼성전자주식회사 컨볼루션 연산을 수행하는 방법 및 장치

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10725934B2 (en) * 2015-10-08 2020-07-28 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor with selective data storage (of accelerator) operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache wherein evicted cache line is stored in said data storage when said data storage is in a first mode and said cache line is stored in system memory rather then said data store when said data storage is in a second mode
CN117197314A (zh) * 2016-08-19 2023-12-08 莫维迪厄斯有限公司 使用稀疏体积数据的渲染操作
KR20180075220A (ko) * 2016-12-26 2018-07-04 삼성전자주식회사 멀티미디어 신호의 프로세싱 방법, 장치 및 시스템
US20180253636A1 (en) * 2017-03-06 2018-09-06 Samsung Electronics Co., Ltd. Neural network apparatus, neural network processor, and method of operating neural network processor
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
WO2019168088A1 (ja) * 2018-03-02 2019-09-06 日本電気株式会社 推論装置、畳み込み演算実行方法及びプログラム
CN110210610B (zh) * 2018-03-27 2023-06-20 腾讯科技(深圳)有限公司 卷积计算加速器、卷积计算方法及卷积计算设备
KR102065672B1 (ko) * 2018-03-27 2020-01-13 에스케이텔레콤 주식회사 합성곱 연산을 위한 장치 및 방법
US11645529B2 (en) * 2018-05-01 2023-05-09 Hewlett Packard Enterprise Development Lp Sparsifying neural network models
KR20200025200A (ko) * 2018-08-29 2020-03-10 삼성전자주식회사 전자 장치 및 전자 장치의 동작 방법
US10572225B1 (en) * 2018-09-26 2020-02-25 Xilinx, Inc. Circuit arrangements and methods for performing multiply-and-accumulate operations
US20210365791A1 (en) * 2018-11-27 2021-11-25 Deep Ai Technologies Ltd. Reconfigurable device based deep neural network system and method
GB2580327B (en) * 2018-12-31 2021-04-28 Graphcore Ltd Register files in a multi-threaded processor
CN110058883B (zh) * 2019-03-14 2023-06-16 梁磊 一种基于opu的cnn加速方法及系统
US11507817B2 (en) * 2020-04-17 2022-11-22 Samsung Electronics Co., Ltd. System and method for performing computations for deep neural networks
US20220269950A1 (en) * 2021-02-25 2022-08-25 Samsung Electronics Co., Ltd. Neural network operation method and device

Also Published As

Publication number Publication date
EP3690757A1 (en) 2020-08-05
US20200250842A1 (en) 2020-08-06

Similar Documents

Publication Publication Date Title
CN108229655B (zh) 卷积神经网络(cnn)处理方法和设备
JP7279226B2 (ja) 代替ループ限界値
US9886377B2 (en) Pipelined convolutional operations for processing clusters
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
EP3789892A1 (en) Method and apparatus for processing data
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
US11188796B2 (en) Method and apparatus with data processing
US20210192315A1 (en) Method and apparatus with neural network convolution operation
CN111382859A (zh) 用于处理神经网络中的卷积运算的方法和装置
JP2020126651A (ja) ニューラルネットワークのコンボルーション演算を処理する方法及び装置
EP3528181A1 (en) Processing method of neural network and apparatus using the processing method
US20210110270A1 (en) Method and apparatus with neural network data quantizing
US20200065646A1 (en) Method and device with convolution neural network processing
KR20200072307A (ko) 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법
US11853888B2 (en) Method and apparatus with neural network convolution operations
CN111507456A (zh) 具有卷积神经网络处理的方法和装置
CN112668689A (zh) 进行多媒体数据处理的方法和设备
EP4009240A1 (en) Method and apparatus for performing deep learning operations
US11681915B2 (en) Neural network method and apparatus
US20230385025A1 (en) Method and apparatus with repeated multiplication
KR20220050013A (ko) 전자 장치 및 전자 장치의 제어 방법
KR20210071472A (ko) 데이터를 처리하는 방법 및 장치

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