CN111902813A - 用于卷积运算的装置以及方法 - Google Patents
用于卷积运算的装置以及方法 Download PDFInfo
- Publication number
- CN111902813A CN111902813A CN201980021781.3A CN201980021781A CN111902813A CN 111902813 A CN111902813 A CN 111902813A CN 201980021781 A CN201980021781 A CN 201980021781A CN 111902813 A CN111902813 A CN 111902813A
- Authority
- CN
- China
- Prior art keywords
- vector
- partial
- matrix
- convolution
- elements
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 239000013598 vector Substances 0.000 claims abstract description 152
- 239000011159 matrix material Substances 0.000 claims abstract description 77
- 239000000872 buffer Substances 0.000 claims description 120
- 239000000284 extract Substances 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 17
- 238000013527 convolutional neural network Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
根据本发明一实施例的卷积运算方法可以包括:相互不同地提取多个部分矩阵的步骤,上述部分矩阵相应于M×N矩阵的特征数据的局部区域,并且具有与K×L矩阵的卷积核相同的维数,其中,M和N是自然数,K是小于等于M的自然数,L是小于等于N的自然数;生成第一向量和第二向量的步骤,上述第一向量包括上述特征数据的元素中属于至少一个上述部分矩阵的元素作为元素,上述第二向量包括上述卷积核的元素作为元素;对于上述部分矩阵每一个,提取包括自己的所有元素且作为上述第一向量的一部分的部分向量的步骤;以及对于上述部分矩阵每一个,执行对应的部分向量的各元素与在上述第二向量内位于对应位置的元素之间的相乘,并且将上述相乘的执行结果全部相加,从而算出与上述卷积核的卷积运算结果的步骤。
Description
技术领域
本发明涉及用于在利用卷积神经网络(convolution neural network,CNN)等特定的提取模型识别对象数据时高效率地执行卷积(convolution)运算的装置以及方法。
作为参考,本申请要求基于2018年3月27日提交的韩国专利申请(申请号10-2018-0035104)的优先权。这样的成为优先权基础的相应申请的全部内容作为参考文献引用到本申请中。
背景技术
最近,自动分析图像数据或文本数据等识别对象数据并将上述识别对象数据按照类型分类或者提取出包含在上述识别对象数据中的信息的技术作为人工智能(artificialintelligence,AI)技术中的一种备受瞩目。这样的技术可以应用于如自动驾驶、医学图像读取、安全系统等各种领域,而不仅仅是识别图像数据中的客体类型。
尤其是,最近如深度学习(deep learning)等机器学习(machine learning)技法应用于数据识别技术中。在这样的深度学习技法中,众所周知的卷积神经网络技法在图像数据识别中表现出很高的性能。
只是,在利用卷积神经网络技法识别包含在识别对象数据中的信息的过程中,执行多次的以乘法和加法的组合构成的卷积(convolution)运算。这样重复执行的庞大的运算量的卷积运算有可能成为通过卷积神经网络技法进行数据识别的障碍。尤其是,在如上述的自动驾驶那样快速运算很重要的图像数据识别领域,卷积运算所需的时间有可能成为大问题。
并且,尽管已经有许多关于高效率地执行上述卷积运算的方法的研究,但是即使通过这些研究,很多情况下还是存在装置实现方面的问题,例如用于实现算法(algorithm)方面的高效率的硬件(hardware)构成变为复杂等。
(专利文献1)韩国公开专利公报第10-2016-0122452号(2016.10.24公开)
发明内容
技术问题
本发明要解决的问题是提供卷积运算装置以及方法,在执行卷积运算时,能够同时实现运算的高效化和装置实现方面的合理化。
需要说明的是,本发明要解决的问题并不限定于上述的技术问题,本发明所属技术领域的技术人员通过下面的说明可以理解未提及的其它要解决的问题。
解决问题的手段
根据本发明一实施例的卷积运算方法可以包括:相互不同地提取多个部分矩阵的步骤,上述部分矩阵相应于M×N矩阵的特征数据的局部区域,并且具有与K×L矩阵的卷积核相同的维数,其中,M和N是自然数,K是小于等于M的自然数,L是小于等于N的自然数;生成第一向量和第二向量的步骤,上述第一向量包括上述特征数据的元素中属于至少一个上述部分矩阵的元素作为元素,上述第二向量包括上述卷积核的元素作为元素;对于上述部分矩阵每一个,提取包括自己的所有元素且作为上述第一向量的一部分的部分向量的步骤;以及,对于上述部分矩阵每一个,执行对应的部分向量的各元素与在上述第二向量内位于对应位置的元素之间的相乘,并且将上述相乘的执行结果全部相加,从而算出与上述卷积核的卷积运算结果的步骤。
根据本发明一实施例的卷积运算装置可以包括:第一缓冲部,相互不同地提取多个部分矩阵,并且生成第一向量,上述部分矩阵相应于M×N矩阵的特征数据的局部区域,并且具有与K×L矩阵的卷积核相同的维数,其中,M和N是自然数,K是小于等于M的自然数,L是小于等于N的自然数,上述第一向量包括上述特征数据的元素中属于至少一个上述部分矩阵的元素作为元素;第二缓冲部,生成第二向量,上述第二向量包括上述卷积核的元素作为元素;以及运算部,对于上述部分矩阵每一个,提取包括自己的所有元素且作为上述第一向量的一部分的部分向量,对于上述部分矩阵每一个,执行对应的部分向量的各元素与在上述第二向量内位于对应位置的元素之间的相乘,并且将上述相乘的执行结果全部相加,从而算出与上述卷积核的卷积运算结果。
发明效果
根据本发明一实施例,能够将卷积运算装置的缓冲(buffer)部构成为具有每单位面积的数据存储效率高的结构的上层缓冲部和具有同时可以读取多个位置的数据值的结构的下层缓冲部的两个级别。并且,通过下层缓冲部中的数据存储位置选择技法,可以实现缓冲部结构所需的面积的最小化。
由此,能够实现空间利用的高效率化等实现装置方面的效果,同时还能够实现运算的高效率性。并且,能够支持各种尺寸的卷积核和扫描间隔等,因此能够进一步提高方便性。
附图说明
图1a至图1c是用于从概念上说明卷积运算中的零跳跃(zero skip)的图。
图2是示例性示出用于应用卷积神经网络技法的硬件装置的图。
图3a至图3c是用于说明根据本发明一实施例的卷积运算装置的结构的图。
图4a至图5c是用于说明根据本发明一实施例的由卷积运算装置执行的卷积运算过程的图。
图6a至图6c是用于说明根据本发明一实施例的在卷积运算过程中应用了卷积核拆分的情况的图。
图7a以及图7b是用于说明根据本发明一实施例的在卷积运算过程中应用了扫描间隔扩大的情况的图。
图8是示出根据本发明一实施例的卷积运算方法的各步骤的图。
图9是示出根据本发明一实施例的在卷积运算方法中应用了卷积核拆分时的各步骤的图。
具体实施方式
参照与附图一同下面详细说明的实施例即可明确地理解本发明的优点以及特征和实现这些方法。但是,本发明并不限定于下面公开的实施例,还可以以其它各种方式实现,本实施例只是为了完整地公开本发明、向本发明所属技术领域的技术人员完整地告知本发明的保护范围而提供,应该通过权利要求书来定义本发明。
在说明本发明的实施例的过程中,当判断为对于公知功能或者构成的具体说明有可能混淆本发明的宗旨时,省略其详细说明。另外,后面的术语是鉴于在本发明的实施例中的功能定义的术语,可以根据使用者、操作者的意愿或习惯等有所改变。因此,应该基于本说明书的整体内容来加以定义。
图1a至图1c是用于从概念上说明卷积运算中的零跳跃(zero skip)的图。参照图1a,可以得知存在表示作为识别对象的对象数据的特征的特征数据(feature data)10和起到用于从上述特征数据提取特征的一种过滤器(filter)作用的卷积核(convolutionkernel)20。特征数据10和卷积核20均可以以矩阵(matrix)形态表示。在将卷积核20应用于特征数据10来执行卷积运算的情况下,可以导出同样具有矩阵形态的输出数据30。
下面说明计算在输出数据30中行号和列号最靠前的元素(Output(0,0))的过程。为了上述过程,可以对于所有的i以及j执行在作为特征数据10的一部分而将要应用卷积核20的部分矩阵11的第(i,j)个元素乘以卷积核20的第(i,j)个元素的过程,之后,将上述执行的结果全部相加。当然,这样的部分矩阵11可以具有与卷积核20相同的维数(dimension)。
在这种情况下,可以得知上述执行的结果是7,还可以得知用于导出上述结果的合计相乘次数是与特征数据10或卷积核20的元素的总数相同的9次。输出数据30的合计元素数量是16个,所以用于导出输出数据30整体的乘法的合计次数是9乘以16而得的144。
基于一般的卷积神经网络模式的特征,作为卷积运算对象的各元素中存在0的可能性非常高。基于此可以想到当作为乘法对象的两个元素中存在0时可以跳过省略对应的乘法的方法。图1b示出了省略了关于卷积核20的元素中0元素的乘法的方法。根据该图,卷积核20的9个元素中5个元素的值是0,所以用于求出输出数据30的一个元素的相乘次数变成4次,从而用于导出输出数据30整体的乘法的合计次数变成4乘以16而得的64。
图1c示出了比上述图1b的方法进步的情况。根据图1c,不仅考虑到了卷积核20中存在的0元素,还考虑到了特征数据10中存在的0元素。为此,只有在作为乘法对象的两个元素都不是0时才实际执行乘法,由此,在图1c的情况下,用于导出输出数据30整体的乘法的合计次数只有21。
乘法运算本身消耗硬件资源和时间,所以减少乘法运算的次数代表卷积运算的效率增加。如以上说明,很明显当乘法对象中的至少一个为0时,其结果变成0,所以如果在该情况下省略乘法运算,则可以大幅提高卷积运算的效率。但是,需要恰当地构成用于实际运用这样的构思的具体方法以及用于执行上述方法的硬件装置。
图2是示例性示出用于应用卷积神经网络技法的硬件装置的图。图2的硬件装置50可以包括用于控制硬件装置50的整体动作的处理器(processor)60、存储硬件装置50进行动作所需的数据的存储器(memory)70以及执行卷积神经网络技法所需的卷积运算的神经网络加速器(neural network accelerator)80。
尤其是,神经网络加速器80可以包括用于控制神经网络加速器80的动作的控制器81、执行激活(activation)运算的激活运算部82、执行池化(pooling)运算的池化运算部83、在层(layer)之间传递数据时执行归一化(normalization)的归一化运算部84、用于存储数据的存储器85以及实际执行卷积运算的卷积运算部86。卷积运算部86可以包括用于存储作为卷积运算的应用对象的输入数据的输入缓冲器87、对上述输入数据应用卷积运算的运算单元(PE)88以及存储由上述运算单元88执行的卷积运算的结果的输出缓冲器89。
图3a至图3c是简要示出根据本发明一实施例的卷积运算装置的结构的图。如图3a示出,根据本发明一实施例的卷积运算装置100可以包括上层缓冲部110、下层缓冲部120、运算部130、乘法缓冲器140、加法器150以及输出缓冲器160。需要说明的是,在图3a至图3c中说明的卷积运算装置100只是本发明的一实施例,本发明的技术思想并不限定于图3a至图3c。
上层缓冲部110可以包括特征数据缓冲部111和卷积核缓冲部112。特征数据缓冲部111可以存储参照图1a至图1c说明的特征数据,卷积核缓冲部112可以存储卷积核。特征数据缓冲部111存储比下层缓冲部120更多的量的数据,但是只需向一个至两个下层缓冲部120传递自己所存储的0数据的值即可,所以可以利用数据读取端口的数量限制在一个至两个但相对于面积的存储效率较高的SRAM(static random access memory:静态随机存取存储器)来实现。
下层缓冲部120可以在特定的时间段内从上层缓冲部110提取并存储卷积运算所需的特征数据以及卷积核,并且将其传递给包括多个乘法单元(multiplier)131的运算部130。下层缓冲部120可以包括第一缓冲部121和第二缓冲部122。第一缓冲部121可以从特征数据缓冲部111获取所需的数据,第二缓冲部122可以从卷积核缓冲部112获取所需的数据。这样的下层缓冲部120需要不断地向运算部130内的多个乘法单元(multiplier)131供给数据,所以优选地实现为利用触发器(flip-flop)的结构,以便虽然空间利用方面的效率较低但可以同时读取多个位置的数据值来提供。
运算部130可以包括用于利用存储在下层缓冲部120的数据执行乘法运算的多个乘法单元(multiplier)131。这样的各乘法单元131可以并行地执行特征数据的一个元素和卷积核的一个元素之间的乘法。即,各个单独的乘法运算可以分配给上述多个乘法单元131每一个来执行。
乘法缓冲器140可以存储由运算部130的各乘法单元131执行乘法的结果。加法器150可以将存储在上述乘法缓冲器140的乘法的结果相加后传递给输出缓冲器160。输出缓冲器160可以输出卷积运算的最终结果。
图3b示出了下层缓冲部120中第一缓冲部121的详细结构。图3b示出的结构除了应用于第一缓冲部121之外,还可以应用于第二缓冲部122。即,第二缓冲部122可以具有实质上与第一缓冲部121相同的结构。在图3b中,可以将位于第一缓冲部121的边界内的所有构成要素视为包括在第一缓冲部121的下层构成要素。
第一缓冲部121可以包括数据阵列125以及标志阵列126。数据阵列125可以包括多个单位保存装置125a,上述单位保存装置125a之一可以是一个触发器。上述多个单位保存装置125a可以排列为P×Q矩阵来构成数据阵列125。在图3b示例性示出了P的值是4,Q的值是16。
相同地,标志阵列126也可以包括多个单位保存装置126a,上述单位保存装置126a之一可以是一个触发器。与上述数据阵列125的单位保存装置125a相同地,上述多个单位保存装置126a也可以排列为P×Q矩阵来构成标志阵列126。
数据阵列125和标志阵列126均可以从特征数据缓冲部111接收特征数据,更加具体地,接收特征数据的元素中一次可以存储于数据阵列125的量的元素。
包括在数据阵列125中的一个单位保存装置125a中可以存储特征数据的一个元素。一般情况下,上层缓冲部110的数据读取端口(data read port)构成为在一个循环(cycle)可以向下层缓冲部120传递多个(M个)数据,存在于下层缓冲部120的单位保存装置125a构成为在各个数据阵列125的单位保存装置125a的输入侧使用M选1多路选择器(multiplexer,MUX)的方式,以便选择并存储M个数据中的任意一个数据。
但是,在数据阵列125的每个单位保存装置125a的输入侧使用M选1多路选择器时,发生下层缓冲部120的面积效率严重下降的问题。为此,在本发明公开的下层缓冲部120的结构中,限定为数据阵列125的每个单位保存装置125a仅连接于从上层缓冲部110传递的M个多个数据中的固定位置的一个数据,由此避免在数据阵列125的各单位保存装置125a的输入侧使用另设的M选1多路选择器。
如果限定为数据阵列125的每个单位保存装置125a仅连接于通过上层缓冲部110的读取端口(read port)传递的多个(M个)数据中的固定位置的一个数据,则在上层缓冲部110中连续定位的多个数据在下层缓冲部120中并不是连续定位,所以另外需要如下过程:在该过程中,保存关于存储在数据阵列125的每个单位保存装置125a中的值是有效的值还是无意义的虚设(dummy)值(即,garbage value(垃圾值))的信息,并且确认在卷积运算过程中要用于当前运算的存储在单位保存装置125a中的值是否为有效值。但是,在具有支持零跳跃运算的运算部130的卷积运算结构中,将标志阵列126的值设定为当数据阵列125的单位保存装置125a中存在无意义的虚设值时可以解释为在对应位置存在0的值,由此,能够在不添加因去除M选1多路选择器而所需要的用于数据有效性判断作业的电路的情况下,也仅将仅具有有效值的数据阵列125的单位保存装置125a使用于卷积运算中。
存储在各单位保存装置125a中的元素可以通过多路选择器部127传递到第一缓冲部121外部的运算部130。多路选择器部127可以包括多个多路选择器(multiplexer),上述各多路选择器可以选择单位保存装置125a所形成的P×Q矩阵中的一列。
包括在标志阵列126中的一个单位保存装置126a中可以存储包括在数据阵列125且用于辨别位于与上述一个单位保存装置126a相同的行和列的单位保存装置125a的值是否为0的标志值。为此,可以具备用于检测特征数据的各元素是否为0的多个零检测器129。通过上述多个零检测器129,可以在各单位保存装置126a存储标志值。
存储在各单位保存装置126a中的元素可以通过多路选择器部128传递到第一缓冲部121外部的运算部130。多路选择器部128可以包括多个多路选择器,上述各多路选择器可以选择单位保存装置126a所形成的P×Q矩阵中的一列。
另一方面,第二缓冲部122也可以具有与上述的第一缓冲部121相同的结构。需要说明的是,区别在于,第二缓冲部122从卷积核缓冲部112接收数据,而不是从特征数据缓冲部111接收。由此,包括在第二缓冲部122的数据阵列125中的单位保存装置125a中可以存储卷积核的元素,包括在第二缓冲部122的标志阵列126中的单位保存装置126a中可以存储用于确认上述卷积核的元素是否为0的标志值。
图3c是用于进一步详细说明运算部130的结构以及动作的图。运算部130利用分别从第一缓冲部121和第二缓冲部122输入的标志阵列126的数据(NZ_Flag)和存储位于运算部130内的特征数据起始位置(feature_start_position)以及卷积核起始位置(weight_start_position)的寄存器(register)的值,针对在数据阵列125中单位保存装置125a的索引(index)值在特征数据起始位置(feature_start_position)以上的部分,可以找出第一个发生非零(non-zero)的位置。
对于上述找出的位置,运算部130可以从第一缓冲部121和第二缓冲部122内的数据阵列125读取值,将读取的两个值相乘,之后与存储在ACC寄存器(accumulationregister,ACC_reg)中的值相加。对于特征数据起始位置(feature_start_position)以及卷积核起始位置(weight_start_position)的值,可以按照将比用于当前运算的数据阵列125的偏移量索引(offset index)值大1的值与现有的值相加的方式更新。
第一缓冲部121和第二缓冲部122的数据阵列125中存储有多个乘法单元131执行卷积运算时所需的特征数据以及卷积核的值,各个乘法单元131通过恰当地选择起始位置,从而在数据阵列125依次访问为了运算在数据阵列125中自己负责的部分所需的值。对于这样参照图3c说明的内容,将通过后述的图4a至图7b以及表1的具体示例能够进一步详细理解。根据参照图3a至3c上述说明的卷积运算装置100,能够在使用最少的多路选择器等硬件装置的情况下,运算部130高效率地访问存储在下层缓冲部120中的数据,执行卷积运算。
图4a至图5c是用于说明根据本发明一实施例的由卷积运算装置执行的卷积运算过程的图。参照图4a可以得知存在M×N矩阵(M和N是自然数,在图4a中,M和N分别是5和6)的特征数据10。其中,通过在图3a至图3c中说明的卷积运算装置100的第一缓冲部121,可以提取出多个部分矩阵11a、11b、11c、11d。
这些多个部分矩阵每一个相应于特征数据10的不同的局部区域,可以是具有与卷积核相同的维数的K×L(K和L是自然数,在图4a中K和L均为3)矩阵。部分矩阵的数量可以基于在图3a至图3c中说明的包括在卷积运算装置100的数据阵列125中的单位保存装置125a的数量来确定。
第一缓冲部121可以生成第一向量,其中,第一向量包括上述特征数据10的元素中属于至少一个上述部分矩阵的元素作为元素。参照图4b,可以在第一缓冲部121的数据阵列125的各单位保存装置125a中各存储一个这样的第一向量的各元素。并且,第二缓冲部122可以生成包括上述卷积核的元素作为元素的第二向量。根据后述的图5c,可以在第二缓冲部122的数据阵列125的各单位保存装置125a中各存储一个这样的第二向量的各元素。
更加具体地,可以认为第一缓冲部121的数据阵列125或第二缓冲部122的数据阵列125所包括的单位保存装置125a中、行号相同的单位保存装置构成一个单位保存装置组(set)。上述单位保存装置组每一个可以以可以访问存储在上层缓冲部110中的特征数据或卷积核的不同的列的方式连接,对于这一点,也可以通过图3b确认。
这时,在一个单位保存装置组内的各单位保存装置125a中,从列号小的单位保存装置125a开始,将与上述一个单位保存装置组连接的特征数据或卷积核的列的K个(卷积核的行的数量)数据按照列号从小到大的顺序依次各填入一个。
运算部130可以利用第一向量和第二向量执行卷积运算。更加具体地,对于上述部分矩阵每一个,运算部130可以从上述第一向量提取包括自己的所有元素的部分向量。即,与上述各部分矩阵对应的部分向量是第一向量的一部分。因此,在一个部分矩阵内相邻的两个元素在第一向量内也相邻。
对于每个上述部分矩阵,运算部130可以执行与相应的部分矩阵对应的部分向量的各元素和在上述第二向量内位于对应位置的元素之间的相乘。其次,运算部130将上述相乘的执行结果全部相加,从而针对各部分矩阵的全部可以算出与卷积核的卷积运算结果。如上所述,对应于特征部分矩阵的部分向量与上述特征部分矩阵共享相同的元素,第二向量与卷积核共享相同的元素,所以通过部分向量与第二向量之间的上述运算,可以得到如同执行了部分矩阵与卷积核之间的卷积运算的结果。
并且,如上所述,上述部分向量与第二向量的元素之间的相乘可以在上述成为相乘的对象的两个元素均不是0时执行。可以通过第一标志向量和第二标志向量来实现这样的辨别不是0的元素的功能。
第一标志向量是用于辨别第一向量的各元素是否为0的向量,第二标志向量是用于辨别第二向量的各元素是否为0的向量。第一标志向量可以通过第一缓冲部121生成,第二标志向量可以通过第二缓冲部122生成。
基本上第一标志向量可以具有与第一向量相同数量的元素,第二标志向量可以具有与第二向量相同数量的元素。如果第一向量的元素中第i(i是自然数)个元素是0,则第一标志向量的第i个元素也具有0值,如果第二向量的元素中第j个元素是0,则第二标志向量的第j(j是自然数)个元素也具有0值。运算部130通过确认这样的第一标志向量以及第二标志向量的各元素的值,可以掌握第一向量或第二向量的特定元素的值是否为0。
需要说明的是,参照图4b,可以得知存储在数据阵列125中的第一向量的元素中还有可能包括不是特征数据10的元素的元素(斜线部分)。这与数据阵列125内的单位保存装置125a的排列结构有关。图3a的单位保存装置125a以4行16列的方式排列有合计64个。需要说明的是,在图4a,卷积核以及各部分矩阵的行数合计为三个,比上述单位保存装置125a所形成的行数(P=4)少一个,所以以四个元素为周期反复执行在第一向量填入部分矩阵的三个元素后填入一个的虚设(dummy)值的处理。该处理不仅能够应用于第一向量,还能同样地应用于第二向量,由此对于第二向量也可以以四个元素为周期反复执行填入卷积核的三个元素后填入一个的虚设值的处理。
将其泛化,则当卷积核和部分矩阵的行的值、即K的值小于预定值(在这里是单位保存装置125a所形成的行数P)时,位于卷积核以及部分矩阵的(row,col)=(r,c)位置的元素存储在第一向量以及第二向量的第(P*c)+r个位置,并且在第一向量以及第二向量的除此之外的位置填入任意的虚设(dummy)值。
换言之,只有在第一向量以及第二向量的第i个位置(i是自然数)中i mod P(i除以P的余数)值成为小于等于K的自然数的有效位置填入部分矩阵或卷积核的元素,除了上述有效位置之外的其它位置填入任意的虚设值。
很明显,对于上述虚设值实际执行乘法时无法算出正确的卷积运算的结果。因此,运算部130将第一向量以及第二向量的虚设值视为0。参照图4b,可以得知对应于上述虚设值的位置的标志阵列126的元素(斜线部分)具有0值。
图5a至图5c是示例性示出了通过上述图4a以及图4b说明的内容。通过图5a可以确认卷积核20和可以从特征数据10提取的各部分矩阵11a、11b、11c、11d。在执行卷积运算时,将特征数据10上的卷积核20的扫描方向设为行(row)方向(横向),更加具体地,设为右侧方向。并且,将扫描间隔(stride)设为1(单位是矩阵的元素的数量)。因此,各部分矩阵彼此隔开1的间隔沿横向排列。
将其泛化,则对于各部分矩阵,当扫描间隔为v(v是自然数)时,可以以上述多个部分矩阵每一个在特征数据10上与相邻的部分矩阵具有v的间隔且沿行方向排序的方式提取多个部分矩阵。
另一方面,下面继续将扫描方向设为行方向进行说明,但是,当扫描方向是列(column)方向时,只要将关于行的说明置换为关于列的说明,即可直接应用本发明的实施例。
如图5b示出,第一缓冲部121的数据阵列125中可以存储属于上述各部分矩阵中的至少一个部分矩阵的特征数据10的元素。下面,对第一向量在数据阵列125内排序的基准进行说明。第一向量的各元素可以按照在特征数据10内所具有过的行号和列号的大小在第一向量内排序。更加具体地,按照如下方式排序:列号越小,在第一向量内上述各元素越是位于前面,当列号相同时,行号越小,越是位于前面。即,由于扫描方向是行方向,所以可以设定为与行号相比列号在排序中的的优先级(priority)更高。
需要说明的是,以图5b为基准时,将数据阵列125中位于右侧的元素作为“位于前面的元素”。这样的图示基准在示出数据阵列125或标志阵列126的所有附图中相同。并且,如上所述,第一向量中有可能插入有具有虚设值的元素,因此数据阵列125中可以按照一定的间隔存储有虚设值。
第一缓冲部121的标志阵列126中可以存储有第一标志向量。如图5b示出,第一标志向量的各元素表示第一向量的哪个元素为0。并且,参照图5b可以得知第一标志向量的元素中与第一向量的虚设元素对应的位置的值为0。即,不管实际值如何,虚设元素均被视为0。第一标志向量的元素中1值表示位于与相应的元素对应的位置的第一向量的元素的值不是0。
并且,参照图5c可以得知第二缓冲部122的数据阵列125中存储从卷积核20提取的第二向量的各元素,标志阵列126中存储用于表示上述第二向量的各元素的值是否为0的第二标志向量。第二向量的元素中不是从卷积核20提取的元素的元素具有虚设值,由此,位于与上述虚设值对应的位置的第二标志向量的元素也具有0值。
如上所述,在第一向量上特征数据10的各部分矩阵11a、11b、11c、11d可以具有各自的部分向量。图5b的起始位置表示在第一向量上各部分矩阵从哪里开始。具体地,运算部130的各乘法单元131中的四个乘法单元0、1、2、3可以并行地执行针对各个部分矩阵11a、11b、11c、11d的与卷积核20的卷积运算,上述四个各乘法单元131在如图5b示出的起始位置开始对于数据阵列125的访问(access),从而可以获取自己负责的部分矩阵的元素的值。
与此不同地,卷积核20被同样地应用于各个不同的部分矩阵,所以在用于存储从卷积核20导出的第二向量的图5c的数据阵列125中的上述各乘法单元131的起始位置均被同样地应用。
下面的表1是对于在上述图5a至图5c示出的示例中执行卷积运算的过程进行整理的表。可以得知当应用根据本发明一实施例的方法时,在图5a至图5c的示例中的卷积运算在较短时间、即3循环(cycle)内结束。
[表1]
图6a至图6c是用于说明根据本发明一实施例的卷积运算过程中应用卷积核拆分的情况的图。图6的卷积核20的行数是7个,超过了图3b示出的卷积运算装置100的单位保存装置125a所形成的行数4。这样当卷积核20的行数超过可以通过上述单位保存装置125a的行数确定的预定值时,可以对卷积核20和成为卷积核20的应用对象的部分矩阵进行拆分来执行卷积运算。
如果不应用卷积核拆分,则如图6a所示,从特征数据10提取部分矩阵11后直接与卷积核20执行卷积运算。与此不同地,如果应用卷积核拆分,则如图6a所示,运算部130拆分部分矩阵11,生成两个第一拆分矩阵11a、11b,并且可以拆分卷积核20来生成两个第二拆分矩阵20a、20b。优选地,多个上述拆分矩阵的行数与上述单位保存装置125a的行数一致,但是当卷积核20的行数不是单位保存装置125a的行数的倍数时,还可以存在行数比单位保存装置125a的行数少的拆分矩阵。
将上述内容泛化,则运算部130将部分矩阵拆分为R个(R是大于等于2的自然数)第一拆分矩阵,将卷积核拆分为R个第二拆分矩阵,结合对所有的i执行上述第一拆分矩阵中的第i(i是大于等于1且小于等于R的自然数)个矩阵与上述第二拆分矩阵中的第i个矩阵之间的卷积运算的结果,可以算出上述部分矩阵与卷积核20之间的卷积运算结果。这时,可以设定为第一拆分矩阵每一个和第二拆分矩阵每一个的行数不会超过上述单位保存装置125a的行数的值,列数与卷积核20的列数相同。
图6b以及图6c是应用了这样的卷积拆分时的第一向量以及第一标志向量的图。图6b示出了从第一拆分矩阵11a导出的第一向量和用于上述第一向量的第一标志向量分别存储在数据阵列125和标志阵列126中的情况。图6c示出了从第一拆分矩阵11b导出的第一向量和用于上述第一向量的第一标志向量分别存储在数据阵列125和标志阵列126的情况。除了应用了卷积核拆分之外,参照图5b以及图5c说明的内容还可以应用于图6b以及图6c示出的情况中。
图7a以及图7b是用于说明根据本发明一实施例的卷积运算过程中应用了扫描间隔扩大的情况的图。如上所述,扫描间隔可以是1,但是还可以是大于等于2的值。
如图7a所示,上述扫描间隔具有2的值。由此,特征数据10的各部分矩阵11a、11b、11c、11d可以在特征数据10内以2的间隔沿横向排序。图7b示出了从各部分矩阵11a、11b、11c、11d导出的第一向量和用于上述第一向量的第一标志向量分别存储在数据阵列125和标志阵列126的情况的图。除了应用了扫描间隔扩大之外,参照图5b以及图5c说明的内容还可以应用于图7b示出的情况中。
图8是示出根据本发明一实施例的卷积运算方法的各步骤的图。图8以及后述的图9的方法可以由通过图3a至图3c说明的卷积运算装置100执行。但是,图8以及9示出的方法只是本发明的一实施例,不应该解释为本发明思想限定于图8以及图9,还可以改变附图示出的顺序来执行图8以及图9示出的方法的各步骤。
首先,可以将如特征数据和卷积核等所需的数据存储在上层缓冲器110(S110)。从用于控制卷积运算装置100的处理器(未图示)接收到卷积运算开始信号时(S120),下层缓冲器120可以从上层缓冲器110接收上述所需的数据(S130)。之后,运算部130经过对卷积运算所需的设定进行初始化的步骤之后(S140),利用存储在下层缓冲器120的数据执行卷积运算(S150),经过乘法缓冲器140和加法器150可以将上述卷积运算的结果传递至输出缓冲器160(S160)。
运算部130可以判断是否运算了下层缓冲器120的所有数据(S170)。当没有全部运算时,返回步骤S140,但是当全部运算时,运算部130可以判断上层缓冲器110中是否剩下进一步需要运算的数据(S180)。当剩下时,返回步骤S130,但是没有剩下时,运算部130可以结束方法的执行。
图9是示出根据本发明一实施例的卷积运算方法中应用了卷积核拆分时的各步骤的图。
首先,拆分卷积核,可以将被拆分的卷积核(相应于图6a至图6c中的第二拆分矩阵)每一个登记在核列表(kernel list)(S210)。之后,运算部130可以执行卷积运算所需的设定的初始化(S220),可以从核列表提取出被拆分的卷积核(S230)。下层缓冲器120可以从上层缓冲器110接收卷积运算所需的数据(S240)。
运算部130对各乘法单元131的起始位置进行初始化之后(S250),可以利用存储在下层缓冲器120的数据执行卷积运算(S260)。之后运算部可以判断是否对核列表的所有被拆分的卷积核执行了运算(S270),如果未执行,则可以返回步骤S230,但是如果是,则经过乘法缓冲器140和加法器150将上述卷积运算的结果传递至输出缓冲器160后(S280),可以结束方法的执行。
根据本发明一实施例,可以实现空间利用的高效率化等实现装置方面的效果,还可以实现运算的高效率性。并且,能够支持各种大小的卷积核和扫描间隔等,所以能够进一步提高方便性。
可通过计算机程序指令而执行本发明所附的框图中的各个块和流程图的各个步骤的组合。这些计算机程序指令可搭载于通用计算机、特殊计算机或其他可编程的数据处理装置的编码处理器,因此由通过计算机或其他可编程的数据处理装置的编码处理器而执行的该指令来生成执行框图的各个块或流程图的各个步骤中说明的功能的单元。这些计算机程序指令为了以特定方法实现功能而还可存储于可面向计算机或其他可编程的数据处理装置的计算机可利用或计算机可读取的存储器,因此存储于该计算机可利用或计算机可读取的存储器的指令可生产包括执行框图的各个块或在流程图的各个步骤中说明的功能的指令单元的制造项目。计算机程序指令还可搭载于计算机或其他可编程的数据处理装置上,因此在计算机或其他可编程的数据处理装置上执行一系列动作步骤而生成由计算机执行的进程来执行计算机或其他可编程的数据处理装置的指令还可提供用于执行框图的各个块及流程图的各个步骤中说明的功能的步骤。
另外,各个块或各个步骤可表示用于执行特定的逻辑功能的包括一个以上的可执行的指令的模块、分段或代码的一部分。另外,需要注意的是,在几个代替实施例中,可不按顺序而进行块或步骤中所提及的功能。例如,接连图示的两个块或步骤事实上既可以同时执行或也可以使该块或步骤有时根据相应的功能而以相反的顺序执行。
以上说明仅对本发明的技术思想进行了例示性的说明,本领域的技术人员在不脱离本发明的本质上的范围内可进行各种修改及变形。因此,本发明所公开的实施例并非对本发明的技术思想进行限定,而是对本发明进行说明,本发明的技术思想的范围不限于这样的实施例。本发明的保护范围应根据下面的权利要求书来解释,与此均等的范围内的所有技术思想均包括在本发明的权利范围中。
工业上的可利用性
根据本发明一实施例,在进行卷积运算时,能够同时实现运算的高效化和装置实现方面的合理化,所以能够更加有效地实现利用卷积神经网络等特定提取模型的操作。
Claims (21)
1.一种卷积运算方法,包括:
相互不同地提取多个部分矩阵的步骤,上述部分矩阵相应于M×N矩阵的特征数据的局部区域,并且具有与K×L矩阵的卷积核相同的维数,其中,M和N是自然数,K是小于等于M的自然数,L是小于等于N的自然数;
生成第一向量和第二向量的步骤,上述第一向量包括上述特征数据的元素中属于至少一个上述部分矩阵的元素作为元素,上述第二向量包括上述卷积核的元素作为元素;
对于上述部分矩阵每一个,提取包括自己的所有元素且作为上述第一向量的一部分的部分向量的步骤;以及
对于上述部分矩阵每一个,执行对应的部分向量的各元素与在上述第二向量内位于对应位置的元素之间的相乘,并且将上述相乘的执行结果全部相加,从而算出与上述卷积核的卷积运算结果的步骤。
2.根据权利要求1所述的卷积运算方法,其中,
上述算出的步骤包括:作为上述相乘的对象的两个元素都不是0时执行上述相乘的步骤。
3.根据权利要求1所述的卷积运算方法,其中,
针对上述部分矩阵中不同的部分矩阵的与上述卷积核的卷积运算是利用不同的乘法单元(multiplier)并行地执行的。
4.根据权利要求1所述的卷积运算方法,其中,还包括:
生成第一标志向量和第二标志向量的步骤,上述第一标志向量用于辨别上述第一向量的各元素是否为0,上述第二标志向量用于辨别上述第二向量的各元素是否为0,
上述算出的步骤包括:对于上述部分向量的各元素,在上述第一标志向量内位于对应位置的元素是0时,判断为0,对于上述第二向量的各元素,在上述第二标志向量内位于对应位置的元素是0时,判断为0的步骤。
5.根据权利要求1所述的卷积运算方法,其中,
在用于上述卷积运算的扫描方向是行方向,扫描间隔(stride)是v时,以使上述多个部分矩阵每一个与在上述特征数据中相邻的部分矩阵具有v的间隔且沿行方向排序的方式提取上述多个部分矩阵,其中,v是自然数,上述扫描间隔表示矩阵的元素的数量。
6.根据权利要求5所述的卷积运算方法,其中,
上述第一向量的各元素和上述第二向量的各元素在上述第一向量和上述第二向量内分别根据在上述特征数据或上述卷积核内所具有过的行号和列号的大小进行排序,并且上述列号越小,在上述第一向量或上述第二向量内越是位于前面,当上述列号相同时,上述行号越小,在上述第一向量或上述第二向量内越是位于前面,其中,上述行号和上述列号是自然数。
7.根据权利要求5所述的卷积运算方法,其中,
在上述K的值小于根据用于存储上述第一向量或上述第二向量的存储装置的结构确定的预定的自然数P时,只有在有效位置填入上述部分矩阵或上述卷积核的元素,在除了上述有效位置之外的其它位置填入任意的虚设(dummy)值,其中,上述有效位置是上述第一向量以及上述第二向量的第i个位置中I mod P值成为小于等于K的自然数的位置,i是自然数,
上述算出的步骤包括:将上述第一向量以及上述第二向量的上述虚设值视为0的步骤。
8.根据权利要求1所述的卷积运算方法,其中,
在用于上述卷积运算的扫描方向是行方向,上述K的值超过预定值时,将上述部分矩阵和上述卷积核分别拆分为R个第一拆分矩阵和R个第二拆分矩阵,结合对所有的i执行上述第一拆分矩阵中第i个矩阵与上述第二拆分矩阵中第i个矩阵之间的卷积运算的结果,算出上述部分矩阵与上述卷积核之间的卷积运算结果,其中,R是大于等于2的自然数,i是大于等于1且小于等于R的自然数,
上述第一拆分矩阵每一个和上述第二拆分矩阵每一个的行数不超过上述预定值,列数与上述L相同。
9.一种卷积运算装置,其包括:
第一缓冲部,相互不同地提取多个部分矩阵,并且生成第一向量,上述部分矩阵相应于M×N矩阵的特征数据的局部区域,并且具有与K×L矩阵的卷积核相同的维数,其中,M和N是自然数,K是小于等于M的自然数,L是小于等于N的自然数,上述第一向量包括上述特征数据的元素中属于至少一个上述部分矩阵的元素作为元素;
第二缓冲部,生成第二向量,上述第二向量包括上述卷积核的元素作为元素;以及
运算部,对于上述部分矩阵每一个,提取包括自己的所有元素且作为上述第一向量的一部分的部分向量,对于上述部分矩阵每一个,执行对应的部分向量的各元素与在上述第二向量内位于对应位置的元素之间的相乘,并且将上述相乘的执行结果全部相加,从而算出与上述卷积核的卷积运算结果。
10.根据权利要求9所述的卷积运算装置,其中,
上述运算部在作为上述相乘的对象的两个元素都不是0时执行上述相乘。
11.根据权利要求9所述的卷积运算装置,其中,还包括:
上层缓冲部,存储上述特征数据以及上述卷积核,并且与上述第一缓冲部以及上述第二缓冲部连接,
其中,上述第一缓冲部从上述上层缓冲部获取上述特征数据的各元素的值,上述第二缓冲部从上述上层缓冲部获取上述卷积核的各元素的值。
12.根据权利要求9所述的卷积运算装置,其中,
上述运算部包括多个乘法单元,
针对上述部分矩阵中不同的部分矩阵的与上述卷积核的卷积运算是利用上述乘法单元中不同的乘法单元并行地执行的。
13.根据权利要求9所述的卷积运算装置,其中,
上述第一缓冲部生成用于辨别上述第一向量的各元素是否为0的第一标志向量,
上述第二缓冲部生成用于辨别上述第二向量的各元素是否为0的第二标志向量,
对于上述部分向量的各元素,在上述第一标志向量内位于对应位置的元素是0时,上述运算部判断为0,对于上述第二向量的各元素,在上述第二标志向量内位于对应位置的元素是0时,上述运算部判断为0。
14.根据权利要求9所述的卷积运算装置,其中,
在用于上述卷积运算的扫描方向是行方向,扫描间隔(stride)是v时,以使上述多个部分矩阵每一个与在上述特征数据中相邻的部分矩阵具有v的间隔且沿行方向排序的方式提取上述多个部分矩阵,其中,v是自然数,上述扫描间隔表示矩阵的元素的数量。
15.根据权利要求14所述的卷积运算装置,其中,
上述第一向量的各元素和上述第二向量的各元素在上述第一向量和上述第二向量内分别根据在上述特征数据或上述卷积核内所具有过的行号和列号的大小进行排序,并且上述列号越小,在上述第一向量或上述第二向量内越是位于前面,当上述列号相同时,上述行号越小,在上述第一向量或上述第二向量内越是位于前面,其中,上述行号和上述列号是自然数。
16.根据权利要求9所述的卷积运算装置,其中,
上述第一缓冲部以及上述第二缓冲部分别包括数据阵列(data array),上述数据阵列包括排列为形成P×Q矩阵的多个单位保存装置,其中P和Q是大于等于2的自然数,
上述第一缓冲部将上述第一向量的各元素分别存储在上述第一缓冲部的数据阵列的不同的单位保存装置中,
上述第二缓冲部将上述第二向量的各元素分别存储在上述第二缓冲部的数据阵列的不同的单位保存装置中。
17.根据权利要求16所述的卷积运算装置,其中,
在上述K的值小于上述P的值时,对于上述部分矩阵以及上述卷积核的各元素,将在上述部分矩阵或上述卷积核内所具有过的行号和列号分别设为row以及col时,上述部分矩阵的各元素存储在上述第一向量的第P*col+row个位置,上述卷积核的各元素存储在上述第二向量的第P*col+row个位置,除此之外的其它单位保存装置中存储任意的虚设(dummy)值,
上述运算部将存储在上述第一缓冲部或上述第二缓冲部的数据阵列的单位保存装置中的上述虚设值视为0。
18.根据权利要求16所述的卷积运算装置,其中,
在用于上述卷积运算的扫描方向是行方向,上述K的值超过上述P的值时,上述运算部将上述部分矩阵拆分为R个第一拆分矩阵,将上述卷积核拆分为R个第二拆分矩阵,结合对所有的i执行上述第一拆分矩阵中第i个矩阵与上述第二拆分矩阵中第i个矩阵之间的卷积运算的结果,算出上述部分矩阵与上述卷积核之间的卷积运算结果,其中,R是大于等于2的自然数,i是大于等于1且小于等于R的自然数,
上述第一拆分矩阵每一个和上述第二拆分矩阵每一个的行数不超过上述P的值,列数与上述L相同。
19.根据权利要求16所述的卷积运算装置,其中,
上述第一缓冲部的数据阵列或上述第二缓冲部的数据阵列所包括的单位保存装置中、行号相同的单位保存装置构成一个单位保存装置组(set),上述单位保存装置组每一个以能够访问存储在上层缓冲部中的特征数据或上述卷积核的不同的列的方式连接。
20.根据权利要求19所述的卷积运算装置,其中,
在上述单位保存装置组内的各单位保存装置中,从列号小的单位保存装置开始,将与上述单位保存装置组连接的上述特征数据或上述卷积核的列的K个数据按照列号从小到大的顺序依次各填入一个。
21.一种计算机可读记录介质,其中记录有程序,该程序包括执行权利要求1至8中任一项所述的方法的各步骤的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2018-0035104 | 2018-03-27 | ||
KR1020180035104A KR102065672B1 (ko) | 2018-03-27 | 2018-03-27 | 합성곱 연산을 위한 장치 및 방법 |
PCT/KR2019/003440 WO2019190139A1 (ko) | 2018-03-27 | 2019-03-25 | 합성곱 연산을 위한 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111902813A true CN111902813A (zh) | 2020-11-06 |
CN111902813B CN111902813B (zh) | 2024-05-07 |
Family
ID=68059316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980021781.3A Active CN111902813B (zh) | 2018-03-27 | 2019-03-25 | 用于卷积运算的装置以及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11475100B2 (zh) |
KR (1) | KR102065672B1 (zh) |
CN (1) | CN111902813B (zh) |
WO (1) | WO2019190139A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641952A (zh) * | 2021-10-14 | 2021-11-12 | 北京壁仞科技开发有限公司 | 卷积设备、卷积方法、矩阵拆聚装置以及矩阵拆聚方法 |
WO2022151779A1 (zh) * | 2021-01-13 | 2022-07-21 | 华为技术有限公司 | 卷积运算的实现方法、数据处理方法及装置 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200250842A1 (en) * | 2019-01-31 | 2020-08-06 | Samsung Electronics Co., Ltd. | Method and apparatus with convolution neural network processing |
US11222092B2 (en) * | 2019-07-16 | 2022-01-11 | Facebook Technologies, Llc | Optimization for deconvolution |
CN110807170B (zh) * | 2019-10-21 | 2023-06-27 | 中国人民解放军国防科技大学 | 多样本多通道卷积神经网络Same卷积向量化实现方法 |
KR102410166B1 (ko) * | 2019-11-27 | 2022-06-20 | 고려대학교 산학협력단 | 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기 |
US20210334072A1 (en) * | 2020-04-22 | 2021-10-28 | Facebook, Inc. | Mapping convolution to connected processing elements using distributed pipelined separable convolution operations |
KR20210156554A (ko) * | 2020-06-18 | 2021-12-27 | 삼성전자주식회사 | 텐서 처리 방법, 가속기 및 이를 포함한 전자 장치 |
US11748062B2 (en) | 2021-01-28 | 2023-09-05 | Macronix International Co., Ltd. | Multiplication and addition operation device and control method for multiplication and addition operation thereof |
KR102657104B1 (ko) * | 2021-05-24 | 2024-04-15 | 연세대학교 산학협력단 | 합성곱 연산 장치, 합성곱 연산 방법 및 합성곱 연산 방법을 실행시키도록 기록매체에 저장된 컴퓨터 프로그램 |
CN113435586B (zh) * | 2021-08-03 | 2021-11-30 | 北京大学深圳研究生院 | 用于卷积神经网络的卷积运算装置、系统和图像处理装置 |
KR20230100050A (ko) | 2021-12-28 | 2023-07-05 | 주식회사 퓨쳐디자인시스템 | 광폭 데이터 정렬장치 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086699A (zh) * | 2007-07-12 | 2007-12-12 | 浙江大学 | 基于单fpga的矩阵乘法器装置 |
CN103294648A (zh) * | 2013-05-08 | 2013-09-11 | 中国人民解放军国防科学技术大学 | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 |
US20160259826A1 (en) * | 2015-03-02 | 2016-09-08 | International Business Machines Corporation | Parallelized Hybrid Sparse Matrix Representations for Performing Personalized Content Ranking |
KR20170005562A (ko) * | 2015-07-06 | 2017-01-16 | 삼성전자주식회사 | 데이터를 병렬적으로 처리하는 장치 및 방법 |
US20170103311A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Neural network unit that performs convolutions using collective shift register among array of neural processing units |
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN107305538A (zh) * | 2016-04-22 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种子矩阵运算装置及方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10077360B2 (en) * | 2014-12-01 | 2018-09-18 | Lg Chem, Ltd. | Polycarbonate resin composition and method of preparing the same |
KR101719278B1 (ko) | 2015-04-14 | 2017-04-04 | (주)한국플랫폼서비스기술 | 비주얼 콘텐츠기반 영상 인식을 위한 딥러닝 프레임워크 및 영상 인식 방법 |
US10438117B1 (en) * | 2015-05-21 | 2019-10-08 | Google Llc | Computing convolutions using a neural network processor |
AU2017281232B2 (en) | 2016-06-22 | 2020-02-13 | Invincea, Inc. | Methods and apparatus for detecting whether a string of characters represents malicious activity using machine learning |
CN107977704B (zh) * | 2017-11-10 | 2020-07-31 | 中国科学院计算技术研究所 | 权重数据存储方法和基于该方法的神经网络处理器 |
US11514136B2 (en) * | 2019-05-17 | 2022-11-29 | Aspiring Sky Co. Limited | Circuit for neural network convolutional calculation of variable feature and kernel sizes |
CN113222101A (zh) * | 2020-02-05 | 2021-08-06 | 北京百度网讯科技有限公司 | 深度学习处理装置、方法、设备和存储介质 |
-
2018
- 2018-03-27 KR KR1020180035104A patent/KR102065672B1/ko active IP Right Grant
-
2019
- 2019-03-25 WO PCT/KR2019/003440 patent/WO2019190139A1/ko active Application Filing
- 2019-03-25 CN CN201980021781.3A patent/CN111902813B/zh active Active
-
2020
- 2020-09-28 US US17/034,886 patent/US11475100B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086699A (zh) * | 2007-07-12 | 2007-12-12 | 浙江大学 | 基于单fpga的矩阵乘法器装置 |
CN103294648A (zh) * | 2013-05-08 | 2013-09-11 | 中国人民解放军国防科学技术大学 | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 |
US20160259826A1 (en) * | 2015-03-02 | 2016-09-08 | International Business Machines Corporation | Parallelized Hybrid Sparse Matrix Representations for Performing Personalized Content Ranking |
KR20170005562A (ko) * | 2015-07-06 | 2017-01-16 | 삼성전자주식회사 | 데이터를 병렬적으로 처리하는 장치 및 방법 |
US20170103311A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Neural network unit that performs convolutions using collective shift register among array of neural processing units |
CN107305538A (zh) * | 2016-04-22 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种子矩阵运算装置及方法 |
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
Non-Patent Citations (1)
Title |
---|
刘仲;田希;: "面向多核向量处理器的矩阵乘法向量化方法", 计算机学报, no. 10, pages 79 - 92 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022151779A1 (zh) * | 2021-01-13 | 2022-07-21 | 华为技术有限公司 | 卷积运算的实现方法、数据处理方法及装置 |
CN113641952A (zh) * | 2021-10-14 | 2021-11-12 | 北京壁仞科技开发有限公司 | 卷积设备、卷积方法、矩阵拆聚装置以及矩阵拆聚方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20190113007A (ko) | 2019-10-08 |
KR102065672B1 (ko) | 2020-01-13 |
CN111902813B (zh) | 2024-05-07 |
US11475100B2 (en) | 2022-10-18 |
US20210011970A1 (en) | 2021-01-14 |
WO2019190139A1 (ko) | 2019-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111902813A (zh) | 用于卷积运算的装置以及方法 | |
CN107909148B (zh) | 用于执行卷积神经网络中的卷积运算的装置 | |
CN110770701B (zh) | 基于寄存器的矩阵乘法 | |
EP3179415B1 (en) | Systems and methods for a multi-core optimized recurrent neural network | |
CN113961876B (zh) | 关联存储器设备中的稀疏矩阵乘法 | |
EP3460725A1 (en) | Method and apparatus for adapting parameters of neural network | |
GB2554711A (en) | Buffer addressing for a convolutional neural network | |
CN112989267A (zh) | 用于执行卷积运算的方法和系统 | |
CN110321996B (zh) | 一种基于卷积神经网络的图像处理的方法和装置 | |
CN111858651A (zh) | 一种数据处理方法以及数据处理装置 | |
CN111709415B (zh) | 目标检测方法、装置、计算机设备和存储介质 | |
CN112395092A (zh) | 数据处理方法及人工智能处理器 | |
KR20200095300A (ko) | 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치 | |
US9058541B2 (en) | Object detection method, object detector and object detection computer program | |
CN112633470A (zh) | 优化神经网络卷积残差结构的方法、系统、设备及介质 | |
CN111133457A (zh) | 电子设备及其控制方法 | |
CN113485750B (zh) | 数据处理方法及数据处理装置 | |
KR20200043617A (ko) | 고효율 연산 처리를 위한 인공 신경망 모듈 및 이의 스케쥴링 방법 | |
CN114118348A (zh) | 加速器、操作加速器的方法以及包括加速器的电子装置 | |
KR101989793B1 (ko) | 컨볼루션 신경망을 위한 가속기 인식 가지 치기 방법 및 기록 매체 | |
CN111784555A (zh) | 图像处理方法、装置及设备 | |
CN113811900A (zh) | 算术运算装置和算术运算系统 | |
CN111027688A (zh) | 一种基于fpga的神经网络计算器生成方法及装置 | |
CN117063182A (zh) | 一种数据处理方法和装置 | |
CN110688223B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220225 Address after: Gyeonggi Do, South Korea Applicant after: Sapeon Korea Co.,Ltd. Address before: Seoul, South Kerean Applicant before: SK TELECOM Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |