CN116756472B - 卷积算子计算装置及方法 - Google Patents
卷积算子计算装置及方法 Download PDFInfo
- Publication number
- CN116756472B CN116756472B CN202311038579.6A CN202311038579A CN116756472B CN 116756472 B CN116756472 B CN 116756472B CN 202311038579 A CN202311038579 A CN 202311038579A CN 116756472 B CN116756472 B CN 116756472B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- operator
- convolution
- convolution operator
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 20
- 238000004364 calculation method Methods 0.000 claims abstract description 173
- 238000009825 accumulation Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 19
- 238000011176 pooling Methods 0.000 claims description 17
- 238000013528 artificial neural network Methods 0.000 abstract description 3
- 239000011159 matrix material Substances 0.000 description 98
- 238000010586 diagram Methods 0.000 description 9
- 238000013527 convolutional neural network Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- 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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Algebra (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本申请适用于神经网络技术领域,提供了卷积算子计算装置及方法,其中该卷积算子计算装置包括运算模块、数据选择模块和存储模块,该运算模块,用于从存储模块获取第一数据以及从输入模块获取第二数据,然后基于卷积算子的类型对第一数据以及第二数据进行计算得到第三数据。该数据选择模块,用于基于卷积算子的类型确定算子计算结果,以及将算子计算结果发送给存储模块,该算子计算结果为第三数据,或是根据第一数据、第二数据以及第三数据确定的值;该存储模块,用于从数据选择模块获取算子计算结果,以及存储算子计算结果。本申请的方案通过一个装置可以实现不同类型的卷积算子的计算,有利于降低卷积算子计算装置的复杂度。
Description
技术领域
本申请属于神经网络技术领域,尤其涉及卷积算子计算装置及方法。
背景技术
卷积神经网络是近年在人工智能领域发展起来并引起广泛重视的一种高效识别方法,对于图像处理等领域有着非常出色的表现。由于卷积神经网络不需要在前期对图像执行复杂的预处理,可以直接输入原始图像,因而得到了非常广泛的使用。
卷积神经网络一般来说可以包括卷积层(convolution layer)、池化层(poolinglayer)以及全连接层(FC layer)等。其中,卷积层中可以将输入的特征图与该卷积层对应的卷积核进行不同卷积算子的运算,从而从输入的特征图中提取特征,获得输出的特征图。
然而,当前用于计算卷积算子的电路设计比较复杂,成本比较高,且不够灵活。
发明内容
针对以上问题,本申请实施例提出一种卷积算子计算装置及方法,能够支持不同的卷积算子,有利于降低卷积算子计算装置的复杂度,提高计算的灵活性。
第一方面,本申请实施例提供了一种卷积算子计算装置,所述卷积算子计算装置包括运算模块、数据选择模块和存储模块;
所述运算模块,用于从所述存储模块获取第一数据以及从输入模块获取第二数据,其中,所述第一数据为卷积算子的计算参数,所述第二数据为所述存储模块预配置的初始值或者是从所述数据选择模块获取的所述卷积算子上一次的计算结果,所述初始值为0;基于所述卷积算子的类型对所述第一数据以及所述第二数据进行计算得到第三数据;
所述数据选择模块,用于基于所述卷积算子的类型确定算子计算结果,所述算子计算结果为所述第三数据,或是根据所述第一数据、所述第二数据以及所述第三数据确定的值;将所述算子计算结果发送给所述存储模块;
所述存储模块,用于从所述数据选择模块获取所述算子计算结果;存储所述算子计算结果。
通过上述方案,可以通过一套设备实现多种不同类型的卷积算子,从而可以降低设备的复杂度,加强系统的灵活性,提高工作效率。例如,在使用卷积神经网络进行图像识别时,往往涉及多种不同类型的卷积算子,如果每种类型的卷积算子均采用一种逻辑电路来实现的话,整个系统将会非常复杂,在执行不同类型的卷积算子的时候,也不够灵活,从而会影响整个系统的工作效率。而采用本申请实施例所提供的卷积算子计算装置,便可以通过一套设备来执行不同类型的卷积操作,从而提高工作效率。
结合第一方面,在第一方面的某些实现方式中,所述数据选择模块,还用于接收来自所述输入模块的所述第一数据,以及接收来自所述存储模块的所述第二数据。
结合第一方面,在第一方面的某些实现方式中,所述卷积算子计算装置还包括饱和模块,所述饱和模块的输入端与所述数据选择模块相连,数饱和模块的输出端与所述存储模块相连;所述饱和模块,用于判断所述算子计算结果的字节大小是否大于预设门限值;在所述算子计算结果的字节大小大于所述预设门限值的下,所述饱和模块拒绝向所述存储模块发送所述算计计算结果。
第二方面,本申请实施例提供了一种卷积算子计算方法,包括:
获取第一数据以及第二数据,所述第一数据为卷积算子的计算参数,所述第二数据为预配置的初始值或是在获取所述第一数据以及第二数据之前所获取的所述卷积算子上一次的计算结果,所述初始值为0;
基于所述卷积算子的类型对所述第一数据以及所述第二数据进行计算得到第三数据;
基于所述卷积算子的类型确定算子计算结果,所述算子计算结果为所述第三数据,或是根据所述第一数据、所述第二数据以及所述第三数据得到的值;
存储所述算子计算结果。
第三方面,本申请实施例提供了一种电子设备,所述电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第二方面中任一项所述的卷积神经网络的实现方法中的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第二方面所述的卷积算子计算方法中的步骤。
可以理解的是,上述第二方面至第四方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的一种卷积算子计算装置的示意性架构图;
图2示出了本申请实施例提供的另一种卷积算子计算装置的示意性架构图;
图3示出了本申请实施例提供的又一种卷积算子计算装置的示意性架构图;
图4示出了本申请实施例提供的又一种卷积算子计算装置的示意性架构图;
图5示出了本申请实施例提供的一种卷积算计计算方法的示意性流程图;
图6是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
本申请公开了一种卷积算子计算装置及方法,可以支持多种不同类型的卷积算子。该卷积算子计算装置及方法可以应用于任意需要计算卷积算子的场景中,例如,在人工智能领域,通过卷积神经网络进行图像识别时,需要基于输入的特征图进行卷积运算以及矩阵eltwise运算,此时可以采用本申请提供的卷积算子计算装置及方法,灵活实现不同类型的卷积算子的计算,从而提高效率,节约成本。下面结合具体实施例详细介绍本申请提供的卷积算子计算装置及方法。
在解释本申请实施例之前,首先针对本申请实施例中的一些术语做简要介绍。
1、卷积算子
卷积算子,指的是在利用卷积神经网络进行图像或信号处理时,所涉及的一些常规运算,包括卷积运算(convolution)、池化(pooling),以及矩阵eltwise运算等。其中,本申请所涉及的卷积算子包括上述常规运算中,与加减、累加、比较等算法相关的运算。
2、卷积算子的类型
卷积算子的类型指的是卷积算子所对应的算术类型,本申请实施例所述的卷积算子的类型包括但不限于以下几种:普通卷积累加(psum)、eltwise_add、eltwise_minus、eltwise_min、eltwise_max、max_pooling、min_pooling。下面分别对这几种不同类型的卷积算子作示例性说明。
(1)普通卷积累加:
普通卷积累加用于“加权求和”,即将数据和权重的乘积进行累加,得到psum。
例如,矩阵A为,矩阵B为/>,矩阵B为矩阵A对应的权重。对矩阵A与矩阵B执行普通卷积累加,可以看作将矩阵A与矩阵B进行乘法运算。因此,psum=。
(2)eltwise_add:
eltwise_add用于计算矩阵的和,即将矩阵对应元素相加得到新的矩阵。
例如,矩阵A为,矩阵B为/>。对矩阵A与矩阵B执行eltwise_add运算得到矩阵C,则矩阵C=/>=/>。
(3)eltwise_minus:
eltwise_minus用于计算矩阵的差,即将矩阵对应元素相减得到新的矩阵。
例如,矩阵A为,矩阵B为/>。对矩阵A与矩阵B执行eltwise_minus运算得到矩阵C,则矩阵C=/>=/>。
(4)eltwise_min:
eltwise_min用于比较两个阶数相同的矩阵的大小,并取两个矩阵对应元素的较小值组成新的矩阵。
例如,矩阵A为,矩阵B为/>。分别比较矩阵A与矩阵B对应元素的大小:1<2,3<5,6>1,2<4,分别取四个元素中的较小值组成新的矩阵C,则矩阵C=/>。
(5)eltwise_max:
eltwise_max用于比较两个阶数相同的矩阵的大小,并取两个矩阵对应元素的较大值组成新的矩阵。
例如,矩阵A为,矩阵B为/>。分别比较矩阵A与矩阵B对应元素的大小:1<2,3<5,6>1,2<4,分别取四个元素中的较大值组成新的矩阵C,则矩阵C=/>。
(6)max_pooling:
max_pooling用于选出一组数据中的最大值。
例如,在一组数据中,包括3个数据,分别为:1、3、6。通过max_pooling,可以选出这3个数据中的最大值为6。
(7)min_pooling:
min_pooling用于选出一组数据中的最小值。
例如,在一组数据中,包括3个数据,分别为:1、3、6。通过min_pooling,可以选出这3个数据中的最大值为1。
下面结合具体实施例对本申请所提供的卷积算子计算装置及方法作示例性说明。
请参阅图1,图1是本申请实施例提供的一种卷积算子计算装置100的示意性结构图。
如图1所示,该卷积算子计算装置100包括输入模块110、运算模块120、数据选择模块130、存储模块140。需要说明的是,本申请实施例是以输入模块110为该卷积算子计算装置内的模块为例进行说明的,但本申请并不限于此,也就是说,输入模块110也可以是该卷积算子计算装置外的模块。
示例性地,运算模块120的输入端分别与输入模块110的输出端以及存储模块140的输出端相连,数据选择模块130的输入端分别与运算模块120的输出端、存储模块140的输出端、输入模块110的输出端相连,存储模块140的输入端与数据选择模块130的输出端相连。下面结合示例,对各个模块的功能作示例性说明。
该输入模块110,用于输入卷积算子的计算参数。需要说明的是,本申请不限定输入模块110的数据来源,例如,输入模块110可以是从其他计算模块获取卷积算子的计算参数的,也可以是通过用户输入获取卷积算子的计算参数的,本申请不作限定。为了方便,本实施例将输入模块110向运算模块120输入的卷积算子的计算参数记为第一数据。
该运算模块120,用于从该输入模块110获取第一数据,以及从存储模块140获取第二数据,并基于卷积算子的类型对该第一数据以及该第二数据进行计算得到第三数据。
其中,该第二数据为该存储模块140预配置的初始值或是从该数据选择模块130获取的该卷积算子上一次的计算结果,该存储模块140中预配置的初始值为0。
可以理解的是,在一种可能的实现方式中,当卷积算子需要执行多次循环运算时,如果本次运算是第一次循环,则存储模块140还没有从数据选择模块130获取到数据(即该卷积算子还没有产生计算结果),因此此时第二数据为存储模块140中预配置的初始值(即为0);如果本次运算不是第一次循环,则在上一次循环结束的时候,存储模块140从数据选择模块130获取到了一个值,该值可以理解为在运算模块120获取第一数据以及第二数据之前,存储模块140从数据选择模块所获取的针对该卷积算子的上一次计算结果,具体可参考后续关于数据选择模块130以及存储模块140部分的描述,这里不再赘述。
该数据选择模块130,用于基于该卷积算子的类型确定算子计算结果,以及,将该算子计算结果发送给该存储模块140。其中,该算子计算结果为第三数据,或者是根据第一数据、第二数据以及第三数据得到的值。
作为一种可能的实现方式,在卷积算子的类型为普通卷积累加、eltwise_add、eltwise_minus中的任一种的情况下,该算子计算结果为第三数据;在卷积算子的类型为eltwise_min、eltwise_max、max_pooling、min_pooling中的任一种的情况下,该算子计算结果为根据第一数据、第二数据以及第三数据确定的值,其中,在卷积算子的类型为max_pooling或min_pooling的情况下,该卷积计算结果为第一数据或第二数据。例如,在卷积算子的类型为eltwise_min的情况下,第三数据用于指示第一数据的每一个元素与第二数据对应元素之间的大小关系,基于该第三数据,将第一数据与第二数据对应元素的较小值作为该算子计算结果的对应元素的值;在卷积算子的类型为eltwise_max的情况下,第三数据用于指示第一数据的每一个元素与第二数据对应元素之间的大小关系,基于该第三数据,将第一数据与第二数据对应元素的较大值作为该算子计算结果的对应元素的值;在卷积算子的类型为max_pooling的情况下,该第三数据用于指示第一数据与第二数据之间的大小关系,基于该第三数据,将第一数据与第二数据中的较大值作为该算子计算结果;在卷积算子的类型为min_pooling的情况下,该第三数据用于指示第一数据与第二数据之间的大小关系,基于该第三数据,将第一数据与第二数据中的较小值作为该算子计算结果。
该存储模块140,用于从该数据选择模块130获取该算子计算结果,并存储该算子计算结果。示例性地,数据选择模块130存储的算子计算结果用于执行下一循环的计算。
由上可知,数据选择模块130用于确定算子计算结果,而存储模块140用于存储从数据选择模块130获取的算子计算结果。
在上述方案中,运算模块120和数据选择模块130可以分别基于卷积算子的类型来执行计算操作,以及确定算子计算结果,从而使得最终输出的算子计算结果与卷积算子的类型相匹配。通过上述方案,可以通过一套设备实现多种不同类型的卷积算子,从而可以降低设备的复杂度,加强系统的灵活性,提高工作效率。例如,在使用卷积神经网络进行图像识别时,往往涉及多种不同类型的卷积算子,如果每种类型的卷积算子均采用一种逻辑电路来实现的话,整个系统将会非常复杂,在执行不同类型的卷积算子的时候,也不够灵活,从而会影响整个系统的工作效率。而采用本申请实施例所提供的卷积算子计算装置,便可以通过一套设备来执行不同类型的卷积操作,从而提高工作效率。
下面结合示例,介绍运算模块120基于卷积算子的类型计算第三数据的一种可能的实现方式:
图2示出了本申请实施例提供的另一种卷积算子计算装置200。图2中的装置200可以看作是图1中的装置100的一种具体示例,或者说,装置200是装置100的一种可能的实现方式。具体地,装置200对运算模块120的具体结构做了进一步限定。如图2所示,运算模块120包括符号设置模块121以及加法模块122。
其中,该符号设置模块121,用于基于该卷积算子的类型设置该第二数据的符号,并将设置后的第二数据输出到该加法模块。具体例如:
在该卷积算子的类型为eltwise_min、eltwise_max、eltwise_minus、max_pooling、min_pooling中的任一种的情况下,该符号设置模块121用于将该第二数据的符号设置为负号;在该卷积算子的类型为普通卷积累加或eltwise_add的情况下,该符号设置模块121用于将该第二数据的符号设置为正号,或者,该符号设置模块121用于保持第二数据的符号不变。
该加法模块,用于对该第一数据和该第二数据执行加法运算得到该第三数据。可以理解的是,该第三数据用于确定算子计算结果。
也就是说,在卷积算子的类型为eltwise_min、eltwise_max、eltwise_minus、max_pooling、min_pooling中的任一种的情况下,该第三数据为第一数据与第二数据的差;在卷积算子的类型为普通卷积累加或eltwise_add的情况下,该第三数据为第一数据与第二数据的和。
通过上述方案,可以使得运算模块120基于卷积算子的类型计算得到第三数据,也就是说,上述方案可以针对不同的卷积算子的类型,执行相对应的运算,从而使得该卷积算子计算装置能够支持不同类型的卷积算子。
该加法模块122,还用于将第三数据输出到数据选择模块130。
对应地,该数据选择模块130还用于接收来自加法模块122的该第三数据,并且基于第一数据、第二数据以及第三数据确定算子计算结果。可以理解的是,数据选择模块130可以分别从存储模块140以及输入模块110获取第一数据和第二数据,也可以直接从运算模块120获取第一数据和第二数据,本申请对此不作限定,为了方便,本申请实施例均以第一种实现方式为例进行说明。
下面对数据选择模块130确定算子计算结果的具体实现方式作示例性说明:
情况1:在该卷积算子的类型为普通卷积累加、eltwise_add、eltwise_minus中的任一种的情况下,该数据选择模块130用于确定该算子计算结果为该第三数据。下面结合几个具体示例针对不同的卷积算子类型作具体说明。
示例1:假设卷积算子的类型为普通卷积累加,参与运算的两个矩阵A和B分别为、/>,矩阵B为矩阵A对应的权重。
在这种情况下,输入模块110所输入的数据为数据与权重的乘积。具体来说,在第一轮运算中,输入模块110将A的第一行的第一个元素与B的第一列的第一个元素的乘积“2”输入到加法模块122,存储模块140将初始值0通过符号设置模块121输入到加法模块122,加法模块122执行“2+0”的操作得到算子计算结果“2”。数据选择模块130基于卷积算子的类型(即普通卷积累加),确定第一次算子计算结果为“2”,然后将该算子计算结果存储到存储模块140。
在第二轮运算中,输入模块110将A的第一行的第二个元素与B的第一列的第二个元素的乘积“3”输入到加法模块122,存储模块140将存储中的上一次运算结果“2”输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即普通卷积累加)不改变数值“2”的符号,然后将数值“2”输出到加法模块122。加法模块122执行“2+3”的运算,得到数值“5”,并将数值“5”输出到数据选择模块130。数据选择模块130确定数值“5”为算子计算结果第一行的第一个元素。
在第三轮运算中,输入模块110将A的第一行的第一个元素与B的第二列的第一个元素的乘积“5”输入到加法模块122,存储模块140将初始值0通过符号设置模块121输入到加法模块122,加法模块122执行“5+0”的操作得到算子计算结果“5”。数据选择模块130基于卷积算子的类型(即普通卷积累加),确定本次算子计算结果为“5”,然后将该算子计算结果存储到存储模块140。
在第四轮运算中,输入模块110将A的第一行的第二个元素与B的第二列的第二个元素的乘积“12”输入到加法模块122,存储模块140将存储中的上一次运算结果“5”输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即普通卷积累加)不改变数值“5”的符号,然后将数值“5”输出到加法模块122。加法模块122执行“5+12”的运算,得到数值“17”,并将数值“17”输出到数据选择模块130。数据选择模块130确定数值“17”为算子计算结果第一行的第二个元素。
以此类推,通过上述流程可以分别确定算子计算结果的第二行的一个元素为14,第二行的第二个元素为38。因此,数据选择模块130最终确定的算子计算结果为psum=。
示例2:假设卷积算子的类型为eltwise_add,矩阵A与矩阵B为参与运算的两个矩阵,其中,矩阵A为,矩阵B为/>。
在第一轮运算中,输入模块110将矩阵A输入到加法模块122,存储模块140将初始值0通过符号设置模块121输入到加法模块122,加法模块122执行“A+0的运算”得到算子计算结果A。数据选择模块130基于卷积算子的类型(即eltwise_add),确定第一轮算子计算结果为A,然后将A存储到存储模块140。
在第二轮运算中,输入模块110将矩阵B输入到加法模块122,存储模块140将存储中的矩阵A输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即eltwise_add),将矩阵A的符号设置为正号(或者说保持矩阵A的符号不变),然后将结果输出到加法模块122。
加法模块122执行“A+B”的运算,得到矩阵C:,并将矩阵C输出到数据选择模块130。数据选择模块130基于卷积算子的类型,确定矩阵C为算子计算结果,并输出该矩阵C。
示例3:假设卷积算子的类型为eltwise_minus,矩阵A与矩阵B为参与运算的两个矩阵,其中,矩阵A为,矩阵B为/>。
在第一轮运算中,输入模块110将矩阵A输入到加法模块122,存储模块140将初始值0通过符号设置模块121输入到加法模块122,加法模块122执行“A+0的运算”得到算子计算结果A。数据选择模块130基于卷积算子的类型(即eltwise_minus),确定第一轮算子计算结果为A,然后将A存储到存储模块140。在第二轮运算中,输入模块110将矩阵B输入到加法模块122,存储模块140将存储中的矩阵A输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即eltwise_minus),将矩阵A的符号设置为符号,然后将结果输出到加法模块122。
加法模块122执行“-A+B”的运算,得到矩阵C:,并将矩阵C输出到数据选择模块130。数据选择模块130基于卷积算子的类型,确定矩阵C为算子计算结果,并输出该矩阵C。
情况2:在该卷积算子的类型为eltwise_max、eltwise_min、max_pooling、min_pooling中的任一种的情况下,该数据选择模块130用于根据第一数据、第二数据以及第三数据确定算子计算结果。具体地,数据选择模块130根据第三数据确定第一数据与第二数据对应的每一个元素的大小关系(或者是第一数据与第二数据之间的大小关系),若卷积算子的类型为eltwise_max,则选取第一数据和第二数据对应的每一个元素中的较大值组成算子计算结果,若卷积算子的类型为eltwise_min,则选取第一数据和第二数据对应的每一个元素中的较小值组成算子计算结果,若卷积算子的类型为max_pooling,则选取第一数据和第二数据中的较大值作为算子计算结果,若卷积算子的类型为min_pooling,则选取第一数据和第二数据中的较小值作为算子计算结果。
在一种可能的实现方式中,数据选择模块130可以通过其他模块来判断第三数据的每一个元素(或是第三数据)是否大于或等于0。例如,图3示出了另一种可能的卷积算子计算装置300的示例性框架图。图3中的装置300可以看作是图2中的装置200的一种具体示例,或者说,装置300是装置200的一种可能的实现方式,具体地,装置300对运算模块120的具体结构做了进一步限定。从图3中可以看出,除符号设置模块121以及加法模块122以外,运算模块120还包括比较模块123。其中,该比较模块123,用于判断第三数据中的每一个元素是否大于0,并将判断结果输出给该数据选择模块130。数据选择模块130可以基于该卷积算子的类型,根据第一数据、第二数据以及判断结果确定算子计算结果。
基于该方案,可以使得该卷积算子计算装置可以适应更多类型的卷积算子。例如,在需要比较两个矩阵的大小时,便可以采用该比较模块123判断矩阵之间的大小关系,并基于该判断结果,确定最终的算子计算结果,这样并不需要切换到其他装置或电路执行该类型的卷积算子,从而可以使得本申请实施例的卷积算子计算装置可以灵活切换为不同类型的卷积算子的计算模式,提高了计算效率。
具体地,数据选择模块130可以根据从比较模块123获得的判断结果,确定第一数据与第二数据每一个对应元素之间的大小关系,然后根据该大小关系确定算子计算结果。下面结合几个具体示例针对这两种不同的卷积算子的类型作具体说明。
示例4:假设卷积算子的类型为eltwise_max,矩阵A与矩阵B为参与运算的两个矩阵,其中,矩阵A为,矩阵B为/>。
在第一轮运算中,输入模块110将矩阵A输入到加法模块122,存储模块140将初始值0输出到符号设置模块121,符号设置模块修改初始值的符号为负号后将数值输入到加法模块122,加法模块122执行“A-0”的运算得到算子计算结果A。数据选择模块130基于卷积算子的类型(即eltwise_max),确定第一轮算子计算结果为A,然后将A存储到存储模块140。
在第二轮运算中,输入模块110将矩阵B输入到加法模块122,存储模块140将存储中的矩阵A输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即eltwise_max),将矩阵A的符号设置为负号,然后将结果输出到加法模块122。
加法模块122执行“B-A”的运算,得到矩阵C:,并将矩阵C输出到比较模块123。比较模块123判断矩阵C每一个元素是否大于或等于0,然后将判断结果输出到数据选择模块130,该判断结果指示:矩阵C的第一个元素大于0,第二个元素大于0,第三个元素小于0,第四个元素大于0。数据选择模块130基于该判断结果,根据矩阵A和矩阵B确定算子计算结果,具体地,判断结果指示矩阵C第一个元素大于0,即矩阵B的第一个元素大于矩阵A的第一个元素,因此,算子计算结果的第一个元素为“2”。以此类推,数据选择模块最终确定算子计算结果为:/>。
示例5:假设卷积算子的类型为eltwise_min,矩阵A与矩阵B为参与运算的两个矩阵,其中,矩阵A为,矩阵B为/>。
在第一轮运算中,输入模块110将矩阵A输入到加法模块122,存储模块140将初始值0输出到符号设置模块121,符号设置模块修改初始值的符号为负号后将数值输入到加法模块122,加法模块122执行“A-0”的运算得到算子计算结果A。数据选择模块130基于卷积算子的类型(即eltwise_min),确定第一轮算子计算结果为A,然后将A存储到存储模块140。
在第二轮运算中,输入模块110将矩阵B输入到加法模块122,存储模块140将存储中的矩阵A输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即eltwise_min),将矩阵A的符号设置为负号,然后将结果输出到加法模块122。
加法模块122执行“B-A”的运算,得到矩阵C:,并将矩阵C输出到比较模块123。比较模块123判断矩阵C每一个元素是否大于或等于0,然后将判断结果输出到数据选择模块130,该判断结果指示:矩阵C的第一个元素大于0,第二个元素大于0,第三个元素小于0,第四个元素大于0。数据选择模块130基于该判断结果,根据矩阵A和矩阵B确定算子计算结果,具体地,判断结果指示矩阵C第一个元素大于0,即矩阵B的第一个元素大于矩阵A的第一个元素,因此,算子计算结果的第一个元素为“1”。以此类推,数据选择模块最终确定算子计算结果为:/>。
示例6:假设卷积算子的类型为max_pooling,a、b、c为参与运算的数据,其中a、b、c分别为:1、3、6。
在第一轮运算中,输入模块110将a输入到加法模块122,存储模块140将初始值0输出到符号设置模块121,符号设置模块修改初始值的符号为负号后将数值输入到加法模块122,加法模块122执行“a-0”的运算得到算子计算结果“1”。数据选择模块130基于卷积算子的类型(即max_pooling),确定第一轮算子计算结果为a(即数值“1”),然后将a存储到存储模块140。
在第二轮运算中,输入模块110将b输入到加法模块122,存储模块140将存储中的a输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即max_pooling),将a的符号设置为负号,然后将结果输出到加法模块122。
加法模块122执行“b-a”的运算,得到数值“2”,并将运算结果输出到比较模块123。比较模块123根据运算结果“2”大于0,判断b>a,然后将判断结果输出到数据选择模块130。数据选择模块130基于卷积算子的类型(即max_pooling),确定第二轮算子计算结果为b(即数值“3”),然后将b存储到存储模块140。
在第三轮运算中,输入模块110将c输入到加法模块122,存储模块140将存储中的b输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即max_pooling),将b的符号设置为负号,然后将结果输出到加法模块122。
加法模块122执行“c-b”的运算,得到数值“3”,并将运算结果输出到比较模块123。比较模块123根据运算结果“3”大于0,判断c>b,然后将判断结果输出到数据选择模块130。数据选择模块130基于卷积算子的类型(即max_pooling),确定第三轮算子计算结果为c(即数值“6”),即最终的算子计算结果为“6”。
示例7:假设卷积算子的类型为min_pooling,a、b、c为参与运算的数据,其中a、b、c分别为:1、3、6。
在第一轮运算中,输入模块110将a输入到加法模块122,存储模块140将初始值0输出到符号设置模块121,符号设置模块修改初始值的符号为负号后将数值输入到加法模块122,加法模块122执行“a-0”的运算得到算子计算结果“1”。数据选择模块130基于卷积算子的类型(即min_pooling),确定第一轮算子计算结果为a(即数值“1”),然后将a存储到存储模块140。
在第二轮运算中,输入模块110将b输入到加法模块122,存储模块140将存储中的a输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即min_pooling),将a的符号设置为负号,然后将结果输出到加法模块122。
加法模块122执行“b-a”的运算,得到数值“2”,并将运算结果输出到比较模块123。比较模块123根据运算结果“2”大于0,判断b>a,然后将判断结果输出到数据选择模块130。数据选择模块130基于卷积算子的类型(即min_pooling),确定第二轮算子计算结果为a(即数值“1”),然后将a存储到存储模块140。
在第三轮运算中,输入模块110将c输入到加法模块122,存储模块140将存储中的a输入到符号设置模块121,符号设置模块121基于卷积算子的类型(即min_pooling),将a的符号设置为负号,然后将结果输出到加法模块122。
加法模块122执行“c-a”的运算,得到数值“5”,并将运算结果输出到比较模块123。比较模块123根据运算结果“5”大于0,判断c>a,然后将判断结果输出到数据选择模块130。数据选择模块130基于卷积算子的类型(即min_pooling),确定第三轮算子计算结果为a(即数值“1”),即最终的算子计算结果为“1”。
上述方案所提供的卷积算子计算装置可以基于不同的卷积算子的类型,灵活切换运算方式,从而得到正确的算子计算结果,因此可以通过该一套装置即可实现多种不同类型的卷积算子,而不需要针对每种不同的卷积算子的类型均设置不同的逻辑运算电路,从而可以降低设备的复杂度,加强系统的灵活性,提高工作效率。
进一步可选地,图4示出了本申请实施例提供的另一种卷积算子计算装置400。图4中的卷积算子计算装置400可以看作是在图3所示的装置300的基础上的一种进一步方案。具体地,装置400中增加了饱和模块150,该饱和模块150位于数据选择模块130和存储模块140的传输路径上。示例性地,该饱和模块150用于判断算子计算结果的字节大小是否大于预设门限值;在算子计算结果的字节大小大于预设门限值的下,饱和模块150拒绝向存储模块发送算计计算结果,也就是说,该饱和模块150用于限制将字节大小超过预设的门限值的算子计算结果发送到存储模块140。具体地,当数据选择模块130将算子计算结果发送到饱和模块150之后,饱和模块150判断该算子计算结果的字节大小是否大于预设的门限值,在该算子计算结果的字节大小小于预设的门限值的情况下,饱和模块150将该算子计算结果发送到存储模块140;在该算子计算结果的字节大小大于或等于预设的门限值的情况下,饱和模块150不将该算子计算结果发送到存储模块140,可选地,饱和模块150可以发出告警信息,该告警信息用于指示算子计算结果的字节大小超过了预设的门限值。
基于上述方案,可以避免将字节过大的算子计算结果发送到存储模块140,从而占据过多内存。也就是说,该方案可以限制卷积算子的计算结果的字节数在预设的范围内,从而可以避免在一些异常算子计算结果(如计算异常导致多次循环计算,使得算子计算结果数值过大)占据内存,影响其他正常卷积算子的情况。
对应于上述实施例提供的卷积算子计算装置,图5是本申请实施例的一种卷积算子计算方法500的示意性流程图。图5所示的卷积算子计算方法可以利用上述卷积算子计算装置执行,因此,方法500仅简单描述具体的方案流程,未能详尽描述的方案以及相关的有益效果可参考图1至图4所对应的内容。下面对图5中的各个步骤进行介绍。
S510,获取第一数据以及第二数据。
示例性地,第一数据为卷积算子的计算参数第二数据为预配置的初始值或是该卷积算子上一次的计算结果。
S520,基于卷积算子的类型对第一数据以及第二数据进行计算得到第三数据。
作为一种可能的实现方式,基于该卷积算子的类型设置该第二数据的符号,然后对第一数据和第二数据执行加法运算得到第三数据。可以理解的是,执行加法运算的第二数据为经过符号设置后的第二数据。
例如,在该卷积算子的类型为eltwise_min、eltwise_max、eltwise_minus中的任一种的情况下,将该第二数据的符号设置为负号;在该卷积算子的类型为普通卷积累加或eltwise_add的情况下,将该第二数据的符号设置为正号,或者说,保持第二数据的符号不变。进一步地,对该第一数据和该第二数据执行加法运算得到该第三数据。可以理解的是,该第三数据用于确定算子计算结果。
S530,基于卷积算子的类型确定算子计算结果。
示例性地,在卷积算子的类型为普通卷积累加、eltwise_add、eltwise_minus中的任一种的情况下,该算子计算结果为第三数据;在卷积算子的类型为eltwise_min或eltwise_max的情况下,该算子计算结果为根据第一数据、第二数据以及第三数据确定的值。
S540,存储算子计算结果。
示例性地,在确定了算子计算结果之后,存储该算子计算结果。在一种实现方式中,存储的该算子计算结果可以用于该卷积算子在下一循环的计算。
上述方案所提供的卷积算子计算方法可以基于不同的卷积算子的类型,灵活切换运算方式,从而得到正确的算子计算结果,因此可以通过该一套装置即可实现多种不同类型的卷积算子,而不需要针对每种不同的卷积算子的类型均设置不同的逻辑运算电路,从而可以降低设备的复杂度,加强系统的灵活性,提高工作效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的卷积算子计算方法,图3示出了本申请实施例提供的计算机设备的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
请参考图6,图6是本申请实施例提供的一种计算机设备的结构示意图。如图6所示,计算机设备包括:处理器601、存储器602以及存储在存储器602中并可在处理器601上运行的计算机程序603,处理器601执行计算机程序603时实现上述实施例中的卷积算子计算方法中的步骤。
计算机设备可以是上述实施例所述的卷积算子计算装置,或是为该卷积算子计算装置提供算法服务的设备,本申请实施例不限定计算机设备的类型。本领域技术人员可以理解,图6仅仅是计算机设备的举例,并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
处理器601可以是中央处理单元(central processing unit,CPU),处理器601还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
存储器602在一些实施例中可以是计算机设备的片内存储器或片外存储器,比如计算机设备的高速缓冲存储器、静态随机存取存储器(static random-access memory,SRAM)、动态随机存取存储器(dynamic static random-access memory,DRAM)或软盘等。存储器602在另一些实施例中也可以是计算机设备上配备的插接式硬盘、智能存储卡(smartmedia card,SMC)、安全数字(secure digital,SD)卡、闪存卡(flash card)等。进一步地,存储器602还可以既包括计算机设备的片内存储器、片外存储器内部存储单元,也包括外部存储设备。存储器602用于存储操作系统、应用程序、引导装载程序(boot loader)、数据以及其他程序等。存储器602还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact disc read-only memory,CD-ROM)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种卷积算子计算装置,其特征在于,包括运算模块、数据选择模块和存储模块,所述运算模块包括符号设置模块和加法模块;
所述运算模块,用于从输入模块获取第一数据以及从所述存储模块获取第二数据,其中,所述第一数据为卷积算子的计算参数,所述第二数据为所述存储模块预配置的初始值或者是从所述数据选择模块获取的所述卷积算子上一次的计算结果,所述初始值为0;
所述符号设置模块,用于基于所述卷积算子的类型设置所述第二数据的符号,并将设置后的第二数据输出到所述加法模块;
所述加法模块,用于对所述第一数据和所述第二数据执行加法运算得到第三数据;
所述数据选择模块,用于基于所述卷积算子的类型确定算子计算结果,所述算子计算结果为所述第三数据,或是根据所述第一数据、所述第二数据以及所述第三数据确定的值;将所述算子计算结果发送给所述存储模块;
所述存储模块,用于从所述数据选择模块获取所述算子计算结果;存储所述算子计算结果。
2.如权利要求1所述的卷积算子计算装置,其特征在于,所述符号设置模块,具体用于:
在所述卷积算子的类型为eltwise_min、eltwise_max、eltwise_minus、max_pooling、min_pooling中的任一种的情况下,将所述第二数据的符号设置为负号;
在所述卷积算子的类型为普通卷积累加或eltwise_add的情况下,将所述第二数据的符号设置为正号。
3.如权利要求1或2所述的卷积算子计算装置,其特征在于,所述卷积算子计算装置还包括比较模块,其中:
所述比较模块,用于判断所述第三数据中的每一个元素是否大于0,并将判断结果输出给所述数据选择模块;
所述数据选择模块,具体用于:基于所述卷积算子的类型,根据所述第一数据、所述第二数据以及所述判断结果确定所述算子计算结果。
4.如权利要求3所述的卷积算子计算装置,其特征在于,所述数据选择模块,具体用于:
在所述卷积算子的类型为普通卷积累加、eltwise_add、eltwise_minus中的任一种的情况下,确定所述算子计算结果为所述第三数据;
在所述卷积算子的类型为eltwise_max、eltwise_min、max_pooling、min_pooling中的任一种的情况下,根据所述判断结果、所述第一数据及所述第二数据确定所述算子计算结果。
5.一种卷积算子计算方法,其特征在于,应用于卷积算子计算装置,所述卷积算子计算装置包括运算模块、数据选择模块和存储模块,所述运算模块包括符号设置模块和加法模块,所述方法包括:
利用所述运算模块获取第一数据以及第二数据,所述第一数据为卷积算子的计算参数,所述第二数据为预配置的初始值或是在获取所述第一数据以及第二数据之前所获取的所述卷积算子上一次的计算结果,所述初始值为0;利用所述符号设置模块基于所述卷积算子的类型设置所述第二数据的符号,并将设置后的第二数据输出到所述加法模块;
利用所述加法模块对所述第一数据和所述第二数据执行加法运算得到第三数据;
利用所述数据选择模块基于所述卷积算子的类型确定算子计算结果,所述算子计算结果为所述第三数据,或是根据所述第一数据、所述第二数据以及所述第三数据确定的值;
利用所述存储模块存储所述算子计算结果。
6.如权利要求5所述的卷积算子计算方法,其特征在于,所述基于所述卷积算子的类型设置所述第二数据的符号,包括:
在所述卷积算子的类型为eltwise_min、eltwise_max、eltwise_minus、max_pooling、min_pooling中的任一种的情况下,将所述第二数据的符号设置为负号;
在所述卷积算子的类型为普通卷积累加或eltwise_add的情况下,将所述第二数据的符号设置为正号。
7.如权利要求5或6所述的卷积算子计算方法,其特征在于,所述利用所述数据选择模块基于所述卷积算子的类型确定算子计算结果,包括:
在所述卷积算子的类型为eltwise_max、eltwise_min、max_pooling、min_pooling中的任一种的情况下,利用所述数据选择模块判断所述第三数据中的每一个元素是否大于0;
利用所述数据选择模块根据判断结果、所述第一数据及所述第二数据确定所述算子计算结果。
8.如权利要求5或6所述的卷积算子计算方法,其特征在于,所述利用所述数据选择模块基于所述卷积算子的类型确定算子计算结果,包括:
在所述卷积算子的类型为普通卷积累加、eltwise_add、eltwise_minus中的任一种的情况下,利用所述数据选择模块确定所述算子计算结果为所述第三数据。
9.一种电子设备,其特征在于,所述电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求5至8中任一项所述的卷积算子计算方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求5至8中任一项所述的卷积算子计算方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311038579.6A CN116756472B (zh) | 2023-08-17 | 2023-08-17 | 卷积算子计算装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311038579.6A CN116756472B (zh) | 2023-08-17 | 2023-08-17 | 卷积算子计算装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116756472A CN116756472A (zh) | 2023-09-15 |
CN116756472B true CN116756472B (zh) | 2024-03-29 |
Family
ID=87961267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311038579.6A Active CN116756472B (zh) | 2023-08-17 | 2023-08-17 | 卷积算子计算装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116756472B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107944545A (zh) * | 2017-11-10 | 2018-04-20 | 中国科学院计算技术研究所 | 应用于神经网络的计算方法及计算装置 |
CN111767986A (zh) * | 2020-06-24 | 2020-10-13 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种基于神经网络的运算方法及装置 |
CN113222125A (zh) * | 2020-01-21 | 2021-08-06 | 北京希姆计算科技有限公司 | 卷积运算方法及芯片 |
CN114626011A (zh) * | 2022-05-12 | 2022-06-14 | 飞诺门阵(北京)科技有限公司 | 光子计算神经网络运算加速方法、装置、设备及存储介质 |
CN114780910A (zh) * | 2022-06-16 | 2022-07-22 | 千芯半导体科技(北京)有限公司 | 用于稀疏化卷积计算的硬件系统和计算方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110210610B (zh) * | 2018-03-27 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
-
2023
- 2023-08-17 CN CN202311038579.6A patent/CN116756472B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107944545A (zh) * | 2017-11-10 | 2018-04-20 | 中国科学院计算技术研究所 | 应用于神经网络的计算方法及计算装置 |
CN113222125A (zh) * | 2020-01-21 | 2021-08-06 | 北京希姆计算科技有限公司 | 卷积运算方法及芯片 |
CN111767986A (zh) * | 2020-06-24 | 2020-10-13 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种基于神经网络的运算方法及装置 |
CN114626011A (zh) * | 2022-05-12 | 2022-06-14 | 飞诺门阵(北京)科技有限公司 | 光子计算神经网络运算加速方法、装置、设备及存储介质 |
CN114780910A (zh) * | 2022-06-16 | 2022-07-22 | 千芯半导体科技(北京)有限公司 | 用于稀疏化卷积计算的硬件系统和计算方法 |
Non-Patent Citations (1)
Title |
---|
基于NOR Flash的卷积计算单元的设计;徐伟民 等;《信息技术与网络安全》;第39卷(第5期);第63-68页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116756472A (zh) | 2023-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20080077779A1 (en) | Performing rounding operations responsive to an instruction | |
US8705886B2 (en) | System, medium, and method compensating brightness of an image | |
CN110796624B (zh) | 一种图像生成方法、装置及电子设备 | |
CN111652330B (zh) | 图像处理方法、装置、系统、电子设备及可读存储介质 | |
CN111709415B (zh) | 目标检测方法、装置、计算机设备和存储介质 | |
CN113360911A (zh) | 恶意代码同源分析方法、装置、计算机设备和存储介质 | |
CN110717864B (zh) | 一种图像增强方法、装置、终端设备及计算机可读介质 | |
CN117710189A (zh) | 图像处理方法、装置、计算机设备和存储介质 | |
CN116756472B (zh) | 卷积算子计算装置及方法 | |
CN112929424B (zh) | 网关负载均衡的方法、装置、设备及存储介质 | |
CN109034176B (zh) | 辨识系统以及辨识方法 | |
CN116385369A (zh) | 深度图像质量评价方法、装置、电子设备及存储介质 | |
CN113905066B (zh) | 物联网的组网方法、物联网的组网装置及电子设备 | |
CN111833232B (zh) | 一种图像处理装置 | |
CN111027683A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN113705795A (zh) | 卷积处理方法、装置、卷积神经网络加速器和存储介质 | |
CN117456562B (zh) | 姿态估计方法及装置 | |
CN117392038B (zh) | 医学图像直方图均衡化方法、装置、电子设备和存储介质 | |
CN118312797B (zh) | 一种相似度确定方法、装置和设备及计算机存储介质 | |
CN116596990B (zh) | 目标检测方法、装置、设备及存储介质 | |
CN112528223B (zh) | 分布式态势感知一致方法和装置 | |
CN117373007A (zh) | 多路对比的孪生网络模型设计及训练的方法、装置、存储介质 | |
CN113542808B (zh) | 视频处理方法、设备、装置以及计算机可读介质 | |
EP1516288A1 (en) | Calculation method of a cumulative histogram | |
CN116258915B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |