CN111222624A - 一种并行计算方法及装置 - Google Patents
一种并行计算方法及装置 Download PDFInfo
- Publication number
- CN111222624A CN111222624A CN201811417046.8A CN201811417046A CN111222624A CN 111222624 A CN111222624 A CN 111222624A CN 201811417046 A CN201811417046 A CN 201811417046A CN 111222624 A CN111222624 A CN 111222624A
- Authority
- CN
- China
- Prior art keywords
- matrix
- input
- matrices
- layer
- splicing
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本申请提供了一种并行计算方法及装置,所述方法包括:将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵;矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵;从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。本申请通过将输入矩阵进行水平方向的拼接,从而减少了处理器换行处理流水线时所需的载入和存储带来的额外开销,提升了矢量处理器在处理小尺寸数据时的计算性能。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种并行计算方法及装置。
背景技术
神经网络被广泛应用于模式识别、图像处理、函数逼近和优化计算等领域,因其较高的运算速率,受到学术界和工业界越来越广泛的关注。而矢量处理器是专门设计的高度流水线作业的处理器,能够对整个矢量矩阵上逐行进行高效率的操作,因此当前神经网络中的深度学习任务多是使用矢量处理器(如GPU、矢量DSP、带有SIMD扩展指令集的CPU等等)处理运算的。
在卷积神经网络模型中,有一些应用场景,比如计算机视觉领域当中,可能会出现模型的输入矩阵的尺寸很小,但是模型执行的频率又很高的情况,使用矢量处理器对该种情况进行处理时,会存在浪费矢量寄存器位宽、计算流水中断等问题,影响处理器的计算性能。
申请内容
本申请提供了一种并行计算方法及装置,能够使得矢量处理器在处理小尺寸数据时,计算性能得到提升。
第一方面,本申请提供了一种并行计算方法,所述方法包括以下步骤:
将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵,其中,所述目标层包括卷积层和池化层,所述输入矩阵包含计算标识,所述计算标识包括卷积计算标识及池化计算标识,所述卷积计算标识包括卷积核参数,所述池化计算标识包括池化窗口参数,N的值是由矢量处理器的位宽确定的;
矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵,其中,所述拼接输出矩阵包含N个输出矩阵;
从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
可选地,所述目标层为卷积层的情况下,所述将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵包括:
在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵;
在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;
在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述卷积核一半宽度向下取整的结果;
在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果。
可选地,在所述目标层是池化层的情况下,所述将卷积神经网络目标层的N个不同的输入矩阵进行水平方向的拼接,得到第一拼接输入矩阵包括:
在所述输入矩阵为非填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;
在所述输入矩阵为填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵。
可选地,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵包括:
在所述输出矩阵的矩阵宽度大于输入矩阵一半宽度的情况下,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
可选地,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵还包括:
在所述输出矩阵的矩阵宽度小于或等于输入矩阵一半宽度的情况下,将所述输出矩阵中的每两行首尾拼接合并成一行,得到N个第二拼接矩阵;
将所述N个第二拼接矩阵作为卷积神经网络下一层的N个输入矩阵。
第二方面,本申请提供了一种并行计算装置,所述装置包括拼接单元、计算单元以及输出单元,其中,
所述拼接单元用于将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵,其中,所述目标层包括卷积层和池化层,所述输入矩阵包含计算标识,所述计算标识包括卷积计算标识及池化计算标识,所述卷积计算标识包括卷积核参数,所述池化计算标识包括池化窗口参数,N的值是由矢量处理器的位宽确定的;
所述计算单元用于使用矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵,其中,所述拼接输出矩阵包含N个输出矩阵;
所述输出单元用于从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
可选地,所述目标层为卷积层的情况下,所述拼接单元具体用于在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵;
所述拼接单元具体用于在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;
所述拼接单元具体用于在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述卷积核一半宽度向下取整的结果;
所述拼接单元具体用于在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果。
可选地,在所述目标层是池化层的情况下,所述拼接单元具体用于在所述输入矩阵为非填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;
所述拼接单元具体用于在所述输入矩阵为填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵。
可选地,所述输出单元具体用于在所述输出矩阵的矩阵宽度大于输入矩阵一半宽度的情况下,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
可选地,所述输出单元具体用于在所述输出矩阵的矩阵宽度小于或等于输入矩阵一半宽度的情况下,将所述输出矩阵中的每两行首尾相接合并成一行,得到N个第二拼接矩阵;
所述输出单元具体用于将所述N个第二拼接矩阵作为卷积神经网络下一层的N个输入矩阵。
上述方法中,通过将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵,再使用矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵,从而从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。通过上述方案,将多个小尺寸的输入矩阵进行水平方向的拼接获得拼接矩阵,从而大大延长矢量处理器的流水线的长度,减少了处理器换行处理流水线时所需的载入和存储带来的额外开销,进一步提升了矢量处理器在处理小尺寸数据时的计算性能。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种并行计算方法的流程示意图;
图2是本申请提供的一种卷积神经网络的结构示意图;
图3a是本申请提供的一个包含卷积计算标识的尺寸为6×6的卷积层输入矩阵示意图;
图3b是本申请提供的一个包含池化计算标识的尺寸为4×4的池化层输入矩阵示意图;
图4a是本申请提供的一种输入矩阵是非填充卷积层数据的拼接矩阵示意图;
图4b是本申请提供的一种输入矩阵是填充卷积层数据的拼接矩阵示意图;
图5a是本申请提供的一种输入矩阵是非填充池化层数据的拼接矩阵示意图;
图5b是本申请提供的一种输入矩阵是填充池化层数据的拼接矩阵示意图;
图6是本申请提供的一种卷积核在拼接矩阵的拼接边界上进行滑动卷积的计算流程示意图;
图7是本申请提供的一种第二拼接矩阵示意图;
图8是本申请提供的一种并行计算装置的结构示意图;
图9是本申请提供的一种电子设备结构示意框图。
具体实施方式
下面通过具体实施方式结合附图对本申请作进一步详细说明。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或描述,这是为了避免本申请的核心部分被过多的描述所淹没。对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
应当理解,当在本说明书和所附权利要求书中使用术语时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
需要说明的是,在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
为了使本申请能够被更好的理解,下面对矢量处理器进行简要介绍。
矢量处理器系统(Vector Processor System,VPS),是面向向量型并行计算,以流水线结构为主的并行处理计算机系统。采用先行控制和重叠操作技术、运算流水线、交叉访问的并行存储器等并行处理结构,对提高运算速度有重要作用。但在实际运行时还不能充分发挥并行处理潜力。向量运算很适合于流水线计算机的结构特点。向量型并行计算与流水线结构相结合,能在很大程度上克服通常流水线计算机中指令处理量太大、存储访问不均匀、相关等待严重、流水不畅等缺点,并可充分发挥并行处理结构的潜力,显著提高运算速度。但是,向量处理器在计算向量的每个分量时,都发生读写数据相关,导致流水线效率低,如果采用多功能流水线,必须频繁进行流水线切换。
综上可知,对于矢量处理系统来说,只有研制和采用向量型并行算法,使程序中包含的向量运算越多、向量越长,运算速度才会越高。本申请基于此思想,提出了一种并行计算方法及装置,其中,方法的具体步骤参见图1。
图1是本申请提供的一种并行计算方法的流程示意图。如图1所示,本申请提供的并行计算方法包括以下步骤:
S101:将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵。
在本申请具体的实施方式中,所述目标层包括卷积层和池化层,例如,图2是本申请提供的一种卷积神经网络的结构示意图,由图2可知,卷积神经网络CNN包括输入层、卷积层、池化层、全连接层以及输出层,可以理解的是,图2显示的CNN结构拥有两个卷积层以及两个池化层,图2仅仅用于举例说明,卷积神经网络可以拥有更多的卷积层以及池化层。但是卷积层的数量一般与池化层的数量相同,也就是说,卷积层的输出矩阵作为池化层的输入矩阵,池化层的输出矩阵将作为下一层卷积层输入矩阵。应理解,本申请提供的并行计算方法是针对于卷积层和池化层进行处理的,输入层、输出层及全连接层的处理方式可以是按照现有技术进行处理,因此本申请不再赘述。但是,卷积神经网络模型的卷积层和池化层计算量约占整个模型计算量的85%以上,因此,本申请虽然只针对卷积层和池化层提出了一种并行计算方法,但是可以极大地提升整个卷积神经网络模型的计算性能。
在本申请具体的实施方式中,所述输入矩阵包含计算标识,所述计算标识包括卷积计算标识及池化计算标识,所述卷积计算标识包括卷积核参数,所述池化计算标识包括池化窗口参数。其中,所述输入矩阵可以是卷积层输入矩阵以及池化层输入矩阵,所述输入矩阵可以是输入图片经过卷积神经网络输入层后获得的一个像素矩阵,例如,图3a是本申请提供的一个包含卷积计算标识的尺寸为6×6的卷积层输入矩阵,所述输入矩阵的卷积核尺寸为3×3,滑动步长为1。图3b是本申请提供的一个包含池化计算标识的尺寸为4×4的池化层输入矩阵,所述输入矩阵的池化窗口尺寸为2×2,滑动步长为1。应理解,图3a、图3b仅用于举例说明,并不能构成具体限定。
在本申请具体的实施方式中,N的值是由矢量处理器的位宽确定的。应理解,矢量处理器虽然是流水线作业,每条流水线包含的向量运算越多、向量越长,运算速度才会越高,但是每条流水线能包含的向量运算长度是有限的,也就是说,矢量处理器执行一次指令的数据带宽是有限的。例如,一个1024bit的矢量处理器,一次可以处理256个字节,而一个卷积层输入矩阵可以是一个48×48的矩阵,也就是说,处理这样一个数据,矢量处理器需要流水线换行切换48次,每次只占用了48个字节,因此,本申请提供的方法将多个输入矩阵进行水平方向的拼接,也就是说,仍以上述例子为例,处理5个48×48的输入矩阵需要流水线换行切换240次,每次占用48个字节,而将5个48×48的输入矩阵进拼接成一个240×48的拼接矩阵后,处理这样一个拼接矩阵,处理器仅需要流水线换行切换48次,但是每次将占用矢量存储器240个字节。因此,使用拼接的方法可以使得处理器的流水线换行切换次数大大减少,从而减少了处理器在进行流水线切换时载入和存储步骤所消耗的时间,进一步提升了处理器的计算性能。
在本申请具体的实施方式中,由于卷积层的计算方式是使用卷积核在输入矩阵上逐步滑动进行卷积运算,每滑动一次获得一个计算结果作为输出矩阵的一个元素。因此当滑动步长不为1时,如果直接将多个输入矩阵数据进行水平方向的拼接处理,可能会对个别输入矩阵的滑动计算出现缺漏,也就是说,相邻输入矩阵的拼接边界可能会对卷积处理结果带来一定的影响,为了进一步提升处理结果的准确性和可靠性,使得拼接矩阵的卷积处理结果可以真实准确地与单个输入矩阵进行卷积计算后得到的卷积处理结果完全等效,本申请提出了以下拼接方法:所述目标层为卷积层的情况下,所述将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵包括:在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵;在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述卷积核一半宽度向下取整的结果;在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果。
下面以图4a和图4b为例,对目标层为卷积层的情况下的数据拼接规则作出举例说明。其中,图4a是本申请提供的一种输入矩阵是非填充卷积层数据的拼接矩阵示意图,由图4a可知,输入矩阵的尺寸为5×5的非填充卷积层矩阵,卷积核尺寸为3×3,当滑动步长为1时,此时的拼接矩阵可以是一个15×5的矩阵,当互动步长大于1时,此时的拼接矩阵可以是一个15×5的矩阵。图4b是本申请提供的一种输入矩阵是填充卷积层数据的拼接矩阵示意图,由图4b可知,输入矩阵的尺寸为6×6的填充卷积层矩阵,卷积核尺寸为3×3,当滑动步长为1时,此时的拼接矩阵可以是一个15×5的矩阵,当滑动步长大于1时,此时的拼接矩阵可以是一个15×5的矩阵。应理解,上述举例仅用于说明,并不能构成具体限定。
在本申请具体的实施方式中,由于池化层的计算方式是使用池化窗口在输入矩阵上逐步滑动进行平均池化、最大池化或者随机池化运算,每滑动一次获得一个计算结果作为输出矩阵的一个元素。因此当滑动步长大于1时,如果直接将多个输入矩阵数据进行水平方向的拼接处理,可能会对个别输入矩阵的滑动计算出现缺漏,也就是说,相邻输入矩阵的拼接边界可能会对池化处理结果带来一定的影响,为了进一步提升处理结果的准确性和可靠性,使得拼接矩阵的池化处理结果可以真实准确地与单个输入矩阵进行池化计算后得到的池化处理结果完全等效,本申请提出了以下拼接方法:在所述目标层是池化层的情况下,所述将卷积神经网络目标层的N个不同的输入矩阵进行水平方向的拼接,得到第一拼接输入矩阵包括:在所述输入矩阵为非填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;在所述输入矩阵为填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵。
下面以图5a和图5b为例,对目标层为卷积层的情况下的数据拼接规则作出举例说明。其中,图5a是本申请提供的一种输入矩阵是非填充池化层数据的拼接矩阵示意图,由图5a可知,输入矩阵的尺寸为5×5的非填充池化层矩阵,池化窗口尺寸为3×3,当滑动步长为1时,此时的拼接矩阵可以是一个15×5的矩阵,图5b是本申请提供的一种输入矩阵是填充池化层数据的拼接矩阵示意图,由图5b可知,输入矩阵的尺寸为5×5的填充池化层矩阵,池化窗口尺寸为3×3,当滑动步长大于1时,此时的拼接矩阵可以是一个15×5的矩阵。应理解,上述举例仅用于说明,并不能构成具体限定。
S102:矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵。
在本申请具体的实施方式中,所述拼接输出矩阵包含N个输出矩阵。可以理解的是,由于输入矩阵不同,拼接矩阵的拼接方式也不同,如果将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,并使用填充矩阵进行拼接,得到的输出结果将包含无效计算结果。因此,需要对拼接输出矩阵进行进一步的处理,将无效计算结果从拼接输出矩阵中剔除,获得N个输出矩阵。
例如,图6是本申请提供的一种卷积核在拼接矩阵的拼接边界上进行滑动卷积的计算流程示意图,图6所示输入矩阵是尺寸为5×5的非填充卷积层,卷积核尺寸为3×3且滑动步长为2,因此单个输入矩阵的卷积计算结果应为一个2×2的输出矩阵,由本申请提供的矩阵拼接方法可知,在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果。因此,此时的k值为1,也就是说,将输入矩阵的每行末尾填充1个零后获得填充矩阵,并将填充矩阵进行水平方向的首尾拼接获得拼接矩阵,从而获得一个尺寸为11×5的拼接矩阵。可以理解的是,尺寸为11×5的拼接矩阵的卷积计算结果应为一个5×2的拼接输出矩阵,由图6可知,拼接输出矩阵包含了两个2×2的输出矩阵(图中的浅灰色区域)和一个1×2的无效矩阵(图中的白色区域),因此,将所述无效矩阵从拼接输出矩阵中剔除后即可得到两个输出矩阵,图6清楚的显示了卷积核在拼接边界上滑动卷积的过程,由图6可知,拼接矩阵的卷积处理结果可以真实准确地与单个输入矩阵进行卷积计算后得到的卷积处理结果完全等效。应理解,图6仅仅用于举例说明,并不能构成具体限定。
S103:从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
在本申请具体的实施方式中,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵包括:在所述输出矩阵的矩阵宽度大于输入矩阵一半宽度的情况下,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵还包括:在所述输出矩阵的矩阵宽度小于或等于输入矩阵一半宽度的情况下,将所述输出矩阵中的每两行首尾拼接合并成一行,得到N个第二拼接矩阵;将所述N个第二拼接矩阵作为卷积神经网络下一层的N个输入矩阵。也就是说,当输出矩阵的宽度大于输入矩阵一半宽度的情况下,将输出矩阵直接作为卷积神经网络下一层的输入矩阵,当输出矩阵的宽度小于输入矩阵一半宽度的情况下,将输出矩阵中的每两行首尾拼接合并成一行后,再作为卷积神经网络下一层的输入矩阵,其中,图7提供了一种第二拼接矩阵的示意图,应理解,图7仅仅用于举例,并不能构成具体限定。可以理解的是,由于卷积神经网络拥有多个卷积层和池化层,因此,每个输出数据都会作为下一层的输入数据,继续使用本申请提出的并行计算方法进行计算,直到所有的卷积层和池化层的计算都处理完毕后,将提取到的特征数据输入全连接层、输出层,最终获得分类结果。本申请提供的并行计算方法与普通的计算方法相比较,由于每一层的卷积或池化计算都进行了数据拼接,使得处理器的流水线换行切换次数大大减少,从而减少了处理器在进行流水线切换时载入和存储步骤所消耗的时间,进一步提升了处理器的计算性能。
上述方法中,通过将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵,再使用矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵,从而从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。上述方法可以将多个小尺寸的输入矩阵按行拼接获得拼接矩阵,从而大大延长矢量处理器处理计算的流水线的长度,减少了处理器换行处理流水线时所需的载入和存储带来的额外开销,进一步提升了矢量处理器在处理小尺寸数据时的计算性能。
图8是本申请提供的一种并行计算装置的结构示意图,由图8可知,本申请提供的并行计算装置包括拼接单元810、计算单元820以及输出单元830,其中,
所述拼接单元810用于将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵。
所述计算单元820用于使用矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵。
所述输出单元830用于从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
在本申请具体的实施方式中,所述目标层包括卷积层和池化层,例如,图2是本申请提供的一种卷积神经网络的结构示意图,由图2可知,卷积神经网络CNN包括输入层、卷积层、池化层、全连接层以及输出层,可以理解的是,图2显示的CNN结构拥有两个卷积层以及两个池化层,图2仅仅用于举例说明,卷积神经网络可以拥有更多的卷积层以及池化层。但是卷积层的数量一般与池化层的数量相同,也就是说,卷积层的输出矩阵作为池化层的输入矩阵,池化层的输出矩阵将作为下一层卷积层输入矩阵。应理解,本申请提供的并行计算方法是针对于卷积层和池化层进行处理的,输入层、输出层及全连接层的处理方式可以是按照现有技术进行处理,因此本申请不再赘述。但是,卷积神经网络模型的卷积层和池化层计算量约占整个模型计算量的85%以上,因此,本申请虽然只针对卷积层和池化层提出了一种并行计算方法,但是可以极大地提升整个卷积神经网络模型的计算性能。
在本申请具体的实施方式中,所述输入矩阵包含计算标识,所述计算标识包括卷积计算标识及池化计算标识,所述卷积计算标识包括卷积核参数,所述池化计算标识包括池化窗口参数。其中,所述输入矩阵可以是卷积层输入矩阵以及池化层输入矩阵,所述输入矩阵可以是输入图片经过卷积神经网络输入层后获得的一个像素矩阵,例如,图3a是本申请提供的一个包含卷积计算标识的尺寸为6×6的卷积层输入矩阵,所述输入矩阵的卷积核尺寸为3×3,滑动步长为1。图3b是本申请提供的一个包含池化计算标识的尺寸为4×4的池化层输入矩阵,所述输入矩阵的池化窗口尺寸为2×2,滑动步长为1。应理解,图3a、图3b仅用于举例说明,并不能构成具体限定。
在本申请具体的实施方式中,N的值是由矢量处理器的位宽确定的。应理解,矢量处理器虽然是流水线作业,每条流水线包含的向量运算越多、向量越长,运算速度才会越高,但是每条流水线能包含的向量运算长度是有限的,也就是说,矢量处理器执行一次指令的数据带宽是有限的。例如,一个1024bit的矢量处理器,一次可以处理256个字节,而一个卷积层输入矩阵可以是一个48×48的矩阵,也就是说,处理这样一个数据,矢量处理器需要流水线换行切换48次,每次只占用了48个字节,因此,本申请提供的方法将多个输入矩阵进行水平方向的拼接,也就是说,仍以上述例子为例,处理5个48×48的输入矩阵需要流水线换行切换240次,每次占用48个字节,而将5个48×48的输入矩阵进拼接成一个240×48的拼接矩阵后,处理这样一个拼接矩阵,处理器仅需要流水线换行切换48次,但是每次将占用矢量存储器240个字节。因此,使用拼接的方法可以使得处理器的流水线换行切换次数大大减少,从而减少了处理器在进行流水线切换时载入和存储步骤所消耗的时间,进一步提升了处理器的计算性能。
在本申请具体的实施方式中,由于卷积层的计算方式是使用卷积核在输入矩阵上逐步滑动进行卷积运算,每滑动一次获得一个计算结果作为输出矩阵的一个元素。因此当滑动步长不为1时,如果直接将多个输入矩阵数据进行水平方向的拼接处理,可能会对个别输入矩阵的滑动计算出现缺漏,也就是说,相邻输入矩阵的拼接边界可能会对卷积处理结果带来一定的影响,为了进一步提升处理结果的准确性和可靠性,使得拼接矩阵的卷积处理结果可以真实准确地与单个输入矩阵进行卷积计算后得到的卷积处理结果完全等效,所述目标层为卷积层的情况下,所述拼接单元810具体用于在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵;所述拼接单元810具体用于在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;所述拼接单元810具体用于在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述卷积核一半宽度向下取整的结果;所述拼接单元810具体用于在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果。
下面以图4a和图4b为例,对目标层为卷积层的情况下的数据拼接规则作出举例说明。其中,图4a是本申请提供的一种输入矩阵是非填充卷积层数据的拼接矩阵示意图,由图4a可知,输入矩阵的尺寸为5×5的非填充卷积层矩阵,卷积核尺寸为3×3,当滑动步长为1时,此时的拼接矩阵可以是一个15×5的矩阵,当滑动步长大于1时,此时的拼接矩阵可以是一个17×5的矩阵。图4b是本申请提供的一种输入矩阵是填充卷积层数据的拼接矩阵示意图,由图4b可知,输入矩阵的尺寸为5×5的填充卷积层矩阵,卷积核尺寸为3×3,当滑动步长为1时,此时的拼接矩阵可以是一个17×5的矩阵,当滑动步长大于1时,此时的拼接矩阵可以是一个17×5的矩阵。应理解,上述举例仅用于说明,并不能构成具体限定。
在本申请具体的实施方式中,由于池化层的计算方式是使用池化窗口在输入矩阵上逐步滑动进行平均池化、最大池化或者随机池化运算,每滑动一次获得一个计算结果作为输出矩阵的一个元素。因此当滑动步长大于1时,如果直接将多个输入矩阵数据进行水平方向的拼接处理,可能会对个别输入矩阵的滑动计算出现缺漏,也就是说,相邻输入矩阵的拼接边界可能会对池化处理结果带来一定的影响,为了进一步提升处理结果的准确性和可靠性,使得拼接矩阵的池化处理结果可以真实准确地与单个输入矩阵进行池化计算后得到的池化处理结果完全等效,在所述目标层是池化层的情况下,所述拼接单元810具体用于在所述输入矩阵为非填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;所述拼接单元810具体用于在所述输入矩阵为填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵。
下面以图5a和图5b为例,对目标层为卷积层的情况下的数据拼接规则作出举例说明。其中,图5a是本申请提供的一种输入矩阵是非填充池化层数据的拼接矩阵示意图,由图5a可知,输入矩阵的尺寸为5×5的非填充池化层矩阵,池化窗口尺寸为3×3,当滑动步长为1时,此时的拼接矩阵可以是一个15×5的矩阵,当滑动步长大于1时,此时的拼接矩阵可以是一个15×5的矩阵。应理解,上述举例仅用于说明,并不能构成具体限定。
在本申请具体的实施方式中,所述拼接输出矩阵包含N个输出矩阵。可以理解的是,由于输入矩阵不同,拼接矩阵的拼接方式也不同,如果将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,并使用填充矩阵进行拼接,得到的输出结果将包含无效计算结果。因此,需要对拼接输出矩阵进行进一步的处理,将无效计算结果从拼接输出矩阵中剔除,获得N个输出矩阵。
例如,图6是本申请提出的一种卷积核在拼接矩阵的拼接边界上进行滑动卷积的计算流程示意图,图6所示输入矩阵是尺寸为5×5的非填充卷积层,卷积核尺寸为3×3且滑动步长为2,因此单个输入矩阵的卷积计算结果应为一个2×2的输出矩阵,由本申请提供的矩阵拼接方法可知,在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果。因此,此时的k值为1,也就是说,将输入矩阵的每行末尾填充1个零后获得填充矩阵,并将填充矩阵进行水平方向的首尾拼接获得拼接矩阵,从而获得一个尺寸为11×5的拼接矩阵。可以理解的是,尺寸为11×5的拼接矩阵的卷积计算结果应为一个5×2的拼接输出矩阵,由图6可知,拼接输出矩阵包含了两个2×2的输出矩阵(图中的浅灰色区域)和一个1×2的无效矩阵(图中的白色区域),因此,将所述无效矩阵从拼接输出矩阵中剔除后即可得到两个输出矩阵,图6清楚的显示了卷积核在拼接边界上滑动卷积的过程,由图6可知,拼接矩阵的卷积处理结果可以真实准确地与单个输入矩阵进行卷积计算后得到的卷积处理结果完全等效。应理解,图6仅仅用于举例说明,并不能构成具体限定。
在本申请具体的实施方式中,所述输出单元830具体用于在所述输出矩阵的矩阵宽度大于输入矩阵一半宽度的情况下,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。所述输出单元具体830用于在所述输出矩阵的矩阵宽度小于或等于输入矩阵一半宽度的情况下,将所述输出矩阵中的每两行首尾相接合并成一行,得到N个第二拼接矩阵;所述输出单元830具体用于将所述N个第二拼接矩阵作为卷积神经网络下一层的N个输入矩阵。也就是说,当输出矩阵的宽度大于输入矩阵一半宽度的情况下,将输出矩阵直接作为卷积神经网络下一层的输入矩阵,当输出矩阵的宽度小于输入矩阵一半宽度的情况下,将输出矩阵中的每两行首尾拼接合并成一行后,再作为卷积神经网络下一层的输入矩阵,其中,图7提供了一种第二拼接矩阵的示意图,应理解,图7仅仅用于举例,并不能构成具体限定。可以理解的是,由于卷积神经网络拥有多个卷积层和池化层,因此,每个输出数据都会作为下一层的输入数据,继续使用本申请提出的并行计算方法进行计算,直到所有的卷积层和池化层的计算都处理完毕后,将提取到的特征数据输入全连接层、输出层,最终获得分类结果。本申请提供的并行计算方法与普通的计算方法相比较,由于每一层的卷积或池化计算都进行了数据拼接,使得处理器的流水线换行切换次数大大减少,从而减少了处理器在进行流水线切换时载入和存储步骤所消耗的时间,进一步提升了处理器的计算性能。
上述方法中,通过将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵,再使用矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵,从而从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。上述方法可以将多个小尺寸的输入矩阵进行水平拼接获得拼接矩阵,从而大大延长矢量处理器处理计算的流水线的长度,减少了处理器换行处理流水线时所需的载入和存储带来的额外开销,进一步提升了矢量处理器在处理小尺寸数据时的计算性能。
参见图9,图9是本申请提供的一种电子设备的结构示意图。如图所示的本实施例中的电子设备可以包括:一个或者多个处理器911、存储器912和通信接口913。其中,处理器911、存储器912和通信接口913之间可以通过总线914连接。
处理器911包括一个或者多个通用处理器,其中,通用处理器可以是能够处理电子指令的任何类型的设备,包括中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、微处理器、微控制器、主处理器、控制器以及专用集成电路(Application Specific Integrated Circuit,ASIC)、数字信号处理器(DigitalSignal Processor,DSP)、可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器911用于执行存储器912存储的程序指令。
存储器912可以包括易失性存储器,例如随机存取存储器(Random AccessMmemory,RAM);存储器也可以包括非易失性存储器,例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-StateDrive,SSD),存储器还可以包括上述种类的存储器的组合。存储器912可以采用集中式存储,也可以采用分布式存储,此处不作具体限定。可以理解的是,存储器912用于存储计算机程序,例如:计算机程序指令等。在本申请实施例中,存储器912可以向处理器911提供指令和数据。
通信接口913可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他计算机设备或用户进行通信。当通信接口913为有线接口时,通信接口913可以采用网络通讯协议(Transmission Control Protocol/InternetProtocol,TCP/IP)之上的协议族,例如,远程函数调用(Remote Function Call,RFC)协议、简单对象访问协议(Simple Object Access Protocol,SOAP)协议、简单网络管理协议(Simple Network Management Protocol,SNMP)、公共对象请求代理体系结构协议(CommonObject Request Broker Architecture,CORBA)以及分布式协议等等。当通信接口913为无线接口时,可以根据全球移动通信系统(Global System for Mobile Communication,GSM)或者码分多址(Code Division Multiple Access,CDMA)标准利用蜂窝通信,因此包括用于数据传输的无线调制解调器、电子处理设备、一个或多个数字存储器设备以及双天线。
在本申请实施例中,处理器911、存储器912、通信接口913和总线914可执行本申请实施例提供的并行计算方法的任一实施例中所描述的实现方式,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法及装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种并行计算方法,其特征在于,包括:
将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵,其中,所述目标层包括卷积层和池化层,所述输入矩阵包含计算标识,所述计算标识包括卷积计算标识及池化计算标识,所述卷积计算标识包括卷积核参数,所述池化计算标识包括池化窗口参数,N的值是由矢量处理器的位宽确定的;
矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵,其中,所述拼接输出矩阵包含N个输出矩阵;
从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
2.根据权利要求1所述的方法,其特征在于,所述目标层为卷积层的情况下,所述将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵包括:
在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵;
在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;
在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述卷积核一半宽度向下取整的结果;
在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果。
3.根据权利要求2所述的方法,其特征在于,在所述目标层是池化层的情况下,所述将卷积神经网络目标层的N个不同的输入矩阵进行水平方向的拼接,得到第一拼接输入矩阵包括:
在所述输入矩阵为非填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;
在所述输入矩阵为填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵。
4.根据权利要求3所述的方法,其特征在于,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵包括:
在所述输出矩阵的矩阵宽度大于输入矩阵一半宽度的情况下,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
5.根据权利要求4所述的方法,其特征在于,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵还包括:
在所述输出矩阵的矩阵宽度小于或等于输入矩阵一半宽度的情况下,将所述输出矩阵中的每两行首尾拼接合并成一行,得到N个第二拼接矩阵;
将所述N个第二拼接矩阵作为卷积神经网络下一层的N个输入矩阵。
6.一种并行计算装置,其特征在于,所述装置包括拼接单元、计算单元以及输出单元,其中,
所述拼接单元用于将卷积神经网络目标层的N个输入矩阵进行水平方向的拼接,获得第一拼接输入矩阵,其中,所述目标层包括卷积层和池化层,所述输入矩阵包含计算标识,所述计算标识包括卷积计算标识及池化计算标识,所述卷积计算标识包括卷积核参数,所述池化计算标识包括池化窗口参数,N的值是由矢量处理器的位宽确定的;
所述计算单元用于使用矢量处理器根据所述计算标识对所述第一拼接输入矩阵进行水平方向的计算处理,得到拼接输出矩阵,其中,所述拼接输出矩阵包含N个输出矩阵;
所述输出单元用于从所述拼接输出矩阵中筛选出所述N个输出矩阵,并将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
7.根据权利要求6所述的装置,其特征在于,所述目标层为卷积层的情况下,所述拼接单元具体用于在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵;
所述拼接单元具体用于在所述输入矩阵为非填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;
所述拼接单元具体用于在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长为1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述卷积核一半宽度向下取整的结果;
所述拼接单元具体用于在所述输入矩阵为填充卷积层矩阵且卷积核滑动步长大于1的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果。
8.根据权利要求7所述的装置,其特征在于,在所述目标层是池化层的情况下,所述拼接单元具体用于在所述输入矩阵为非填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵的每行末尾填充k个零后获得N个填充矩阵,将所述N个填充矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵,其中,k值为所述输入矩阵的矩阵宽度对所述卷积核滑动步长取模的结果;
所述拼接单元具体用于在所述输入矩阵为填充池化层矩阵且池化窗口宽度为s的情况下,将所述N个输入矩阵进行水平方向的首尾拼接获得第一拼接输入矩阵。
9.根据权利要求8所述的装置,其特征在于,所述输出单元具体用于在所述输出矩阵的矩阵宽度大于输入矩阵一半宽度的情况下,将所述N个输出矩阵作为卷积神经网络下一层的N个输入矩阵。
10.根据权利要求9所述的装置,其特征在于,所述输出单元具体用于在所述输出矩阵的矩阵宽度小于或等于输入矩阵一半宽度的情况下,将所述输出矩阵中的每两行首尾相接合并成一行,得到N个第二拼接矩阵;
所述输出单元具体用于将所述N个第二拼接矩阵作为卷积神经网络下一层的N个输入矩阵。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811417046.8A CN111222624B (zh) | 2018-11-26 | 2018-11-26 | 一种并行计算方法及装置 |
PCT/CN2018/124831 WO2020107616A1 (zh) | 2018-11-26 | 2018-12-28 | 一种并行计算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811417046.8A CN111222624B (zh) | 2018-11-26 | 2018-11-26 | 一种并行计算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111222624A true CN111222624A (zh) | 2020-06-02 |
CN111222624B CN111222624B (zh) | 2022-04-29 |
Family
ID=70830288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811417046.8A Active CN111222624B (zh) | 2018-11-26 | 2018-11-26 | 一种并行计算方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111222624B (zh) |
WO (1) | WO2020107616A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113919405A (zh) * | 2020-07-07 | 2022-01-11 | 华为技术有限公司 | 数据处理方法、装置与相关设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312285B (zh) * | 2021-06-11 | 2023-08-18 | 西安微电子技术研究所 | 一种卷积神经网络加速器及其工作方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050192994A1 (en) * | 1998-12-10 | 2005-09-01 | Caldwell Donald F. | Data compression method and apparatus |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN106782602A (zh) * | 2016-12-01 | 2017-05-31 | 南京邮电大学 | 基于长短时间记忆网络和卷积神经网络的语音情感识别方法 |
CN107292256A (zh) * | 2017-06-14 | 2017-10-24 | 西安电子科技大学 | 基于辅任务的深度卷积小波神经网络表情识别方法 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156807B (zh) * | 2015-04-02 | 2020-06-02 | 华中科技大学 | 卷积神经网络模型的训练方法及装置 |
US10733697B2 (en) * | 2016-12-27 | 2020-08-04 | Intel IP Corporation | Convolutional neural network for wide-angle camera images |
CN107368886B (zh) * | 2017-02-23 | 2020-10-02 | 奥瞳系统科技有限公司 | 基于重复使用小规模卷积神经网络模块的神经网络系统 |
US10261786B2 (en) * | 2017-03-09 | 2019-04-16 | Google Llc | Vector processing unit |
CN108334910B (zh) * | 2018-03-30 | 2020-11-03 | 国信优易数据股份有限公司 | 一种事件检测模型训练方法以及事件检测方法 |
-
2018
- 2018-11-26 CN CN201811417046.8A patent/CN111222624B/zh active Active
- 2018-12-28 WO PCT/CN2018/124831 patent/WO2020107616A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050192994A1 (en) * | 1998-12-10 | 2005-09-01 | Caldwell Donald F. | Data compression method and apparatus |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN106782602A (zh) * | 2016-12-01 | 2017-05-31 | 南京邮电大学 | 基于长短时间记忆网络和卷积神经网络的语音情感识别方法 |
CN107292256A (zh) * | 2017-06-14 | 2017-10-24 | 西安电子科技大学 | 基于辅任务的深度卷积小波神经网络表情识别方法 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113919405A (zh) * | 2020-07-07 | 2022-01-11 | 华为技术有限公司 | 数据处理方法、装置与相关设备 |
CN113919405B (zh) * | 2020-07-07 | 2024-01-19 | 华为技术有限公司 | 数据处理方法、装置与相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111222624B (zh) | 2022-04-29 |
WO2020107616A1 (zh) | 2020-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111199273A (zh) | 卷积计算方法、装置、设备及存储介质 | |
US10235738B2 (en) | Method of and apparatus for displaying an output surface in data processing systems | |
CN111279384B (zh) | 图形流水线中的索引的压缩和解压缩 | |
CN111222624B (zh) | 一种并行计算方法及装置 | |
US20200134435A1 (en) | Computation apparatus, circuit and relevant method for neural network | |
CN111510718B (zh) | 通过图像文件的块间差异提高压缩率的方法及系统 | |
CN108377394B (zh) | 视频编码器的图像数据读取方法、计算机装置及计算机可读存储介质 | |
CN105187845A (zh) | 视频数据解码装置及解码方法 | |
CN111210004B (zh) | 卷积计算方法、卷积计算装置及终端设备 | |
CN108769684A (zh) | 基于WebP图像压缩算法的图像处理方法以及装置 | |
CN110913230A (zh) | 一种视频帧预测方法、装置及终端设备 | |
CN111448545B (zh) | 并行处理设备和进行并行多值归约的方法 | |
CN113452655A (zh) | 一种分布式训练方法、梯度通信方法、装置以及计算设备 | |
EP4071619A1 (en) | Address generation method, related device and storage medium | |
US11539955B2 (en) | Method and system for improving compression ratio through pixel conversion of image file | |
CN104967856A (zh) | 一种编码方法及相关设备 | |
EP4195062A1 (en) | Method and apparatus for separable convolution filter operations on matrix multiplication arrays | |
CN108668166B (zh) | 一种编码方法、装置及终端设备 | |
CN113497627A (zh) | 一种数据压缩和解压缩方法、装置及系统 | |
CN107977923B (zh) | 图像处理方法、装置、电子设备及计算机可读存储介质 | |
CN115346099A (zh) | 基于加速器芯片的图像卷积方法、芯片、设备及介质 | |
US10372195B2 (en) | Data processing | |
CN107871162B (zh) | 一种基于卷积神经网络的图像处理方法及移动终端 | |
US10582207B2 (en) | Video processing systems | |
CN112017100A (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 | ||
CB02 | Change of applicant information |
Address after: 518000 1st floor, building 17, Shenzhen Dayun software Town, 8288 Longgang Avenue, Yuanshan street, Longgang District, Shenzhen City, Guangdong Province Applicant after: Shenzhen Yuntian lifeI Technology Co., Ltd Address before: 518000 1st floor, building 17, Shenzhen Dayun software Town, 8288 Longgang Avenue, Yuanshan street, Longgang District, Shenzhen City, Guangdong Province Applicant before: SHENZHEN INTELLIFUSION TECHNOLOGIES Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |