CN112561045A - 用于图像识别的神经网络的处理器实现的方法和设备 - Google Patents
用于图像识别的神经网络的处理器实现的方法和设备 Download PDFInfo
- Publication number
- CN112561045A CN112561045A CN202010263703.9A CN202010263703A CN112561045A CN 112561045 A CN112561045 A CN 112561045A CN 202010263703 A CN202010263703 A CN 202010263703A CN 112561045 A CN112561045 A CN 112561045A
- Authority
- CN
- China
- Prior art keywords
- pooling
- sub
- result
- feature map
- window
- 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
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 60
- 238000011176 pooling Methods 0.000 claims abstract description 589
- 238000012805 post-processing Methods 0.000 claims abstract description 27
- 230000015654 memory Effects 0.000 claims description 97
- 239000000872 buffer Substances 0.000 claims description 75
- 238000012545 processing Methods 0.000 claims description 50
- 230000001537 neural effect Effects 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 11
- 238000000354 decomposition reaction Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000003068 static 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
公开用于图像识别的神经网络的处理器实现的方法和设备。所述神经网络的处理器实现的方法包括:通过利用经由分解原始池化核获得的多个子池化核,对包括在输入特征图中的当前窗口中的输入像素执行池化操作来获得分别与所述多个子池化核对应的中间池化结果;通过对中间池化结果进行后处理来获得与当前窗口对应的最终池化结果;以及基于最终池化结果确定输出特征图的输出像素值,其中,根据原始池化核在输入特征图中根据光栅扫描顺序滑动来确定当前窗口。
Description
本申请要求于2019年9月26日在韩国知识产权局提交的第10-2019-0119090号韩国专利申请的权益,所述韩国专利申请的公开出于所有目的通过引用全部包含于此。
技术领域
提供一种具有神经网络池化处理的神经处理设备和方法。
背景技术
神经网络可以是通过参考设置的机器学习而被实现为例如各种类型的电子***的计算***,设置的机器学习分析输入数据并提取有效信息。
发明内容
提供本发明内容以便以简化的形式介绍将在下面的具体实施方式中进一步描述的构思的选择。本发明内容不意图确定要求保护的主题的关键特征或必要特征,也不意图用于帮助确定要求保护的主题的范围。
在一个总体方面,一种神经网络的处理器实现的方法包括:通过使用经由分解原始池化核获得的多个子池化核,对包括在输入特征图中的当前窗口中的输入像素执行池化操作,来获得分别与所述多个子池化核对应的中间池化结果;通过对中间池化结果进行后处理来获得与当前窗口对应的最终池化结果;以及基于最终池化结果确定输出特征图的输出像素值,其中,根据原始池化核在输入特征图中根据光栅扫描顺序滑动来确定当前窗口。
所述多个子池化核可以是分别包括原始池化核的行元素的多个1维(1D)核,并且通过从原始池化核分解获得的所述多个子池化核的总数量可与原始池化核的高度对应。
通过所述多个子池化核之中的子池化核获得的关于当前窗口的中间池化结果可与输入特征图中的至少一个其他窗口共享。
响应于针对当前窗口获得所有的中间池化结果,可获得最终池化结果。
与同一窗口对应的中间池化结果可分别存储在共享行缓冲器中的包括同一列且不同行的存储器地址的存储器单元中。
所述方法还可包括:根据输入特征图的光栅扫描顺序,接收包括在当前窗口中的当前输入像素的值,其中,获得中间池化结果的步骤包括:基于接收的当前输入像素的值来更新存储在至少一个存储器单元中的受接收的当前输入像素的值影响的至少一个部分池化结果。
获得与当前窗口对应的最终池化结果的步骤可包括:从共享行缓冲器的存储器单元读取针对当前窗口的中间池化结果;以及通过根据预设的池化类型对读取的中间池化结果执行后处理操作,获得与输出像素值对应的最终池化结果。
共享行缓冲器可以以循环的方式,将针对输入特征图中的其他窗口获得的中间池化结果存储在与原始池化核的高度对应的总行数的存储器行中。
响应于存储在共享行缓冲器的一个存储器单元中的中间池化结果不再被共享,可将存储在所述一个存储器单元中的中间池化结果重新用于通过另一子池化核获得的将被存储的后续中间池化结果,以获得与另一窗口对应的最终池化结果。
所述方法还可包括:获得神经网络的超参数,超参数包括与原始池化核的大小、步长大小和池化类型中的任何一个或任何两个或更多个的任何组合有关的信息,其中,可基于获得的超参数对存储获得的中间池化结果的共享行缓冲器进行寻址。
池化操作可以是基于最大池化的池化类型的操作,其中,每个中间池化结果是映射到对应的子池化核的输入像素的值之中的最大值,并且最终池化结果是中间池化结果之中的最大值,或者池化操作可以是基于平均池化的池化类型的操作,其中,每个中间池化结果是映射到对应的子池化核的输入像素的值的和,并且最终池化结果是通过将中间池化结果的和除以原始池化核的大小而获得的值。
在另一总体方面,一种非暂时性计算机可读存储介质存储指令,所述指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行上面所述的方法。
在另一总体方面,一种神经处理设备包括:一个或多个处理器,被配置为:通过利用经由分解原始池化核获得的多个子池化核,对包括在输入特征图中的当前窗口中的输入像素执行池化操作,获得分别与所述多个子池化核对应的中间池化结果,通过对中间池化结果进行后处理来获得与当前窗口对应的最终池化结果,以及基于最终池化结果确定输出特征图的输出像素值,其中,根据原始池化核在输入特征图中根据光栅扫描顺序滑动来确定当前窗口。
所述神经处理设备还可包括:存储器,被配置为存储指令,所述指令在由所述一个或多个处理器执行时,配置所述一个或多个处理器执行获得中间池化结果的步骤、获得最终池化结果的步骤以及确定输出像素值的步骤。
所述多个子池化核可以是分别包括原始池化核的行元素的多个1维(1D)核,并且通过从原始池化核分解获得的所述多个子池化核的总数量可与原始池化核的高度对应。
通过所述多个子池化核之中的子池化核获得的关于当前窗口的中间池化结果与输入特征图中的至少一个其他窗口共享。
响应于针对当前窗口获得所有的中间池化结果,可获得最终池化结果。
与同一窗口对应的中间池化结果可分别存储在包括在存储器中的共享行缓冲器中的包括同一列且不同行的存储器地址的存储器单元中。
所述一个或多个处理器还可被配置为:根据输入特征图的光栅扫描顺序,接收包括在当前窗口中的当前输入像素的值;以及基于接收的当前输入像素的值来更新存储在至少一个存储器单元中的受接收的当前输入像素的值影响的至少一个部分池化结果。
所述一个或多个处理器还可被配置为:从共享行缓冲器的存储器单元读取针对当前窗口的中间池化结果,并且通过根据预设的池化类型对读取的中间池化结果执行后处理操作,获得与输出像素值对应的最终池化结果。
共享行缓冲器可以以循环的方式,将针对输入特征图中的其他窗口获得的中间池化结果存储在与原始池化核的高度对应的总行数的存储器行中。
响应于存储在共享行缓冲器的一个存储器单元中的中间池化结果不再被共享,将存储在所述一个存储器单元中的中间池化结果重新用于通过另一子池化核获得的将被存储的后续中间池化结果,以获得与另一窗口对应的最终池化结果。
所述一个或多个处理器还可被配置为:获得神经网络的超参数,超参数包括与原始池化核的大小、步长大小和池化类型中的任何一个或任何两个或更多个的任何组合有关的信息,其中,可基于超参数对包括在存储器中的用于存储获得的中间池化结果的共享行缓冲器进行寻址。
池化操作可以是基于最大池化的池化类型的操作,其中,每个中间池化结果是映射到对应的子池化核的输入像素的值之中的最大值,并且最终池化结果是中间池化结果之中的最大值,或者池化操作可以是基于平均池化的池化类型的操作,其中,每个中间池化结果是映射到对应的子池化核的输入像素的值的和,并且最终池化结果是通过将中间池化结果的和除以原始池化核的大小而获得的值。
在另一总体方面,一种神经网络的处理器实现的方法包括:利用通过分解原始池化核获得的多个子池化核,从包括在输入特征图中的待池化的当前窗口中的输入像素获得分别与所述多个子池化核对应的中间池化结果;响应于针对当前窗口的中间池化完成,从中间池化结果获得与当前窗口对应的最终池化结果,随着原始池化核在输入特征图中滑动来确定当前窗口;以及基于最终池化结果,确定输出特征图的输出像素值。
原始池化核可根据光栅扫描顺序滑动。
所述多个子池化核可以是分别包括原始池化核的行元素的多个1维(1D)核,并且通过从原始池化核分解获得的所述多个子池化核的总数量可与原始池化核的高度对应。
关于当前窗口的所述多个子池化核中的至少一个子池化核可被共享为关于输入特征图中的至少一个其他窗口的子池化核。
从以下具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1是用于描述根据示例的神经网络的架构的示图。
图2是用于描述在神经网络的池化层中执行的池化操作的概念的示图。
图3是用于描述用于执行池化操作的不同池化类型的示图。
图4是根据示例的用于处理神经网络的池化的神经处理设备的硬件配置的框图。
图5是用于描述根据示例的从执行池化操作的池化核分解的子池化核的示图。
图6是用于描述根据示例的通过使用从原始池化核分解的子池化核来执行最大池化的方法的示图。
图7是用于描述根据示例的通过使用从原始池化核分解的子池化核来执行平均池化的方法的示图。
图8是用于描述根据示例的由处理器和存储器的共享行缓冲器执行的使用子池化核来处理池化操作的方法的示图。
图9是用于描述根据示例的更新池化数据并从池化数据生成输出特征图的处理的示图。
图10是用于描述根据示例的神经网络的池化算法的流程图。
图11是用于描述根据示例的通过接收当前输入像素来更新共享行缓冲器上的池化数据的处理的示图。
图12是用于描述根据示例的通过对存储在共享行缓冲器中的中间池化结果进行后处理来获得最终池化结果的处理的示图。
图13是根据示例的由神经处理设备执行的处理神经网络的池化的方法的流程图。
贯穿附图和具体实施方式,相同的参考标号表示相同的元件。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供以下具体实施方式以帮助读者获得对在此描述的方法、设备和/或***的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或***的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅仅是示例,并且不限于在此阐述的操作顺序,而是除了必须以特定顺序发生的操作之外,操作顺序可如在理解本申请的公开之后清楚地那样改变。此外,为了更加清楚和简洁,可省略对本领域中已知的特征的描述。
在此描述的特征可以以不同的形式来实现,并且不应被解释为限于在此描述的示例。相反,已提供在此描述的示例仅仅示出实现在此描述的方法、设备和/或***的许多可能的方式中的一些方式,所述许多可能的方式在理解本申请的公开之后将是清楚的。
如在此使用的,术语“和/或”包括相关联所列项中的任意一个和任意两个或更多个的任意组合。
尽管可在此使用诸如“第一”、“第二”和“第三”的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不应受这些术语限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
在此使用的术语仅用于描述各种示例,并不应用于限制公开。除非上下文另外清楚地指示,否则单数形式也意图包括复数形式。术语“包含”、“包括”和“具有”说明存在阐述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。
如在理解本申请的公开之后将清楚的,在此描述的示例的特征可以以各种方式进行组合。此外,尽管在此描述的示例具有各种配置,但是如在理解本申请的公开之后将清楚的,其他配置是可行的。
在此使用的术语应被解释为具有对于本领域普通技术人员在理解本公开之后清楚的含义,但是可根据本领域普通技术人员的意图、先例或在理解本公开之后新技术的出现而具有不同的含义。此外,一些术语可由申请人任意选择,并且在这种情况下,将在具体实施方式中详细描述选择的术语的含义。因此,在此使用的术语必须基于术语的含义连同贯穿说明书的描述来定义。
在此,注意的是,关于示例或实施例使用术语“可”(例如,关于示例或实施例可包括或实施什么)表示存在包含或实现这样的特征的至少一个示例或实施例,而所有示例和实施例不限于此。
在下文中,将参照附图详细描述实施例。然而,实施例可以以许多不同的形式来实现,并且不限于在此描述的那些。
实现神经网络的设备可使用关于到神经网络的复杂输入数据的大量计算。随着神经网络的数据增加并且构成神经网络的架构的连接性变得复杂,会发生设备的计算量和存储器访问频率的过度增加,导致关于小型化和商业化问题的低效性能。
图1是用于描述根据示例的神经网络的架构的示图。
参照图1的示例,作为非限制性示例,神经网络1可以是用于图像识别的深度神经网络(DNN)或n层神经网络的架构。作为非限制性示例,DNN或n层神经网络可对应于卷积神经网络(CNN)、循环神经网络(RNN)、深度信念网络或受限玻尔兹曼机及它们的任何组合。例如,神经网络1可被实现为CNN,但是神经网络1的类型不限于CNN,而是可替代地还包括另外类型的神经网络。
神经网络1可被实现为具有多个层的计算架构,所述多个层包括输入层、隐藏层或中间层以及输出层,其中,输入图像被提供给输入层,隐藏层或中间层生成特征图。神经网络1中的输入图像可与被称为权重核的滤波器进行卷积运算。作为卷积运算的结果,输出特征图可被输出。此时生成的输出特征图可用作下一层的输入特征图,在下一层中,生成的输出特征图可再次与另一核进行另一卷积运算,从而进一步的输出特征图被输出。作为迭代地执行这样的卷积运算的结果(其中,随后的卷积运算的输入取决于前一卷积运算的输出),关于输入图像的特征的识别结果可通过神经网络1最终被输出。
例如,当24×24像素大小的图像被输入到图1的示例的神经网络1时,输入图像可通过第一隐藏层经由与第一核的卷积运算被输出为四个通道的特征图,每个通道具有20×20像素大小(简称为4@20×20)。随后,生成的特征图的相应大小可通过针对每个随后的卷积运算的隐藏层和对应核的迭代卷积运算而逐渐减小(例如,可将4@20×20顺序地减小为4@10×10(即,四个通道的特征图,每个通道具有10×10像素大小)、8@8×8(即,八个通道的特征图,每个通道具有8×8像素大小)、8@4×4(即,八个通道的特征图,每个通道具有4×4像素大小),并且1×1像素大小的20个通道特征图(即,20@1×1)由最后的卷积运算的隐藏层输出。在这样的示例中,如图1中所示,神经网络1可通过迭代地执行卷积运算连同一些层中的池化操作或子采样操作,对来自输入图像的可表示整个输入图像的鲁棒特征进行滤波和输出,并且可通过最终输出特征来得到输入图像的识别结果。
此外,执行池化操作的池化层可被布置为出现在卷积层之后。池化层的池化操作可以是用于通过减小输入到下一卷积层的前一卷积层的输出特征图的大小(例如,行至列)来减小下一卷积层的计算开销的处理。
在随后的示例中,将进一步详细描述在池化层中对输入特征图有效地执行池化操作的方法。
图2是用于描述在神经网络的池化层中执行的池化操作的概念的示图。
参照图2的示例,输入特征图21可具有10×9大小(其中,大小被提供为行至列),并且池化核22也可被称为池化窗口。对输入特征图21执行池化操作的池化核22可具有3×3大小。此外,指示池化核22在输入特征图21上滑动的程度的步长可以是1。然而,池化操作的超参数(诸如,池化核22的大小、步长或池化类型)不限于参照图2描述的那些,并且可在其他示例中变化。
池化核22可在相对于输入特征图21的10×9像素以3×3大小的窗口(也被称为像素组、块或扫描窗口)为单位滑动的同时执行池化操作。例如,滑动顺序可取决于输入特征图21的光栅扫描顺序(raster scan order)。输入特征图21的光栅扫描顺序可表示这样的顺序:从输入特征图21的第一行第一列的像素开始顺序地处理第一行的像素,随后处理从第二行至第十行的像素,最后处理第十行第九列的像素。
当输入特征图21中的与映射到当前顺序的窗口的池化核22对应的像素根据光栅扫描顺序被全部扫描时,池化核22可对像素执行池化操作。例如,当像素根据光栅扫描顺序被全部扫描时,可通过使用包括在窗口210中的像素的值来执行通过映射到输入特征图21中的窗口210的池化核22的池化操作。此外,当包括在窗口220和窗口230中的每个中的所有像素都根据光栅扫描顺序被扫描时,可执行关于窗口220和窗口230中的每个的池化操作。
在图2的示例中,为了便于描述,仅示出了一些窗口210、220和230。可基于池化核22的大小和步长来执行池化核22关于示例窗口210至230和剩余窗口的滑动。
另外,当以这样的方式通过池化核22对输入特征图21执行池化操作时,可获得池化结果,其中,池化结果可分别对应于输出特征图的输出像素。
图3是用于描述用于执行池化操作的不同池化类型的示图。
参照图3的示例,输入特征图31可具有4×4大小,池化核32可具有2×2大小。在这样的示例中,为了便于描述池化类型,步长可以是2。然而,这些值仅是非限制性示例。
针对映射到池化核32的窗口的像素的池化操作可以是基于最大池化的池化类型或平均池化的池化类型的操作。然而,池化操作不限于这些类型的池化,并且在其他示例中,可根据除了参照图3的示例所描述的池化类型以外的池化类型来执行池化操作。
首先,将进一步详细描述最大池化。最大池化指示可通过使用输入特征图31的映射到池化核32的像素的最大值作为相应的池化操作的结果来执行池化操作。
作为具体示例,当池化核32被映射到输入特征图31的包括在2×2左上窗口中的四个像素时,池化核32可获得作为包括在左上窗口中的像素值“12”、“20”、“8”和“12”之中的最大值的值“20”作为与左上窗口对应的池化结果。如图3的第一示例中所示,还使用池化核32对输入特征图31中的2×2右上窗口、2×2左下窗口和2×2右下窗口执行最大池化,2×2右上窗口、2×2左下窗口和2×2右下窗口的各自的池化结果将是作为各自的窗口中的最大值的“30”、“112”和“37”。输入特征图31的最大池化的池化结果“20”、“30”、“112”和“37”可对应于输出特征图310的输出像素的像素值,输出特征图310然后可被输入到例如下一卷积层。
接下来,将进一步详细描述平均池化。平均池化指示可通过使用输入特征图31的映射到池化核32的像素的相应平均值来执行池化操作。
作为具体示例,当池化核32被映射到输入特征图31的包括在2×2左上窗口中的四个像素时,池化核32获得作为包括在左上窗口中的像素值“12”、“20”、“8”和“12”的平均值的“13”作为与左上窗口对应的池化结果。这里,使用的平均值是平均值。如图3的第二示例中所示,还对输入特征图31中的2×2右上窗口、2×2左下窗口和2×2右下窗口执行平均池化,2×2右上窗口、2×2左下窗口和2×2右下窗口的各自的池化结果将是作为使用池化核32的各自的窗口的平均值的“9”、“79”和“19.5”。输入特征图31的平均池化的池化结果“13”、“9”、“79”和“19.5”可对应于输出特征图320的输出像素的像素值,输出特征图320然后可被输入到例如下一卷积层。
换句话说,即使通过相同的池化核32执行池化操作时,生成的输出特征图也可基于池化操作中使用的池化类型而不同。以上更详细地讨论了最大池化类型和平均池化类型的池化类型的非限制性示例,但是在其他示例中其他池化类型是可用的。池化类型可以是如上所述的超参数,并且可关于神经网络被预先定义。
图4是根据示例的处理神经网络的池化的神经处理设备100的硬件配置的框图。
参照图4的示例,神经处理设备100可包括处理器110和存储器120。在图4的示例中示出了与当前示例有关的神经处理设备100的组件,注意的是,示出的神经处理设备100表示图4的各种示例中的替代和/或包括图4的各种示例中的添加。因此,神经处理设备100还可包括除了图4的示例中示出的组件之外的组件。
神经处理设备100可对应于计算装置。例如,作为非限制性示例,神经处理设备100可对应于个人计算机(PC)、服务器或移动装置,或者可对应于用于在这样的装置中执行神经网络操作的加速器。另外,作为非限制性示例,神经处理设备100可表示包括在自主车辆、机器人、智能电话、平板装置、增强现实(AR)装置或者物联网(IoT)装置中的设备(例如,该设备可使用神经网络执行语音识别、图像识别和类似任务)。然而,神经处理设备100不限于这些非限制性示例,并且可对应于各种类型的装置或在这样的装置中执行神经网络操作的处理设备。
处理器110可以是执行用于控制神经处理设备100的操作的整体控制功能的硬件组件。例如,处理器110通常可通过处理或执行存储在神经处理设备100中的存储器120中的指令和/或数据来控制神经处理设备100。在示例中,处理器110可被实现为包括在神经处理设备100中的中央处理器(CPU)、图形处理器(GPU)、应用处理器(AP)、神经处理器(NPU)或张量处理器(TPU),但不限于这些列举的非限制性示例,并且处理器110可被实现为其他类型的处理器,或者被实现为多个处理器或处理器的组合。
存储器120可以是存储在此的各种接收的网络示例的超参数(例如,包括训练的参数)以及由处理器110处理或将由处理器110处理的各种类型的神经网络数据的硬件。例如,如以上进一步详细讨论的那样,存储器120可存储在神经网络中处理的输入/输出特征图数据、卷积数据和池化数据。此外,存储器120可存储将由处理器110驱动的各种应用(例如,卷积处理应用、池化处理应用和其他类似应用)。
存储器120可对应于存储器装置,诸如,随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动器(HDD)、固态驱动器(SSD)、紧凑型闪存(CF)卡、安全数字(SD)卡、微型SD卡、迷你SD卡、极限数字(xD)卡或记忆棒,但是存储器120的类型不限于这些非限制性示例,并且在其他示例中存储器120可包括其他类型的存储器装置。
如图4的示例中所示,存储器120可包括作为通过处理器110进行神经网络处理的片上存储器的共享行缓冲器125。共享行缓冲器125可被实现为用于针对处理器110的高速访问的动态RAM(DRAM)或静态RAM(SRAM),但是共享行缓冲器125不限于这些非限制性示例,并且在其他示例中可包括其他类型的存储器技术。在这个示例中,术语“共享行缓冲器”可进行各种修改,并且由另一术语表示,所述另一术语也表示存储器120的用于缓冲的类似部分。此外,除了共享行缓冲器125之外,存储器120可附加地包括用于出于其他目的进行缓冲的其他缓冲器。
处理器110可被实现为具有用于处理用于执行神经网络的卷积和池化的各种操作的至少一个处理器核。具体地讲,如贯穿本公开进一步详细描述的那样,处理器110可通过在神经网络的层中执行输入特征图与对应的核权重之间的相应卷积运算来生成输出特征图,神经网络的层中的每个层可通过对生成的输出特征图执行池化操作来生成用于下一卷积层的特征图。另外,处理器110可执行用于实现或执行神经网络的各种操作。
当执行池化操作时,处理器110可从存储器120的共享行缓冲器125读取池化数据(诸如,输入特征图的输入像素值或处理的池化结果),可更新已经存储在共享行缓冲器125中的池化数据,或者可将池化数据写入到共享行缓冲器125。换句话说,共享行缓冲器125可作为用于临时存储处理器110的池化数据的存储器进行操作。
图5是用于描述根据示例的使用从池化核分解的子池化核执行的池化操作的示图。
参照图5的示例,原始池化核50可具有3×3大小,注意的是,原始池化核50的大小不限于3×3大小,并且可从这样的大小变化。即使在使用与3×3不同大小的原始池化核时,也可类似地应用如下所述的分解方法。
在此,在核被分解之前,核将由术语“原始”来表示,例如“原始”池化核50。
处理器110可将原始池化核50分解为多个子池化核510至530,以执行池化操作。子池化核510至530可以是分别包括原始池化核50的行元素的一维(1D)核。在示例中,可通过根据上面描述的光栅扫描顺序分解原始池化核50的行元素来获得子池化核510至530,但是当以与上面描述的光栅扫描顺序不同的光栅扫描顺序扫描输入特征图中的像素时,可通过在另一方向上分解原始池化核50的元素来获得子池化核。例如,可通过在列方向上分解原始池化核50的元素来获得子池化核。换句话说,在不同的示例中,分解方向可基于光栅扫描顺序而变化。
通过分解原始池化核50获得的子池化核510至530的数量可对应于原始池化核50的高度。例如,因为图5的原始池化核50的高度是3,所以子池化核510至530的数量也是3。
子池化核510的元素可对应于原始池化核50的第一行的元素,子池化核520的元素可对应于原始池化核50的第二行的元素,并且子池化核530的元素可对应于原始池化核50的第三行的元素。
处理器110可通过对子池化核510至530单独执行池化操作来单独获得中间池化结果。然后,处理器110可合并中间池化结果,以输出最终池化结果。换句话说,根据示例,可以以子池化核为单位而不是以原始池化核为单位来执行池化操作。在示例中,术语“中间池化结果”表示通过子池化核获得的部分池化数据,术语“最终池化结果”表示与从多个中间池化结果获得的窗口对应的最终池化数据。
图6是用于描述根据示例的通过使用从原始池化核610分解的子池化核611至613来执行最大池化(MaxPool)的方法的示图。
参照图6的示例,可通过使用从3×3的原始池化核610分解的三个1×3的子池化核611至613来对4×4大小的输入特征图60执行MaxPool操作。在图6的示例的池化操作中,步长可以是1。
处理器110可通过使用从原始池化核610分解的子池化核611至613,经由对包括在输入特征图60中的将被池化的当前窗口中的输入像素执行池化操作,来获得分别与子池化核611至613对应的中间池化结果65。
当针对当前窗口获得所有中间池化结果65时,处理器110可通过对中间池化结果65进行后处理来获得与当前窗口对应的最终池化结果。然后,处理器110可基于最终池化结果确定输出特征图67的输出像素值。
在如图6的示例中所示的具体示例中,在当前窗口是输入特征图60的第一窗口时,子池化核611可被映射到包括在第一窗口中的第一行的输入像素。处理器110可确定从第一行的输入像素的值“9”、“5”和“4”之中选择的最大值“9”,并且可获得最大值“9”作为与子池化核611对应的中间池化结果。此外,处理器110可确定第二行的输入像素的值“1”、“6”和“8”之中的最大值“8”以及第三行的输入像素的值“2”、“3”和“7”之中的最大值“7”,并获得最大值“8”和“7”作为与子池化核612和613对应的中间池化结果。换句话说,作为映射到第一窗口的通过子池化核611至613获得的中间池化结果620可以是(“9”、“8”、“7”)的元素。
当获得了作为示例第一窗口的当前窗口的所有中间池化结果620时,处理器110可通过对中间池化结果620进行后处理来获得与作为第一窗口的当前窗口对应的最终池化结果。因为参照图6的示例描述的池化类型是MaxPool,所以处理器110可通过从中间池化结果620确定最大值“9”(例如,通过实现“Max(9,8,7)”)来执行后处理。这样,处理器110因此可基于最终池化结果“9”来确定与当前窗口或第一窗口对应的输出特征图67的输出像素值“9”。
然后,在当前窗口根据光栅扫描顺序对应于输入特征图60的第三窗口时,子池化核611至613可分别映射到包括在第三窗口中的第一行至第三行的输入像素。处理器110可确定关于行的最大值(“8”、“7”和“1”),并且可获得与子池化核611至613对应的中间池化结果630的元素(“8”、“7”和“1”)。
当获得了作为第三窗口的当前窗口的所有中间池化结果630时,处理器110可执行从中间池化结果630确定最大值“8”(作为“max(8,7,1)”被选择)作为最终池化结果的后处理,并且可基于最终池化结果“8”来确定与作为第三窗口的当前窗口对应的输出特征图67的输出像素值“8”。
在图6的示例中,可对输入特征图60的一些窗口(诸如,第一窗口和第三窗口)执行池化操作,但处理器110可以以类似方式对剩余窗口执行池化操作,并且可最终获得输出特征图67的输出像素的值。
换句话说,根据示例的池化操作,当3×3的原始池化核包括例如被指定为(a,b,c,d,e,f,g,h,i)的九个元素时,处理器110可通过使用下面的等式1来执行池化操作。
等式1:
Pool(a,b,c,d,e,f,g,h,i)=Pool(Pool(a,b,c),Pool(d,e,f),Pool(g,h,i))
换句话说,处理器110可针对每个子池化核(即,包括元素(a,b,c)的子池化核、包括元素(d,e,f)的子池化核和包括元素(g,h,i)的子池化核)执行中间池化操作,并且可对中间池化结果执行后处理池化操作,从而获得最终池化结果。根据参照图6的示例描述的MaxPool的示例,池化运算符可以是max运算符。
同时,在当前窗口是输入特征图60的第一窗口时的子池化核612和613以及在当前窗口是输入特征图60的第三窗口时的子池化核611和612可基于使用输入特征图60的相同输入像素来执行池化操作。因此,通过映射到第一窗口的子池化核612和613获得的中间池化结果可被重新用作映射到第三窗口的子池化核611和612的中间池化结果,这是因为它们使用一些相同的信息以类似的方式执行它们的计算。在下面对应的附图中进一步详细描述对在输入特征图的不同窗口中重叠的输入像素执行的池化操作。
即使在关于下面的实施例的描述中没有单独描述池化类型,下面的示例也可通过被应用于MaxPool的池化类型、平均池化(AvgPool)的池化类型以及在其他示例中可用的其他可选的池化类型来实现。
图7是用于描述根据示例的通过使用从原始池化核710分解的子池化核711至713来执行AvgPool的方法的示图。
参照图7的示例,可通过从3×3的原始池化核710分解的三个1×3的子池化核711至713对4×4大小的输入特征图70执行AvgPool操作。在图7的示例的池化操作中,步长可以是1。
如图7的示例中所示的通过从原始池化核710分解的子池化核711至713关于输入特征图70执行的池化操作可与参照图6的示例描述的池化操作类似。然而,图7的示例的AvgPool池化操作与图6的示例的MaxPool池化操作不同之处在于获得中间池化结果的方法和获得最终池化结果的方法。
具体地讲,根据图7的示例,在当前窗口是输入特征图70的第一窗口时,处理器110可将包括在第一窗口中的映射到子池化核711的第一行的输入像素值的值(“1”、“2”和“0”)相加,并可获得它们的和“3”或(1+2+0),作为与子池化核711对应的中间池化结果。换句话说,根据AvgPool方法计算中间池化结果的方法与根据MaxPool方法计算中间池化结果的方法不同。
类似地,处理器110可分别获得映射到子池化核712的第二行的输入像素的值(“3”、“2”和“1”)的和“6”或(3+2+1),以及映射到子池化核713的第三行的输入像素的值(“0”、“0”和“0”)的和“0”或(0+0+0),作为与子池化核712和713对应的中间池化值。换句话说,通过映射到第一窗口的子池化核711至713获得的中间池化结果720是组(“3”、“6”和“0”)的元素。
当获得了作为第一窗口的当前窗口的所有中间池化结果720时,处理器110可通过对中间池化结果720进行后处理来获得与作为第一窗口的当前窗口对应的最终池化结果。因为参照图7的示例描述的池化类型是AvgPool,所以处理器110可将中间池化结果720(“3”、“6”和“0”)相加,并且可执行将和“9”或(3+6+0)除以原始池化核710的大小3×3或9的后处理。因此,处理器110可基于最终池化结果“1”或(9/9)确定与作为第一窗口的当前窗口对应的输出特征图77的输出像素值“1”。
类似地,在当前窗口是输入特征图70的第三窗口时,处理器110可对映射到子池化核711至713中的每个的输入像素执行中间池化操作,以获得中间池化结果730的元素(“6”、“0”和“3”)。
当作为第三窗口的当前窗口的中间池化结果730全部被获得时,处理器110可将中间池化结果730(“6”、“0”和“3”)相加,并且可执行将和“9”或(6+0+3)除以原始池化核710的大小3×3或9的后处理。因此,处理器110可基于最终池化结果“1”或(9/9)确定与作为第三窗口的当前窗口对应的输出特征图77的输出像素值“1”。
在图7的示例中,可对输入特征图70的包括第一窗口和第三窗口的一些窗口执行池化操作,但处理器110可以以类似方式对剩余窗口执行池化操作,并且可最终获得输出特征图77的输出像素的值。
换句话说,根据示例的池化操作,当3×3的原始池化核包括例如元素(a,b,c,d,e,f,g,h,i)时,处理器110可通过使用上面的等式1来执行池化操作。然而,与图6的示例不同,计算中间池化结果的池化运算符可以是求和/加法运算符,并且计算最终池化结果的池化运算符可以是平均运算符。
如在图6的示例中,在当前窗口为输入特征图70的第一窗口时的子池化核712和713以及在当前窗口为输入特征图70的第三窗口时的子池化核711和712可对输入特征图70的相同输入像素执行池化操作。因此,通过映射到第一窗口的子池化核712和713获得的中间池化结果可被重新用作映射到第三窗口的子池化核711和712的中间池化结果。如上所述,特定信息可以以类似的方式重复使用,从而避免冗余计算。下面在相应的附图中更详细地描述对输入特征图的不同窗口中重叠的输入像素执行的池化操作。
在图6和图7的示例中,为了便于描述,已经描述了4×4的输入特征图、3×3的原始池化核和步长1作为非限制性示例,但是在其他示例中,参照示例图6和图7描述的池化操作可以以相同的方式容易地应用于另外大小的输入特征图、另外大小的原始池化核和另外值的步长。
图8是用于描述根据示例的由处理器和存储器的共享行缓冲器执行的使用子池化核811至813处理池化操作的方法的示图。作为非限制性示例并且为了便于解释,下面,处理器、共享行缓冲器和存储器可对应于图4的处理器110、共享行缓冲器125和存储器120。
参照图8的示例,可将3×3的原始池化核810分解为1×3的子池化核811至813,并且可通过使用子池化核811至813对输入特征图820执行池化操作。然而,在示例中,原始池化核810和子池化核811至813的大小以及输入特征图820的大小不限于图8的示例中示出的非限制性示例,并且可变化和具有其他值。
示例处理器110可包括至少一个算术逻辑单元(ALU)。作为图8中的非限制性示例,处理器110包括ALU 110-1和ALU 110-2,ALU 110-1和ALU 110-2中的每个执行与池化操作有关的算术运算。为了便于描述,在图8的示例中讨论两个ALU 110-1和110-2,但处理器110中的ALU可以是相同的单个ALU及/或处理器110可包括三个或更多个ALU。
处理器110可根据输入特征图820的光栅扫描顺序接收包括在输入特征图820的当前窗口中的当前输入像素825的值。处理器110可根据当前输入像素825的值更新存储在共享行缓冲器125中的至少一个存储器单元中的至少一个部分池化结果,其中,部分池化结果受当前输入像素825的值影响。在这样的示例中,处理器110的ALU 110-1可执行用于更新部分池化结果的算术运算。
在这样的示例中,部分池化结果可以是用于获得映射到一个子池化核的所有输入像素的中间池化结果的中间值。例如,子池化核811可被映射到一个窗口中总共3个输入像素,并且仅当映射的3个输入像素的所有数据被接收时,3个输入像素的中间池化结果可被获得。然而,因为输入特征图820的输入像素可根据光栅扫描顺序被顺序地输入到处理器110,所以可能难以同时获得3个输入像素的中间池化结果。
因此,在MaxPool方法的情况下,当接收到映射到子池化核811的第一输入像素的值时,处理器110可将第一输入像素的值作为最大值存储在共享行缓冲器125的一个存储器单元中。当接收到第二输入像素的值时,处理器110可将已经存储的最大值(即,第一输入像素的值)与第二输入像素的值进行比较,并且可根据需要将存储器单元的数据更新为这些值之中的最大值。在这样的示例中,存储在存储器单元中的数据可对应于部分池化结果。最后,当接收到映射到子池化核811的最后的第三输入像素的值时,处理器110可将已经存储的最大值(即,第一输入像素的值和第二输入像素的值之中的最大值)与第三输入像素的值进行比较,并且最终将存储器单元的数据更新为所有三个输入像素之中的最大值。因为子池化核811可具有1×3大小,所以最终通过第三输入像素的值更新的存储器单元的数据可对应于与子池化核811对应的中间池化结果,这是因为每个输入像素可具有影响最大像素值的机会。
类似地,在AvgPool的情况下,处理器110通过将接收的输入像素的值与已经存储在共享行缓冲器125的存储器单元中的数据相加来更新部分池化结果。
换句话说,当执行池化操作时,处理器110可从存储器120的共享行缓冲器125读取池化数据,可通过使用ALU 110-1更新已经存储在共享行缓冲器125中的部分池化结果,并且可将部分池化结果写入到共享行缓冲器125。通过存储累积的部分池化结果,来自输入像素的信息能够被临时存储,从而避免在池化处理能够开始之前需要所有池化数据都可用。
处理器110的ALU 110-2可从共享行缓冲器125的存储器单元读取当前窗口的中间池化结果,并且可根据预设的池化类型对读取的中间池化结果执行后处理,以获得与输入像素值对应的最终池化结果。在图8的示例中,因为3×3的原始池化核810可被分解成三个1×3的子池化核811至813,所以ALU 110-2可读取从共享行缓冲器125获取的三个中间池化结果并对三个中间池化结果进行后处理。
当如图8的示例中那样将3×3的原始池化核810分解成三个1×3的子池化核811至813时,共享行缓冲器125可将池化数据存储在总共3行的存储器单元中。换言之,共享行缓冲器125可以以循环方式将针对输入特征图820中的窗口获得的中间池化结果存储在与原始池化核810的高度对应的行数的存储器行中,所述存储器行被示出为行k*i、行k*i+1和行k*i+2。在这样的示例中,k表示原始池化核810的高度,i是用于指示共享行缓冲器125中用于循环方式的任意地址的任意数,并且根据图8的示例,k=3。然而,图8是非限制性示例,并且在其他示例中k可采用其他值。
具体地讲,与输入特征图820中的同一窗口对应的中间池化结果可分别存储在共享行缓冲器125中的具有同一列且不同行的存储器地址的存储器单元中。例如,当针对输入特征图820的窗口821获得分别与三个子池化核811至813对应的三个中间池化结果时,根据此方法,可将三个中间池化结果分别存储在共享行缓冲器125的第一行第一列的存储器单元1251、第二行第一列的存储器单元1252及第三行第一列的存储器单元1253中。
当步长为1并且将从输入特征图820池化的窗口822具有与前一池化的窗口821相同的列时,窗口821和窗口822可共享两行的输入像素。换句话说,关于当前窗口821的子池化核中的至少一个可共享为关于输入特征图820中的至少一个其他窗口822的子池化核。因此,通过映射到当前窗口821的子池化核之中的可共享的子池化核获得的中间池化结果可相对于至少一个其他窗口822被共享。
当窗口821的中间池化结果全部存储在存储器单元1251、1252和1253中时,处理器110的ALU 110-2可对存储在存储器单元1251、1252和1253中的中间池化结果进行后处理,以输出窗口821的最终池化结果。根据光栅扫描顺序,在之后对窗口822执行池化时,存储在存储器单元1251中的与窗口821的子池化核811的中间池化结果对应的数据可不再用于池化操作。然而,因为窗口821与窗口822共享两行,所以窗口821的子池化核812和813的中间池化结果可重新用于窗口822。因此,存储在存储器单元1252和1253中的中间池化结果可不被删除,而是可被重新用于对窗口822进行池化。
换句话说,当存储在共享行缓冲器125的一个存储器单元中的中间池化结果不再被共享以获得与另一窗口对应的最终池化结果时,可删除或覆盖存储在所述一个存储器单元中的中间池化结果,以使所述一个存储器单元用于存储将被存储的通过另一个子池化核获得的中间池化结果。以此方式,中间池化结果可以以循环方式存储在共享行缓冲器125的同一列的存储器单元中。
在各种示例中,参照图8的示例描述的示例可以以相同的方式应用于基于另外大小的输入特征图、另外大小的原始池化核和另外值的步长的池化操作,并且图8的示例的具体细节将被视为非限制性。
图9是用于描述根据示例的更新池化数据和从池化数据生成输出特征图930的处理的示图。
参照图9的示例,输入特征图910的输入像素IFM_4-1可对应于在不同的子池化核中重叠或共享的当前输入像素。在这样的示例中,不同的子池化核可由如图9的示例中所指示的点划线和虚线来指示。例如,不同的子池化核可对应于映射到窗口A的3×3的原始池化核的第三子池化核、映射到窗口B的3×3的原始池化核的第三子池化核以及映射到窗口C的3×3的原始池化核的第三子池化核。
当接收到当前输入像素时,处理器110可更新受当前输入像素的值影响的至少一个部分池化结果。例如,当根据光栅扫描顺序接收到输入像素IFM_4-1时,处理器110可基于部分池化结果IPR_4-1、IPR_4-2和IPR_4-3受输入像素IFM_4-1影响的方式来更新它们。当部分池化结果IPR_4-1的更新完成时,最终更新的部分池化结果IPR_4-1可对应于中间池化结果。
处理器110可通过对中间池化结果925(即,IPR_2-1、IPR_3-1和IPR_4-1)执行后处理来获得最终池化结果。获得的最终池化结果可对应于输出特征图930的输出像素OFM_2-1。
这样,当处理器110接收到任何一个输入像素值时,存储在共享行缓冲器125中并且受输入像素值影响的至少一个部分池化结果也可被更新。
通常,在没有在此讨论的子池化核方法的情况下,当接收到任何单个输入像素的值时,可重复地读取/更新/写入包括输入像素的一些窗口的所有池化结果。例如,当基于步长为1的3×3的池化核来池化足够大的输入特征图时,每当接收到输入像素时,处理器和共享行缓冲器可读取/更新/写入与共享输入像素的最多9个窗口中的每个窗口的9个像素值对应的所有的池化数据。因此,处理器的吞吐量以及处理器与存储器(诸如,共享行缓冲器)之间的访问频率相对高。然而,当根据在此的实施例的利用子池化方法的池化方法(例如,采用从原始池化核分解的1D子池化核)时,可仅读取/更新/写入共享输入像素的1D子池化核的池化数据,因此可有效地减少处理器和存储器(诸如,共享行缓冲器)的开销。
图10是根据示例的神经网络方法的流程图。参照图10的示例,神经网络方法可由(诸如在图4的示例中的)神经处理设备100以基于时间的序列执行或实现。作为图10的示例的神经网络方法的池化操作的超参数,原始池化核的大小可以是k×k,并且步长可以是s,其中,k和s是自然数并且s<k。
另外,图10的示例中示出的池化操作可仅是接收输入特征图的一个输入像素的操作。因此,可对输入特征图的所有像素重复执行图10的示例的神经网络方法,并且可在图10的示例的操作1001中根据输入特征图的光栅扫描顺序,顺序地接收当前输入像素(X,Y),使得所有输入像素被处理。
在操作1001中,处理器110可接收输入特征图中的当前输入像素(X,Y),输入特征图具有宽度W和高度H。在这样的示例中,0≤X<W并且0≤Y<H。
在操作1002中,处理器110可将共享行缓冲器125的存储器单元之中的地址(xp,yp)的存储器单元设置为与更新支点(update pivot)对应,并且可将共享行缓冲器125的存储器单元的更新大小设置为与t对应,其中,t是自然数。然后,处理器110可将i初始化为0。
在这样的示例中,在更新支点(xp,yp)中,xp=X%k,yp=Y%k,并且在更新大小t时,t被分配更新大小的值。
在操作1003中,处理器110可确定是否满足i<t的条件。当满足i<t的条件时,可执行操作1004。然而,当不满足i<t的条件时,可替代地执行操作1006。
在操作1004中,处理器110可将共享行缓冲器125的存储器单元之中的目标地址设置为(xp+i,yp)。
在操作1005中,处理器110可将i增加1。
处理器110可执行操作1003至1005,直到不再满足i<t的条件为止。
在操作1006中,为了获得最终池化结果,处理器110可确定能够进行后处理的中间池化结果(例如,诸如图9的示例的参考标号925的1×k的核)是否可存在于共享行缓冲器125上。当在共享行缓冲器125上不存在能够进行后处理的中间池化结果时,结束关于当前输入像素(X,Y)的神经网络方法,并且针对下一输入像素启动/重启操作1001。
在这样的示例中,处理器110可通过使用下面的公式2作为条件测试来确定关于当前输入像素(X,Y)的更新支点中是否完成更新,并且可通过使用下面的公式3作为条件测试来确定能够执行后处理的1×k的核是否存在。
公式2:
(X-k+1)≥0&&(X-k+1)%s=0
公式3:
(Y-k+1)≥0&&(Y-k+1)%s=0
在操作1007中,处理器110可访问共享行缓冲器125上的xp列作为目标列。
在操作1008中,处理器110可读取存储在共享行缓冲器125上的xp列中的中间池化结果(1×k大小)。
在操作1009中,处理器110可根据预设的池化类型,通过对读取的中间池化结果执行后处理来获得最终池化结果。处理器110确定获得的最终池化结果对应于输出特征图的位置((X-k+1)/2,(Y-k+1)/2)处的输出像素的值。
处理器110可重复地执行上面进一步详细描述的神经网络方法,直到当针对从输入特征图获得的所有中间池化结果获得最终池化结果时完成输出特征图为止。
图11是用于描述根据示例的通过接收当前输入像素来更新共享行缓冲器上的池化数据1120的处理器的处理的示图。为了便于解释,将参照图4的处理器110和共享行缓冲器125来描述图11的操作,注意示例不限于此。
参照图11的示例,当处理器110的ALU 110-1接收输入特征图1110中的当前输入像素时,ALU 110-1读取存储在共享行缓冲器125中的受当前输入像素影响的池化数据1120(即,部分池化结果)。如上面进一步详细描述的那样,读取的池化数据1120可以是存储在同一行但不同列的存储器单元中的数据。
ALU 110-1可基于池化数据1120和当前输入像素的值来更新池化数据1120。例如,ALU 110-1可根据如上面进一步详细描述的MaxPool技术来确定最大值,或根据如上面进一步详细描述的AvgPool执行加法运算。
换句话说,根据采用1D子池化核的示例,如上面进一步详细描述的那样,在给定时间仅读取/更新/写入共享当前输入像素的1D子池化核的池化数据1120,因此,与没有子池化的一般处理相比,可通过以这种方式管理数据来有效地减少处理器110和共享行缓冲器125的开销。
图12是用于描述根据示例的通过对存储在共享行缓冲器中的中间池化结果1205进行后处理来获得最终池化结果的处理器的处理的示图。为了便于解释,将参照图4的处理器110和共享行缓冲器125来描述图12的操作,注意示例不限于此。
参照图12的示例,当存储在共享行缓冲器125的存储器单元1201中的部分池化结果被最终更新时,最终更新的部分池化结果对应于中间池化结果。
处理器110可读取与存储有中间池化结果的存储器单元1201同一列的所有存储器单元中存储的中间池化结果1205。在这样的示例中,如先前进一步详细讨论的那样,假设中间池化结果1205都是最终更新的结果。
处理器110可通过根据预设的池化类型对中间池化结果1205执行后处理,来获得与中间池化结果1205对应的最终池化结果。上面已经更详细地讨论了池化的各种非限制性示例。结果,处理器110可基于与最终池化结果对应的输出像素1210的值生成输出特征图。
如上所述,存储在共享行缓冲器125的同一列中的中间池化结果可以是由映射到窗口的子池化核中的每个子池化核执行的池化操作的预处理结果。因此,处理器110可通过执行合并存储在同一列中的中间池化结果的池化操作的后处理来完成对对应窗口的池化。
图13是根据示例的由包括神经网络的处理池化的设备执行的神经网络方法的流程图。参照图13的示例,因为图13的神经网络方法与上面参照附图描述的示例有关,所以上面的描述也适用于图13的操作。
在操作1301中,处理器110可通过使用从原始池化核分解的多个子池化核,经由对包括在输入特征图中的待池化的当前窗口中的输入像素执行池化操作,来获得分别与子池化核对应的中间池化结果。在这样的示例中,可随着原始池化核根据光栅扫描顺序在输入特征图中滑动确定当前窗口。
在操作1302中,当获得针对当前窗口的所有中间池化结果时,处理器110可通过对中间池化结果进行后处理来获得与当前窗口对应的最终池化结果。
在操作1303中,处理器110可基于最终池化结果来确定输出特征图的输出像素值。
基于超参数来处理根据示例的神经网络的池化,所述超参数包括关于原始池化核的大小、步长大小和池化类型的信息。换言之,可基于超参数来设置将被分解的子池化核的数量、共享行缓冲器125的存储器行的最小所需数量以及参照图10的示例描述的共享行缓冲器125的更新支点和更新大小。此外,可基于超参数对存储获得的中间池化结果的共享行缓冲器125进行寻址。
图1至图13中的执行在本申请中描述的操作的神经处理设备、神经处理设备100、处理器、处理器110、ALU、ALU 110-1、ALU 110-2、存储器、存储器120、共享行缓冲器和共享行缓冲器125由硬件组件实现,所述硬件组件被配置为执行在本申请中描述的由硬件组件执行的操作。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,通过计算硬件(例如,通过一个或多个处理器或计算机)来实现执行在本申请中描述的操作的硬件组件中的一个或多个硬件组件。可通过一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现处理器或计算机。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作***(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简单起见,单数术语“处理器”或“计算机”可用于本申请中描述的示例的描述,但是在其他的示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件或多种类型的处理元件或两者。例如,单个硬件组件或者两个或更多个硬件组件可通过单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可通过一个或多个处理器、或者处理器和控制器来实现,一个或多个其他硬件组件可通过一个或多个其他处理器,或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,其中,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理以及多指令多数据(MIMD)多处理。
图1至图13中示出的执行在本申请中描述的操作的方法通过计算硬件(例如,通过一个或多个处理器或计算机)来执行,其中,计算硬件被如上所述地实现为执行指令或软件,以执行在本申请中描述的通过该方法执行的操作。例如,单个操作或者两个或更多个操作可通过单个处理器或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可通过一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或者计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或者计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或者计算机使用解释器执行的高级代码。可基于附图中示出的框图和流程图以及说明书中的对应描述使用任何编程语言来编写指令或软件,其中,附图中示出的框图和流程图以及说明书中的对应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取存储器(RAM)、闪存、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、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并将所述指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机,使得一个或多个处理器或计算机能执行所述指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在联网的计算机***上,使得指令和软件以及任何相关联的数据、数据文件和数据结构以分布式方式被一个或多个处理器或计算机存储、访问和执行。
尽管本公开包括具体的示例,但是在理解本申请的公开之后将清楚的是,在不脱离权利要求及其等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述将被认为适用于其他示例中的类似特征或方面。如果描述的技术以不同的顺序被执行,和/或如果描述的***、架构、装置或电路中的组件以不同的方式被组合,和/或由其他组件或它们的等同物替换或补充,则可实现合适的结果。因此,公开的范围不是由具体实施方式限定,而是由权利要求及其等同物限定,并且在权利要求及其等同物的范围内的所有变化应被解释为包括在公开中。
Claims (28)
1.一种用于图像识别的神经网络的处理器实现的方法,所述方法包括:
从输入图像获得输入特征图;
通过使用经由分解原始池化核获得的多个子池化核,对包括在输入特征图中的当前窗口中的输入像素执行池化操作,来获得分别与所述多个子池化核对应的中间池化结果;
通过对中间池化结果进行后处理来获得与当前窗口对应的最终池化结果;以及
基于最终池化结果,确定输出特征图的输出像素值以用于识别图像,
其中,根据原始池化核在输入特征图中根据光栅扫描顺序滑动来确定当前窗口。
2.根据权利要求1所述的方法,其中,
所述多个子池化核是分别包括原始池化核的行元素的多个1维核,并且
通过从原始池化核分解获得的所述多个子池化核的总数量与原始池化核的高度对应。
3.根据权利要求2所述的方法,其中,通过所述多个子池化核之中的共享的子池化核获得的关于当前窗口的中间池化结果与输入特征图中的至少一个其他窗口共享。
4.根据权利要求1所述的方法,其中,响应于针对当前窗口获得所有的中间池化结果,获得最终池化结果。
5.根据权利要求1所述的方法,其中,与同一窗口对应的中间池化结果分别存储在共享行缓冲器中的包括同一列且不同行的存储器地址的存储器单元中。
6.根据权利要求5所述的方法,还包括:
根据输入特征图的光栅扫描顺序,接收包括在当前窗口中的当前输入像素的值,
其中,获得中间池化结果的步骤包括:
基于接收的当前输入像素的值来更新存储在至少一个存储器单元中的受接收的当前输入像素的值影响的至少一个部分池化结果。
7.根据权利要求5所述的方法,其中,获得与当前窗口对应的最终池化结果的步骤包括:
从共享行缓冲器的存储器单元读取针对当前窗口的中间池化结果;以及
通过根据预设的池化类型对读取的中间池化结果执行后处理操作,获得与输出像素值对应的最终池化结果。
8.根据权利要求5所述的方法,其中,共享行缓冲器以循环的方式,将针对输入特征图中的其他窗口获得的中间池化结果存储在与原始池化核的高度对应的总行数的存储器行中。
9.根据权利要求8所述的方法,其中,响应于存储在共享行缓冲器的一个存储器单元中的中间池化结果不再被共享,将存储在所述一个存储器单元中的中间池化结果删除,以使所述一个存储器单元用于存储通过另一子池化核获得的将被存储的后续中间池化结果,来获得与另一窗口对应的最终池化结果。
10.根据权利要求1所述的方法,还包括:
获得神经网络的超参数,所述超参数包括与原始池化核的大小、步长大小和池化类型中的任何一个或任何两个或更多个的任何组合有关的信息,其中,
基于获得的所述超参数对存储获得的中间池化结果的共享行缓冲器进行寻址。
11.根据权利要求1所述的方法,其中,
池化操作是基于最大池化的池化类型的操作,其中,每个中间池化结果是映射到对应的子池化核的输入像素的值之中的最大值,并且最终池化结果是中间池化结果之中的最大值,或者
池化操作是基于平均池化的池化类型的操作,其中,每个中间池化结果是映射到对应的子池化核的输入像素的值的和,并且最终池化结果是通过将中间池化结果的和除以原始池化核的大小而获得的值。
12.一种存储指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1所述的方法。
13.一种用于图像识别的神经网络的神经处理设备,包括:
一个或多个处理器,被配置为:
从输入图像获得输入特征图;
通过使用经由分解原始池化核获得的多个子池化核,对包括在输入特征图中的当前窗口中的输入像素执行池化操作,来获得分别与所述多个子池化核对应的中间池化结果,
通过对中间池化结果进行后处理来获得与当前窗口对应的最终池化结果,以及
基于最终池化结果,确定输出特征图的输出像素值以用于识别图像,
其中,根据原始池化核在输入特征图中根据光栅扫描顺序滑动来确定当前窗口。
14.根据权利要求13所述的神经处理设备,还包括:存储器,被配置为存储指令,所述指令在由所述一个或多个处理器执行时,配置所述一个或多个处理器执行获得中间池化结果的步骤、获得最终池化结果的步骤以及确定输出像素值的步骤。
15.根据权利要求13所述的神经处理设备,其中,
所述多个子池化核是分别包括原始池化核的行元素的多个1维核,并且
通过从原始池化核分解获得的所述多个子池化核的总数量与原始池化核的高度对应。
16.根据权利要求15所述的神经处理设备,其中,通过所述多个子池化核之中的共享的子池化核获得的关于当前窗口的中间池化结果与输入特征图中的至少一个其他窗口共享。
17.根据权利要求13所述的神经处理设备,其中,响应于针对当前窗口获得所有的中间池化结果,获得最终池化结果。
18.根据权利要求13所述的神经处理设备,其中,与同一窗口对应的中间池化结果分别存储在包括在存储器中的共享行缓冲器中的包括同一列且不同行的存储器地址的存储器单元中。
19.根据权利要求18所述的神经处理设备,其中,所述一个或多个处理器还被配置为:
根据输入特征图的光栅扫描顺序,接收包括在当前窗口中的当前输入像素的值;以及
基于接收的当前输入像素的值来更新存储在至少一个存储器单元中的受接收的当前输入像素的值影响的至少一个部分池化结果。
20.根据权利要求18所述的神经处理设备,其中,所述一个或多个处理器还被配置为:
从共享行缓冲器的存储器单元读取针对当前窗口的中间池化结果,并且通过根据预设的池化类型对读取的中间池化结果执行后处理操作,获得与输出像素值对应的最终池化结果。
21.根据权利要求18所述的神经处理设备,其中,共享行缓冲器以循环的方式,将针对输入特征图中的其他窗口获得的中间池化结果存储在与原始池化核的高度对应的总行数的存储器行中。
22.根据权利要求21所述的神经处理设备,其中,响应于存储在共享行缓冲器的一个存储器单元中的中间池化结果不再被共享,将存储在所述一个存储器单元中的中间池化结果删除,以使所述一个存储器单元用于存储通过另一子池化核获得的将被存储的后续中间池化结果,来获得与另一窗口对应的最终池化结果。
23.根据权利要求13所述的神经处理设备,其中,所述一个或多个处理器还被配置为:
获得神经网络的超参数,所述超参数包括与原始池化核的大小、步长大小和池化类型中的任何一个或任何两个或更多个的任何组合有关的信息,其中,
基于所述超参数对包括在存储器中的用于存储获得的中间池化结果的共享行缓冲器进行寻址。
24.根据权利要求13所述的神经处理设备,其中,
池化操作是基于最大池化的池化类型的操作,其中,每个中间池化结果是映射到对应的子池化核的输入像素的值之中的最大值,并且最终池化结果是中间池化结果之中的最大值,或者
池化操作是基于平均池化的池化类型的操作,其中,每个中间池化结果是映射到对应的子池化核的输入像素的值的和,并且最终池化结果是通过将中间池化结果的和除以原始池化核的大小而获得的值。
25.一种用于图像识别的神经网络的处理器实现的方法,所述方法包括:
从输入图像获得输入特征图;
利用通过分解原始池化核获得的多个子池化核,从包括在输入特征图中的待池化的当前窗口中的输入像素获得分别与所述多个子池化核对应的中间池化结果;
响应于针对当前窗口的中间池化完成,从中间池化结果获得与当前窗口对应的最终池化结果,随着原始池化核在输入特征图中滑动来确定当前窗口;以及
基于最终池化结果,确定输出特征图的输出像素值以用于识别图像。
26.根据权利要求25所述的方法,其中,原始池化核根据光栅扫描顺序滑动。
27.根据权利要求25所述的方法,其中,
所述多个子池化核是分别包括原始池化核的行元素的多个1维核,并且
通过从原始池化核分解获得的所述多个子池化核的总数量与原始池化核的高度对应。
28.根据权利要求27所述的方法,其中,关于当前窗口的所述多个子池化核中的至少一个子池化核被共享为关于输入特征图中的至少一个其他窗口的子池化核。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190119090A KR20210036715A (ko) | 2019-09-26 | 2019-09-26 | 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법 |
KR10-2019-0119090 | 2019-09-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112561045A true CN112561045A (zh) | 2021-03-26 |
Family
ID=71120083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010263703.9A Pending CN112561045A (zh) | 2019-09-26 | 2020-04-07 | 用于图像识别的神经网络的处理器实现的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11640538B2 (zh) |
EP (1) | EP3798921A1 (zh) |
KR (1) | KR20210036715A (zh) |
CN (1) | CN112561045A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117217274A (zh) * | 2023-11-08 | 2023-12-12 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110472531B (zh) * | 2019-07-29 | 2023-09-01 | 腾讯科技(深圳)有限公司 | 视频处理方法、装置、电子设备及存储介质 |
US11507831B2 (en) * | 2020-02-24 | 2022-11-22 | Stmicroelectronics International N.V. | Pooling unit for deep learning acceleration |
US11500680B2 (en) * | 2020-04-24 | 2022-11-15 | Alibaba Group Holding Limited | Systolic array-friendly data placement and control based on masked write |
US11568252B2 (en) | 2020-06-29 | 2023-01-31 | Alibaba Group Holding Limited | Variable input size techniques for neural networks |
US20220222569A1 (en) * | 2021-01-11 | 2022-07-14 | Arm Limited | Data processing |
KR102368075B1 (ko) * | 2021-06-04 | 2022-02-25 | 오픈엣지테크놀로지 주식회사 | 고효율 풀링 방법 및 이를 위한 장치 |
KR20230032325A (ko) * | 2021-08-30 | 2023-03-07 | 삼성전자주식회사 | 프레임들 사이의 움직임 벡터를 결정하는 영상 처리 장치 및 이에 의한 방법 |
JP2023041348A (ja) * | 2021-09-13 | 2023-03-24 | トヨタ自動車株式会社 | 情報処理装置 |
WO2023080291A1 (ko) * | 2021-11-08 | 2023-05-11 | 한국전자기술연구원 | 딥러닝 가속기를 위한 풀링 장치 |
KR102395743B1 (ko) * | 2021-11-09 | 2022-05-09 | 오픈엣지테크놀로지 주식회사 | 1차원 어레이 풀링 방법 및 이를 위한 장치 |
WO2023085443A1 (ko) * | 2021-11-09 | 2023-05-19 | 한국전자기술연구원 | 딥러닝 경량 가속장치 |
KR102403277B1 (ko) * | 2021-12-24 | 2022-05-30 | 오픈엣지테크놀로지 주식회사 | 어레이 풀링 방법 및 이를 위한 장치 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10417525B2 (en) | 2014-09-22 | 2019-09-17 | Samsung Electronics Co., Ltd. | Object recognition with reduced neural network weight precision |
US20170124409A1 (en) | 2015-11-04 | 2017-05-04 | Nec Laboratories America, Inc. | Cascaded neural network with scale dependent pooling for object detection |
TWI607389B (zh) * | 2017-02-10 | 2017-12-01 | 耐能股份有限公司 | 卷積神經網路的池化運算裝置及方法 |
KR102414583B1 (ko) | 2017-03-23 | 2022-06-29 | 삼성전자주식회사 | 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법 |
US10990648B2 (en) * | 2017-08-07 | 2021-04-27 | Intel Corporation | System and method for an optimized winograd convolution accelerator |
KR102606825B1 (ko) | 2017-09-13 | 2023-11-27 | 삼성전자주식회사 | 뉴럴 네트워크 모델을 변형하는 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 |
US10482337B2 (en) | 2017-09-29 | 2019-11-19 | Infineon Technologies Ag | Accelerating convolutional neural network computation throughput |
-
2019
- 2019-09-26 KR KR1020190119090A patent/KR20210036715A/ko active Search and Examination
-
2020
- 2020-03-23 US US16/826,373 patent/US11640538B2/en active Active
- 2020-04-07 CN CN202010263703.9A patent/CN112561045A/zh active Pending
- 2020-06-22 EP EP20181380.5A patent/EP3798921A1/en active Pending
-
2023
- 2023-03-18 US US18/186,163 patent/US20230229931A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117217274A (zh) * | 2023-11-08 | 2023-12-12 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
CN117217274B (zh) * | 2023-11-08 | 2024-06-04 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20230229931A1 (en) | 2023-07-20 |
US20210097403A1 (en) | 2021-04-01 |
KR20210036715A (ko) | 2021-04-05 |
US11640538B2 (en) | 2023-05-02 |
EP3798921A1 (en) | 2021-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112561045A (zh) | 用于图像识别的神经网络的处理器实现的方法和设备 | |
CN108229655B (zh) | 卷积神经网络(cnn)处理方法和设备 | |
CN108073981B (zh) | 处理卷积神经网络的方法和设备 | |
US10909418B2 (en) | Neural network method and apparatus | |
US10417555B2 (en) | Data-optimized neural network traversal | |
TWI765763B (zh) | 用於平衡權重稀疏卷積處理之方法及系統 | |
KR20200072307A (ko) | 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법 | |
CN111382859A (zh) | 用于处理神经网络中的卷积运算的方法和装置 | |
US20210192315A1 (en) | Method and apparatus with neural network convolution operation | |
CN113469354B (zh) | 受存储器限制的神经网络训练 | |
CN112668381A (zh) | 用于识别图像的方法和设备 | |
KR20200095300A (ko) | 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치 | |
JP2023519565A (ja) | 機械学習ジョブ中の改善されたメモリ圧縮転送のためのスパース性に基づく特徴の再順序付け | |
CN114792387A (zh) | 图像恢复方法和设备 | |
US12014505B2 (en) | Method and apparatus with convolution neural network processing using shared operand | |
KR20220161339A (ko) | 기계 학습 작업시 개선된 메모리 압축 전달을 위한 유사도에 기초한 특징 재정렬 | |
US20230069072A1 (en) | Image processing apparatus and operation method thereof | |
CN116152082A (zh) | 用于图像去模糊的方法和设备 | |
US11681915B2 (en) | Neural network method and apparatus | |
US11842273B2 (en) | Neural network processing | |
US12039360B2 (en) | Operation method of host processor and accelerator, and electronic device including the same | |
US11797461B2 (en) | Data transmission method for convolution operation, fetcher, and convolution operation apparatus | |
EP3968238A1 (en) | Operation method of host processor and accelerator, and electronic device including the same | |
US20230071417A1 (en) | Image processing device and operation method thereof | |
CN115952835A (zh) | 数据处理方法、可读介质和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |