CN114548361A - 神经网络装置及其操作方法 - Google Patents
神经网络装置及其操作方法 Download PDFInfo
- Publication number
- CN114548361A CN114548361A CN202111402485.3A CN202111402485A CN114548361A CN 114548361 A CN114548361 A CN 114548361A CN 202111402485 A CN202111402485 A CN 202111402485A CN 114548361 A CN114548361 A CN 114548361A
- Authority
- CN
- China
- Prior art keywords
- offset
- neural network
- interval
- input data
- network device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 130
- 238000000034 method Methods 0.000 title claims description 74
- 230000015654 memory Effects 0.000 claims abstract description 93
- 230000010339 dilation Effects 0.000 claims description 35
- 230000004044 response Effects 0.000 claims description 13
- 238000010586 diagram Methods 0.000 claims description 5
- 238000011017 operating method Methods 0.000 claims 2
- 230000008569 process Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 24
- 238000013527 convolutional neural network Methods 0.000 description 13
- 238000005070 sampling Methods 0.000 description 7
- 230000004913 activation Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 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
- 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
- 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
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic 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/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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Probability & Statistics with Applications (AREA)
- Image Analysis (AREA)
Abstract
一种神经网络装置包括:存储器,被配置为存储第一特征图和第二特征图;以及神经网络处理器,被配置为操作神经网络并且包括:获取器,被配置为从存储器的第一特征图获取输入数据;缓冲器,被配置为存储输入数据;运算器,被配置为通过执行输入数据与核之间的卷积运算来生成输出数据;写入器,被配置为将输出数据写入存储器的第二特征图;以及控制器,被配置为:根据在多个步骤中基于核的膨胀率确定的一个或多个间隔和一个或多个偏移,控制获取器获取输入数据并控制写入器写入输出数据。
Description
本申请要求于2020年11月24日在韩国知识产权局提交的第10-2020-0158933号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及神经网络装置及其操作方法。
背景技术
神经网络可用于在各种类型的电子***中分析输入数据并提取有效信息。具体地,卷积神经网络(CNN)可在提取包括在图像中的空间特征方面表现出优异的性能。然而,用于操作CNN的卷积运算会需要高输入/输出带宽。
发明内容
提供本发明内容以简化的形式介绍在下面的具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,也不意在用于帮助确定要求保护的主题的范围。
在一个总体方面,一种神经网络装置包括:存储器,被配置为存储第一特征图和第二特征图;以及神经网络处理器,被配置为操作神经网络并且包括:获取器,被配置为从存储器的第一特征图获取输入数据,缓冲器,被配置为存储输入数据,运算器,被配置为通过执行输入数据与核之间的卷积运算来生成输出数据,写入器,被配置为将输出数据写入存储器的第二特征图,以及控制器,被配置为:根据在多个步骤中基于核的膨胀率确定的一个或多个间隔和一个或多个偏移,控制获取器获取输入数据并控制写入器写入输出数据。
为了控制获取器,控制器可被配置为:根据基于膨胀率确定的所述一个或多个间隔中的第一间隔和所述一个或多个偏移中的第一偏移,控制获取器从存储器的第一特征图无冗余地获取输入数据。
为了获取输入数据,获取器可被配置为:获取第一特征图中的与通过从与第一偏移对应的索引的位置沿预定方向跳过第一间隔而到达的位置对应的多条输入数据。
为了控制写入器,控制器可被配置为:根据基于膨胀率确定的所述一个或多个间隔中的第二间隔和所述一个或多个偏移中的第二偏移,控制写入器将输出数据无冗余地写入存储器的第二特征图。
为了写入输出数据,写入器可被配置为:在第二特征图中的通过从与第二偏移对应的索引的位置沿预定方向跳过第二间隔而到达的位置处写入输出数据。
为了获取输入数据,获取器可被配置为:根据所述一个或多个偏移中的第一偏移和所述一个或多个间隔中的第一间隔,从存储器的第一特征图获取输入数据,并且为了写入输出数据,写入器可被配置为:根据所述一个或多个偏移中的第二偏移和所述一个或多个间隔中的第二间隔,将输出数据写入存储器的第二特征图。
响应于卷积运算的步长参数为预设的第一值,控制器可被配置为:将第一间隔和第二间隔设置为具有与对应于膨胀率的值相同的值;以及将第一偏移和第二偏移设置为具有与所述多个步骤之中的相应步骤的索引的值相同的值。
响应于卷积运算的步长参数大于或等于预设的第一值,控制器可被配置为:将第一间隔和第二间隔设置为彼此不同;以及将第一偏移和第二偏移设置为彼此不同。
为了设置第一偏移和第二偏移,控制器可被配置为:基于步长参数和所述多个步骤之中的相应步骤的索引的值的组合来设置第一偏移;以及将第二偏移设置为相应步骤的索引的值。
为了设置第一间隔和第二间隔,控制器可被配置为:将第一间隔设置为具有与膨胀率的值相同的值;以及将第二间隔设置为通过将膨胀率除以膨胀率和步长参数的最大公约数(GCD)而获得的值。
控制器可被配置为基于第一偏移是否满足第一条件并且基于第二偏移是否满足第二条件来确定来所述多个步骤的总数量,第一条件为:第一偏移具有与通过从膨胀率和步长参数的最小公倍数(LCM)减去步长参数而获得的值相同的值,第二条件为:第二偏移具有与通过从将膨胀率除以膨胀率和步长参数的GCD所获得的值减去“1”而获得的值相同的值。
为了生成输出数据,响应于第一特征图包括多个通道,运算器可被配置为:执行所述多个通道与核之间的膨胀卷积运算。
在第二特征图中彼此相邻布置的多条输出数据之间的间隔可基于以下参数中的任意一个或两个来确定:膨胀率和卷积运算的步长参数。
神经网络装置可包括平视显示器(HUD)装置、三维(3D)数字信息显示器、导航***、3D移动装置、智能电话、智能电视(TV)和智能交通工具中的任何一个或者任何两个或更多个中的任何组合。
存储器可被配置为存储指令,所述指令在由神经网络处理器执行时,配置神经网络处理器操作神经网络。
在另一总体方面,一种神经网络装置的操作方法包括:根据基于核的膨胀率确定的第一间隔,从存储器的第一特征图获取输入数据;将输入数据存储在缓冲器中;通过执行输入数据与核之间的卷积运算来生成输出数据;以及根据基于核的膨胀率确定的第二间隔,将输出数据写入存储器的第二特征图。
获取输入数据的处理可包括:根据第一间隔和基于膨胀率确定的第一偏移,从第一特征图无冗余地获取输入数据。
获取输入数据的处理可包括:获取第一特征图中的与通过从与第一偏移对应的索引的位置沿预定方向跳过第一间隔而到达的位置对应的多条输入数据。
写入输出数据的处理可包括:根据第二间隔和基于膨胀率确定的第二偏移,将输出数据无冗余地写入存储器的第二特征图。
写入输出数据的处理可包括:在第二特征图中的通过从与第二偏移对应的索引的位置沿预定方向跳过第二间隔而到达的位置处写入输出数据。
获取输入数据的处理可包括:根据第一间隔和基于膨胀率确定的第一偏移,从第一特征图获取输入数据,以及写入输出数据的处理可包括:根据第二间隔和基于膨胀率确定的第二偏移,将输出数据写入存储器的第二特征图。
所述方法可在多个步骤中被重复地执行,并且可包括:响应于卷积运算的步长参数为预设的第一值,将第一间隔和第二间隔设置为具有与对应于膨胀率的值相同的值,并且将第一偏移和第二偏移设置为具有与所述多个步骤之中的相应步骤的索引的值相同的值。
所述方法可包括:响应于卷积运算的步长参数大于或等于预设的第一值,将第一间隔和第二间隔设置为彼此不同,并且将第一偏移和第二偏移设置为彼此不同。
所述方法可包括:基于步长参数和多个步骤之中的相应步骤的索引的值的组合来设置第一偏移;以及将第二偏移设置为相应步骤的索引的值。
所述方法可包括:将第一间隔设置为具有与膨胀率的值相同的值;以及将第二间隔设置为通过将膨胀率除以膨胀率和步长参数的最大公约数(GCD)而获得的值。
所述方法可在多个步骤中被重复地执行,并且可基于第一偏移是否满足第一条件并且基于第二偏移是否满足第二条件来确定所述多个步骤的数量,第一条件为:第一偏移具有与通过从膨胀率和步长参数的最小公倍数(LCM)减去步长参数而获得的值相同的值,第二条件为:第二偏移具有与通过从将膨胀率除以膨胀率和步长参数的GCD所获得的值减去“1”而获得的值相同的值。
生成输出数据的处理可包括:响应于第一特征图包括多个通道,执行所述多个通道与核之间的膨胀卷积运算。
在第二特征图中彼此相邻布置的多条输出数据之间的间隔可基于以下参数中的任意一个或两个来确定:膨胀率和卷积运算的步长参数。
在另一总体方面,一个或多个实施例包括一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时,配置处理器执行在此描述的操作和方法的任何一个、任何组合或全部。
在另一总体方面,一种神经网络装置包括:一个或多个处理器,被配置为:基于核的膨胀率,确定存储在存储器中的第一特征图的片段之中的待获取的输入数据;从存储器获取所确定的输入数据并将输入数据存储在缓冲器中;通过执行输入数据与核之间的卷积运算来生成输出数据;以及将输出数据写入存储器中的第二特征图。
为了确定待获取的输入数据,所述一个或多个处理器可被配置为:将输入数据确定为第一特征图的以膨胀率分隔开的片段。
为了执行卷积运算,所述一个或多个处理器可被配置为:执行输入数据的第一部分与核之间的第一卷积运算,并且执行输入数据的第二部分与核之间的第二卷积运算。
第二部分可包括:第一特征图的包括在第一部分中的一个或多个片段;以及第一特征图的未包括在第一部分中的一个或多个片段。
响应于输出数据的写入,所述一个或多个处理器可被配置为:基于膨胀率和步长参数来确定存储在存储器中的第一特征图的片段之中的待获取的后续输入数据。
后续输入数据可包括:第一特征图的与包括在输入数据中的片段不同的片段。
在另一总体方面,一种神经网络装置的操作方法包括:确定第一特征图的以核的膨胀率分隔开的片段;通过执行所述片段与核之间的卷积运算来生成第二特征图,其中,核不以膨胀率膨胀,并且第二特征图对应于通过执行第一特征图与以膨胀率膨胀的核之间的卷积运算而生成的特征图。
所述片段与核之间的卷积运算可包括第一卷积运算和第二卷积运算,并且在第一卷积运算中使用的片段的一部分可在第二卷积运算中被重用。
从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出神经网络的结构的示例。
图2示出核的膨胀率、偏移和间隔的示例。
图3示出执行一维(1D)膨胀卷积运算的方法的示例。
图4示出神经网络装置的配置的示例。
图5示出神经网络装置的操作处理的示例。
图6和图7示出神经网络装置的操作方法的示例。
图8示出神经网络装置的操作处理的示例。
图9示出神经网络装置的配置的示例。
图10示出在神经网络装置中执行二维(2D)卷积运算的方法的示例。
图11示出神经网络装置的操作方法的示例。
图12示出神经网络装置的配置的示例。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可以不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或***的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或***的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅是示例,并不限于在此阐述的操作顺序,而是除了必须以特定顺序发生的操作之外,可如在理解本申请的公开之后将是清楚地那样被改变。此外,为了更清楚和简明,可省略在理解本申请的公开之后已知的特征的描述。
尽管在此使用术语“第一”或“第二”来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不受这些术语限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。例如,在不脱离示例的教导的情况下,在此描述的示例中所称的“第一”构件、“第一”组件、“第一”区域、“第一”层或“第一”部分也可被称为“第二”构件、“第二”组件、“第二”区域、“第二”层或“第二”部分。
贯穿说明书,当元件(诸如,层、区域或基底)被描述为“在”另一元件“上”、“连接到”或“结合到”另一元件时,它可直接“在”所述另一元件“上”、直接“连接到”或直接“结合到”所述另一元件,或者可存在介于它们之间的一个或多个其他元件。相比之下,当元件被描述为“直接在”另一元件“上”、“直接连接到”或“直接结合到”另一元件时,可不存在介于它们之间的其他元件。同样地,例如“在……之间”和“紧接在……之间”以及“与……相邻”和“与……紧邻”的表述也可为如前文所述那样被解释。
在此使用的术语仅用于描述特定示例的目的,而不应限制示例。如在此使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。如在此使用的,术语“和/或”包括相关所列项中的任何一个和任何两个或更多个的任何组合。如在此使用的,术语“包括”、“包含”和“具有”表明存在陈述的特征、整体、步骤、操作、元件、组件和/或它们的组合,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组合。在此针对示例或实施例(例如,关于示例或实施例可包括或实现什么)的术语“可”的使用表示存在包括或实现这样的特征的至少一个示例或实施例,而所有示例不限于此。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与在理解本公开之后通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的那些术语)应被解释为具有与它们在相关领域的上下文和本公开中的含义一致的含义,并且不应以理想化或过于形式化的含义进行解释。
在下文中,将参照附图详细描述示例。当参照附图描述示例时,相同的参考标号表示相同的构成元件,并且将省略与其相关的重复描述。
图1示出神经网络的结构的示例。参照图1,示出了包括卷积层和子采样层的神经网络100的结构。
神经网络100可以是例如包括多个层的深度神经网络(DNN)。DNN可包括例如卷积神经网络(CNN)、循环神经网络(RNN)、深度信念网络和/或受限玻尔兹曼机,但不必限于此。
除了图1中示出的卷积层和子采样层之外,神经网络100还可包括全连接层。子采样层也可被称为“池化层”。
神经网络100可包括多个层,所述多个层接收输入数据、提取输入特征图并从输入特征图生成输出数据。神经网络100可生成与通过执行核(在下文中,被称为“滤波器”)与输入数据之间的卷积运算而获得的结果对应的输出特征图。核与作为输入特征图的所生成的输出特征图之间的另一卷积运算可被执行,并且新的特征图可被输出。作为通过重复执行上述卷积运算而获得的结果,通过神经网络100识别输入图像的特征的结果可最终被输出。在下文中,为了便于描述,输入特征图可被称为“第一特征图”,并且输出特征图可被称为“第二特征图”。
例如,如果将大小为24×24像素的输入图像应用于图1的神经网络100的输入层110,则可通过输入图像与核之间的卷积运算,将输入图像输出为四个通道的大小为20×20的特征图。此外,可通过子采样处理,仅使用四个通道的大小为20×20的特征图的一部分像素值来输出四个通道的大小为10×10的特征图。子采样处理可包括例如最大池化和平均池化等。接下来,可通过特征图与核之间的重复卷积运算和重复子采样运算来降低大小为10×10的特征图的大小,因此可最终输出全局特征。
在神经网络100中,卷积运算和子采样(或池化)运算可在多个层中被重复地执行,因此可表示整个图像的鲁棒特征(robust feature)可从被应用于输入层110的输入图像被滤波并被输出。此外,输出特征可对应于全局特征,可被输入全连接层160中,以被最终提取为输入图像的识别结果。
对输出层(例如,全连接层160)的一个神经元具有影响的输入神经元的空间大小可被称为“感受野”(receptive field)115。如图1的下部所示,在卷积中,感受野115可对应于例如具有32×32×3的输入的输入层110的中间部分。
在下面的示例中,可使用膨胀卷积(dilated convolution,又称为空洞卷积)神经网络。膨胀卷积可以是通过向滤波器添加零填充来增大感受野的方案。感受野可被理解为滤波器同时考虑的视场(filed)。当感受野的大小增大时,滤波器可更容易地从图像提取整体特征。然而,在典型的CNN中,当感受野的大小增大时,滤波器的大小也增大,这会导致计算运算量的增加和过度拟合的增加。另一方面,在膨胀卷积神经网络中,可增大感受野的大小,同时保持滤波器的大小。
卷积运算可使用高输入/输出带宽,而在典型的CNN中,可使用相邻卷积运算之间的数据重用方案来减少输入/输出带宽。然而,当使用膨胀卷积神经网络时,典型的神经网络装置可能难以在相邻卷积运算之间重用数据。在下面的示例中,提供了用于在膨胀卷积神经网络中实现数据重用的一个或多个实施例。
图2示出核的膨胀率(dilation rate)、偏移和间隔的示例。例如,图2示出对于大小为3×3的核,具有膨胀率“1”的膨胀卷积210、具有膨胀率“2”的膨胀卷积220和具有膨胀率“3”的膨胀卷积230中的每个的结构。
在膨胀卷积210、220和230中,可用黑框标记在大小为3×3的核中使用的输入节点的位置。膨胀卷积的感受野可根据核的膨胀率而变化。在一个示例中,当膨胀率为“1”时,可如膨胀卷积210中所示来表示1-膨胀的3×3卷积(1-dilated 3×3convolution)。当膨胀率为“1”时,感受野可具有“3×3=9”的大小,即,感受野的大小可等于核的大小。
在另一示例中,当膨胀率为“2”时,可如膨胀卷积220中所示来表示2-膨胀的3×3卷积(2-dilated 3×3convolution)。当膨胀率为“2”时,感受野可具有“5×5=25”的大小。在另一示例中,当膨胀率为“3”时,可如膨胀卷积230中所示来表示3-膨胀的3×3卷积(3-dilated 3×3convolution)。当膨胀率为“3”时,感受野可具有“7×7=49”的大小。在DNN中,可使用膨胀卷积来对作为高分辨率图像的图像进行分类。
为了在神经网络装置中提取特征,滤波器(例如,核)可在以规则的间隔(例如,步长)遍历输入数据或输入图像的像素的同时执行卷积运算,并且可基于卷积运算的结果生成特征图或激活图。特征图可以是通过卷积运算压缩的原始图像的信息,并且可表示为例如矩阵。此外,激活图可对应于通过将激活函数应用于特征图而获得的结果。在一个示例中,激活图可对应于在CNN中执行卷积运算的卷积层的最终输出结果。
此外,滤波器可包括例如用于寻找图像的特征的公共参数或权重参数。滤波器可对应于上述的核。在下文中,术语“滤波器”和“核”可彼此互换使用。
如参考标号250所指示的,偏移251可被理解为指示对存储在存储器中的数据的操作的起始点的值。例如,为了对存储在存储器中的特征图或数据执行读取操作或写入操作,指示读取或写入存储在存储器中的数据的操作的起始点的值可对应于偏移251。例如,当偏移为“0”时,可从输入数据的第一点(例如,输入数据中的第一条数据)执行读取操作,当偏移为“1”时,可从输入数据的第二点(例如,输入数据中的第二条数据)执行读取操作。
当滤波器应用于输入图像时滤波器遍历输入图像或输入数据的像素的间隔253可被称为“步长”。例如,当步长为“2”时,滤波器可在以两个空格的间隔遍历输入图像的像素或数据的同时执行卷积运算。在这个示例中,步长参数或间隔可表示为“2”。
最终从CNN输出的数据的形状可根据例如核的大小、核的膨胀率和/或步长参数来改变。在卷积层中,由于滤波器和步长的作用,特征图的大小可小于输入数据的大小。
在一个示例中,当输入图像是彩色图像时,特征图的每个像素可具有与三种颜色(即,红色(R)、绿色(G)和蓝色(B))中的每种颜色对应的值,以表示自然颜色。在这个示例中,第一特征图可包括三个通道。在另一示例中,当输入图像是黑白图像时,特征图可表示黑白对比度(而不通过三种颜色红色(R)、绿色(G)和蓝色(B)表示自然颜色),并且第一特征图可包括一个通道。
图3示出了执行一维(1D)膨胀卷积运算的方法的示例。参照图3,示出了执行输入数据301与大小为“3”且膨胀率为“2”的核303之间的膨胀卷积运算的处理。
例如,可存在八条输入数据301(例如,“0、1、2、3、4、5、6、7”),并且卷积运算的步长参数(例如,间隔)可以是“1”。
在这个示例中,当核303的大小为“3”且膨胀率为“2”时,如参考标号310所指示的,神经网络装置可执行核303与八条输入数据301之中的与膨胀的核303的大小“5”对应的五条输入数据“0、1、2、3、4”之间的卷积运算。如参考标号310所指示的,与通过执行核303与五条输入数据“0、1、2、3、4”之间的卷积运算而获得的结果对应的输出数据可被写入输出特征图305的第一数据。
随后,当步长参数(例如,移动间隔)为“1”时,如参考标号320所指示的,核303可相对于输入数据301向右侧移动“1”。神经网络装置可执行核303和五条输入数据“1、2、3、4、5”(与核303移动到的位置对应)之间的卷积运算。如参考标号320所指示的,通过执行核303与五条输入数据“1、2、3、4、5”之间的卷积运算而获得的结果可被写入输出特征图305的第二数据。
如参考标号330和340所指示的,神经网络装置可在将核303向右侧移动“1”的同时顺序地执行核303与输入数据“2、3、4、5、6”之间的卷积运算以及核303与输入数据“3、4、5、6、7”之间的卷积运算。通过执行卷积运算而获得的各个结果可被顺序地写入输出特征图305的第三数据和第四数据。
在典型的卷积运算中,用于计算输出数据的输入窗可与用于计算相邻输出值的窗重叠。相比之下,用于计算膨胀卷积运算的输出数据的输入数据不会与用于计算相邻输出数据的输入数据重叠,而是可与用于计算以膨胀率与其间隔开的位置处的输出数据的窗重叠。在一个示例中,用于计算输出特征图305的第一数据的输入数据(即,“0”,“2”和“4”)可与用于计算输出特征图305的第三数据的输入数据(即,“2”,“4”和“6”)重叠,而不与用于计算输出特征图305的第二数据的输入数据(即,“1”,“3”和“5”)重叠。
在一个示例中,当输入窗重叠时,预先读取以降低存储器流量的数据可被缓冲在缓冲器中以供重用。当缓冲器如上所述被重用时,相应的缓冲器可被称为“重用缓冲器”。在这个示例中,当在以膨胀率跳过膨胀卷积的数据的同时执行计算时,一个或多个实施例的神经网络装置可通过缓冲执行重用。此外,可通过在下一步骤(step)中调整输入偏移以与先前数据相同的方式计算跳过的数据。
图4示出神经网络装置的配置的示例。参照图4,神经网络装置400可包括一个或多个存储器410和神经网络处理器430(例如,卷积引擎)。神经网络处理器430可以是例如被配置为执行膨胀卷积运算的卷积引擎。在下文中,术语“神经网络处理器”和“卷积引擎”可彼此互换使用。
一个或多个存储器410可存储与输入存储装置对应的第一特征图和与输出存储装置对应的第二特征图。在一个非限制性示例中,一个或多个存储器410包括输入存储装置的存储器410和输出存储装置的存储器410。在另一非限制性示例中,一个或多个存储器410是输入存储装置和输出存储装置两者的存储器410。
神经网络处理器430可包括获取器431、缓冲器433、处理元件435、写入器437和控制器439(例如,神经网络处理器430的一个或多个处理器或神经处理器)。
获取器431可从存储器410中的第一特征图获取输入数据。获取器431可向存储器410发送针对输入数据的请求,并且可根据由控制器439设置的偏移和间隔来获取输入数据。可基于膨胀率来确定由获取器431从输入特征图获取的相邻的多条输入数据之间的间隔。
获取器431可获取第一特征图中的与“通过从与第一偏移对应的索引的位置沿预定方向跳过第一间隔而到达的位置”对应的多条输入数据。例如,获取器431可获取第一特征图中的与“通过从与第一偏移对应的索引的位置沿水平方向跳过第一间隔而到达的位置”对应的多条输入数据,并且可获取第一特征图中的与“通过从与第一偏移对应的索引的位置沿垂直方向跳过与核的大小对应的间隔而到达的位置”对应的多条输入数据。在下文中,“第一偏移”可被理解为指示获取器431对存储在存储器中的第一特征图中的输入数据执行读取操作的起始点的值。
缓冲器433可存储(例如,缓冲)由获取器431从第一特征图获取的输入数据。缓冲器433可存储由获取器431获取的输入数据,并且可根据例如核的大小和/或步长参数将存储的输入数据发送到处理元件435。
处理元件435可通过执行输入数据与核之间的卷积运算来生成输出数据。处理元件435可对应于被配置为执行卷积运算的组件,并且还可被称为“运算器”。在下文中,术语“处理元件”和“运算器”可彼此互换使用。处理元件435可累积输入数据与核的乘积,并且可以通过激活将与最终结果值对应的输出数据发送到写入器437。
例如,当第一特征图包括多个通道时,处理元件435可执行多个通道中的每个通道与核之间的卷积运算。例如,当第一特征图包括三个通道(例如,R通道、G通道和B通道)时,处理元件435可执行核与三个通道中的每个通道(例如,R通道、G通道和B通道中的每个通道)之间的膨胀卷积运算。
写入器437可将由处理元件435生成的输出数据写入存储器410中的第二特征图。写入器437可根据由控制器439确定的偏移和间隔,将由处理元件435生成的输出数据写入存储器410中的第二特征图。例如,写入器437可在第二特征图中的通过从与第二偏移对应的索引的位置沿预定方向跳过第二间隔而到达的位置处写入多条输出数据。例如,写入器437可在第二特征图的相应行中的通过从与第二偏移对应的索引的位置沿水平方向跳过第二间隔而到达的位置处写入多条输出数据。在这个示例中,可基于例如膨胀率和卷积运算的步长参数中的一个或两个来确定在输出特征图中彼此相邻布置的多条输出数据之间的间隔。
根据基于核的膨胀率的间隔,控制器439可控制获取器431从存储器410无冗余地获取输入数据,并且控制写入器437将输出数据无冗余地写入存储器410。控制器439可基于核的膨胀率来确定偏移和间隔。
根据基于膨胀率的第一偏移和第一间隔,控制器439可控制获取器431从存储器410中的第一特征图无冗余地获取输入数据。
此外,根据基于膨胀率的第二偏移和第二间隔,控制器439可控制写入器437将输出数据无冗余地写入存储器410中的第二特征图。在下文中,“第二偏移”可被理解为指示写入器437执行将输出数据写入或存储在存储器410中的第二特征图中的操作的起始点的值。
控制器439可控制获取器431、缓冲器433、处理元件435和写入器437基于偏移和间隔通过多个步骤重复执行上述操作,其中,在每个步骤中,完成相应的输入数据与核之间的卷积运算。
在一个示例中,当卷积运算的步长参数是预设的第一值(例如,“1”)时,第一间隔和第二间隔可被设置为具有与对应于膨胀率的值相同的值。在这个示例中,对应于膨胀率的值可与膨胀率的值相同。第一偏移和第二偏移可被设置为具有与多个步骤之中的相应步骤的索引的值相同的值。下面将参照图6描述多个步骤的操作的非限制性示例。
在另一示例中,当卷积运算的步长参数大于第一值时,第一偏移和第二偏移可被设置为彼此不同,并且第一间隔和第二间隔可被设置为彼此不同。第一偏移可基于步长参数和多个步骤之中的相应步骤的索引的值的组合来设置,并且第二偏移可被设置为相应步骤的索引的值。第一间隔可被确定为具有与膨胀率的值相同的值,并且第二间隔可基于通过将膨胀率除以“膨胀率和步长参数的最大公约数(GCD)”而获得的值来确定。
当卷积运算的步长参数大于第一值时,由神经网络处理器430(例如,处理元件435)执行的多个步骤的迭代次数可基于第一偏移是否满足第一条件且第二偏移是否满足第二条件来确定,第一条件为:第一偏移具有与“通过从膨胀率和步长参数的最小公倍数(LCM)减去步长参数而获得的值”相同的值,第二条件为:第二偏移具有与“通过从将膨胀率除以膨胀率和步长参数的GCD所获得的值减去“1”而获得的值”相同的值。
根据示例,控制器439可分别包括在获取器431和写入器437中的每个中。例如,控制器439可包括包含在获取器431中的控制器和包含在写入器437中的控制器。
神经网络装置400可以是或可包括例如平视显示器(HUD)装置、三维(3D)数字信息显示器(DID)、导航***、3D移动装置、智能电话、智能电视(TV)和智能交通工具中的任何一个或者任何两个或更多个的任何组合。
图5示出神经网络装置的操作处理的示例。参照图5,示出神经网络装置的控制器通过操作510至操作550的处理执行膨胀卷积运算的处理。多个步骤的索引i可被初始化为“0”。
在操作510中,控制器可将开始信号发送到每个模块(例如,获取器、缓冲器、处理元件(或运算器)、写入器等)。在这个示例中,偏移值可被设置为多个步骤的索引i,并且间隔可被设置为核的膨胀率。在附图中,核的膨胀率可被表示为“rate”。
在操作520中,控制器可等待直到从每个模块接收到根据上述间隔和偏移的卷积运算完成信号。
在操作530中,当从每个模块接收到卷积运算完成信号时,控制器可重复执行上述处理,直到索引i的值变得等于通过从核的膨胀率减去“1”而获得的值。在操作540中,控制器可确定索引i的值是否等于通过从核的膨胀率减去“1”而获得的值。当在操作540中确定索引i的值等于通过从核的膨胀率减去“1”而获得的值时,控制器可完成卷积运算。当确定索引i的值不等于(例如,确定为不同于或小于)通过从核的膨胀率减去“1”而获得的值时,控制器可在操作550中使索引i的值递增“1”,并且可通过重复执行从操作510至操作540的处理来执行膨胀卷积运算。
图6示出神经网络装置的多步骤操作方法的示例。参照图6,示出当步长参数为“1”时,神经网络装置600通过步骤0和步骤1执行1D卷积运算的处理。在这个示例中,核可具有“3”的大小和“2”的膨胀率,并且步长参数可以是“1”。
在一个示例中,当步长参数是第一值(例如,“1”)时,控制器639可将第一偏移和第二偏移的上限设置为与膨胀率对应的值(例如,膨胀率“2”-1=1)。在这个示例中,偏移值可被设置为相应步骤的索引。此外,控制器639可将第一间隔和第二间隔设置为具有与膨胀率“2”相同的值。神经网络装置600的多个步骤的数量可与膨胀率“2”相同,因此,步骤0和步骤1可被执行两次。
下面将描述步骤0中的神经网络装置600的操作。获取器631可根据第一偏移(=0)和第一间隔(=2),获取与通过从第一数据“0”跳过第一间隔(=2)而到达的位置对应的输入数据“0、2、4、6”,第一数据“0”是存储在存储器610中的第一特征图613的相应行中的八个数据(诸如,“0、1、2、3、4、5、6、7”)之中的与第一偏移(=0)对应的索引的位置。
获取器631可将从存储器610获取的输入数据“0、2、4、6”传送到缓冲器633。缓冲器633可存储输入数据“0、2、4、6”。
乘法器和累加器(MAC)635可执行核与存储在缓冲器633中的输入数据“0、2、4、6”之间的卷积运算。例如,MAC 635可通过执行输入数据“0、2、4、6”与大小为“3”的核之间的卷积运算来生成输出数据。如上所述,根据示例,提供了一种用于通过基于膨胀卷积运算获取输入数据来实现甚至在膨胀卷积神经网络中的数据重用的技术。
写入器637可将输出数据写入与通过从第一数据“0”跳过第二间隔(=2)而到达的位置对应的第三数据“2”,第一数据“0”是第二特征图616中的与第二偏移(=0)对应的索引的位置。
例如,写入器637可将输入数据“0、2、4”与核之间的卷积运算的结果写入第二特征图616的第一数据,并且可将输入数据“2、4、6”与核之间的卷积运算的结果写入第二特征图616的第三数据。在一个非限制性示例中,第一数据和第三数据可分别对应于分别由图3的参考标号310和330指示的输出特征图305的第一数据和第三数据。在这个示例中,输入数据“2、4”可被重用。
接下来,控制器639可使步骤索引i递增并执行步骤1的操作。
在步骤1中,获取器631可根据第一偏移(=1)和第一间隔(=2),获取与通过从第二数据“1”跳过第一间隔(=2)而到达的位置对应的输入数据“1、3、5、7”,第二数据“1”是存储在存储器610中的第一特征图613的相应行中的八个数据(诸如,“0、1、2、3、4、5、6、7”)中的与第一偏移(=1)对应的索引的位置。
获取器631可将从存储器610获取的输入数据“1、3、5、7”传送到缓冲器633。缓冲器633可存储输入数据“1、3、5、7”。
MAC 635可执行存储在缓冲器633中的输入数据“1、3、5、7”与核之间的卷积运算。例如,MAC 635可通过执行输入数据“1、3、5、7”与大小为“3”的核之间的卷积运算来生成输出数据。
写入器637可将输出数据写入与通过从第二数据“1”跳过第二间隔(=2)而到达的位置对应的第四数据“3”,第二数据“1”是第二特征图616中的与第二偏移(=1)对应的索引的位置。
例如,写入器637可将输入数据“1、3、5”与核之间的卷积运算的结果写入第二特征图616的第二数据,并且可将输入数据“3、5、7”与核之间的卷积运算的结果写入第二特征图616的第四数据。在一个非限制性示例中,第二数据和第四数据可分别对应于分别由图3的参考标记320和340指示的输出特征图305的第二数据和第四数据。在这个示例中,输入数据“3、5”可被重用。
当步骤0和步骤1的操作完成时,可如第二特征图619中所示存储四个数据的所有值。
图7示出神经网络装置的操作方法的示例。参照图7,当步长参数大于“1”时,神经网络装置700的操作可被执行。
当包括具有大于“1”的值的步长参数时,神经网络装置700可通过将获取器731的偏移和间隔调整为不同于写入器737的偏移和间隔来执行卷积运算。
当卷积运算的步长参数大于第一值(例如,“1”)时,控制器739可将获取器731的第一偏移Offset_f和写入器737的第二偏移Offset_w设置为彼此不同。例如,控制器739可基于多步骤索引和步长参数的组合(例如,乘积)来设置第一偏移,并且可将第二偏移设置为多步骤索引。
此外,控制器739可将获取器731的第一间隔Interval_f和写入器737的第二间隔Interval_w设置为彼此不同。控制器739可将第一间隔Interval_f确定为具有与膨胀率r相同的值,并且可将第二间隔Interval_w确定为具有通过将膨胀率r除以“膨胀率r和步长参数s的GCD”而获得的值“r/gcd(r,s)”。
控制器739可控制获取器731根据第一偏移Offset_f和第一间隔Interval_f从存储器710的第一特征图无冗余地获取输入数据,使得输入数据可存储在缓冲器733中。控制器739可控制缓冲器733将存储的输入数据发送到MAC735。
控制器739可控制MAC 735通过执行核与从缓冲器733接收的输入数据之间的卷积运算来生成输出数据,并将输出数据传送到写入器737。
控制器739可控制写入器737根据第二偏移Offset_w和第二间隔Interval_w将输出数据无冗余地写入存储器710中的第二特征图(未示出)。如果由神经网络装置700重复执行卷积运算,则i可增大步长那么多,并且j可增大“1”。
图8示出神经网络装置的操作处理的示例。参照图8,示出当步长参数大于“1”时,神经网络装置的控制器通过操作810至操作850的处理来执行膨胀卷积运算的处理。
在操作810中,控制器可将开始信号发送到每个模块(例如,获取器、缓冲器、处理元件(或运算器)、写入器等)。在这个示例中,第一偏移Offset_f的值可被设置为“i”,并且第一间隔Interval_f的值可被设置为与核的膨胀率r相同。此外,第二偏移Offset_w的值可被设置为“j”,并且第二间隔Interval_w可被设置为通过将膨胀率r除以“膨胀率r和步长参数s的GCD”而获得的值“r/gcd(r,s)”。这里,i可表示多步骤索引和步长参数的乘积,并且j可表示多步骤索引。
在操作820中,控制器可等待直到从每个模块接收到根据上述间隔和偏移的卷积运算完成信号。
当在操作830中从每个模块接收到卷积运算完成信号时,在操作840中,控制器可确定被设置为第一偏移的值的i是否满足第一条件并且被设置为第二偏移的值的j是否满足第二条件,第一条件为:i具有与通过从膨胀率r和步长参数s的LCM减去步长参数s而获得的值“lcm(r,s)-s”相同的值,第二条件为:j具有与通过从将膨胀率r除以膨胀率r和步长参数s的GCD而获得的值减去“1”而获得的值“r/(gcd(r,s))-1”相同的值。
在一个示例中,当在操作840中确定第一偏移和第二偏移分别满足第一条件和第二条件时,控制器可完成卷积运算。在另一示例中,当在操作840中确定第一偏移和第二偏移未分别满足第一条件和第二条件时,控制器可在操作850中将i的值增大“s”并且将j的值增大“1”。随后,控制器可通过重复执行从操作810至操作840的处理来执行卷积运算。
图9示出神经网络装置的配置的示例。参照图9,示出其中控制器被包括在获取器931和写入器937中的每个中的神经网络装置900的配置。
在一个示例中,可设置被配置为控制获取器931的操作的第一控制器932和被配置为控制写入器937的操作的第二控制器938。第一控制器932可控制获取器931根据第一偏移Offset_f和第一间隔Interval_f从存储器910中的第一特征图(未示出)无冗余地获取输入数据,使得输入数据可存储在缓冲器933中。
第二控制器938可控制写入器937根据第二偏移Offset_w和第二间隔Interval_w将处理元件935的输出数据无冗余地写入存储器910中的第二特征图(未示出)。
在这个示例中,分配给缓冲器933和处理元件935的任务可用于总的膨胀卷积运算,而非用于单个步骤。
图10示出在神经网络装置中执行二维(2D)卷积运算的方法的示例。参照图10,示出执行输入数据1010与大小为3×3且膨胀率为“2”的核之间的2D膨胀卷积运算的处理。
在步骤0中,神经网络装置可通过在存储器中的第一特征图1010和第二特征图1050和1090中沿行方向将第一偏移和第二偏移设置为“0”并且将第一间隔和第二间隔设置为“2”来进行操作。
在这个示例中,获取器可从第一特征图1010中将被执行计算的行开始按照作为核的大小的“3”沿列方向以与第一间隔对应的两个空格的间隔获取输入数据。例如,获取器可获取输入数据['0,0'、'2,0'、'4,0'],输入数据['0,0'、'2,0'、'4,0']对应于通过从将被执行操作的第一行中的与第一偏移对应的索引的位置(0,0)沿列方向跳过与核的大小(=3)对应的第一间隔(=2)而到达的位置。以相同的方式,获取器可获取输入数据['0,2'、'2,2'、'4,2']、['0,4'、'2,4'、'4,4']、['0,6'、'2,6'、'4,6']和['0,8'、'2,8'、'4,8']。尽管为了便于描述,上面已经描述了优先沿列方向获取输入数据的示例,但是根据实施方式,设计可被改变,使得输入数据优先沿行方向被获取。
由获取器从第一特征图1010获取的输入数据可存储在缓冲器1030中,并且写入器可将核与存储在缓冲器1030中的输入数据之间的卷积运算的结果作为输出数据写入第二特征图1050。在这个示例中,写入器可通过针对第二特征图1050的相应行跳过第二间隔(=2)来顺序地写入输出数据(0,0)、(0,2)、(0,4)。
当在步骤0中完成所有行的操作时,神经网络装置可执行下一步骤,即,步骤1。在步骤1中,神经网络装置可将第一偏移和第二偏移设置为“1”,并且可重复执行上述处理。
例如,获取器可获取输入数据['0,1'、'2,1'、'4,1']、['0,3'、'2,3'、'4,3']、['0,5'、'2,5'、'4,5']、['0,7'、'2,7'、'4,7']和['0,9'、'2,9'、'4,9']。由获取器从第一特征图1010获取的输入数据可存储在缓冲器1070中,并且写入器可将核与存储在缓冲器1070中的输入数据之间的卷积运算的结果作为输出数据写入第二特征图1090。在这个示例中,写入器可通过针对第二特征图1090的相应行跳过第二间隔(=2)来顺序地写入输出数据(0,1)、(0,3)、(0,5)。神经网络装置还可在步骤1中对每个行执行膨胀卷积运算。
图11示出神经网络装置的操作方法的示例。参照图11,通过操作1110至操作1150的处理,神经网络装置可获取存储在存储器中的数据,可执行卷积运算,并且可将运算结果作为输出数据写入存储器。
在操作1110中,神经网络装置可根据基于核的膨胀率的第一间隔从存储器中的第一特征图获取输入数据。神经网络装置可根据基于膨胀率的第一间隔和第一偏移从第一特征图无冗余地获取输入数据。在操作1120中,神经网络装置可将输入数据存储在缓冲器中。
在操作1130中,神经网络装置可通过执行输入数据与核之间的卷积运算来生成输出数据。例如,当第一特征图包括多个通道时,神经网络装置可执行多个通道与核之间的卷积运算。
在操作1140中,神经网络装置可将输出数据写入存储器中的第二特征图。可基于例如卷积运算的膨胀率和步长参数中的至少一个来确定在第二特征图中彼此相邻布置的多条输出数据之间的间隔。
在操作1150中,神经网络装置可根据基于核的膨胀率的第二间隔将输出数据写入存储器中的第二特征图。神经网络装置可根据基于膨胀率的第二间隔和第二偏移将输出数据无冗余地写入存储器中的第二特征图。例如,神经网络装置可在第二特征图中的通过从与第二偏移对应的索引的位置跳过第二间隔而到达的位置处写入输出数据。
图12示出神经网络装置的配置的示例。参照图12,示出包括存储器1210、缓冲器1230和MAC 1250的神经网络装置的结构。在这个示例中,缓冲器1230可对应于重用缓冲器。
神经网络装置可使用重用缓冲器来提升带宽。当在高性能神经网络处理器中执行膨胀卷积运算时,会发生存储器成本的问题。这是因为需要高性能神经网络处理器来执行膨胀卷积运算,并且根据神经网络处理器的计算能力的提高所需的存储器的带宽也增大。
在一个示例中,缓冲器1230可用作重用缓冲器,因此一个或多个实施例的神经网络装置可利用小尺寸的缓冲器执行膨胀卷积运算,并且即使不使用附加存储器也可增大带宽。
神经网络装置可以是或可包括例如HUD装置、3D DID、导航***、3D移动装置、智能电话、智能电视和/或智能交通工具,但不必限于此。3D移动装置可被解释为包括所有显示装置(诸如,以用于显示增强现实(AR)、虚拟现实(VR)和/或混合现实(MR)的显示装置、头戴式显示器(HMD)、面戴式显示器(FMD)等为例)。
在此关于图1至图12描述的神经网络装置、存储器、神经网络处理器、获取器、缓冲器、处理元件、写入器、控制器、MAC、第一控制器、第二控制器、神经网络装置400、存储器410、神经网络处理器430、获取器431、缓冲器433、处理元件435、写入器437、控制器439、神经网络装置600、存储器610、神经网络处理器630、获取器631、缓冲器633、MAC 635、写入器637、控制器639、神经网络装置700、存储器710、神经网络处理器730、获取器731、缓冲器733、MAC 735、写入器737、控制器639、神经网络装置900、存储器910、神经网络处理器930、获取器931、第一控制器932、缓冲器933、处理元件935、写入器937、第二控制器938、存储器1210、缓冲器1230、MAC 1250以及其他设备、装置、单元、模块和组件由硬件组件实现或表示硬件组件。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器、以及被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,通过计算硬件(例如,通过一个或多个处理器或计算机)来实现执行在本申请中描述的操作的硬件组件中的一个或多个硬件组件。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器、或者被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现。在一个示例中,处理器或计算机包括或者连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作***(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简明,单数术语“处理器”或“计算机”可用于在本申请中描述的示例的描述中,但是在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件、或多种类型的处理元件、或两者。例如,单个硬件组件、或者两个或更多个硬件组件可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可由一个或多个处理器、或者处理器和控制器来实现,并且一个或多个其他硬件组件可由一个或多个其他处理器、或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。
图1至图12中示出的执行本申请中描述的操作的方法由计算硬件(例如,由一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述执行指令或软件以执行在本申请中描述的由所述方法执行的操作。例如,单个操作、或者两个或更多个操作可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可由一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可基于附图中示出的框图和流程图以及说明书中的相应描述使用任何编程语言来编写指令或软件,附图中示出的框图和流程图以及说明书中的相应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储装置、硬盘驱动器(HDD)、固态驱动器(SSD)、闪存、卡式存储器(诸如,多媒体卡或微型卡(例如,安全数字(SD)或极限数字(XD)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,任何其他装置被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并将指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机,使得一个或多个处理器或计算机能够执行指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在联网的计算机***上,使得指令或软件以及任何相关联的数据、数据文件和数据结构以分布式方式被一个或多个处理器或计算机存储、访问和执行。
虽然本公开包括特定示例,但是在理解本申请的公开之后将清楚的是,在不脱离权利要求及其等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述应被认为可适用于其他示例中的相似特征或方面。如果描述的技术以不同的顺序执行,和/或如果描述的***、架构、装置或电路中的组件以不同的方式被组合、和/或由其他组件或其等同物替代或补充,则可实现合适的结果。
Claims (37)
1.一种神经网络装置,包括:
存储器,被配置为存储第一特征图和第二特征图;以及
神经网络处理器,被配置为操作神经网络,并且包括:
获取器,被配置为从存储器的第一特征图获取输入数据,
缓冲器,被配置为存储输入数据,
运算器,被配置为通过执行输入数据与核之间的卷积运算来生成输出数据,
写入器,被配置为将输出数据写入存储器的第二特征图,以及
控制器,被配置为:根据在多个步骤中基于核的膨胀率确定的一个或多个间隔和一个或多个偏移,控制获取器获取输入数据并控制写入器写入输出数据。
2.根据权利要求1所述的神经网络装置,其中,为了控制获取器,控制器被配置为:根据基于膨胀率确定的所述一个或多个偏移中的第一偏移和所述一个或多个间隔中的第一间隔,控制获取器从存储器的第一特征图无冗余地获取输入数据。
3.根据权利要求2所述的神经网络装置,其中,为了获取输入数据,获取器被配置为:获取第一特征图中的与通过从与第一偏移对应的索引的位置沿预定方向跳过第一间隔而到达的位置对应的多条输入数据。
4.根据权利要求1所述的神经网络装置,其中,为了控制写入器,控制器被配置为:根据基于膨胀率确定的所述一个或多个偏移中的第二偏移和所述一个或多个间隔中的第二间隔,控制写入器将输出数据无冗余地写入存储器的第二特征图。
5.根据权利要求4所述的神经网络装置,其中,为了写入输出数据,写入器被配置为:在第二特征图中的通过从与第二偏移对应的索引的位置沿预定方向跳过第二间隔而到达的位置处写入输出数据。
6.根据权利要求1所述的神经网络装置,其中,
为了获取输入数据,获取器被配置为:根据所述一个或多个偏移中的第一偏移和所述一个或多个间隔中的第一间隔,从存储器的第一特征图获取输入数据,并且
为了写入输出数据,写入器被配置为:根据所述一个或多个偏移中的第二偏移和所述一个或多个间隔中的第二间隔,将输出数据写入存储器的第二特征图。
7.根据权利要求6所述的神经网络装置,其中,响应于卷积运算的步长参数为预设的第一值,控制器被配置为:
将第一间隔和第二间隔设置为具有与对应于膨胀率的值相同的值;以及
将第一偏移和第二偏移设置为具有与所述多个步骤之中的相应步骤的索引的值相同的值。
8.根据权利要求6所述的神经网络装置,其中,响应于卷积运算的步长参数大于或等于预设的第一值,控制器被配置为:
将第一间隔和第二间隔设置为彼此不同;以及
将第一偏移和第二偏移设置为彼此不同。
9.根据权利要求8所述的神经网络装置,其中,为了设置第一偏移和第二偏移,控制器被配置为:
基于步长参数和所述多个步骤之中的相应步骤的索引的值的组合来设置第一偏移;以及
将第二偏移设置为相应步骤的索引的值。
10.根据权利要求8所述的神经网络装置,其中,为了设置第一间隔和第二间隔,控制器被配置为:
将第一间隔设置为具有与膨胀率的值相同的值;以及
将第二间隔设置为通过将膨胀率除以膨胀率和步长参数的最大公约数而获得的值。
11.根据权利要求8所述的神经网络装置,其中,控制器被配置为基于第一偏移是否满足第一条件并且基于第二偏移是否满足第二条件来确定所述多个的总数量,第一条件为:第一偏移具有与通过从膨胀率和步长参数的最小公倍数减去步长参数而获得的值相同的值,第二条件为:第二偏移具有与通过从将膨胀率除以膨胀率和步长参数的最大公约数所获得的值减去“1”而获得的值相同的值。
12.根据权利要求1所述的神经网络装置,其中,为了生成输出数据,响应于第一特征图包括多个通道,运算器被配置为:执行所述多个通道与核之间的膨胀卷积运算。
13.根据权利要求1所述的神经网络装置,其中,在第二特征图中彼此相邻布置的多条输出数据之间的间隔基于以下参数中的任意一个或两个来确定:膨胀率和卷积运算的步长参数。
14.根据权利要求1所述的神经网络装置,其中,神经网络装置包括平视显示器装置、三维数字信息显示器、导航***、三维移动装置、智能电话、智能电视和智能交通工具中的任何一个或者任何两个或更多个的任何组合。
15.根据权利要求1所述的神经网络装置,其中,存储器被配置为存储指令,所述指令在由神经网络处理器执行时,配置神经网络处理器操作神经网络。
16.一种神经网络装置的操作方法,所述方法包括:
根据基于核的膨胀率确定的第一间隔,从存储器的第一特征图获取输入数据;
将输入数据存储在缓冲器中;
通过执行输入数据与核之间的卷积运算来生成输出数据;以及
根据基于核的膨胀率确定的第二间隔,将输出数据写入存储器的第二特征图。
17.根据权利要求16所述的操作方法,其中,获取输入数据的步骤包括:根据第一间隔和基于膨胀率确定的第一偏移,从第一特征图无冗余地获取输入数据。
18.根据权利要求17所述的操作方法,其中,获取输入数据的步骤包括:获取第一特征图中的与通过从与第一偏移对应的索引的位置沿预定方向跳过第一间隔而到达的位置对应的多条输入数据。
19.根据权利要求16所述的操作方法,其中,写入输出数据的步骤包括:根据第二间隔和基于膨胀率确定的第二偏移,将输出数据无冗余地写入存储器的第二特征图。
20.根据权利要求19所述的操作方法,其中,写入输出数据的步骤包括:在第二特征图中的通过从与第二偏移对应的索引的位置沿预定方向跳过第二间隔而到达的位置处写入输出数据。
21.根据权利要求16所述的操作方法,其中,
获取输入数据的步骤包括:根据第一间隔和基于膨胀率确定的第一偏移,从第一特征图获取输入数据,以及
写入输出数据的步骤包括:根据第二间隔和基于膨胀率确定的第二偏移,将输出数据写入存储器的第二特征图。
22.根据权利要求21所述的操作方法,
其中,所述方法在多个步骤中被重复地执行,并且
所述方法还包括:响应于卷积运算的步长参数为预设的第一值,将第一间隔和第二间隔设置为具有与对应于膨胀率的值相同的值,并且将第一偏移和第二偏移设置为具有与所述多个步骤之中的相应步骤的索引的值相同的值。
23.根据权利要求21所述的操作方法,还包括:响应于卷积运算的步长参数大于或等于预设的第一值,将第一间隔和第二间隔设置为彼此不同,并且将第一偏移和第二偏移设置为彼此不同。
24.根据权利要求23所述的操作方法,还包括:
基于步长参数和多个步骤之中的相应步骤的索引的值的组合来设置第一偏移;以及
将第二偏移设置为相应步骤的索引的值。
25.根据权利要求23所述的操作方法,还包括:
将第一间隔设置为具有与膨胀率的值相同的值;以及
将第二间隔设置为通过将膨胀率除以膨胀率和步长参数的最大公约数而获得的值。
26.根据权利要求23所述的操作方法,其中,
所述方法在多个步骤中被重复地执行,并且
基于第一偏移是否满足第一条件并且基于第二偏移是否满足第二条件来确定所述多个步骤的数量,第一条件为:第一偏移具有与通过从膨胀率和步长参数的最小公倍数减去步长参数而获得的值相同的值,第二条件为:第二偏移具有与通过从将膨胀率除以膨胀率和步长参数的最大公约数所获得的值减去“1”而获得的值相同的值。
27.根据权利要求16所述的操作方法,其中,生成输出数据的步骤包括:响应于第一特征图包括多个通道,执行所述多个通道与核之间的膨胀卷积运算。
28.根据权利要求16所述的操作方法,其中,在第二特征图中彼此相邻布置的多条输出数据之间的间隔基于以下参数中的任意一个或两个来确定:膨胀率和卷积运算的步长参数。
29.一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时,配置处理器执行根据权利要求16所述的操作方法。
30.一种神经网络装置,包括:
一个或多个处理器,被配置为:
基于核的膨胀率,确定存储在存储器中的第一特征图的片段之中的待获取的输入数据;
从存储器获取所确定的输入数据并将输入数据存储在缓冲器中;
通过执行输入数据与核之间的卷积运算来生成输出数据;以及
将输出数据写入存储器中的第二特征图。
31.根据权利要求30所述的神经网络装置,其中,为了确定待获取的输入数据,所述一个或多个处理器被配置为:将输入数据确定为第一特征图的以膨胀率分隔开的片段。
32.根据权利要求30所述的神经网络装置,其中,为了执行卷积运算,所述一个或多个处理器被配置为:执行输入数据的第一部分与核之间的第一卷积运算以及输入数据的第二部分与核之间的第二卷积运算。
33.根据权利要求32所述的神经网络装置,其中,所述第二部分包括:
第一特征图的包括在所述第一部分中的一个或多个片段;以及
第一特征图的未包括在所述第一部分中的一个或多个片段。
34.根据权利要求30所述的神经网络装置,其中,响应于输出数据的写入,所述一个或多个处理器被配置为:基于膨胀率和步长参数来确定存储在存储器中的第一特征图的片段之中的待获取的后续输入数据。
35.根据权利要求34所述的神经网络装置,其中,后续输入数据包括:第一特征图的与包括在输入数据中的片段不同的片段。
36.一种神经网络装置的操作方法,所述方法包括:
确定第一特征图的以核的膨胀率分隔开的片段;
通过执行所述片段与核之间的卷积运算来生成第二特征图,其中,核不以膨胀率膨胀,并且第二特征图对应于通过执行第一特征图与以膨胀率膨胀的核之间的卷积运算而生成的特征图。
37.根据权利要求36所述的方法,其中,所述片段与核之间的卷积运算包括第一卷积运算和第二卷积运算,并且在第一卷积运算中使用的片段的一部分在第二卷积运算中被重用。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0158933 | 2020-11-24 | ||
KR1020200158933A KR20220071605A (ko) | 2020-11-24 | 2020-11-24 | 신경망 장치 및 신경망 장치의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114548361A true CN114548361A (zh) | 2022-05-27 |
Family
ID=78789696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111402485.3A Pending CN114548361A (zh) | 2020-11-24 | 2021-11-23 | 神经网络装置及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220164674A1 (zh) |
EP (1) | EP4002218A1 (zh) |
KR (1) | KR20220071605A (zh) |
CN (1) | CN114548361A (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200066952A (ko) * | 2018-12-03 | 2020-06-11 | 삼성전자주식회사 | 확장 컨벌루션 연산을 수행하는 장치 및 방법 |
US11423251B2 (en) * | 2019-01-03 | 2022-08-23 | Samsung Electronics Co., Ltd. | Method and system of performing convolution in neural networks with variable dilation rate |
-
2020
- 2020-11-24 KR KR1020200158933A patent/KR20220071605A/ko active Search and Examination
-
2021
- 2021-11-10 US US17/523,129 patent/US20220164674A1/en active Pending
- 2021-11-23 CN CN202111402485.3A patent/CN114548361A/zh active Pending
- 2021-11-24 EP EP21210174.5A patent/EP4002218A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220164674A1 (en) | 2022-05-26 |
EP4002218A1 (en) | 2022-05-25 |
KR20220071605A (ko) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109754064B (zh) | 执行解卷积的神经网络的方法和装置 | |
CN108073981B (zh) | 处理卷积神经网络的方法和设备 | |
CN110073359B (zh) | 用于卷积神经网络的有效数据布局 | |
CN107368886B (zh) | 基于重复使用小规模卷积神经网络模块的神经网络*** | |
CN113424201A (zh) | 神经网络处理器 | |
KR20200066952A (ko) | 확장 컨벌루션 연산을 수행하는 장치 및 방법 | |
US20210064992A1 (en) | Method and apparatus for processing data | |
CN112561045A (zh) | 用于图像识别的神经网络的处理器实现的方法和设备 | |
US11836971B2 (en) | Method and device with convolution neural network processing | |
US11810397B2 (en) | Method and apparatus with facial image generating | |
US12014505B2 (en) | Method and apparatus with convolution neural network processing using shared operand | |
CN114548361A (zh) | 神经网络装置及其操作方法 | |
US20220067429A1 (en) | Method and apparatus with image processing | |
EP3832551B1 (en) | Method and apparatus for processing data | |
US20240046413A1 (en) | Methods of batch-based dnn processing for efficient analytics | |
US11681915B2 (en) | Neural network method and apparatus | |
EP4231203A1 (en) | Method and apparatus with pruning background | |
CN116128023A (zh) | 硬件加速器、电子装置和用于神经网络的装置 | |
CN118071596A (zh) | 用于图像分辨率提升的装置和方法 | |
CN117911694A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN115457582A (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 |