CN111382859A - 用于处理神经网络中的卷积运算的方法和装置 - Google Patents
用于处理神经网络中的卷积运算的方法和装置 Download PDFInfo
- Publication number
- CN111382859A CN111382859A CN201910653551.0A CN201910653551A CN111382859A CN 111382859 A CN111382859 A CN 111382859A CN 201910653551 A CN201910653551 A CN 201910653551A CN 111382859 A CN111382859 A CN 111382859A
- Authority
- CN
- China
- Prior art keywords
- output
- feature map
- convolution kernel
- region
- 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
Links
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/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/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
- 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
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- 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/044—Recurrent networks, e.g. Hopfield networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (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月27日向韩国知识产权局递交的韩国专利申请No.10-2018-0171132的优先权,其全部公开内容通过引用并入本文中以用于所有目的。
技术领域
提供了用于处理神经网络中的卷积运算的方法和装置。
背景技术
神经网络是专门的计算架构,其在经过大量训练后,可以在输入模式和输出模式之间提供计算直观的映射。根据神经网络技术的最新发展,在各种类型的电子系统中使用神经网络装置来分析输入数据,并且提取有效信息。
神经网络装置对输入数据执行大量运算。已经对能够有效处理神经网络运算的技术进行了研究。
发明内容
提供了本发明内容以用简化形式来介绍下面在具体实施方式中进一步描述的理念的选择。本发明内容不旨在标识所请求保护的主题的关键特征或必要特征,也不旨在用作帮助确定所请求保护的主题的范围。
在一个总体方面中,提供了神经网络装置,包括:处理器,被配置为生成卷积核的每个权重与输入特征图之间的运算的输出值,并且通过在输出特征图中的基于卷积核中的权重的位置而设置的位置处累加输出值来生成输出特征图。
处理器可以被配置为:通过执行输入特征图与卷积核的第一权重之间的运算来生成第一输出值;在输出特征图中的基于卷积核中的第一权重的位置的第一位置处累加第一输出值;通过执行输入特征图与卷积核的第二权重之间的运算来生成第二输出值;以及在输出特征图中的基于卷积核中的第二权重的位置的第二位置处累加第二输出值。
处理器可以被配置为:通过执行输入特征图的第一区域与卷积核的每个权重之间的运算来生成第一输出值;通过在第一部分输出特征图中的基于卷积核中的相应权重的位置的位置处累加第一输出值来生成第一部分输出特征图;以及在输出特征图上累加第一部分输出特征图。
处理器可以被配置为:通过执行输入特征图中的第二区域与卷积核的每个权重之间的运算来生成第二输出值,该第二区域不同于第一区域;通过在第二部分输出特征图中的基于卷积核中的相应权重的位置的位置处累加第二输出值来生成第二部分输出特征图;以及在输出特征图上累加第二部分输出特征图。
第一区域可以包括输入特征图中的n个像素、n×m个像素或者n×m×l个像素中的至少一个,其中n、m和l是大于或等于1的自然数。
处理器可以被配置为:响应于卷积核的权重中的第一权重为零,跳过输入特征图与第一权重之间的运算。
处理器可以被配置为:通过从存储器连续地流读取经压缩的输入特征图,来执行卷积核的每个权重与经压缩的输入特征图之间的运算。
处理器可以包括:运算单元,被配置为通过执行输入特征图的区域之中的不同区域与卷积核之间的运算来生成部分输出特征图;以及输出单元,被配置为通过累加部分输出特征图之中的一个或多个部分输出特征图来生成输出特征图的区域中的每一个区域。
运算单元中的一个或多个运算单元可以被配置为独立于彼此并且彼此并行地执行卷积核与不同区域之间的运算。
神经网络装置可以包括总线,其中,输出单元可以被配置为通过总线从运算单元接收一个或多个部分输出特征图。
运算单元中的每一个运算单元可以包括多个处理单元,处理单元被配置为通过执行输入特征图的区域之中的区域与多个卷积核中的每一个卷积核之间的运算来生成部分输出特征图。
处理单元包括:第一处理单元,被配置为执行所述区域与第一卷积核之间的运算;以及第二处理单元,被配置为执行所述区域与第二卷积核之间的运算,以及第一处理单元可以被配置为:在完成所述区域与第一卷积核之间的运算后,执行所述区域与第二卷积核之间的运算的一部分。
该神经网络装置可以包括存储指令的存储器,所述指令在被执行时配置处理器生成输出值并生成输出特征图。
在另一总体方面中,提供了一种处理神经网络中的卷积运算的方法,所述方法包括:生成卷积核的每个权重与输入特征图之间的运算的输出值,并且通过在输出特征图中的基于卷积核中的权重的位置而设置的位置处累加输出值来生成输出特征图。
生成输出值可以包括:通过执行输入特征图与卷积核的第一权重之间的运算来生成第一输出值,并通过执行输入特征图与卷积核的第二权重之间的运算来生成第二输出值;以及生成输出特征图可以包括:在输出特征图中的基于卷积核中的第一权重的位置的第一位置处累加第一输出值,以及在输出特征图中的基于卷积核中的第二权重的位置的第二位置处累加第二输出值。
生成输出值可以包括:通过执行输入特征图的第一区域与卷积核中的每个权重之间的运算来生成第一输出值,以及通过执行输入特征图的第二区域与卷积核中的每个权重之间的运算来生成第二输出值,第二区域不同于第一区域;以及生成输出特征图可以包括:通过在第一部分输出特征图中的基于卷积核中的相应权重的位置的位置处累加第一输出值来生成第一部分输出特征图,并且在输出特征图上累加第一部分输出特征图,以及通过在第二部分输出特征图中的基于卷积核中的相应权重的位置的位置处累加第二输出值来生成第二部分输出特征图,并且在输出特征图上累加第二部分输出特征图。
生成输出值可以包括:响应于卷积核的第一权重为零,跳过输入特征图与第一权重之间的运算。
生成输出值可以包括:通过连续地流读取经压缩的输入特征图,执行所述卷积核的每个权重与所述经压缩的输入特征图之间的运算。
所述方法可以包括:通过执行输入特征图的区域之中的不同区域与卷积核之间的运算来生成部分输出特征图;以及通过累加部分输出特征图之中的一个或多个部分输出特征图来生成输出特征图的区域中的每一个区域。
生成部分输出特征图可以包括:通过执行输入特征图的区域之中的区域与多个卷积核中的每一个卷积核之间的运算来生成部分输出特征图。
在另一总体方面中,提供了一种神经网络装置,该神经网络装置包括:存储器,被配置为存储卷积核的权重和指令;以及处理器,被配置为执行指令以通过执行输入特征图的第一区域与权重之间的运算来生成第一输出值,使第一输出值位于第一部分输出特征图中的基于卷积核中的权重的相应位置的位置处,通过执行输入特征图的第二区域与权重之间的运算来生成第二输出值,以及使第二输出值位于第二部分输出特征图中的基于卷积核中的权重的相应位置的位置处。
处理器可以被配置为通过执行权重与不同于第一区域的第二区域中的一部分之间的运算来生成第二输出值。
处理器可以被配置为:响应于权重中的权重为零,跳过输入特征图的第一区域或第二区域与权重之间的运算。
其它特征和方面可以通过以下详细描述、附图和权利要求变得清楚明白。
附图说明
图1是示出了神经网络的架构的示例的图。
图2A、图2B和图2C是示出了用于描述神经网络中的卷积运算的示例的示例的图。
图3是示出了神经网络装置的硬件配置的示例的图。
图4是示出了处理器通过重用输入特征图来生成输出特征图的示例的图。
图5是示出了处理器通过重用输入特征图的区域来生成部分输出特征图的示例的图。
图6是示出了处理器生成部分输出特征图的示例的图。
图7是示出了输入特征图中的用于与卷积核进行运算的各种形式的区域的示例的图。
图8示出了处理器通过重用输入特征图的区域来生成部分输出特征图的示例。
图9示出了处理器使用卷积核的一部分来生成部分输出特征图的示例。
图10示出了处理器通过流读取经压缩的输入特征图来执行卷积运算的示例。
图11示出了处理器的硬件配置的示例。
图12示出了处理器的硬件配置的示例。
图13示出了处理器的硬件配置的示例。
图14示出了处理器的运算单元执行卷积核与输入特征图的区域之间的运算的示例。
图15示出了处理器的运算单元执行卷积核与输入特征图的区域之间的运算的示例。
图16是示出了神经网络的运算方法的示例的图。
在整个附图和具体实施方式中,除非另有描述或提供,否则相同的附图标记将被理解为指代相同的元素、特征以及结构。附图可不必按比例绘制,并且为了清楚、说明和方便,可以夸张附图中的各元素的相对大小、比例和描绘。
具体实施方式
提供以下具体实施方式以帮助读者获得对本文所描述的方法、装置和/或系统的全面理解。然而,在理解了本申请的公开内容之后,本文描述的方法、装置和/或系统的各种改变、修改和等同物将是显而易见的。例如,本文所述的运算的顺序仅仅是示例,并不限于本文中阐述的那些顺序,除了必须以特定顺序发生的运算之外,可以如在理解本申请的公开内容之后将是显而易见的一样改变运算的顺序。此外,为了更加清楚和简洁,可以省略对本领域已知的特征的描述。
本文描述的特征可以以不同形式来实施,并且不被解释为限于本文描述的示例。相反,提供本文中描述的示例仅仅是为了说明实现本文中描述的方法、装置和/或系统的许多可行方式中的一些可行方式,在理解本申请的公开之后这些方式将显而易见。
尽管本文中可以使用诸如“第一”、“第二”和“第三”之类的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不受这些术语的限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分加以区分。因此,在不脱离示例的教导的情况下,本文中描述的示例中提及的第一构件、组件、区域、层或部分也可以被称为第二构件、组件、区域、层或部分。
贯穿说明书,当组件被描述为“连接到”或“耦接到”另一组件时,它可以直接“连接到”或“耦接到”另一组件,或者可以存在介于其间的一个或多个其他组件。相反,当元件被描述为“直接连接到”或“直接耦接到”另一元件时,可以不存在介于其间的其它元件。同样地,例如“在...之间”和“紧邻在...之间”和“与...相邻”以及“紧邻...”之类的表达也可以如前所述那样解释。如本文中所使用的,术语“和/或”包括相关联列出项目中的任何一个和相关联列出项目中的任何两个或更多个项目的任何组合。此外,除非明确地相反地描述,否则词语“包括”和诸如“包含”的变型词将被理解为暗指包括所陈述的元素,但不排除任何其它元素。
单数形式“一”、“一个”和“所述”意在还包括复数形式,除非上下文明确地给出相反的指示。还应理解,术语“包括/含有”、“具有/包含”在本文中使用时指定存在所陈述的特征、整数、步骤、运算、元素和/或组件,但并不排除存在或添加一个或多个其它特征、整数、步骤、运算、元素、组件和/或其组合。在整个公开中,表述“a、b或c中的至少一个”指示仅a、仅b、仅c、a和b这二者、a和c这二者、b和c这二者、a、b和c的全部、或者其变型。在本文中关于示例或实施例使用的术语“可以”(例如,关于示例或实施例可以包括或实现什么)意味着存在包括或实现这种特征的至少一个示例或实施例,但所有示例和实施例不限于此。
图1是示出了用于描述神经网络1的架构的示例的图。
参考图1,神经网络1可以是深度神经网络(DNN)或者n层神经网络的架构。DNN或n层神经网络可以对应于神经网络,例如卷积神经网络(CNN)、循环神经网络(RNN)、深度信念网络、受限玻尔兹曼机、全连接网络(FCN)、深度卷积网络(DCN)、长短期记忆(LSTM)网络和门控循环单元(GRU)。例如,神经网络1可以体现为CNN,但不限于此。在图1中,示出了与神经网络1的示例相对应的CNN的一些卷积层,但是除了所示的那些卷积层之外,CNN还可以包括池化层或全连接层。
神经网络1可以被实现为具有包括输入图像、特征图和输出在内的多个层的架构。在神经网络1中,使用被称为卷积核的过滤器对输入图像执行卷积运算,且输出作为结果的特征图。以输出特征图作为输入特征图再次对其与卷积核执行卷积运算,并且输出新的特征图。当如此重复执行卷积运算时,可以通过神经网络1来最终输出与输入图像的特征有关的识别结果。
例如,当向图1的神经网络1输入具有24×24像素大小的输入图像时,可以通过与卷积核进行卷积运算将输入图像输出为具有四通道的特征图,其中,每个特征图具有20×20像素大小。然后,可以通过重复与卷积核进行卷积运算来减小20×20特征图的大小,并且最后可以输出各自具有1×1像素大小的特征。在神经网络1中,可以在若干层中重复执行卷积运算和子采样(或池化)运算,以便从输入图像中过滤并输出可以表示整个输入图像的鲁棒特征,并且通过输出的最终特征来导出输入图像的识别结果。
在另一示例中,神经网络1可以接收输入源语句(例如,语音输入)而不是输入图像。在这样的示例中,对输入源语句执行与卷积核的卷积运算,且输出作为结果的特征图。以输出特征图作为输入特征图再次对其与卷积核执行卷积运算,并且输出新的特征图。当如此重复执行卷积运算时,可以通过神经网络1输出与输入源语句的特征有关的识别结果。
图2A、图2B和图2C是示出了神经网络中的卷积运算的示例的图。
在图2A中,输入特征图210具有6×6像素大小,卷积核220具有3×3像素大小,并且输出特征图230具有4×4像素大小,但是大小不限于此,并且神经网络可以包括具有各种大小的特征图和卷积核。此外,在输入特征图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。最后,在第十六区域213(即,输入特征图210的最后窗口)与卷积核220之间执行卷积运算,且因此输出特征图230的第四行和第四列的像素值233被确定为11。
换句话说,一个输入特征图210与一个卷积核220之间的卷积运算可以通过重复执行彼此对应的输入特征图210的元素的值与卷积核220的元素的值的乘法、以及对乘法结果的加法来处理,并且生成输出特征图230作为卷积运算的结果。
在图2B中,输入特征图250具有1×1像素大小,原始卷积核260具有3×3像素大小,并且输出特征图270具有3×3像素大小,但是大小不限于此,并且神经网络可以包括具有各种值的各种大小的特征图和卷积核。
卷积核260在输入特征图250上滑动的同时在具有3×3像素大小的区域(或拼块)单元中执行卷积运算。详细地,卷积核220可以首先与输入特征图250的第一区域251执行卷积运算。也就是说,第一区域251的唯一像素值9乘以卷积核260的权重+1,并且输出特征图270的第一行和第一列的像素值271被确定为乘积9。
类似地,在输入特征图250的第二区域252与卷积核260之间执行卷积运算,且因此输出特征图270的第一行和第二列的像素值272被确定为27。最后,在输入特征图250的最后区域(第九区域253)与卷积核260之间执行卷积运算,且因此输出特征图270的第三行和第三列的像素值273被确定为-9。
与此同时,尽管已经参考图2A和图2B描述了二维(2D)卷积运算,但是卷积运算可以对应于三维(3D)卷积运算,其中,存在具有多个通道的输入特征图、卷积核和输出特征图,如将参考图2C描述的。
参考图2C,输入特征图201中存在X个通道,并且每个通道的输入特征图201可以具有H行和W列的大小,其中,X、W和H各自是自然数。每个卷积核202可以具有R行和S列的大小,并且具有与输入特征图201的通道数量X和输出特征图203的通道数量Y相对应的通道数量,其中,R、S和Y各自是自然数。输出特征图203是经由输入特征图201与卷积核202之间的3D卷积运算来生成的,并且Y个通道可以经由3D卷积运算存在于输出特征图203中。
经由一个输入特征图与一个卷积核之间的卷积运算来生成输出特征图的处理是以上参考图2A所述的那样,并且在所有通道的输入特征图201和所有通道的卷积核202之间重复执行图2A所述的2D卷积运算以生成所有通道的输出特征图203。
图3是示出了神经网络装置100的示例的图。
神经网络装置100可以体现为使用神经网络来执行语音识别、图像识别和图像分类的各种类型的设备中的任何一种,例如,服务器、移动设备、智能电话、嵌入式设备、可穿戴智能设备(例如,戒指、手表、一副眼镜、眼镜式设备、手环、脚环、腰带、项链、耳环、发带、头盔、嵌入衣物中的设备、或眼镜显示器(EGD))、计算设备(例如,服务器、膝上型电脑、笔记本电脑、小型笔记本电脑、上网本、超移动PC(UMPC)、平板个人计算机(平板电脑)、平板手机、移动互联网设备(MID)、个人数字助理(PDA)、企业数字助理(EDA)、超移动个人计算机(UMPC)、便携式实验室顶级PC)、电子产品(例如,机器人、数码相机、数码摄像机、便携式游戏机、MP3播放器、便携式/个人多媒体播放器(PMP)、手持电子书、全球定位系统(GPS)导航、个人导航设备、便携式导航设备(PND)、掌上游戏机、电子书、电视(TV)、高清电视(HDTV)、智能TV、智能家电、智能家居设备、或用于门控制的安保设备、语音认证系统、增强现实(AR)设备、物联网(IoT)设备、自主车辆、机器人设备或医疗设备,但不限于此。本文描述的示例可以适用于车辆和车辆管理系统,例如,自主车辆、自动或自主驾驶系统、智能车辆、高级驾驶员辅助系统(ADAS)、辅助车辆安全地维持车辆行驶的车道的导航系统。本文描述的示例可以用于车辆的导航设备中的道路引导信息,例如增强现实平视显示器(AR 3D HUD)。此外,神经网络装置100可以是安装在上述设备中的专用硬件加速器,并且神经网络装置100可以是作为用于驱动神经网络的专用模块的硬件加速器,例如神经处理单元(NPU)、张量处理单元(TPU)、神经引擎,但不限于此。上述示例是非限制性的,并且其它示例(例如,培训、游戏、医疗保健中的应用、公共安全、旅游和营销)被认为完全在本公开的范围内。这些设备执行一个或多个功能,例如语音识别、图像识别和图像分类。
参考图3,神经网络装置100包括处理器110、存储器120、和用户接口130。存储器120、处理器110和用户接口130可以经由系统总线或其它合适的电路连接。在图3中,仅示出了与当前实施例相关的神经网络装置100的组件。因此,神经网络装置100可以包括除了图3中示出的组件之外的通用组件。
处理器110控制用于在神经网络中执行神经网络装置100的总体功能。例如,处理器110通常可以通过执行神经网络装置100的存储器120中存储的程序来控制神经网络装置100。处理器110被包括在参考图4至图6和图8至图15描述的装置中的至少一个装置中或者包括这样的装置,或者执行参考图16描述的方法中的至少一个方法。处理器110指代数据处理设备,其被配置为具有用于执行期望的运算的物理结构的电路的硬件。例如,期望的运算可以包括程序中包括的代码或指令。例如,处理器110可以体现为神经网络装置100中包括的微处理器、处理器核、多核处理器、多处理器、中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)、专用集成电路(ASIC)、以及现场可编程门阵列(FPGA),但不限于此。此外,处理器110可以执行存储器120中存储的程序以控制神经网络装置100的所有运算。例如,处理器110可以被实现为微处理器(MCU),其中,CPU、存储器(只读存储器(ROM)或随机存取存储器(RAM))等安装在单个芯片中,但不限于此。关于处理器110的进一步细节在下文中提供。
存储器120是存储在神经网络装置100中处理的各种类型的数据的硬件,并且存储器120可以存储由神经网络装置100处理过的或要处理的数据。此外,存储器120可以存储要由神经网络装置100驱动的应用或驱动程序。存储器120可以包括随机存取存储器(RAM)(例如,动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM))、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、CD-ROM、蓝光光盘、光盘存储设备、硬盘驱动器(HDD)、固态驱动器(SSD)或闪存。关于存储器120的进一步细节在下文中提供。
用户接口130是包括一个或多个硬件组件在内的物理结构,该硬件组件提供呈现用户接口、呈现显示、输出信息和/或接收用户输入的能力。用户接口130输出其从神经网络装置100接收的结果。然而,用户接口130不限于上述示例,并且在示例中,在不脱离所描述的说明性示例的精神和范围的情况下,可以使用有效连接到神经网络装置100的任何显示器(例如,计算机监视器和眼镜显示器(EGD))。
处理器110可以包括执行卷积运算的运算单元和执行高速缓存功能的片上存储器。
处理器110使用在来自存储器120的片上存储器中存储(或缓冲)的输入特征图的像素值和卷积核的权重,来处理输入特征图与卷积核之间的卷积运算。处理器110可以包括至少一个运算单元和至少一个片上存储器,并且当至少一个运算单元中的每一个运算单元和至少一个片上存储器中的每一个片上存储器用于独立地并行执行卷积运算时,可以高效地执行卷积运算。
用于卷积运算的逻辑电路可被包括在处理器110的运算单元中。也就是说,处理器110的运算单元可以包括利用乘法器、加法器和累加器的组合来实现的运算器。乘法器可以包括子乘法器的组合,并且加法器也可以包括子加法器的组合。
处理器110的运算单元可以包括调度器,该调度器向卷积运算器调度各种运算数(例如,输入特征图的像素值和卷积核的权重)。调度器根据输入特征图的像素值和卷积核的权重的数据向片上存储器调度运算数(例如,运算单元执行卷积运算所需的像素值和权重),其中,数据被存储在存储器120中。然后,调度器向运算单元中的处理单元再次调度被调度到片上存储器的运算数,以进行卷积运算。
处理器110可以通过执行输入特征图与卷积核之间的卷积运算来生成输出特征图。为了高效的卷积运算,处理器110可以通过执行卷积核的每一个权重与输入特征图之间的运算来生成输出值。处理器110可以通过重用输入特征图来执行输入特征图与卷积核的每个权重之间的运算。在示例中,处理器110可以通过将输入特征图的每个像素值乘以卷积核的第一权重来生成第一输出值,并且可以通过将输入特征图的每个像素值乘以卷积核的第二权重来生成第二输出值。
处理器110可以通过在输出特征图中的基于卷积核中的权重的位置而设置的位置处累加输出值来生成输出特征图。处理器110可以通过在输出特征图中的位置处累加输出值来生成填充有输出值的输出特征图。处理器110可以基于卷积核中的权重的位置来配置输出特征图中的要累加输出值的位置。例如,处理器110可以基于卷积核中的第一权重的位置来配置输出特征图中的要累加第一输出值的位置,并且基于卷积核中的第二权重的位置来配置输出特征图中的要累加第二输出值的位置。在示例中,在执行输入特征图与卷积核之间的运算之前,处理器110可以预先配置输出特征图中的要累加输出值的位置。因此,处理器110可以通过在输出特征图中的基于第一权重而设置的位置处累加第一输出值并且在输出特征图中的基于第二权重而设置的位置处累加第二输出值,来生成输出特征图。
当处理器110通过在卷积运算中的每个周期重用从存储器120读取的输入特征图来生成输出特征图时,处理器110可以将从存储器120读取输入特征图的次数最小化为一,而不管卷积核的大小如何。
在卷积核的第一权重为零的情况下,处理器110可以跳过输入特征图与第一权重之间的运算。在示例中,当处理器110在每个周期顺序地执行卷积核的每个权重与输入特征图之间的运算时,可以跳过输入特征图与具有值零的第一权重之间的运算。因此,处理器110可以将输入特征图与卷积核之间的卷积运算所需的时间减少与零权重一样多的周期。
图4示出了处理器通过重用输入特征图来生成输出特征图的示例。
在图4中,为方便起见,输入特征图410被示出为1×1像素区域,并且卷积核420被示出为3×3像素区域,但是输入特征图和卷积核可以是具有不同大小的区域,而不限于图示。
在第1周期中,处理器110可以通过执行输入特征图410与卷积核420的第一权重422之间的运算来生成第一输出值。在示例中,处理器110可以通过执行输入特征图410的像素值与卷积核420的第一权重422之间的乘法运算来生成第一输出值。处理器110可以在输出特征图430中的基于卷积核420中的第一权重422的位置而设置的位置处累加第一输出值。输出特征图430中的位置(其与卷积核420中的第一权重422的位置相对应)可以被设置为输出特征图430的第三行和第三列。因此,处理器110可以将第一输出值累加到输出特征图430的第三行和第三列。
在第2周期中,处理器110可以通过执行输入特征图410与卷积核420的第二权重424之间的运算来生成第二输出值。处理器110可以在输出特征图430中的基于卷积核420中的第二权重424的位置而设置的位置处累加第二输出值。输出特征图430中的位置(其与卷积核420中的第二权重424的位置相对应)可以被设置为输出特征图430的第三行和第二列。也就是说,当作为运算数的权重的位置从第一权重422向右改变一个块而成为第二权重424时,输出特征图430中用于累加输出值的位置可以从第三行和第三列向左改变一个块而成为第三行和第二列。因此,处理器110可以将第二输出值累加到输出特征图430的第三行和第二列。
在第3周期中,处理器110可以通过执行输入特征图410与卷积核420的第三权重426之间的运算来生成第三输出值,并且在输出特征图430的第三行和第一列中累加第三输出值。在第4周期中,处理器110可以通过执行输入特征图410与卷积核420的第四权重428之间的运算来生成第四输出值,并且在输出特征图430的第二行和第三列中累加第四输出值。类似地,在第5周期至第9周期中,处理器110可以通过执行卷积核420的每个权重与输入特征图410之间的运算来生成输出值。处理器110可以通过将输出值累加在输出特征图430中的与卷积核420的权重的位置相对应的位置中来生成填充有输出值的输出特征图430。
为方便起见,图4中示出了卷积核420的每个权重与输入特征图410之间的运算在总共9个周期中执行,但是可以跳过零权重与输入特征图410之间的运算。也就是说,处理器110可以将卷积核420的每个权重与输入特征图410之间的运算执行与卷积核420的非零权重的数量一样多的次数。
因此,如图2A和图2B所示,处理器110可以通过在事先基于卷积核的权重的位置设置输出特征图上的用于累加输出值的位置的同时在每个周期重用输入特征图来执行卷积运算,而不是在若干次读取包括重叠区域在内的输入特征图的同时执行卷积运算,由此可以高效执行卷积运算。
参考图3,处理器110可以通过基于对输入特征图中的第一区域的重用来执行卷积核中的每个权重与第一区域之间的运算来生成第一输出值。处理器110可以通过在第一部分输出特征图中的基于卷积核中的权重的位置而设置的位置处累加第一输出值来生成第一部分输出特征图。然后,处理器110可以在输出特征图上累加第一部分输出特征图。处理器110可以基于输入特征图中的第一区域的位置来设置输出特征图中的用于累加第一部分输出特征图的位置,并且在所设置的位置处累加第一部分输出特征图。
处理器110可以通过基于对输入特征图中的与第一区域不同的第二区域的重用去执行卷积核中的每个权重与第二区域之间的运算来生成第二输出值。处理器110可以通过在第二部分输出特征图中的基于卷积核中的权重的位置而设置的位置处累加第二输出值来生成第二部分输出特征图。然后,处理器110可以在输出特征图上累加第一部分输出特征图。处理器110可以基于输入特征图中的第二区域的位置来设置输出特征图中的用于累加第二部分输出特征图的位置,并且在所设置的位置处累加第二部分输出特征图。
类似地,处理器110可以通过基于对输入特征图中的与第一区域和第二区域不同的第N区域的重用去执行卷积核中的每个权重与第N区域之间的运算来生成第N部分输出特征图,其中,N是大于或等于3的自然数。因此,处理器110可以通过在输出特征图上累加第一部分输出特征图至第N部分输出特征图来生成输出特征图。
处理器110可以包括与输入特征图的区域中的每个像素相对应的乘法器MUL以及包括复用器MUX、加法器和累加器&寄存器(“Acc.Register”),它们分别与部分输出特征图的像素相对应,用于生成部分输出特征图。
处理器110可以在输入特征图中配置各种形式的区域,并且通过执行所配置的区域与卷积核之间的运算来生成部分输出特征图。各种形式的区域可以包括n个像素、n×m个像素或n×m×l个像素,其中n、m和l可以是大于或等于1的自然数。输入特征图可以是二维(2D)输入特征图或三维(3D)输入特征图,并且输入特征图的区域可以是2D区域或3D区域。
处理器110可以通过执行输入特征图的区域与卷积核的部分区域之间的运算来生成部分输出特征图。通过将运算限制到卷积核的部分区域,处理器110可以减小部分输出特征图的大小,从而减小用于部分输出特征图的缓冲器的大小。例如,当输入特征图的区域具有1×10像素的大小并且卷积核具有3×3像素的大小时,作为运算结果的部分输出特征图可以具有3×12像素的区域。在这种情况下,通过将卷积核的大小限制为1×3像素,处理器110可以执行卷积运算,使得部分输出特征图具有1×12像素的区域,且因此可以减小用于部分输出特征图的缓冲器的大小。
图5示出了处理器通过重用输入特征图的区域来生成部分输出特征图的示例。
在图5中,为方便起见,输入特征图501的第一区域510被示出为4×4像素区域,并且卷积核520被示出为3×3像素区域,但是输入特征图的第一区域和卷积核可以是具有不同大小的区域,而不限于图示。
在第1周期中,处理器110可以通过执行第一区域510与卷积核520的第一权重522之间的运算来生成第一输出值。在示例中,处理器110可以通过执行第一区域510的每个像素值与第一权重522之间的乘法运算来生成第一输出值。处理器110可以通过执行第一区域510的十六个像素值中的每一个像素值与第一权重522之间的乘法运算来生成十六个第一输出值。处理器110可以在第一部分输出特征图530中的基于卷积核520中的第一权重522的位置而设置的位置处累加第一输出值。第一部分输出特征图530中的位置(其与卷积核520中的第一权重522的位置相对应)可以形成第一部分输出特征图530的区域532。因此,处理器110可以在第一部分输出特征图530的区域532中累加第一输出值。也就是说,处理器110可以在第一部分输出特征图530的区域532中累加第一区域510的n行和m列的像素值与第一权重522的乘积,其中,n和m是自然数。
在第2周期中,处理器110可以通过执行第一区域510与卷积核520的第二权重524之间的运算来生成第二输出值。处理器110可以在第一部分输出特征图530中的基于卷积核520中的第二权重524的位置而设置的位置处累加第二输出值。第一部分输出特征图530中的位置(其与卷积核520中的第二权重524的位置相对应)可以形成第一部分输出特征图530的区域534。也就是说,当作为运算数的权重的位置从第一权重522向右改变一个块而成为第二权重524时,第一部分输出特征图530中用于累加输出值的区域可以从区域532向左改变一个块而成为区域534。因此,处理器110可以在第一部分输出特征图530的区域534中累加第二输出值。
类似地,在第3周期至第9周期中,处理器110可以通过执行卷积核520的每个权重与第一区域510之间的运算来生成输出值。处理器110可以通过在第一部分输出特征图530中的与卷积核520的权重的位置相对应的区域中累加输出值来生成第一部分输出特征图530。
处理器110可以在输出特征图531上累加所生成的第一部分输出特征图530。处理器110可以在输出特征图531中的基于第一区域510在输入特征图501中的位置而设置的位置中累加第一部分输出特征图。
对于输入特征图501中的与第一区域510不同的第N区域,处理器110可以通过基于对第N区域的重用去执行卷积核520中的每个权重与第N区域之间的运算来生成输出值,并且通过在第N部分输出特征图中的基于卷积核520中的权重的位置而设置的位置处累加输出值来生成第N部分输出特征图。处理器110可以在输出特征图531上累加所生成的第N部分输出特征图。处理器110可以通过在输出特征图531上累加第一部分输出特征图至第N部分输出特征图来生成输出特征图531。换句话说,处理器110可以生成填充有第一部分输出特征图至第N部分输出特征图的输出值的输出特征图531。为方便起见,图5中示出了卷积核520的每个权重与第一区域510之间的运算在总共9个周期中执行,但是可以跳过零权重与第一区域510之间的运算。也就是说,处理器110可以将卷积核520的每个权重与第一区域510之间的运算执行与卷积核520的非零权重的数量一样多的次数。
图6示出了处理器生成部分输出特征图的示例。
在图6中,处理器110可以包括十六个乘法器(MUL)、三十六个复用器(MUX)、三十六个加法器(Adder)以及三十六个累加器&寄存器(Acc.Register),以生成图5的第一部分输出特征图530。
十六个乘法器中的每一个乘法器可以与图5的第一区域510的每个像素相对应。对于十六个乘法器中的每一个乘法器,可以输入卷积核520的权重和第一区域510的每个像素。例如,可以向第一乘法器输入卷积核520的第一权重和第一区域510的第一像素,可以向第二乘法器输入卷积核520的第一权重和第一区域510的第二像素,并且可以向第十六乘法器输入卷积核520的第一权重和第一区域510的第十六像素。在九个周期的每一个周期中,可以向十六个乘法器分别顺序输入卷积核520的第一权重到第九权重,并且可以重复输入第一区域510的每个像素。因此,在九个周期的每一个周期中,十六个乘法器可以执行卷积核520中的每个权重与第一区域510之间的乘法运算,且从而输出输出值。
在示例中,三十六个复用器、加法器、以及累加器&寄存器中的每一个可以与第一部分输出特征图530的三十六个像素中的每一个像素相对应。也就是说,一组复用器、加法器、以及累加器&寄存器可以与三十六个像素中的任何一个像素相对应。三十六个复用器中的每一个复用器可以接收十六个乘法器的输出值之中的预设数量的输出值。
在图6中,610指示针对第一部分输出特征图530的三十六个像素中的每一个像素所累加的输出值的数量。例如,可以在第一部分输出特征图530的第一行和第一列的像素值中累加一个输出值,但是可以在第一部分输出特征图530的第三行和第三列的像素值中累加九个输出值。针对第一部分输出特征图530的三十六个像素中的每一个像素所累加的输出值的数量可以表示复用器的输入的数量。例如,与第一部分输出特征图530的第三行和第三列的像素相对应的复用器可以接收从九个乘法器输出的输出值作为输入。
三十六个复用器中的每一个复用器可以接收十六个乘法器的输出值之中的多个输出值,并且从该多个输出值之中选择一个输出值。三十六个复用器中的每一个复用器可以接收与第一部分输出特征图530的每个像素相对应的数量的输出值(如610所示),并且基于卷积核520中的权重的位置选择一个输出值。例如,与第一部分输出特征图530的第三行和第三列的像素相对应的复用器可以接收从被输出为第一区域510与卷积核520中的权重之间的运算结果的区域中的第一行和第一列至第三行和第三列的九个输出值。在第一区域510与卷积核520中的第一权重522之间的运算中,复用器可以基于卷积核520中的第一权重522的位置从区域532中的九个输出值之中选择第一行和第一列的输出值。在第一区域510与卷积核520中的第二权重524之间的运算中,复用器可以基于卷积核520中的第二权重524的位置从区域534中的九个输出值之中选择第一行和第二列的输出值。
三十六个加法器以及累加器&寄存器中的每一个可以累加从三十六个复用器中的每一个中选择的输出值。因此,作为在总共九个周期中累加输出值的结果,三十六个累加器&寄存器中的每一个可以生成配置有三十六个像素值的第一部分输出特征图530。
图7示出了输入特征图中的用于与卷积核进行运算的各种形式的区域的示例。
处理器110可以在输入特征图710中配置各种形式的区域,并且通过执行所配置的区域与卷积核之间的运算来生成部分输出特征图。
在示例中,处理器110可以通过在输入特征图710中配置由n×n个像素组成的区域720通过与卷积核的运算来生成针对区域720的部分输出特征图,并且在输出特征图上累加部分输出特征图。
在示例中,处理器110可以通过在输入特征图710中配置由1×n个像素组成的区域730通过与卷积核的运算来生成针对区域730的部分输出特征图,并且在输出特征图上累加部分输出特征图。换句话说,处理器110可以配置除了输入特征图710中的正方形区域720之外的像区域730那样的仅沿一个方向进行输入的区域。
根据示例,处理器110可以通过在输入特征图710中配置由1×1×n个像素组成的区域740通过与卷积核的运算来生成针对区域740的部分输出特征图,并且在输出特征图上累加部分输出特征图。
图8示出了处理器通过重用输入特征图的区域来生成部分输出特征图的示例。
在图8中,为方便起见,输入特征图的第一区域810被示出为1×10像素区域,并且卷积核820被示出为3×3像素区域,但是输入特征图的第一区域和卷积核可以是具有不同大小的区域,而不限于图示。
在第1周期中,处理器110可以通过执行第一区域810与卷积核820的第一权重822之间的运算来生成第一输出值,并且在第一部分输出特征图830中的基于卷积核820中的第一权重822的位置而设置的位置处累加第一输出值。换句话说,处理器110可以在第一部分输出特征图830的区域832中累加第一输出值。
在第2周期至第9周期中,处理器110可以通过基于对第一区域810的重用去执行卷积核820的每个权重与第一区域810之间的运算来生成第一部分输出特征图830。
图9示出了处理器使用卷积核的一部分来生成部分输出特征图的示例。
通过将运算限制到图8的卷积核820的部分区域920,处理器110可以执行图8的输入特征图的第一区域810与卷积核的部分区域920之间的运算,以生成部分输出特征图930。
处理器110可以通过执行部分区域920的第一权重922与第一区域810之间的运算来生成第一输出值,并且在部分输出特征图930的区域932中累加第一输出值。处理器110可以通过执行部分区域920的第二权重924与第一区域810之间的运算来生成第二输出值,并且在部分输出特征图930的区域934中累加第二输出值。处理器110可以通过执行部分区域920的第三权重与第一区域810之间的运算来生成第三输出值,并且通过在部分输出特征图930的区域936中累加第三输出值来生成部分输出特征图930。
处理器110可以通过执行卷积核820的另一区域与输入特征图的第一区域810之间的运算来生成部分输出特征图。
因此,在与图8相比时,在图9中,通过将运算限制到卷积核的部分区域,处理器110可以减小部分输出特征图的大小,从而减小用于部分输出特征图的缓冲器的大小。
返回参考图3,处理器110可以以流的形式连续读取输入特征图或其区域,并且基于所读取的输入特征图或其区域来执行与卷积核的卷积运算。处理器110通过重用输入特征图或其区域来执行与卷积核的卷积运算,且因此在第一次读取输入特征图或其区域之后无需再次对其进行读取,从而像连续的流那样连续读取输入特征图或其区域。
处理器110可以读取经压缩的输入特征图并执行在经压缩的输入特征图与卷积核之间的卷积运算。输入特征图和经压缩的输入特征图可被存储在存储器120中,并且处理器110可以访问存储器120以读取经压缩的输入特征图并执行卷积运算。例如,处理器110可以将作为卷积运算的结果的输出特征图作为下一层的输入特征图存储在存储器120中。处理器110可以压缩输入特征图或将经压缩的输入特征图存储在存储器120中。处理器110可以从存储器120读取经压缩的输入特征图或者基于经压缩的输入特征图来执行卷积运算。
因此,处理器110可以通过读取像连续的流那样的经压缩的输入特征图或其区域以及输入特征图来执行卷积运算,从而提高卷积运算的速度。
图10示出了处理器通过像流那样流读取经压缩的输入特征图来执行卷积运算的示例。
存储器120可以将经压缩的输入特征图1010与输入特征图一起存储。经压缩的输入特征图1010可以以输入特征图的区域为单位来进行压缩。例如,经压缩的输入特征图1010可以以4×4区域为单位进行压缩。处理器110可以通过像连续流那样读取经压缩的输入特征图1010来执行卷积运算。
经压缩的输入特征图1010可以包括非零像素,使得处理器110可以通过执行在经压缩的输入特征图1010与卷积核之间的卷积运算来实现零跳过,且从而减小存储器带宽。
图11示出了处理器的硬件配置的示例。
处理器110可以包括运算单元1112、1114和1116以及输出单元1122、1124和1126。
运算单元1112、1114和1116中的每一个可以通过执行区域IFM_1、IFM_2至IFM_N之中的不同区域与卷积核之间的运算来生成部分输出特征图。例如,第一运算单元1112可以通过基于对输入特征图的第一区域IFM_1的重用去执行第一区域IFM_1与卷积核之间的运算来生成第一部分输出特征图。此外,第N运算单元1116可以通过基于对输入特征图的第N区域IFM_N的重用去执行第N区域IFM_N与卷积核之间的运算来生成第N部分输出特征图。
运算单元1112、1114和1116中的每一个可以包括位于前端(FrontEnd)处的调度器、处理单元和第一缓冲器。第一运算单元1112的调度器可以从存储器120读取输入特征图的第一区域IFM_1,并且向处理单元调度所读取的第一区域。处理单元可以通过执行第一区域IFM_1与卷积核之间的运算来生成输出值。在示例中,处理单元包括各种运算器,例如乘法器、加法器、和累加器。处理单元可以通过执行第一区域IFM_1与第一卷积核之间的运算来生成第一输出值,通过执行第一区域IFM_1与第二卷积核之间的运算来生成第二输出值,并且通过执行第一区域IFM_1与第N卷积核之间的运算来生成第N输出值。然后,第一缓冲器1113可以通过累加输出值来生成第一部分输出特征图。例如,第一缓冲器1113中的缓冲器1可以通过累加由处理单元生成的第一输出值来生成第一“第一部分输出特征图”,第一缓冲器1113中的缓冲器2可以通过累加由处理单元生成的第二输出值来生成第一“第二部分输出特征图”,并且第一缓冲器1113中的缓冲器N可以通过累加处理单元生成的第N输出值来生成第一“第N部分输出特征图”。
类似地,其它运算单元1114和1116可以通过调度器、处理单元和第一缓冲器,通过基于对输入特征图的其它区域IFM_2至IFM_N的重用去执行卷积核与输入特征图的其它区域IFM_2至IFM_N之间的运算来生成第二部分输出特征图至第N部分输出特征图。
运算单元1112、1114和1116中的每一个运算单元中包括的处理单元可以包括并行化的处理单元。例如,第一运算单元1112的处理单元可以包括:第一处理单元,执行输入特征图的第一区域IFM_1与第一卷积核之间的运算;以及第二处理单元,执行第一区域IFM_1与第二卷积核之间的运算。在这种情况下,在完成输入特征图的第一区域IFM_1与第一卷积核之间的运算之后,第一处理单元可以执行输入特征图的第一区域IFM_1与第二卷积核之间的运算的一部分,而不是第二处理单元执行。结果,可以实现负载均衡,并且可以减少总处理时间。现在将参考图15来描述详细示例。
输出单元1122、1124和1126可以通过累加从运算单元1112、1114和1116生成的部分输出特征图之中的所需的部分输出特征图来生成输出特征图的区域OFM_0、OFM_1至OFM_N。输出单元1122、1124和1126可以生成输出特征图的区域OFM_0、OFM_1至OFM_N,并将它们向存储器120输出。
输出单元1122、1124和1126中的每一个输出单元可以包括第二缓冲器和位于后端的输出处理器。
第一输出单元1122的第二缓冲器可以从运算单元1112、1114和1116中的每一个运算单元接收部分输出特征图,并且通过累加所接收的部分输出特征来生成输出特征图的第一区域OFM_1。例如,第一输出单元1122的第二缓冲器可以从第一运算单元1112的缓冲器1接收第一“第一部分输出特征图”,从第二运算单元1114的缓冲器1接收第二“第一部分输出特征图”,并且从第N运算单元1116的缓冲器1接收第N“第一部分输出特征图”。第一输出单元1122的第二缓冲器可以通过累加所接收的第一“第一部分输出特征图”至第N“第一部分输出特征图”来生成输出特征图的第一区域OFM_1。第一输出单元1122的输出处理器可以对输出特征图的第一区域OFM_1执行像素处理,并且输出经像素处理的输出特征图的第一区域OFM_1。
类似地,其它输出单元1124和1126可以通过第二缓冲器和输出处理器从运算单元1112、1114和1116中的每一个运算单元接收所需的部分输出特征图,并且通过累加所接收的部分输出特征图来生成输出特征图的第二区域OFM_2至第N区域OFM_N。
运算单元1112、1114和1116中的每一个运算单元可以通过重用输入特征图的不同区域来执行与卷积核的运算,且因此运算单元1112、1114和1116可以分别执行独立且并行的运算。在运算单元1112、1114和1116中的每一个运算单元中,调度器可以仅向相同运算单元上的处理单元调度输入特征图的区域,而不向另一运算单元上的处理单元调度输入特征图的该区域,从而降低了处理器110的FrontEnd的前端处的复杂度。
参考图11,在示例中,运算单元1112、1114和1116可以与输出单元1122、1124和1126完全连接。因此,可能错误地表现为后端(BackEnd)处的处理器110的复杂度增加,且前端FrontEnd处的处理器110的复杂度降低。输出单元1122、1124和1126执行选择性地累加来自运算单元1112、1114和1116中的每一个运算单元的部分特征图的运算。因此,输出单元1122、1124和1126可以比运算单元1112、1114和1116在时间上更加稀疏地执行该运算,而不会大幅增加复杂度。
图12示出了处理器的硬件配置的示例。
处理器110可以包括运算单元1212、1214和1216以及输出单元1222、1224和1226。除了下面对图12的描述,图12的运算单元1212、1214和1216以及输出单元1222、1224和1226可以与图11的运算单元1112、1114和1116以及输出单元1122、1124和1126相对应,以使得通过引用方式将重复的内容并入本文中。因此,这里可以不再重复以上描述。
参考图12,运算单元1212、1214和1216可以通过总线1210与输出单元1222、1224和1226连接。
输出单元1222、1224和1226可以执行选择性地累加来自运算单元1212、1214和1216中的每一个运算单元的部分输出特征图的运算,且因此可以通过总线1210从运算单元1212、1214和1216接收部分输出特征图。
因此,处理器110可以通过总线1210来实现运算单元1212、1214和1216与输出单元1222、1224和1226之间的部分输出特征图的发送/接收路径,而不是实现这两者之间的完全连接,从而减少了硬件开销。
图13示出了处理器的硬件配置的示例。
处理器110可以包括运算单元1312、1314和1316。运算单元1312、1314和1316中的每一个运算单元可以通过执行输入特征图的区域之中的不同区域与卷积核之间的运算来生成部分输出特征图。运算单元1312、1314和1316中的每一个运算单元可以包括调度器、处理单元和缓冲器。例如,第一运算单元1312的调度器可以从存储器120读取输入特征图的第一区域,并且向处理单元调度所读取的第一区域。处理单元可以通过执行第一区域与卷积核之间的运算来生成输出值,并且缓冲器可以通过累加输出值来生成第一部分输出特征图。
运算单元1312、1314和1316中的每一个运算单元可以通过累加来自另一运算单元的所需的部分输出特征图来生成输出特征图的多个区域中的每一个区域。在示例中,相邻运算单元的缓冲器可以互连,并且运算单元1312、1314和1316中的每一个运算单元的缓冲器可以从不同运算单元的缓冲器接收所需的部分输出特征图。例如,当第一运算单元1312的缓冲器需要从第N运算单元1316输出的部分输出特征图时,第一运算单元1312可以通过第二运算单元1314的缓冲器来接收从第N运算单元1316输出的部分输出特征图。
图14示出了处理器的运算单元执行卷积核与输入特征图的区域之间的运算的示例。
处理器110可以包括第一运算单元1412、第二运算单元1414、第三运算单元1416和第四运算单元1418。处理器110可以包括第一输出单元1422、第二输出单元1424、第三输出单元1426和第四输出单元1428。处理器110还可以包括总线1430。
第一运算单元1412可以通过执行输入特征图的第一区域IFMO和卷积核(Kernel)之间的运算来生成第一部分输出特征图。在示例中,第一运算单元1412可以通过经由第一处理单元执行第一区域IFMO与第一卷积核之间的运算来生成第一“第一部分输出特征图”,通过经由第二处理单元执行第一区域IFMO与第二卷积核之间的运算来生成第一“第二部分输出特征图”,通过经由第三处理单元执行第一区域IFMO与第三卷积核之间的运算来生成第一“第三部分输出特征图”,以及通过经由第四处理单元执行第一区域IFMO与第四卷积核之间的运算来生成第一“第四部分输出特征图”。
类似地,第二运算单元1414、第三运算单元1416和第四运算单元1418可以通过经由四个处理单元分别执行输入特征图的第二区域IFM1、第三区域IFM2和第四区域IFM3与卷积核之间的运算,来生成第二“第一部分输出特征图”至第二“第四部分输出特征图”、第三“第一部分输出特征图”至第三“第四部分输出特征图”、以及第四“第一部分输出特征图”至第四“第四部分输出特征图”。
第一输出单元1422可以通过总线1430从运算单元1412、1414、1416和1418接收所需的部分输出特征图。例如,第一输出单元1422可以通过总线1430来接收第一“第一部分输出特征图”、第二“第一部分输出特征图”、第三“第一部分输出特征图”和第四“第一部分输出特征图”,并通过累加第一“第一部分输出特征图”、第二“第一部分输出特征图”、第三“第一部分输出特征图”和第四“第一部分输出特征图”来生成输出特征图的第一区域OFMO。
类似地,第二输出单元1424、第三输出单元1426和第四输出单元1428可以通过总线1430来接收部分输出特征图,并且分别生成第二区域OFM1、第三区域OFM2和第四区域OFM3。
图15示出了处理器的运算单元执行卷积核与输入特征图的区域之间的运算的示例。
当运算单元1412至1418中的每一个运算单元执行输入特征图的区域与卷积核“Kernel”之间的运算时,运算单元1412至1418中的处理单元中的每一个处理单元的运算时间可以不同。在示例中,如在1510中可以看到的,第一运算单元1412的第一处理单元至第四处理单元的运算时间可以彼此不同。第一处理单元执行输入特征图的第一区域IFMO与第一卷积核之间的运算所需的时间可以比第二处理单元执行第一区域IFMO与第二卷积核之间的运算所需的时间短,并且第四处理单元执行第一区域IFMO与第四卷积核之间的运算所需的时间可以是最长的。结果,总处理时间可能增加。
因此,当执行输入特征图的区域与卷积核之间的运算时,在示例中,运算单元1412至1418中的每一个运算单元可以控制较早完成运算的处理单元代表另一处理单元来执行运算,以实现负载均衡。在示例中,第一运算单元1412的第三处理单元可以通过第一区域IFMO与第三卷积核之间的运算来生成第一“第三部分输出特征图”,然后代表第四处理单元执行第一区域IFM0与第四卷积核之间的运算的一部分。结果,如1530所示,可以减少总处理时间。
此外,即使当运算单元中的处理单元代表另一处理单元执行运算时,输出运算单元也可以选择性地获得所需的部分输出特征图,使得输出运算单元可以生成输出特征图的区域,而不管运算单元中的负载均衡如何。
图16是示出了根据实施例的神经网络的运算方法的示例的图。图16中的运算可以按照所示的顺序和方式来执行,然而在不脱离所述的说明性示例的精神和范围的情况下,可以改变一些运算的顺序,或者省略一些运算。图16所示的许多运算可以并行或并发执行。图16的一个或多个块和这些块的组合可以通过执行指定功能的基于专用硬件的计算机(例如,处理器)或者专用硬件和计算机指令的组合来实现。
图16中所示的运算方法可以通过图3至图15中所示的神经网络装置100的元件来执行,且因此将省略重复的描述。在示例中,图16的运算可以由神经网络装置(图3中的100)执行。除了以下对图16的描述之外,对图1至图15的描述也适用于图16,并且通过引用并入本文中。因此,这里可以不再重复以上描述。
在运算1610中,神经网络装置100可以通过执行卷积核的权重与输入特征图之间的运算来生成输出值。神经网络装置100可以通过执行输入特征图与卷积核的第一权重之间的运算来生成第一输出值。神经网络装置100可以通过执行输入特征图与卷积核的第二权重之间的运算来生成第二输出值。
神经网络装置100可以通过执行输入特征图的第一区域与卷积核的每个权重之间的运算来生成第一输出值。神经网络装置100可以通过执行卷积核中的每个权重与输入特征图中的与第一区域不同的第二区域之间的运算来生成第二输出值。
当卷积核的第一权重为零时,神经网络装置100可以跳过输入特征图与第一权重之间的运算。
神经网络装置100可以通过连续地流读取经压缩的输入特征图来执行卷积核的每个权重与经压缩的输入特征图之间的运算。
在运算1620中,神经网络装置100可以通过在输出特征图中的基于卷积核中的权重的位置而设置的位置处累加输出值来生成输出特征图。在示例中,神经网络装置100可以在输出特征图中的基于卷积核中的第一权重的位置而配置的第一位置处累加第一输出值。神经网络装置100可以在输出特征图中的基于卷积核中的第二权重的位置而配置的第二位置处累加第二输出值。
神经网络装置100可以通过在第一部分输出特征图中的基于卷积核中的权重的位置而设置的位置处累加第一输出值来生成第一部分输出特征图,并且在输出特征图上累加第一部分输出特征图。神经网络装置100可以通过在第二部分输出特征图中的基于卷积核中的权重的位置而设置的位置处累加第二输出值来生成第二部分输出特征图,并且在输出特征图上累加第二部分输出特征图。
神经网络装置100可以通过执行输入特征图的区域中的每个区域与卷积核之间的运算来生成部分输出特征图。神经网络装置100可以通过累加部分输出特征图之中的所需的部分输出特征图来生成输出特征图的区域中的每一个区域。神经网络装置100可以通过执行区域之中的区域与多个卷积核中的每个卷积核之间的运算来生成部分输出特征图。
神经网络装置100、处理器110、乘法器(MUL)、复用器(MUX)、加法器(Adder)、累加器&寄存器(Acc.Register)、运算单元1112、1114和1116、输出单元1122、1124和1126、运算单元1212、1214和1216、输出单元1222、1224和1226、运算单元1312、1314和1316、第一运算单元1412、第二运算单元1414、第三运算单元1416、第四运算单元1418、第一输出单元1422、第二输出单元1424、第三输出单元1426、第四输出单元1428、调度器、处理单元、调度器(FrontEnd)、输出处理器(BackEnd)以及本文描述的其它装置、单元、模块、设备和其它组件是由硬件组件实现的。在适当的情况下可用于执行本申请中所描述的运算的硬件组件的示例包括控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器、以及被配置为执行本申请所述的运算的任何其它电子组件。在其它示例中,执行本申请中所述的运算的一个或多个硬件组件通过计算硬件来实现(例如,通过一个或多个处理器或计算机来实现)。处理器或计算机可以由以下项实现:一个或多个处理元件(比如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器、或被配置为以定义的方式响应并执行指令以实现期望的结果的任何其它设备或设备的组合。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可以执行指令或软件,诸如操作系统(OS)和在OS上运行的一个或多个软件应用,以执行本申请中描述的运算。硬件组件还可以响应于对指令或软件的执行来访问、操纵、处理、创建和存储数据。为了简洁起见,在本申请中描述的示例的描述中可以使用单数术语“处理器”或“计算机”,但是在其它示例中可以使用多个处理器或计算机,或者处理器或计算机可以包括多个处理元件、或多种类型的处理元件、或两者兼有。例如,单个硬件组件或者两个或更多个硬件组件可以由单个处理器、或两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可以由一个或多个处理器、或处理器和控制器来实现,并且一个或多个其它硬件组件可以由一个或多个其它处理器或另一处理器和另一控制器来实现。一个或多个处理器或者处理器和控制器可以实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一种或多种,处理配置的示例包括单处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理、和多指令多数据(MIMD)多处理。
执行本申请中所述的运算的图1至图11所示的方法是由计算硬件来执行的,例如,由如以上描述而实现的、执行指令或软件以执行本申请所述的运算(通过所述方法实现的运算)的一个或多个处理器或计算机来执行的。例如,单个运算或者两个或更多个运算可以由单个处理器、或者两个或更多个处理器、或者处理器和控制器执行。一个或多个运算可以由一个或多个处理器或者处理器和控制器执行,并且一个或多个其它运算可以由一个或多个其它处理器或者另一处理器和另一控制器执行。一个或多个处理器或者处理器和控制器可以执行单个运算或者两个或更多个运算。
用于控制处理器或计算机如上所述地实现硬件组件并执行所述方法的指令或软件被写为计算机程序、代码段、指令或其任何组合,用于单独地或共同地指示或配置处理器或计算机作为机器或专用计算机来运算,以执行由硬件组件执行的运算和上述方法。在示例中,指令或软件包括以下至少一项:小应用程序、动态链接库(DLL)、中间件、固件、设备驱动程序、存储输出状态信息的方法的应用程序。在一个示例中,指令或软件包括由处理器或计算机直接执行的机器代码,例如由编译器生成的机器代码。在另一个示例中,指令或软件包括由处理器或计算机使用解释器执行的更高级代码。本领域的普通程序员能够基于附图中所示的框图和流程图以及说明书中的对应描述来容易地编写指令或软件,其中公开了用于执行如上所述的由硬件组件和方法执行的运算的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以如上所述地实现硬件组件并执行方法的指令或软件以及任何相关联的数据、数据文件和数据结构可以被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或其上。非暂时性计算机可读存储介质的示例包括:只读存储器(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.根据权利要求3所述的神经网络装置,其中,所述第一区域包括所述输入特征图中的n个像素、n×m个像素或者n×m×l个像素中的至少一个,其中,n、m和l是大于或等于1的自然数。
6.根据权利要求1所述的神经网络装置,其中,所述处理器还被配置为:响应于所述卷积核的权重中的第一权重为零,跳过所述输入特征图与所述第一权重之间的运算。
7.根据权利要求1所述的神经网络装置,其中,所述处理器还被配置为:通过从存储器连续地流读取经压缩的输入特征图,来执行所述卷积核的每个权重与所述经压缩的输入特征图之间的运算。
8.根据权利要求1所述的神经网络装置,其中,所述处理器还包括:
运算单元,被配置为通过执行所述输入特征图的区域之中的不同区域与所述卷积核之间的运算来生成部分输出特征图;以及
输出单元,被配置为通过累加所述部分输出特征图之中的一个或多个部分输出特征图来生成所述输出特征图的区域中的每一个区域。
9.根据权利要求8所述的神经网络装置,其中,所述运算单元中的一个或多个运算单元还被配置为:独立于彼此并且彼此并行地执行所述卷积核与所述不同区域之间的运算。
10.根据权利要求8所述的神经网络装置,还包括总线,
其中,所述输出单元还被配置为通过所述总线从所述运算单元接收所述一个或多个部分输出特征图。
11.根据权利要求8所述的神经网络装置,其中,所述运算单元中的每一个运算单元包括多个处理单元,所述处理单元被配置为通过执行所述输入特征图的区域之中的区域与多个卷积核中的每一个卷积核之间的运算来生成所述部分输出特征图。
12.根据权利要求11所述的神经网络装置,其中,所述处理单元包括:第一处理单元,被配置为执行所述区域与第一卷积核之间的运算;以及第二处理单元,被配置为执行所述区域与第二卷积核之间的运算,以及
所述第一处理单元还被配置为:在完成所述区域与所述第一卷积核之间的运算后,执行所述区域与所述第二卷积核之间的运算的一部分。
13.根据权利要求1所述的神经网络装置,还包括存储指令的存储器,所述指令在被执行时配置所述处理器生成所述输出值并生成所述输出特征图。
14.一种处理神经网络中的卷积运算的方法,所述方法包括:
生成卷积核的每个权重与输入特征图之间的运算的输出值;以及
通过在输出特征图中的基于所述卷积核中的权重的位置而设置的位置处累加所述输出值来生成所述输出特征图。
15.根据权利要求14所述的方法,其中,生成输出值包括:
通过执行所述输入特征图与所述卷积核的第一权重之间的运算来生成第一输出值;以及
通过执行所述输入特征图与所述卷积核的第二权重之间的运算来生成第二输出值;以及
生成所述输出特征图包括:
在所述输出特征图中的基于所述卷积核中的所述第一权重的位置的第一位置处累加所述第一输出值;以及
在所述输出特征图中的基于所述卷积核中的所述第二权重的位置的第二位置处累加所述第二输出值。
16.根据权利要求14所述的方法,其中,生成输出值还包括:
通过执行所述输入特征图的第一区域与所述卷积核的每个权重之间的运算来生成第一输出值;以及
通过执行所述输入特征图中的第二区域与所述卷积核的每个权重之间的运算来生成第二输出值,所述第二区域不同于所述第一区域;以及
生成所述输出特征图还包括:
通过在第一部分输出特征图中的基于所述卷积核中的相应权重的位置的位置处累加所述第一输出值来生成所述第一部分输出特征图,并且在所述输出特征图上累加所述第一部分输出特征图;以及
通过在第二部分输出特征图中的基于所述卷积核中的相应权重的位置的位置处累加所述第二输出值来生成所述第二部分输出特征图,并且在所述输出特征图上累加所述第二部分输出特征图。
17.根据权利要求14所述的方法,其中,生成输出值还包括:响应于所述卷积核的所述第一权重为零,跳过所述输入特征图与所述第一权重之间的运算。
18.根据权利要求14所述的方法,其中,生成输出值还包括:通过连续地流读取经压缩的输入特征图,执行所述卷积核的每个权重与所述经压缩的输入特征图之间的运算。
19.根据权利要求14所述的方法,还包括:
通过执行所述输入特征图的区域之中的不同区域与所述卷积核之间的运算来生成部分输出特征图;以及
通过累加所述部分输出特征图之中的一个或多个部分输出特征图来生成所述输出特征图的区域中的每一个区域。
20.根据权利要求18所述的方法,其中,生成部分输出特征图包括:通过执行所述输入特征图的区域之中的区域与多个卷积核中的每一个卷积核之间的运算来生成所述部分输出特征图。
21.一种存储指令的非暂时性计算机可读存储介质,所述指令在被处理器执行时,使得所述处理器执行根据权利要求14所述的方法。
22.一种神经网络装置,包括:
存储器,被配置为存储卷积核的权重和指令;以及
处理器,被配置为执行所述指令,以:
通过执行输入特征图的第一区域与所述权重之间的运算来生成第一输出值;
使所述第一输出值位于第一部分输出特征图中的基于所述卷积核中的权重的相应位置的位置处;
通过执行所述输入特征图的第二区域与所述权重之间的运算来生成第二输出值;以及
使所述第二输出值位于第二部分输出特征图中的基于所述卷积核中的权重的相应位置的位置处。
23.根据权利要求22所述的神经网络装置,其中,所述处理器还被配置为:通过执行所述权重与不同于所述第一区域的所述第二区域中的一部分之间的运算来生成所述第二输出值。
24.根据权利要求22所述的神经网络装置,其中,所述处理器还被配置为:响应于所述权重中的权重为零,跳过所述输入特征图的所述第一区域或所述第二区域与所述权重之间的运算。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2018-0171132 | 2018-12-27 | ||
KR1020180171132A KR20200081044A (ko) | 2018-12-27 | 2018-12-27 | 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111382859A true CN111382859A (zh) | 2020-07-07 |
Family
ID=68887279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910653551.0A Pending CN111382859A (zh) | 2018-12-27 | 2019-07-18 | 用于处理神经网络中的卷积运算的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11769037B2 (zh) |
EP (1) | EP3674987A1 (zh) |
JP (1) | JP7475855B2 (zh) |
KR (1) | KR20200081044A (zh) |
CN (1) | CN111382859A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111860778A (zh) * | 2020-07-08 | 2020-10-30 | 北京灵汐科技有限公司 | 一种全加卷积方法和装置 |
CN111882050A (zh) * | 2020-07-20 | 2020-11-03 | 复旦大学 | 基于fpga的用于提高bcpnn速度的设计方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102178932B1 (ko) * | 2018-12-19 | 2020-11-18 | 고려대학교 산학협력단 | 출력 특징 맵의 0에 대한 연산을 스킵할 수 있는 합성곱 신경망의 연산 장치 및 그 동작 방법 |
KR20200081044A (ko) * | 2018-12-27 | 2020-07-07 | 삼성전자주식회사 | 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치 |
CN111814972B (zh) * | 2020-07-08 | 2024-02-02 | 上海雪湖科技有限公司 | 一种基于fpga的神经网络卷积运算加速方法 |
CN112200295B (zh) * | 2020-07-31 | 2023-07-18 | 星宸科技股份有限公司 | 稀疏化卷积神经网络的排序方法、运算方法、装置及设备 |
KR20220090104A (ko) | 2020-12-22 | 2022-06-29 | 삼성전자주식회사 | 컨벌루션 연산을 위한 데이터 전송 방법, 페처 및 컨벌루션 연산 장치 |
US11762946B1 (en) * | 2022-09-23 | 2023-09-19 | Recogni Inc. | Systems for using shifter circuit and 3×3 convolver units to emulate functionality of larger sized convolver units |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160358069A1 (en) | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
US10460230B2 (en) | 2015-06-04 | 2019-10-29 | Samsung Electronics Co., Ltd. | Reducing computations in a neural network |
CN108603922A (zh) * | 2015-11-29 | 2018-09-28 | 阿特瑞斯公司 | 自动心脏体积分割 |
US20180046898A1 (en) | 2016-08-11 | 2018-02-15 | Vivante Corporation | Zero Coefficient Skipping Convolution Neural Network Engine |
KR102631381B1 (ko) | 2016-11-07 | 2024-01-31 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
KR20180060149A (ko) | 2016-11-28 | 2018-06-07 | 삼성전자주식회사 | 컨볼루션 처리 장치 및 방법 |
KR102642853B1 (ko) | 2017-01-05 | 2024-03-05 | 한국전자통신연구원 | 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법 |
KR102415508B1 (ko) | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
US10176551B2 (en) | 2017-04-27 | 2019-01-08 | Apple Inc. | Configurable convolution engine for interleaved channel data |
EP3401840A1 (en) * | 2017-05-12 | 2018-11-14 | Frobas GmbH | Compressed data streams in object recognition |
EP3657399A1 (en) * | 2017-05-23 | 2020-05-27 | Shanghai Cambricon Information Technology Co., Ltd | Weight pruning and quantization method for a neural network and accelerating device therefor |
US10572963B1 (en) * | 2017-07-14 | 2020-02-25 | Synapse Technology Corporation | Detection of items |
CN108228696B (zh) * | 2017-08-31 | 2021-03-23 | 深圳市商汤科技有限公司 | 人脸图像检索方法和系统、拍摄装置、计算机存储介质 |
US10628705B2 (en) * | 2018-03-29 | 2020-04-21 | Qualcomm Incorporated | Combining convolution and deconvolution for object detection |
US10853694B2 (en) * | 2018-12-04 | 2020-12-01 | Apical Ltd. | Processing input data in a convolutional neural network |
KR20200081044A (ko) * | 2018-12-27 | 2020-07-07 | 삼성전자주식회사 | 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치 |
-
2018
- 2018-12-27 KR KR1020180171132A patent/KR20200081044A/ko active Search and Examination
-
2019
- 2019-07-18 CN CN201910653551.0A patent/CN111382859A/zh active Pending
- 2019-09-03 US US16/558,493 patent/US11769037B2/en active Active
- 2019-12-12 EP EP19215554.7A patent/EP3674987A1/en active Pending
- 2019-12-24 JP JP2019232816A patent/JP7475855B2/ja active Active
-
2023
- 2023-08-22 US US18/453,615 patent/US20230394277A1/en active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111860778A (zh) * | 2020-07-08 | 2020-10-30 | 北京灵汐科技有限公司 | 一种全加卷积方法和装置 |
CN111882050A (zh) * | 2020-07-20 | 2020-11-03 | 复旦大学 | 基于fpga的用于提高bcpnn速度的设计方法 |
CN111882050B (zh) * | 2020-07-20 | 2024-02-06 | 复旦大学 | 基于fpga的用于提高bcpnn速度的设计方法 |
Also Published As
Publication number | Publication date |
---|---|
US20230394277A1 (en) | 2023-12-07 |
KR20200081044A (ko) | 2020-07-07 |
JP2020107338A (ja) | 2020-07-09 |
US11769037B2 (en) | 2023-09-26 |
US20200210806A1 (en) | 2020-07-02 |
JP7475855B2 (ja) | 2024-04-30 |
EP3674987A1 (en) | 2020-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111382859A (zh) | 用于处理神经网络中的卷积运算的方法和装置 | |
CN109871936B (zh) | 用于处理神经网络中的卷积运算的方法和装置 | |
US11436014B2 (en) | Deep vision processor | |
JP6961011B2 (ja) | データ管理のためのシステム及び方法 | |
US20210248413A1 (en) | Method and apparatus with dilated convolution | |
EP3664093A1 (en) | Semiconductor memory device employing processing in memory (pim) and method of operating the semiconductor memory device | |
US11675507B2 (en) | Method and apparatus for allocating memory space for driving neural network | |
US11977928B2 (en) | Apparatus and method for performing a recognition operation in a neural network | |
US20190228307A1 (en) | Method and apparatus with data processing | |
US11836971B2 (en) | Method and device with convolution neural network processing | |
EP3800585A1 (en) | Method and apparatus with data processing | |
US20210110270A1 (en) | Method and apparatus with neural network data quantizing | |
CN111133457B (zh) | 电子设备及其控制方法 | |
CN114386590A (zh) | 用于压缩人工神经网络的方法和设备 | |
US12014505B2 (en) | Method and apparatus with convolution neural network processing using shared operand | |
CN114595811A (zh) | 用于执行深度学习操作的方法和设备 | |
US12026617B2 (en) | Neural network method and apparatus | |
US20230102335A1 (en) | Method and apparatus with dynamic convolution | |
KR20230059726A (ko) | 심층 신경망 연산을 수행하는 방법 및 전자 장치 | |
KR20230059718A (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 |