CN109146065B - 二维数据的卷积运算方法及装置 - Google Patents
二维数据的卷积运算方法及装置 Download PDFInfo
- Publication number
- CN109146065B CN109146065B CN201811160079.9A CN201811160079A CN109146065B CN 109146065 B CN109146065 B CN 109146065B CN 201811160079 A CN201811160079 A CN 201811160079A CN 109146065 B CN109146065 B CN 109146065B
- Authority
- CN
- China
- Prior art keywords
- sub
- dimensional data
- convolution
- data block
- address
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本发明属于卷积神经网络运算技术领域,特别涉及一种二维数据的卷积运算方法及装置,通过起始地址、目的地址、子二维数据块的长度、子二维数据块的宽度以及子二维数据块与原二维数据块的行偏差地址,可以完成任意长度二维数据块的子二维数据块的访问,将子二维数据块与对应的子卷积核进行卷积运算得到子二维数据块的卷积运算结果,并将所有子二维数据块的卷积运算结果累加,得到原二维数据块的卷积运算结果,使基于移位寄存器链的卷积运算加速器实现任意长宽卷积核的卷积运算,运算灵活性高,程序映射简单。
Description
技术领域
本发明属于卷积神经网络运算技术领域,特别涉及一种二维数据的卷积运算方法及装置。
背景技术
近年来,卷积神经网络(Convolutional Neural Network,CNN)在深度学习和人工智能中取得了重大的突破和进展, CNN在实际运算过程中一般是以二维的输入featuremap(特征图)卷积计算为基础,然后对每个输入feature map与对应二维卷积核的卷积结果进行累加,得到一个输出feature map。基于移位寄存器链的二维卷积运算加速器实现CNN运算的方法可大大降低存储器访问的压力,最大化实现数据复用。二维卷积运算加速器是通过一条二维的移位寄存器链实现输入数据的划窗操作,这种划窗操作可以使用二维移位寄存器链实现,并使用传统的DMA每次从存储器中取出一个数据压入移位寄存器链中,移位链窗口的数据直接输出给二维卷积计算单元。
基于移位寄存器链的卷积运算加速器的输入数据一般是通过直接存储器访问(Direct Memory Access,DMA)从输入数据存储器中进行搬移,然后数据逐个压入移位寄存器链中,传统的DMA一般只支持从起始地址到结束地址间连续数据的搬移。在基于移位寄存器链的卷积运算加速器应用中,如果卷积核的长度大于卷积运算单元支持最大长宽时,就需要对卷积核进行拆分,同时输入数据也是原二维数据的子集,传统的DMA无法在原二维数据存储器中实现子二维数据块的搬移,只能将原二维数据输入与拆分之后的子卷积核进行运算,导致冗余输入数据的搬移、计算时延变大,能耗提升,由此而产生的冗余计算结果,增加了最后计算结果累加逻辑复杂度。
发明内容
针对现有技术中存在的问题,本发明提供一种二维数据的卷积运算方法及装置,可以实现存储器中二维数据的任意子二维数据块的访问,可加快基于移位寄存器链的卷积运算加速器的执行速度,增加其灵活性,大大简化程序映射。
为了实现上述目的,本发明采用以下的技术方案:
本发明提供一种二维数据的卷积运算方法,包含以下步骤:
将卷积核拆分为多个设定宽度的子卷积核;
根据所述卷积核的宽度将需要进行卷积运算的二维数据块划分为多个子二维数据块,所述子二维数据块与所述子卷积核一一对应;
将所述子二维数据块与对应的子卷积核做卷积运算,得到子二维数据块与对应的子卷积核的卷积运算结果;
将根据所述多个子二维数据块与对应的子卷积核的卷积运算结果进行累加,得到所述二维数据块与所述卷积核的卷积运算结果。
进一步地,所述设定宽度按照移位寄存器链的宽度和二维卷积计算单元的宽度进行设定。
进一步地,所述将所述子二维数据块与对应的子卷积核做卷积运算,得到子二维数据块与对应的子卷积核的卷积运算结果,包括:
分别读取所述子二维数据块中的数据;
将读取的所述子二维数据块中的数据分别与对应的子卷积核进行卷积运算,得到各个子二维数据块与对应的子卷积核的卷积运算结果。
进一步地,所述分别读取所述子二维数据块中的数据,包括:
将所述二维数据块的长度与所述子二维数据块的长度的差值,作为行偏差地址;
根据起始地址、目的地址、子二维数据块的长度、子二维数据块的宽度以及所述行偏差地址分别读取子二维数据块中的数据。
进一步地,所述根据起始地址、目的地址、子二维数据块的长度、子二维数据块的宽度以及所述行偏差地址分别读取子二维数据块中的数据,包括:将读地址的起始地址设为所述子二维数据块的起始地址;
从所述起始地址开始逐一读取数据,每读取一个数据,将所述读地址增加一个数据的地址空间;
当读取指定个数的数据后,将所述读地址增加所述行偏差地址对应的地址空间,继续读取数据,所述指定个数等于所述子二维数据块的长度;
当读取指定行数的数据后,结束一个子二维数据块中数据的读取,所述指定行数等于所述子二维数据块的宽度;
将读出的数据顺序存储至从目的地址开始的存储空间。
进一步地,所述将根据所述多个子二维数据块与对应的子卷积核的卷积运算结果进行累加,得到所述二维数据块与所述卷积核的卷积运算结果,包括:
将得到的各个子二维数据块与对应的子卷积核的卷积运算结果进行累加运算,得到累加后的卷积运算结果;
将累加后的卷积运算结果作为所述二维数据块与所述卷积核的卷积运算结果。
本发明还提供一种二维数据的卷积运算装置,包括:
拆分单元,用于将卷积核拆分为多个设定宽度的子卷积核;
划分单元,用于根据所述卷积核的宽度将需要进行卷积运算的二维数据块划分为多个子二维数据块,所述子二维数据块与所述子卷积核一一对应;
第一运算单元,用于将所述子二维数据块与对应的子卷积核做卷积运算,得到子二维数据块与对应的子卷积核的卷积运算结果;
第二运算单元,用于将根据所述多个子二维数据块与对应的子卷积核的卷积运算结果进行累加,得到所述二维数据块与所述卷积核的卷积运算结果。
进一步地,所述第一运算单元包括:
读取子单元,用于分别读取所述子二维数据块中的数据;
第一运算子单元,用于将读取的所述子二维数据块中的数据分别与对应的子卷积核进行卷积运算,得到各个子二维数据块与对应的子卷积核的卷积运算结果。
进一步地,所述读取子单元具体用于:
将所述二维数据块的长度与所述子二维数据块的长度的差值,作为行偏差地址;
将读地址的起始地址设为所述子二维数据块的起始地址;
从所述起始地址开始逐一读取数据,每读取一个数据,将所述读地址增加一个数据的地址空间;
当读取指定个数的数据后,将所述读地址增加所述行偏差地址对应的地址空间,继续读取数据,所述指定个数等于所述子二维数据块的长度;
当读取指定行数的数据后,结束一个子二维数据块中数据的读取,所述指定行数等于所述子二维数据块的宽度;
将读出的数据顺序存储至从目的地址开始的存储空间。
进一步地,所述第二运算单元具体用于:
将得到的各个子二维数据块与对应的子卷积核的卷积运算结果进行累加运算,得到累加后的卷积运算结果;
将累加后的卷积运算结果作为所述二维数据块与所述卷积核的卷积运算结果。
与现有技术相比,本发明具有以下优点:
本发明公开了一种二维数据的卷积运算方法及装置,通过起始地址、目的地址、子二维数据块的长度、子二维数据块的宽度以及子二维数据块与原二维数据块的行偏差地址,可以完成任意长度二维数据块的子二维数据块的访问,将子二维数据块与对应的子卷积核进行卷积运算得到子二维数据块的卷积运算结果,并将所有子二维数据块的卷积运算结果累加,得到原二维数据块的卷积运算结果,使基于移位寄存器链的卷积运算加速器实现任意长宽卷积核的卷积运算,运算灵活性高,程序映射简单。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一所应用的AlexNet模型的结构框图;
图2是现有技术的卷积核为5x5的二维卷积运算输出第一行运算结果的示意图;
图3是现有技术的DMA中移位寄存器链划窗操作示意图;
图4是本发明实施例一所提供的一种二维数据的卷积运算方法的流程图;
图5是本发明实施例一所提供的一个5x5的卷积运算拆成4个3x3的卷积运算的示意图;
图6是本发明实施例一所提供的一种二维数据的卷积运算装置的结构框图。
图中序号所代表的含义为:61.拆分单元,62.划分单元,63.第一运算单元,64.第二运算单元。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,典型的CNN模型有AlexNet、ZFNet,VGGNet,GoogleNet和SqueezeNet(压缩卷积神经网络)等。CNN一般由多层的卷积层和下采样层(pooling)组成,卷积层输入通常是由多个二维的feature map(特征图)组成的三维数据,其对应的卷积核也是三维的数据。如图1所示,AlexNet结构分成8层运算,其输入是一个长宽深分别是224x224x3图片数据,其中前五层为卷积层。第一层卷积采用96个11x11x3的卷积核对同一块输入数据进行步进为4(stride=4)的卷积运算,输出是55x55x96三维数据;第一层的输出作为第二层卷积运算的输入,第二层卷积采用256个5x5x96的卷积核,并且卷积计算结果进行了pooling运算,第二层计算输出数据维度为27x27x256;后面三层的卷积运算均采用了长宽为3x3卷积核。因此,AlexNet卷积结构中总共需要三种长度分别为11x11、5x5和3x3的卷积核。
CNN的主要运算是三维数据的卷积运算,实际运算过程中一般是以二维的输入feature map卷积计算为基础,然后对每个输入feature map与对应二维卷积核的卷积结果进行累加,得到一个输出feature map。实现CNN运算的方法主要是基于通用处理器(CPU)、通用图形处理器(GPU),以及基于移位寄存器链的卷积运算加速器,其中基于移位寄存器链的卷积运算加速器是通过一条二维的移位寄存器链实现输入数据的划窗操作,其链的长度等于输入数据的行长度,宽度等于卷积核的宽度,每个时钟周期外部输入一个数据,移位寄存器链中的所有数据向后移动一个数据的位置,达到类似二维卷积运算中的划窗操作。这种划窗操作可以使用二维移位寄存器链实现,并使用传统的DMA每次从存储器中取出一个数据压入移位寄存器链中,移位链窗口的数据直接输出给二维卷积计算单元。
结合图2和图3对现有的二维卷积计算过程进行说明。图2示出了现有技术对卷积核为5x5的二维卷积运算输出第一行运算结果的示意图,输入数据是8x8的二维数据,卷积核大小为5x5,输出4x4的卷积计算结果,第一个计算结果S00等于输入数据左上角5x5的窗口数据与5x5卷积核的二维卷积运算结果;计算S01结果时,窗口在二维输入数据上向右滑动一个位置,如图2的step2;5x5窗口每次移动一个栅格位置,输出一个计算结果,直到窗口滑动到最右端,输出一行计算结果,然后窗口重新回到二维数据的最左侧,向下滑动一个栅格,继续向右滑动,开始计算第二行结果。划窗操作使用二维移位寄存器链实现,并使用传统的DMA每次从存储器中取出一个数据压入移位寄存器链中,移位链窗口的数据直接输出给二维卷积计算单元,如图3所示支持5x5划窗的二维移位寄存器链结构,二维移位寄存器链的总长度为37,每压入一个数据,移位寄存器链中的每个寄存器的数据向后移动一个位置,窗口中数据类似于在二维原数据平面上进行了一次划窗,在图3中,刚开始时移位寄存器链上充满数据,计算输出S00结果,当DMA输出的37号数据压入移位链之后,移位寄存器链中所有寄存器的数据向右移动一个位置(最末端的0号数据直接丢弃),窗口输出的数据与卷积核运算得到S01的数据。当移位寄存器链充满数据之后,每输入一行数据,二维卷积计算单元就能输出一行卷积结果。
在基于移位寄存器链的卷积运算加速器应用中,如果卷积核的长度大于加速器支持最大长宽时,就需要对卷积核进行拆分,同时输入数据也是原二维数据的子集,传统的DMA无法在原二维数据存储器中实现二维数据子集的搬移。
针对现有的二维数据的卷积运算中,传统DMA只支持从起始地址到结束地址间连续数据的搬移。采用传统的DMA进行子卷积核运算会导致冗余输入数据的搬移,计算时延变大,能耗提升,以及增加了最后计算结果累加逻辑复杂度的问题,本发明实施例一提供了一种二维数据的卷积运算方法及装置,下面结合附图和具体实施方式对本发明作进一步的详细说明。
实施例一
如图4所示,本实施例提供了一种二维数据的卷积运算方法,该方法包含以下步骤:
步骤S401,将卷积核拆分为多个设定宽度的子卷积核。
其中,设定宽度可以按照移位寄存器链的宽度和二维卷积计算单元的宽度进行设定。例如,卷积核的宽度为5x5,而移位寄存器链的宽度和二维卷积计算单元一般采用固定的宽度,若二维卷积计算单元支持3x3的卷积运算,移位寄存器链的宽度也为3,则5x5的卷积核就需要先将5x5的卷积核扩充为6x6的卷积核,然后拆分成4个3x3的子卷积核分别进行卷积运算。
步骤S402,根据所述卷积核的宽度将需要进行卷积运算的二维数据块划分为多个子二维数据块。
其中,所述子二维数据块与所述子卷积核一一对应。例如,将8x8的二维数据块进行5x5的卷积运算,若把5x5的卷积核拆分为4个3x3的子卷积核,那么8x8的二维数据块也要划分成4个与子卷积核对应的6x6的子二维数据块。
步骤S403,将所述子二维数据块与对应的子卷积核做卷积运算,得到子二维数据块与对应的子卷积核的卷积运算结果。
具体地,可以分别读取子二维数据块中的数据。例如,将读地址的起始地址设为所述子二维数据块的起始地址。从起始地址开始逐一读取数据,每读取一个数据,将读地址增加一个数据的地址空间。当读取指定个数的数据后,将读地址增加行偏差地址对应的地址空间,继续读取数据,其中,指定个数等于子二维数据块的长度,行偏差地址为二维数据块的长度与子二维数据块的长度的差值。当读取指定行数的数据后,结束一个子二维数据块中数据的读取操作,其中,指定行数等于子二维数据块的宽度。将读出的数据顺序存储至从目的地址开始的存储空间。将读出的子二维数据块中的数据分别与对应的子卷积核进行卷积运算,得到各个子二维数据块与对应的子卷积核的卷积运算结果。
步骤S404,将根据所述多个子二维数据块与对应的子卷积核的卷积运算结果进行累加,得到所述二维数据块与所述卷积核的卷积运算结果。
图5示出了将一个8x8的二维数据块拆分成4个6x6的子二维数据块与一个5x5的卷积运算拆分成4个3x3的子卷积核分别进行卷积运算的示意图。首先,将5x5的卷积核拆分成4个3x3的子卷积核;其次,将8x8的二维数据块按照原来6x6的卷积核所对应的数据划分为4个6x6的子二维数据块,分别对应4个子卷积核进行卷积运算。其中,子卷积核1与原二维数据中左上角部分的数据进行卷积运算;子卷积核2与原二维数据中左下角部分的数据进行卷积运算;子卷积核3与原二维数据中右上角部分的数据进行卷积运算;子卷积核4与原二维数据中右下角部分的数据进行卷积运算。其中,在读取左上角的子二维数据块时,将DMA的读地址的起始地址设为0,每读取一个数据,读地址增加一个数据的地址空间,每当读完6个数据之后(一行数据),读地址增加2(原二维数据块与子二维数据块的差值)个数据空间地址,则读地址转到原二维数据块的下一行数据开始读取,当读完6行数据后,结束一个子二维数据块的读取操作,将读出的数据顺序存储至从目的地址开始的存储空间中,将存储空间中的子二维数据块与子卷积核1进行卷积运算。按照上述读取过程,分别将其他三个子二维数据块的数据读出,并与相应的子卷积核进行卷积运算,将4个卷积运算的结果进行累加运算,得到原8x8的二维数据块与5x5的卷积核进行卷积运算的结果。
上述的一种二维数据的卷积运算方法,通过起始地址、目的地址、子二维数据块的长度、子二维数据块的宽度以及子二维数据块与原二维数据块的行偏差地址,可以完成任意长度二维数据块的子二维数据块的访问,将子二维数据块与对应的子卷积核进行卷积运算得到子二维数据块的卷积运算结果,并将所有子二维数据块的卷积运算结果累加,得到原二维数据块的卷积运算结果,使基于移位寄存器链的卷积运算加速器实现任意长宽卷积核的卷积运算,运算灵活性高,程序映射简单。
与上述方法实施例相对应地,如图6所示,本实施例还提供一种二维数据的卷积运算装置,包括:
拆分单元61,用于将卷积核拆分为多个设定宽度的子卷积核;
划分单元62,用于根据所述卷积核的宽度将需要进行卷积运算的二维数据块划分为多个子二维数据块,所述子二维数据块与所述子卷积核一一对应;
第一运算单元63,用于将所述子二维数据块与对应的子卷积核做卷积运算,得到子二维数据块与对应的子卷积核的卷积运算结果;
第二运算单元64,用于将根据所述多个子二维数据块与对应的子卷积核的卷积运算结果进行累加,得到所述二维数据块与所述卷积核的卷积运算结果。
进一步地,第一运算单元63包括读取子单元和第一运算子单元。
读取子单元,用于分别读取所述子二维数据块中的数据;
第一运算子单元,用于将读取的所述子二维数据块中的数据分别与对应的子卷积核进行卷积运算,得到各个子二维数据块与对应的子卷积核的卷积运算结果。
在本实施例中,读取子单元具体用于:
将所述二维数据块的长度与所述子二维数据块的长度的差值,作为行偏差地址;
将读地址的起始地址设为所述子二维数据块的起始地址;
从所述起始地址开始逐一读取数据,每读取一个数据,将所述读地址增加一个数据的地址空间;
当读取指定个数的数据后,将所述读地址增加所述行偏差地址对应的地址空间,继续读取数据,所述指定个数等于所述子二维数据块的长度;
当读取指定行数的数据后,结束一个子二维数据块中数据的读取,所述指定行数等于所述子二维数据块的宽度;
将读出的数据顺序存储至从目的地址开始的存储空间。
在本实施例中,所述第二运算单元具体64用于:
将得到的各个子二维数据块与对应的子卷积核的卷积运算结果进行累加运算,得到累加后的卷积运算结果;
将累加后的卷积运算结果作为所述二维数据块与所述卷积核的卷积运算结果。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (5)
1.一种二维数据的卷积运算方法,其特征在于,包含以下步骤:
将卷积核拆分为多个设定宽度的子卷积核;所述设定宽度按照移位寄存器链的宽度和二维卷积计算单元的宽度进行设定;
根据所述卷积核的宽度将存储器中需要进行卷积运算的二维数据块划分为多个子二维数据块,所述子二维数据块与所述子卷积核一一对应;
将所述子二维数据块通过DMA输入至移位寄存器链中,将移位寄存器链中的子二维数据块与对应的子卷积核做卷积运算,得到子二维数据块与对应的子卷积核的卷积运算结果,包括:
DMA分别读取所述子二维数据块中的数据,包括:将所述二维数据块的长度与所述子二维数据块的长度的差值,作为行偏差地址;DMA根据起始地址、目的地址、子二维数据块的长度、子二维数据块的宽度以及所述行偏差地址分别读取子二维数据块中的数据;
将DMA读取的所述子二维数据块中的数据存储至移位寄存器链中;
将移位寄存器链中的子二维数据块中的数据分别与对应的子卷积核进行卷积运算,得到各个子二维数据块与对应的子卷积核的卷积运算结果;
将根据所述多个子二维数据块与对应的子卷积核的卷积运算结果进行累加,得到所述二维数据块与所述卷积核的卷积运算结果。
2.根据权利要求1所述的二维数据的卷积运算方法,其特征在于,所述DMA根据起始地址、目的地址、子二维数据块的长度、子二维数据块的宽度以及所述行偏差地址分别读取子二维数据块中的数据,包括:
将DMA读地址的起始地址设为所述子二维数据块的起始地址;
从所述起始地址开始逐一读取数据,每读取一个数据,将DMA的读地址增加一个数据的地址空间;
当DMA读取指定个数的数据后,将所述读地址增加所述行偏差地址对应的地址空间,继续读取数据,所述指定个数等于所述子二维数据块的长度;
当DMA读取指定行数的数据后,结束一个子二维数据块中数据的读取,所述指定行数等于所述子二维数据块的宽度;
DMA将读出的数据顺序存储至从目的地址开始的移位寄存器链。
3.根据权利要求1所述的二维数据的卷积运算方法,其特征在于,所述将根据所述多个子二维数据块与对应的子卷积核的卷积运算结果进行累加,得到所述二维数据块与所述卷积核的卷积运算结果,包括:
将移位寄存器链中的各个子二维数据块与对应的子卷积核的卷积运算结果进行累加运算,得到累加后的卷积运算结果;
将累加后的卷积运算结果作为所述二维数据块与所述卷积核的卷积运算结果。
4.一种二维数据的卷积运算装置,其特征在于,包括:
拆分单元,用于将卷积核拆分为多个设定宽度的子卷积核;
划分单元,用于根据所述卷积核的宽度将存储器中需要进行卷积运算的二维数据块划分为多个子二维数据块,所述子二维数据块与所述子卷积核一一对应;
第一运算单元,用于将所述子二维数据块通过DMA输入至移位寄存器链中,将移位寄存器链中的子二维数据块与对应的子卷积核做卷积运算,得到子二维数据块与对应的子卷积核的卷积运算结果;
第二运算单元,用于将根据所述多个子二维数据块与对应的子卷积核的卷积运算结果进行累加,得到所述二维数据块与所述卷积核的卷积运算结果;
所述第一运算单元包括:
读取子单元,用于DMA分别读取所述子二维数据块中的数据,将DMA读取的所述子二维数据块中的数据存储至移位寄存器链中;
第一运算子单元,用于将移位寄存器链中的子二维数据块中的数据分别与对应的子卷积核进行卷积运算,得到各个子二维数据块与对应的子卷积核的卷积运算结果;
所述读取子单元具体用于:
将所述二维数据块的长度与所述子二维数据块的长度的差值,作为行偏差地址;
将DMA读地址的起始地址设为所述子二维数据块的起始地址;
从所述起始地址开始逐一读取数据,每读取一个数据,将DMA的读地址增加一个数据的地址空间;
当DMA读取指定个数的数据后,将所述读地址增加所述行偏差地址对应的地址空间,继续读取数据,所述指定个数等于所述子二维数据块的长度;
当DMA读取指定行数的数据后,结束一个子二维数据块中数据的读取,所述指定行数等于所述子二维数据块的宽度;
DMA将读出的数据顺序存储至从目的地址开始的移位寄存器链。
5.根据权利要求4所述的二维数据的卷积运算装置,其特征在于,所述第二运算单元具体用于:
将移位寄存器链中的各个子二维数据块与对应的子卷积核的卷积运算结果进行累加运算,得到累加后的卷积运算结果;
将累加后的卷积运算结果作为所述二维数据块与所述卷积核的卷积运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811160079.9A CN109146065B (zh) | 2018-09-30 | 2018-09-30 | 二维数据的卷积运算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811160079.9A CN109146065B (zh) | 2018-09-30 | 2018-09-30 | 二维数据的卷积运算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109146065A CN109146065A (zh) | 2019-01-04 |
CN109146065B true CN109146065B (zh) | 2021-06-08 |
Family
ID=64814252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811160079.9A Active CN109146065B (zh) | 2018-09-30 | 2018-09-30 | 二维数据的卷积运算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109146065B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109886400B (zh) * | 2019-02-19 | 2020-11-27 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
CN112559197B (zh) * | 2019-09-10 | 2022-11-15 | 无锡江南计算技术研究所 | 基于异构众核处理器的卷积计算数据重用方法 |
CN112765540B (zh) * | 2019-11-01 | 2024-02-20 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置及相关产品 |
CN111210004B (zh) * | 2019-12-31 | 2022-03-25 | 深圳云天励飞技术股份有限公司 | 卷积计算方法、卷积计算装置及终端设备 |
CN115982530A (zh) * | 2023-03-13 | 2023-04-18 | 苏州浪潮智能科技有限公司 | 加速器运算控制方法、系统、存储介质、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN106326985A (zh) * | 2016-08-18 | 2017-01-11 | 北京旷视科技有限公司 | 神经网络训练方法和装置及数据处理方法和装置 |
CN107451654A (zh) * | 2017-07-05 | 2017-12-08 | 深圳市自行科技有限公司 | 卷积神经网络的加速运算方法、服务器及存储介质 |
CN108304923A (zh) * | 2017-12-06 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 卷积运算处理方法及相关产品 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6700712B2 (ja) * | 2015-10-21 | 2020-05-27 | キヤノン株式会社 | 畳み込み演算装置 |
CN111860813B (zh) * | 2016-04-29 | 2024-01-16 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN108268931B (zh) * | 2016-12-30 | 2022-10-25 | 华为技术有限公司 | 数据处理的方法、装置和系统 |
CN106951395B (zh) * | 2017-02-13 | 2018-08-17 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
-
2018
- 2018-09-30 CN CN201811160079.9A patent/CN109146065B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN106326985A (zh) * | 2016-08-18 | 2017-01-11 | 北京旷视科技有限公司 | 神经网络训练方法和装置及数据处理方法和装置 |
CN107451654A (zh) * | 2017-07-05 | 2017-12-08 | 深圳市自行科技有限公司 | 卷积神经网络的加速运算方法、服务器及存储介质 |
CN108304923A (zh) * | 2017-12-06 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 卷积运算处理方法及相关产品 |
Non-Patent Citations (2)
Title |
---|
Fast L1 Gaussian convolution via domain splitting;Shin Yoshizawa;《IEEE》;20150129;第2908-2912页 * |
基于卷积核分解的深度CNN模型结构优化及其在小图像识别中的应用;罗富贵;《井冈山大学学报(自然科学版)》;20180331;第39卷(第2期);第31-39页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109146065A (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109146065B (zh) | 二维数据的卷积运算方法及装置 | |
CN110073359B (zh) | 用于卷积神经网络的有效数据布局 | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
CN108573305B (zh) | 一种数据处理方法、设备及装置 | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
TWI740274B (zh) | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 | |
CN111831254A (zh) | 图像处理加速方法、图像处理模型存储方法及对应装置 | |
CN108154229B (zh) | 基于fpga加速卷积神经网络框架的图片处理方法 | |
CN116663604A (zh) | 替选循环限制 | |
CN110298443A (zh) | 神经网络运算装置及方法 | |
WO2020156508A1 (zh) | 基于具有运算阵列的芯片的运算方法、装置及芯片 | |
CN111242277A (zh) | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 | |
TW202215304A (zh) | 用於分層權重稀疏卷積處理之方法和系統 | |
US20220083857A1 (en) | Convolutional neural network operation method and device | |
TW201941051A (zh) | 用於增加處理單元執行機器學習運算之速度之設備、方法及系統 | |
CN113673701A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN113743599B (zh) | 一种卷积神经网络的运算装置及服务器 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN114995782B (zh) | 数据处理方法、装置、设备和可读存储介质 | |
CN107909537A (zh) | 一种基于卷积神经网络的图像处理方法及移动终端 | |
CN114461978B (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
CN109740619B (zh) | 用于目标识别的神经网络终端运行方法和装置 | |
CN115238863A (zh) | 一种卷积神经网络卷积层的硬件加速方法、系统及应用 | |
US20220121914A1 (en) | Implementation of a neural network in multicore hardware |
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 |