CN114065119A - 数据处理方法及相关产品 - Google Patents

数据处理方法及相关产品 Download PDF

Info

Publication number
CN114065119A
CN114065119A CN202111388826.6A CN202111388826A CN114065119A CN 114065119 A CN114065119 A CN 114065119A CN 202111388826 A CN202111388826 A CN 202111388826A CN 114065119 A CN114065119 A CN 114065119A
Authority
CN
China
Prior art keywords
data
convolution
parts
calculation
data volume
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111388826.6A
Other languages
English (en)
Inventor
于传帅
卜海祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202111388826.6A priority Critical patent/CN114065119A/zh
Publication of CN114065119A publication Critical patent/CN114065119A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例提供一种数据处理方法及相关产品,该数据处理方法包括:电子设备获取第一卷积层在第一计算阶段的卷积数据;判断卷积数据在第一方向上的数据量是否能够被第一数据量整除,第一数据量是采用维诺格拉德方法所需的基本计算单位在计算效率最高时输出的数据的颗粒度;若否,将卷积数据在第一方向上切分为N份,N份中第一份的数据量小于第一数据量,N份中除第一份之外的其他份的数据量等于第一数据量,N为大于或等于2的整数;依次对N份中第一份至第N份进行卷积运算。本申请实施例可以平衡计算效率和缓存空间。

Description

数据处理方法及相关产品
技术领域
本申请涉及机器学习技术领域,具体涉及一种数据处理方法及相关产品。
背景技术
分类器是机器学习领域非常重要的一个分支,深度学习已经成为分类器的主流算法,目前的深度学习算法一般采用卷积(conv)+直连(shortcut)的网络结构。
为了提高深度学习算法的计算效率,在计算conv时,硬件倾向于采用维诺格拉德(winograd)方法,采用winograd方法在计算shortcut时,会增加shortcut使用的缓存空间。在深度学习算法中,如何平衡计算效率和缓存空间,成为亟待解决的问题。
发明内容
本申请实施例提供一种数据处理方法及相关产品,可以在尽量提高计算效率的前提下,尽量减少使用的缓存空间,从而平衡计算效率和缓存空间。
本申请实施例的第一方面提供了一种数据处理方法,包括:
获取第一卷积层在第一计算阶段的卷积数据;
判断所述卷积数据在第一方向上的数据量是否能够被第一数据量整除,所述第一数据量是采用维诺格拉德方法所需的基本计算单位在计算效率最高时输出的数据的颗粒度;
若否,将所述卷积数据在所述第一方向上切分为N份,所述N份中第一份的数据量小于所述第一数据量,所述N份中除第一份之外的其他份的数据量等于所述第一数据量,N为大于或等于2的整数;
依次对所述N份中第一份至第N份进行卷积运算。
本申请实施例的第二方面提供了一种数据处理装置,包括:
获取单元,用于获取第一卷积层在第一计算阶段的卷积数据;
判断单元,用于判断所述卷积数据在第一方向上的数据量是否能够被第一数据量整除,所述第一数据量是采用维诺格拉德方法所需的基本计算单位在计算效率最高时输出的数据的颗粒度;
切分单元,用于在所述判断单元的判断结果为否的情况下,将所述卷积数据在所述第一方向上切分为N份,所述N份中第一份的数据量小于所述第一数据量,所述N份中除第一份之外的其他份的数据量等于所述第一数据量,N为大于或等于2的整数;
运算单元,用于依次对所述N份中第一份至第N份进行卷积运算。
本申请实施例的第三方面提供了一种电子设备,包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如本申请实施例第一方面中的步骤指令。
本申请实施例的第四方面提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。
本申请实施例的第五方面提供了一种计算机程序产品,其中,上述计算机程序产品包括计算机程序,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
本申请实施例中,获取第一卷积层在第一计算阶段的卷积数据;判断卷积数据在第一方向上的数据量是否能够被第一数据量整除,第一数据量是采用维诺格拉德方法所需的基本计算单位在计算效率最高时输出的数据的颗粒度;若否,将卷积数据在第一方向上切分为N份,N份中第一份的数据量小于第一数据量,N份中除第一份之外的其他份的数据量等于第一数据量,N为大于或等于2的整数;依次对N份中第一份至第N份进行卷积运算。本申请实施例的数据处理方法,如果卷积数据在第一方向上的数据量不能被第一数据量整除,则在第一卷积层的第一次卷积运算(对第一份进行卷积运算)时,不与第一数据量对齐,在第一卷积层除第一次卷积运算之后的卷积运算都与第一数据量对齐,只损失第一次卷积运算的计算效率,却可以在整个运算过程中,大大的降低所用到的缓存空间,可以减少后续的直连(shortcut)所用到的缓存空间,可以在尽量提高计算效率的前提下,尽量减少使用的缓存空间,从而平衡计算效率和缓存空间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种unet的网络结构示意图;
图2是本申请实施例提供的一种卷积的计算过程的示意图;
图3a是本申请实施例提供的一种不采用winograd的情况下走通一个网络所需要的层数以及每层对应的计算方式的示意图;
图3b是本申请实施例提供的另一种不采用winograd的情况下走通一个网络所需要的层数以及每层对应的计算方式的示意图;
图4是本申请实施例提供的一种采用winograd的情况下走通一个网络所需要的层数以及每层对应的计算方式的示意图;
图5是本申请实施例提供的一种winograd加速卷积算法的流程示意图。
图6是本申请实施例提供的一种数据处理方法的流程示意图;
图7是本申请实施例提供的另一种数据处理方法的流程示意图;
图8是本申请实施例提供的另一种数据处理方法的流程示意图;
图9是本申请实施例提供的一种采用winograd的情况下走通一个网络的各层在各个步骤上的计算结果的示意图;
图10a是本申请实施例提供的另一种不采用winograd的情况下走通一个网络所需要的层数以及每层对应的计算方式的示意图;
图10b是本申请实施例提供的另一种采用winograd的情况下走通一个网络所需要的层数以及每层对应的计算方式的示意图;
图10c是本申请实施例提供的另一种采用winograd的情况下走通一个网络的各层在各个步骤上的计算结果的示意图;
图11a是本申请实施例提供的另一种不采用winograd的情况下走通一个网络所需要的层数以及每层对应的计算方式的示意图;
图11b是本申请实施例提供的另一种采用winograd的情况下走通一个网络所需要的层数以及每层对应的计算方式的示意图;
图11c是本申请实施例提供的另一种采用winograd的情况下走通一个网络的各层在各个步骤上的计算结果的示意图;
图12是本申请实施例提供的一种网络的输入数据的分段示意图;
图13是本申请实施例提供的一种在计算过程中使用的缓存空间的示意图;
图14为本申请实施例提供的一种数据处理装置的结构示意图;
图15是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的电子设备可以包括各种具有数据处理能力的设备或者计算机。比如,台式电脑、服务器、笔记本电脑、平板电脑等。
目前的深度学习算法一般采用卷积(conv)+直连(shortcut)的网络结构。比如,如图1所示的(unet)网络。请参阅图1,图1是本申请实施例提供的一种unet的网络结构示意图。如图1所示,unet包括卷积运算(conv 3×3、conv 1×1)、直连运算(包括复制和裁剪:copy and crop)、池化运算(比如,max pool 2×2)、上采样(up-conv 2×2)等。
目前的方法一般采用3*3的卷积核(conv核)来提取局部特征,卷积的计算过程如图2,通常需要每个3*3窗口内的输入数据,可以输出1个数据,一般而言,采用3*3的卷积核进行卷积运算时,输入n行数据,对应输出n-2行数据,每两个相邻的3*3窗口会有2行或2列的重叠(overlap)。直连(shortcut)起源于残差网络(Residual Network,resnet),可以避免导数消失问题,图1中的复制和裁剪(copy and crop)对应的箭头表示的就是shortcut,就是复制原数据,在图1的1处(图1中手写的1)分为不同灰度的两个箭头,分为原数据和学习数据,在图1的2处(图1中手写的2)将原数据和学习数据汇合。
目前人工智能(Artificial Intelligence,AI)的推理(inference)一般采用中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、神经网络处理器(Neural-network Processing Unit,NPU)等硬件,一方面,这些硬件的缓存(cache)空间有限,需要节约缓存空间,另一方面这些硬件在计算时,倾向于使用存储器(比如,静态随机存取存储器)中指定大小的内存块(block),这样可以提高计算效率。
为了提高计算效率,在计算卷积时,硬件倾向于维诺格拉德(winograd)方法,输入为4*4大小的数据,输出2*2大小的数据,但是这样会增加shortcut使用的缓存空间大小,例如图3a(图3a是走通一个网络所需要的层数以及每层对应的计算方式)中,假设需要将id=1的层(layer1)与id=18的层(layer8)进行合并(concat)。
如果不采用winograd,layer1与layer18的最大补偿offset=47-5+1=43。如果layer1要常驻在缓存中,由于layer1产生了47行,layer18只产生了5行,layer19只能合并5行,另外layer1的(47-5)行需要等待layer18产生相应的行之后,在layer19进行合并(concat)运算时使用layer1的(47-5)行后才能释放。为了让图3a能够完成走通所有层并且每层至少输出1行(1行是进行运算的最小颗粒度),layer1仍需要多产生1行,layer18才能参数后续的行数,因此layer1总共需要占用47-5+1=43行的缓存空间。
其中,offset指的是shortcut运算时,在进行合并(concat)运算中原始数据(layer1中的数据)所占用的缓存空间。offset越小,节省的缓存空间越多。
合并(concat)是将2个元素在通道(channel)方向合并,比如,a是w*h*c0,b是w*h*c1,concat后就是w*h*(c0+c1)。
图3a中,Kernel stride:卷积核的步长;Kernel h:卷积核的高;Kernel w:卷积核的宽;Pad:Padding,指的是图像左右上下额外加的数据量;First h:第一阶段的行数;Remain:该层这次计算没有消耗点所有的输入(input),比如,对于cnv3*3,步长=2,没有padding的话,输入4行,只能输出1行,使用了输入(input)的3行,下次计算时可以继续使用的就是remain,这时remain是2。Quantize:量化的算子,做格式转换用。
如果采用winograd,只有在输入4行后才能进行卷积计算,当输入3行时,仍需要等待,这3行,其中2行是来源于与上一次卷积的重叠(overlap),1行来源于新的输入remain下来,暂时保留,等再来1行输入时,再进行计算。此时,layer1与layer18的最大补偿offset=87-10+1=78,如图4所示,采用winograd比不使用winograd,增加了(78-43)/43=81%的缓存空间。
一方面,要硬件提高计算效率,需要使用winograd,攒够4*4的输入数据再计算一次,甚至可能更高,例如攒够16*16再计算一次;另一方面,为了减少硬件与内存(比如,双倍速率同步动态随机存储器ddr)的交互,需要将数据尽量缓存在硬件的缓存中,比如,缓存可以是静态随机存取存储器(Static Random-Access Memory,sram),但直连(shortcut)导致这两者产生了矛盾。
Shortcut时,需要留存的行数是:做concat的两层差距的行数+颗粒度;一方面,颗粒度越大,计算效率越高;另一方面,颗粒度大会导致存储在缓存中的行数变大,对缓存的空间要求较高。
Winograd方法也可以称为Winograd算法。Winograd方法是针对卷积运算的加速算法。由于乘法和加法在硬件实现的时间复杂度不同,乘法运算所需的时间通常远大于加法所需的时间,因此Winograd方法的核心思想是使用更少的运算,从而达到加速卷积运算的目的。为方便理解,下面以举例的方式对Winograd方法进行举例说明。
输入Input=[z0 z1 z2 z3]T (1)
输出output=[y0 y1]T (2)
卷积核Filter=[x0 x1 x2]T (3)
将一个2×3的矩阵和一个3×1的矩阵进行卷积运算,使用常规卷积算法如下:
Figure BDA0003367967100000041
基于Winograd的加速卷积算法如下:
Figure BDA0003367967100000042
其中,m1=(z0-z2)x0
Figure BDA0003367967100000043
m4=(z1-z3)x2
Figure BDA0003367967100000044
也就是说,对于一个2×3的矩阵和一个3×1的矩阵来说,使用传统的卷积运算需要6次乘法和4次加法,而Winograd方法只需要4次乘法和4次加法,从而可以提高计算效率,将上述公式(5)扩展到一般矩阵表示如下:
O=AT[(GI)⊙(BTF)] (6)
其中,符号⊙表示逐元素矩阵相乘(Element-Wise Matrix Multiplication,EWMM),I是输入数据,F是卷积核数据,O是输出数据,A、B、G是常数矩阵。仍以上述的二维卷积F(2,3)为例,公式(6)可以表示为:
O=AT[(GIGT)⊙(BTFB)]A (7)
基于此,Winograd加速卷积算法的流程如图5所示,主要分为四个步骤:输入变换(Input Transformation)、卷积核变换(filter transformation)、矩阵乘法和输出变换(Output transformation)。相应地,在使用GPU进行基于Winograd的加速卷积操作时,也会对应四种任务:输入变换任务、卷积核变换任务、矩阵乘法任务和输出变换任务,其中,
输入变换:对输入窗口被转换成大小为(m+r-1)×(m+r-1),其中,相邻窗口之间存在(r-1)行重叠元素。
滤波器变换或卷积核转换:过滤器也被转换为与转换后的输入窗口相同的大小,即(m+r-1)(m+r-1)。
EWMM:在Winograd方法中,对转换后的输入窗口进行逐元素相乘并相加,其中,在Winograd方法中,矩阵中的元素是实数。
逆变换或输出变换:对进行了逐元素相乘之后的结果进行逆变换,以生成m×m大小的卷积结果窗口,其中,输出张量中没有重叠窗口。
本申请实施例提供一种数据处理方法及相关产品,可以在尽量提高计算效率的前提下,尽量减少使用的缓存空间,从而平衡计算效率和缓存空间。
本申请实施例的基本思想是:
1.每层(layer)在第一次计算时,如果该层的数据在某一个方向(比如,高度方向或者宽度方向)不是计算效率最高的输出单位的整数倍,则不对齐到计算效率最高的单位(4*4或16*16),以此来减少shortcut所用的缓存。
2.后续的计算中(第一次计算之后的其他计算,除了最后的边界)都对齐到计算效率最高的单位,这样仅浪费一次不满足最高效率的计算,就能减少shortcut所用的缓存。
3.第一次计算的实际大小,要根据shortcut来具体计算。
4.同时在宽度(width)和高度(height)方向做上述1~3点,从而可以优化shortcut使用的缓存的组成部分。
请参阅图6,图6是本申请实施例提供的一种数据处理方法的流程示意图。如图6所示,该方法可以包括如下步骤。
601,电子设备获取第一卷积层在第一计算阶段的卷积数据。
本申请实施例的数据处理方法可以应用在第一网络结构,该第一网络结构可以包括至少一个卷积层。第一卷积层可以是上述至少一个卷积层中的任一个。第一网络结构可以包括至少一个卷积层、至少一个合并层。合并层,也可以称为concat层,用于将两个层的数据进行合并,直连(shortcut)是合并(concat)层的一种具体的表现形式。
由于输入第一网络结构的原始数据往往比较大,如果一次性输入,会占用较大的存储空间。一般将原始数据分为多个计算阶段分别输入该第一网络结构,第一个计算阶段、第二个计算阶段、…依次进行。第一计算阶段是所述多个计算阶段中的第一个计算阶段。
602,电子设备判断卷积数据在第一方向上的数据量是否能够被第一数据量整除。
其中,所述第一数据量是采用维诺格拉德(winograd)方法所需的基本计算单位在计算效率最高时输出的数据的颗粒度。
本申请实施例中,卷积数据可以是二维数据或者三维数据。当所述卷积数据是二维数据时,所述第一方向可以是宽度(width)方向或者高度(height)方向;当所述卷积数据是三维数据时,所述第一方向可以是宽度(width)方向或者高度(height)方向或者深度(depth)方向。
其中,基本计算单位可以为4*4的整数倍。比如,基本计算单位可以是4*4,16*16等。举例来说,当基本计算单位是4*4时,采用winograd方法(卷积核为3*3时)所需的该基本计算单位在计算效率最高时输出的数据是的2*2,其在第一方向上的颗粒度是2。
603,若否,电子设备将卷积数据在第一方向上切分为N份。
N份中第一份的数据量小于第一数据量,N份中除第一份之外的其他份的数据量等于第一数据量,N为大于或等于2的整数。
604,电子设备依次对N份中第一份至第N份进行卷积运算。
本申请实施例中,由于N份中第一份的数据量小于第一数据量,对第一份进行卷积运算时,虽然没有与第一数据量对齐,计算效率并非最高,但是可以减少所用的缓存空间。对第二份至第N分进行卷积运算,由于都与第一数据量对齐,计算效率较高。
其中,在所述第一计算阶段之后的其他计算阶段中,所述第一卷积层在任一次卷积运算后的卷积结果在所述第一方向上的大小等于所述第一数据量。
图9中,setp1~step10对应第一计算阶段,setp11~step18对应第二计算阶段。从图9可以看出,实施例一中的N=10。各个卷积层只在第一阶段的第一次卷积运算时没有与第一数据量(第一数据量=2)对齐,对计算效率的影响很小。在第二计算阶段中各个卷积层的每一次卷积运算与第一数据量(第一数据量=2)对齐,其输出结果在第一方向上的大小等于第一数据量,计算效率最高。
本申请实施例的数据处理方法,如果卷积数据在第一方向上的数据量不能被第一数据量整除,则在第一卷积层的第一次卷积运算(对第一份进行卷积运算)时,不与第一数据量对齐,在第一卷积层除第一次卷积运算之后的卷积运算都与第一数据量对齐,只损失第一次卷积运算的计算效率,却可以在整个运算过程中,大大的降低所用到的缓存空间,可以减少后续的直连(shortcut)所用到的缓存空间,可以在尽量提高计算效率的前提下,尽量减少使用的缓存空间,从而平衡计算效率和缓存空间。
可选的,在执行步骤602之后,还可以执行如下步骤。
(11)电子设备在所述卷积数据在所述第一方向上的数据量能够被第一数据量整除的情况下,将所述卷积数据在所述第一方向上均分为M份,M为大于或等于1的整数;
(12)电子设备依次对所述M份中第一份至第M份进行卷积运算。
本申请实施例中,如果卷积数据在第一方向上的数据量能被第一数据量整除,则可以将卷积数据在第一方向上均分为M份,使得计算效率最高。
可选的,步骤604具体可以包括如下步骤:
(21)电子设备对所述N份中的第一份进行卷积运算时,输出所述第一份的卷积结果;
(22)电子设备对所述N份中的第二份进行卷积运算时,根据所述第一卷积层的上一层输出的数据、所述第二份进行卷积运算与所述第二份的前一份进行卷积运算的重叠数据进行卷积运算,输出所述第二份的卷积结果,所述第二份是所述其他份中的任一份;所述第二份的卷积结果在所述第一方向上的大小等于所述第一数据量。
本申请实施例中,可以参见图9进行说明。图9中,若第一卷积层与layer5为例,layer5在第一计算阶段的卷积数据在第一方向上的数据量等于5,不能被第一数据量(第一数据量=2)整除,可以将5分为3份,依次为1(第一份)、2(第二份)、2(第三份)。从图9可以看出,layer5是在对第一份进行卷积运算时(step1)没有与第一数据量对齐,在对第二份进行卷积运算时(step2)和对第三份进行卷积运算时(step4)都与第一数据量对齐。其中,对第二份进行卷积运算时,layer5的上一层layer4输出的数据在在第一方向的数据量等于2,layer5对第一份进行卷积运算时域对第二份进行卷积运算时的重叠数据包括2*2(3*3的卷积核在4*4的数据里面滑窗时,在步长=1的情况下,相邻的两次滑窗重叠2行或者2列),其在第一方向上的重叠数据等于2,将第一卷积层的上一层输出的数据2+第二份进行卷积运算与第二份的前一份(第一份)进行卷积运算的重叠数据2=4,将这4行数据作为layer5对第二份进行卷积运算的输入数据,将该输入数据与卷积核(3*3)进行卷积运算,输出2行(等于第一数据量)的数据,layer5的第二次卷积运算的计算效率最高。
请参阅图7,图7是本申请实施例提供的另一种数据处理方法的流程示意图。如图7所示,该方该应用于第一网络结构,所述第一网络结构包括P个池化层,该方法可以包括如下步骤。
701,电子设备获取第一计算阶段所需的输入数据,根据P个池化层和第一数据量确定第二数据量。
其中,需要保证输入数据被切分为Q份后,每一份的数据量在经过P个池化层的池化处理后的输出的数据量能够满足下一卷积层进行卷积运算的最少输入需求。以图9为例,池化层的数量等于3,每次池化都是数据量减一半,需要保证经过三次池化后,layer5依然能够进行卷积运算。由于layer4输出为2,加上pad 1,则等于3,刚好满足3*3的卷积核的卷积运算需求。由此可以推算step1中,第二数据量=2*23=16。需要说明的是,图9中的输入数据在第一方向上的数据量(48)能够被第二数据量(16)整除。
702,电子设备判断输入数据在第一方向上的数据量是否能够被第二数据量整除。
703,如果输入数据在第一方向上的数据量不能够被第二数据量整除,电子设备将输入数据在第一方向上切分为Q份。
所述Q份中第一份的数据量大于所述第二数据量且小于所述第二数据量的两倍,所述Q份中除第一份之外的其他份的数据量等于所述第二数据量,Q为大于或等于2的整数。
704,电子设备将Q份中第一份作为第一计算阶段中第一层的第一步的输入数据。
本申请实施例中,电子设备可以、依次对Q份中第一份至第Q份进行运算。如果第一卷积层参与了该Q份中第一份的运算,则对Q份中第一份进行运算的过程中,可以包括对第一卷积层的第一份进行卷积运算的过程。
本申请实施例中,电子设备可以依次对所述Q份中第一份至第Q份进行运算。
705,电子设备获取第一卷积层在第一计算阶段的卷积数据。
706,电子设备判断卷积数据在第一方向上的数据量是否能够被第一数据量整除。
其中,所述第一数据量是采用维诺格拉德(winograd)方法所需的基本计算单位在计算效率最高时输出的数据的颗粒度。
707,若卷积数据在第一方向上的数据量不能够被第一数据量整除,电子设备将卷积数据在第一方向上切分为N份。
其中,N份中第一份的数据量小于第一数据量,N份中除第一份之外的其他份的数据量等于第一数据量,N为大于或等于2的整数。
708,电子设备依次对N份中第一份至第N份进行卷积运算。
其中,步骤705至步骤708的具体实施可以参见图6所示的步骤601至步骤604,此处不再赘述。
可选的,图7的方法还可以包括如下步骤:
(31)电子设备在所述输入数据在所述第一方向上的数据量能够被第二数据量整除的情况下,将所述输入数据在所述第一方向上均分为S份,S为大于或等于1的整数;
(32)电子设备将所述S份中第一份作为所述第一计算阶段中第一层的第一步的输入数据。
本申请实施例中,如果输入数据在第一方向上的数据量能被第二数据量整除,则可以将输入数据在第一方向上均分为S份,使得计算效率最高,并且占用的缓存空间更小。
请参阅图8,图8是本申请实施例提供的另一种数据处理方法的流程示意图。如图8所示,该方该应用于第一网络结构,所述第一网络结构包括P个池化层和合并层,该方法可以包括如下步骤。
801,电子设备计算第一网络结构的合并层进行运算时用到的最大的缓存空间。
本申请实施例中,如果第一网络结构包括多个合并层,可以分别计算多个合并层进行运算时用到缓存空间,从多个合并层进行运算时用到缓存空间选择最大的缓存空间。
802,电子设备根据最大的缓存空间与第一数据量得到第三数据量,第三数据量大于或等于最大的缓存空间与第一数据量之和;第一计算阶段所需的输入数据的数据量等于第三数据量。
本申请实施例中,第一次计算的实际大小,可以根据shortcut来具体计算。其核心思想是让第一计算阶段所需的输入数据的数据量能够大于或等于走通第一网络结构的所有层所需要的最少数据量(第三数据量)。图9的最后一次shortcut在layer19,最后一层只需要第一数据量即可完成运算。因此,第三数据量=最大的缓存空间+第一数据量。如图9所示,shortcut所用的最大缓存空间为48-7+2=43,第三数据量只需要大于或等于43即可,图9的第一计算阶段所需的输入数据的数据量为48。
803,电子设备获取第一计算阶段所需的输入数据,根据P个池化层和第一数据量确定第二数据量。
804,电子设备判断输入数据在第一方向上的数据量是否能够被第二数据量整除。
805,如果输入数据在第一方向上的数据量不能够被第二数据量整除,电子设备将输入数据在第一方向上切分为Q份。
806,电子设备将Q份中第一份作为第一计算阶段中第一层的第一步的输入数据。
807,电子设备获取第一卷积层在第一计算阶段的卷积数据。
808,电子设备判断卷积数据在第一方向上的数据量是否能够被第一数据量整除。
809,若卷积数据在第一方向上的数据量不能够被第一数据量整除,电子设备将卷积数据在第一方向上切分为N份。
810,电子设备依次对N份中第一份至第N份进行卷积运算。
其中,步骤803至步骤810的具体实施可以参见图7所示的步骤701至步骤708,此处不再赘述。
本申请实施例,基于让第一计算阶段所需的输入数据的数据量能够大于或等于走通第一网络结构的所有层所需要的最少数据量的思想,来确定第一计算阶段所需的输入数据的数据量,使得第一网络结构的每一个计算阶段的每一层都能够参与运算。
实施例一
Winograd可以采用4*4作为基本计算单位。第一次计算的实际大小,要根据shortcut来具体计算,首先需要搜索shortcut最大的offset,通过模拟跑一遍就能得到该值。比如,如果shortcut最大的offset为47。如图3b所示,input应该输入47+1行,layer1输出48行,layer2输出24行,layer3输出12行,layer4输出6行,layer5输出5行,layer6输出4行,…,layer8输出7行,…,layer10输出6行,layer11输出5行,…,这样shorcut最大的offset(48-7+1=42)会比较小。
对应的,如图9所示,由于图9中存在3次池化,为了让经过3次池化后的输出能有2行,在step1时,input输入16行,layer1输出16行,layer2输出8,layer3输出4,layer4输出2,layer5第一次实际卷积(conv)计算的输出大小为5%2=1(对应输入大小为3行),layer6第一次实际卷积(conv)计算的输出大小为2(因为4%2=0)(对应输入大小为4行),…,layer8第一次实际卷积(conv)计算的输出大小为7%2=1,…,layer10第一次实际卷积(conv)计算的输出大小为6%2+2=2,layer11第一次实际卷积(conv)计算的输出大小为5%2=1,…,layer13第一次实际卷积(conv)计算的输出大小为9%2=1,…,layer15第一次实际卷积(conv)计算的输出大小为8%2+2=2,layer16第一次实际卷积(conv)计算的输出大小为7%2=1,…,layer18第一次实际卷积(conv)计算的输出大小为13%2=1,…,layer20第一次实际卷积(conv)计算的输出大小为12%2+2=2。
之所以对2求余,是因为Winograd采用4*4作为基本计算单位时,其计算效率最高时计算输出的大小是2。如图9所示,展示了在时间和layer两个维度展开后的详细情况。首先step1时,input输入16行,layer1输出16行,layer2输出8行,layer3输出4行,layer4输出2行,layer5总共输入3行:layer4输出的2行+pad 1行,layer5输出1行,这也是layer5的第一次实际计算,layer6总共输入2行:layer5输出的1行+pad 1行,小于3*3的卷积核的大小,无法进行计算(当输入2行时,无法与卷积核进行卷积运算,只有当输入大于或等于3行时,才能进行卷积运算)。
Step2时,input输入16行,layer1输出16行,layer2输出8,layer3输出4,layer4输出2,layer5总共输入4行:layer4输出的2行+上一次重叠(overlap)的2行(layer5在step1和step2中分别进行卷积运算时重叠的2行),layer5输出2行,这是layer5的第二次实际计算(除了第一次和最后一次,其他次数时,输入都是4行,输出都是2行),layer6总共输入4行:layer5第一次输出的1行+layer5第二次输出的2行+pad 1行,layer6输出2行,这也是layer6的第一次计算,layer7是上采样(upsample)输出4行,其中2行在step2中继续计算,另外2行留到step3时计算,layer8总共输入3行:layer7输出的2行+pad 1行,layer8输出1行,这也是layer8的第一次实际计算,layer9输出1行,layer10总共输入2行:layer9输出的1行+pad 1行,无法进行计算(当输入2行时,无法与卷积核进行卷积运算,只有当输入大于或等于3行时,才能进行卷积运算)。
Step3时,计算layer7输出的另外2行,layer8总共输入4行:layer7输出的2行+上一次overlap的2行(layer8在step2和step3中分别进行卷积运算时重叠的2行),layer8输出2行,这是layer8的第二次实际计算,layer9输出2行,layer10总共输入4行:layer9第一次输出的1行+layer9第二次输出的2行+pad 1行,layer10输出2行,layer11总共输入3行:layer10输出的2行+pad 1行,layer11输出1行,这也是layer11的第一次实际计算,layer12是上采样(upsample)输出2行,layer13总共输入3行:layer12输出的2行+pad 1行,layer13输出1行,这也是layer13的第一次实际计算,layer12是上采样(upsample)输出2行,layer13总共输入3行:layer12输出的2行+pad 1行,layer13输出1行,这也是layer13的第一次实际计算,layer14输出1行,layer15总共输入2行:layer14输出的1行+pad 1行,无法进行计算(当输入2行时,无法与卷积核进行卷积运算,只有当输入大于或等于3行时,才能进行卷积运算)。
Step4时,input输入16行,layer1输出16行,layer2输出8,layer3输出4,layer4输出2,layer5总共输入4行:layer4输出的2行+上一次overlap的2行(layer5在step2和step4中分别进行卷积运算时重叠的2行),layer5输出2行,类似的,layer6输出2行,这也是layer6的第二次计算,layer7是上采样(upsample)输出4行,其中2行在step4中继续计算,另外2行留到step7时计算,layer8输出2行,这也是layer8的第二次实际计算,layer9输出2行,layer10输出2行,这也是layer10的第二次实际计算,layer11输出2行,这也是layer11的第二次实际计算,layer12是上采样(upsample)输出4行,其中2行在step4中继续计算,另外2行留到step5时计算,layer13输出2行,这也是layer13的第二次实际计算,layer14输出2行,layer15总共输入4行:layer14第一次输出的1行+layer14第二次输出的2行+pad 1行,layer15输出2行,layer16总共输入3行:layer15输出的2行+pad 1行,layer16输出1行,这也是layer16的第一次实际计算,layer17是上采样(upsample)输出2行,layer18总共输入3行:layer17输出的2行+pad 1行,layer18输出1行,这也是layer18的第一次实际计算,layer19输出1行,layer20总共输入2行:layer19输出的1行+pad 1行,无法进行计算(当输入2行时,无法与卷积核进行卷积运算,只有当输入大于或等于3行时,才能进行卷积运算)。
Step5时,计算layer12输出的另外2行,layer13总共输入4行:layer12输出的2行+上一次overlap的2行(layer13在step4和step5中分别进行卷积运算时重叠的2行),layer13输出2行,layer14输出2行,layer15输出2行,这也是layer15的第二次计算,layer16输出2行,这也是layer16的第二次计算,layer17是上采样(upsample)输出4行,其中2行在step5中继续计算,另外2行留到step6时计算,layer18输出2行,这也是layer18的第二次计算,layer19输出2行,这也是layer19的第二次计算,layer20总共输入4行:layer19第一次输出的1行+layer19第二次输出的2行+pad 1行,layer20输出2行,这也是layer20的第一次计算。
Step6及以后,都是第二或第三、第四…次计算,卷积(conv)都是总共输入4行:上一layer输出的2行+上一次overlap的2行,输出2行,能满足winograd的计算效率。此时,shortcut大小为:输入48行时,才开始输出,因此至少需要48行空间,此时输出13行,剩余48-13=35行,但是由于我们在经过3次pool之后使用winograd,导致每次Input输入2*2^3=16才能完成一次winograd,因此最大offset=35+16=51行,比不使用winograd仅增加(51-43)/43=18%,比不采用本申请实施例的方法(“第一次计算不对齐”)的winograd减少了(78-51)/78=34.6%。
实际上,由于该实施例中存在多个pool,才使得input一次输入16行,增加了offset,实际如果没有pool的话,缓存空间会非常接近最优值,图10a~图10c展示了该情况,图10a说明了不使用winograd,offset=6,图10b说明了使用winograd后,如果不采用本申请实施例的方法,则offset=12,图10c说明使用winograd后,采用本申请实施例的方法(“第一次计算不对齐”)后,offset=6-1+2=7,非常接近最优的offset(offset=6)了。offset越小,占用的缓存空间越小,offset越优。
实施例二
如果硬件为了进一步提高计算效率,winograd采用更大的尺寸作为基本计算单位(例如16*16),shortcut使用的缓存增加的现象将更加严重,例如图11a中,如果不按基本计算单位对齐,shortcut使用的缓存只有offset=3,但如果按照16*16对齐,按图11b所示,shortcut使用的缓存需要offset=48,有48/3=16倍的差距,同理,如果我们第一次计算不按基本计算单位对齐,如图11c所示,shortcut使用的缓存需要offset=3-1+16=18。
上述例子中的shortcut使用的缓存offset=3-1+16=18,其中16行,是因为每次输入都输入16行导致的,实际上我们可以把16行再细分,把行的逻辑,在列上也做一遍。如图12所示,整个输入被划分为9部分,图12的a部分,由一个3*3(3行3列)大小组成,图12的b部分(3行16n),由一个或n个3*16(3行16列)组成(图中方格数不代表大小),图12的c部分代表前3行在宽度方向的剩余部分,由一个3*(input width–3–16*n)组成,图12的d部分(16m行3列,由一个或m个16*3(16行3列)大小组成,图12的e部分(16m行16n列),由一个或n*m个16*16(16行16列)组成,图12的f部分代表中间16*m行在宽度方向的剩余部分,由一个或m个16*(input width–3–16*n)组成,图12的g部分代表剩余的行在前3列的部分,由一个(inputheight–3–16*m)*3组成,图12的k部分代表剩余的行在中间的16*n列的部分,由一个或n个(input height–3–16*m)*16组成,图12的i部分代表剩余的行在剩余的列16列的部分,由一个(input height–3–16*m)*(input width–3–16*n)组成。
计算顺序为,先计算1个a,再计算n个b,再计算1个c,{再计算1个d,再计算1个e,再计算1个f},{}总共循环m次,再计算1个g,再计算n个k,再计算1个i。采用这种做法后,可以进一步降低shortcut使用的缓存。
此时,如图13所示,shortcut使用的缓存由以下部分组成,深灰色部分代表3-1=2行的数据,这部分数据宽度为整个input width,大小为2*input width,浅灰色部分代表正在计算的16行,这部分已经计算了k+18列,大小为16*(k+18),第一方框代表可以释放的空间(concat已经使用的数据),这部分数据大小为16*k,可以看到w方向上,仍保留了第二方框的3-1+16=18列的offset,第二方框的大小为16*18,h方向上只保留了必要的3-1=2行的offset,由第三方框和第四方框两部分组成,一部分(第三方框)是深灰色剩余的2*(input width-k),另一部分(第四方框)是新产生的浅灰色的2*k,此时总的shortcut使用的缓存为:第二方框+第三方框+第四方框=2*Input width+16*18。相比于原来的18行shortcut需要使用的缓存(18*input width)相比,降低了很多,非常接近不对齐基本计算单位的2行shortcut需要使用的缓存(2*input width)。
实施例一和实施例二的方案具有如下有益效果:减少shortcut所用的缓存的大小;保证大部分计算都对齐到效率最高的计算单位。
可选的,本方案还可以适用于多个shortcut相互嵌套的场景,要求一次性输出L列的场景,也适用该方案。多个shortcut相互嵌套的场景,可以按照各个shorcut的offset做权衡(trade off),选一个比较合适的第一次计算尺寸。要求一次性输出L列的场景,可以按照输出L列时,各个层(layer)的大小,来计算第一次计算时的尺寸。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
与上述一致的,请参阅图14,图14为本申请实施例提供的一种数据处理装置的结构示意图,该数据处理装置1400应用于电子设备,该数据处理装置1400可以包括获取单元1401、判断单元1402、切分单元1403和运算单元1404,其中:
获取单元1401,用于获取第一卷积层在第一计算阶段的卷积数据;
判断单元1402,用于判断所述卷积数据在第一方向上的数据量是否能够被第一数据量整除,所述第一数据量是采用维诺格拉德方法所需的基本计算单位在计算效率最高时输出的数据的颗粒度;
切分单元1403,用于在所述判断单元1402的判断结果为否的情况下,将所述卷积数据在所述第一方向上切分为N份,所述N份中第一份的数据量小于所述第一数据量,所述N份中除第一份之外的其他份的数据量等于所述第一数据量,N为大于或等于2的整数;
运算单元1404,用于依次对所述N份中第一份至第N份进行卷积运算。
可选的,所述切分单元1403,还用于在所述卷积数据在所述第一方向上的数据量能够被第一数据量整除的情况下,将所述卷积数据在所述第一方向上均分为M份,M为大于或等于1的整数;
所述运算单元1404,还用于依次对所述M份中第一份至第M份进行卷积运算。
可选的,所述运算单元1404依次对所述N份中第一份至第N份进行卷积运算,包括:对所述N份中的第一份进行卷积运算时,输出所述第一份的卷积结果;对所述N份中的第二份进行卷积运算时,根据所述第一卷积层的上一层输出的数据、所述第二份进行卷积运算与所述第二份的前一份进行卷积运算的重叠数据进行卷积运算,输出所述第二份的卷积结果,所述第二份是所述其他份中的任一份;所述第二份的卷积结果在所述第一方向上的大小等于所述第一数据量。
可选的,在所述第一计算阶段之后的其他计算阶段中,所述第一卷积层在任一次卷积运算后的卷积结果在所述第一方向上的大小等于所述第一数据量。
可选的,所述装置应用于第一网络结构,所述第一网络结构包括P个池化层;
所述获取单元1401,还用于获取第一卷积层在第一计算阶段的卷积数据之前,获取所述第一计算阶段所需的输入数据,根据所述P个池化层和所述第一数据量确定第二数据量;
所述判断单元1402,还用于判断所述输入数据在所述第一方向上的数据量是否能够被第二数据量整除;
所述切分单元1403,还用于在所述判断单元1402的判断结果为否的情况下,将所述输入数据在所述第一方向上切分为Q份,所述Q份中第一份的数据量大于所述第二数据量且小于所述第二数据量的两倍,所述Q份中除第一份之外的其他份的数据量等于所述第二数据量,Q为大于或等于2的整数;
其中,所述Q份中第一份为所述第一计算阶段中第一层的第一步的输入数据。
可选的,所述切分单元1403,还用于在所述输入数据在所述第一方向上的数据量能够被第二数据量整除的情况下,将所述输入数据在所述第一方向上均分为S份,S为大于或等于1的整数;
其中,所述S份中第一份为所述第一计算阶段中第一层的第一步的输入数据。
可选的,该装置还可以包括计算单元1405;所述第一网络结构还包括合并层;
所述计算单元1405,用于在所述获取单元1401获取所述第一计算阶段所需的输入数据之前,计算所述第一网络结构的合并层进行运算时用到的最大的缓存空间;根据所述最大的缓存空间与所述第一数据量得到第三数据量,所述第三数据量大于或等于所述最大的缓存空间与所述第一数据量之和;所述第一计算阶段所需的输入数据的数据量等于所述第三数据量。
其中,本申请实施例中的获取单元1401、判断单元1402、切分单元1403、运算单元1404、计算单元1405可以是电子设备中的处理器。
本申请实施例中,如果卷积数据在第一方向上的数据量不能被第一数据量整除,则在第一卷积层的第一次卷积运算(对第一份进行卷积运算)时,不与第一数据量对齐,在第一卷积层除第一次卷积运算之后的卷积运算都与第一数据量对齐,只损失第一次卷积运算的计算效率,却可以在整个运算过程中,大大的降低所用到的缓存空间,可以减少后续的直连(shortcut)所用到的缓存空间,可以在尽量提高计算效率的前提下,尽量减少使用的缓存空间,从而平衡计算效率和缓存空间。
请参阅图15,图15是本申请实施例提供的一种电子设备的结构示意图,如图15所示,该电子设备1500包括处理器1501和存储器1502,处理器1501、存储器1502可以通过通信总线1503相互连接。通信总线1503可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。通信总线1503可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器1502用于存储计算机程序,计算机程序包括程序指令,处理器1501被配置用于调用程序指令,上述程序包括用于执行图6~8所示的方法中的部分或全部步骤。
处理器1501可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
存储器1502可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
此外,该电子设备1500还可以包括通信接口、天线等通用部件,在此不再详述。
本申请实施例中,如果卷积数据在第一方向上的数据量不能被第一数据量整除,则在第一卷积层的第一次卷积运算(对第一份进行卷积运算)时,不与第一数据量对齐,在第一卷积层除第一次卷积运算之后的卷积运算都与第一数据量对齐,只损失第一次卷积运算的计算效率,却可以在整个运算过程中,大大的降低所用到的缓存空间,可以减少后续的直连(shortcut)所用到的缓存空间,可以在尽量提高计算效率的前提下,尽量减少使用的缓存空间,从而平衡计算效率和缓存空间。
本申请实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种数据处理方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在申请明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种数据处理方法,其特征在于,包括:
获取第一卷积层在第一计算阶段的卷积数据;
判断所述卷积数据在第一方向上的数据量是否能够被第一数据量整除,所述第一数据量是采用维诺格拉德方法所需的基本计算单位在计算效率最高时输出的数据的颗粒度;
若否,将所述卷积数据在所述第一方向上切分为N份,所述N份中第一份的数据量小于所述第一数据量,所述N份中除第一份之外的其他份的数据量等于所述第一数据量,N为大于或等于2的整数;
依次对所述N份中第一份至第N份进行卷积运算。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述卷积数据在所述第一方向上的数据量能够被第一数据量整除的情况下,将所述卷积数据在所述第一方向上均分为M份,M为大于或等于1的整数;
依次对所述M份中第一份至第M份进行卷积运算。
3.根据权利要求1所述的方法,其特征在于,所述依次对所述N份中第一份至第N份进行卷积运算,包括:
对所述N份中的第一份进行卷积运算时,输出所述第一份的卷积结果;
对所述N份中的第二份进行卷积运算时,根据所述第一卷积层的上一层输出的数据、所述第二份进行卷积运算与所述第二份的前一份进行卷积运算的重叠数据进行卷积运算,输出所述第二份的卷积结果,所述第二份是所述其他份中的任一份;所述第二份的卷积结果在所述第一方向上的大小等于所述第一数据量。
4.根据权利要求1所述的方法,其特征在于,在所述第一计算阶段之后的其他计算阶段中,所述第一卷积层在任一次卷积运算后的卷积结果在所述第一方向上的大小等于所述第一数据量。
5.根据权利要求1所述的方法,其特征在于,所述方法应用于第一网络结构,所述第一网络结构包括P个池化层,所述获取第一卷积层在第一计算阶段的卷积数据之前,所述方法还包括:
获取所述第一计算阶段所需的输入数据,根据所述P个池化层和所述第一数据量确定第二数据量;
判断所述输入数据在所述第一方向上的数据量是否能够被第二数据量整除;
若否,将所述输入数据在所述第一方向上切分为Q份,所述Q份中第一份的数据量大于所述第二数据量且小于所述第二数据量的两倍,所述Q份中除第一份之外的其他份的数据量等于所述第二数据量,Q为大于或等于2的整数;
将所述Q份中第一份作为所述第一计算阶段中第一层的第一步的输入数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述输入数据在所述第一方向上的数据量能够被第二数据量整除的情况下,将所述输入数据在所述第一方向上均分为S份,S为大于或等于1的整数;
将所述S份中第一份作为所述第一计算阶段中第一层的第一步的输入数据。
7.根据权利要求5所述的方法,其特征在于,所述第一网络结构还包括合并层,所述获取所述第一计算阶段所需的输入数据之前,所述方法还包括:
计算所述第一网络结构的合并层进行运算时用到的最大的缓存空间;
根据所述最大的缓存空间与所述第一数据量得到第三数据量,所述第三数据量大于或等于所述最大的缓存空间与所述第一数据量之和;所述第一计算阶段所需的输入数据的数据量等于所述第三数据量。
8.一种数据处理装置,其特征在于,包括:
获取单元,用于获取第一卷积层在第一计算阶段的卷积数据;
判断单元,用于判断所述卷积数据在第一方向上的数据量是否能够被第一数据量整除,所述第一数据量是采用维诺格拉德方法所需的基本计算单位在计算效率最高时输出的数据的颗粒度;
切分单元,用于在所述判断单元的判断结果为否的情况下,将所述卷积数据在所述第一方向上切分为N份,所述N份中第一份的数据量小于所述第一数据量,所述N份中除第一份之外的其他份的数据量等于所述第一数据量,N为大于或等于2的整数;
运算单元,用于依次对所述N份中第一份至第N份进行卷积运算。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1~7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1~7任一项所述的方法。
CN202111388826.6A 2021-11-22 2021-11-22 数据处理方法及相关产品 Pending CN114065119A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111388826.6A CN114065119A (zh) 2021-11-22 2021-11-22 数据处理方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111388826.6A CN114065119A (zh) 2021-11-22 2021-11-22 数据处理方法及相关产品

Publications (1)

Publication Number Publication Date
CN114065119A true CN114065119A (zh) 2022-02-18

Family

ID=80278966

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111388826.6A Pending CN114065119A (zh) 2021-11-22 2021-11-22 数据处理方法及相关产品

Country Status (1)

Country Link
CN (1) CN114065119A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116882358A (zh) * 2023-09-07 2023-10-13 深圳比特微电子科技有限公司 滤波器、滤波方法、数据处理系统和芯片

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116882358A (zh) * 2023-09-07 2023-10-13 深圳比特微电子科技有限公司 滤波器、滤波方法、数据处理系统和芯片
CN116882358B (zh) * 2023-09-07 2024-05-28 深圳比特微电子科技有限公司 滤波器、滤波方法、数据处理系统和芯片

Similar Documents

Publication Publication Date Title
JP7132824B2 (ja) ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
US11468301B2 (en) Method and apparatus for performing operation of convolutional layer in convolutional neural network
US11822616B2 (en) Method and apparatus for performing operation of convolutional layers in convolutional neural network
CN108229655B (zh) 卷积神经网络(cnn)处理方法和设备
EP3855367A1 (en) Operation accelerator, processing method, and related device
KR20190062303A (ko) 폴드된 특징 데이터에 대한 컨볼루션 연산을 수행하기 위한 방법 및 장치
CN114026569A (zh) 使用脉动阵列的扩张卷积
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
US20230196113A1 (en) Neural network training under memory restraint
JP2020126651A (ja) ニューラルネットワークのコンボルーション演算を処理する方法及び装置
CN114065119A (zh) 数据处理方法及相关产品
CN111133457A (zh) 电子设备及其控制方法
US11868875B1 (en) Data selection circuit
US11636569B1 (en) Matrix transpose hardware acceleration
CN111860824A (zh) 一种数据处理方法及相关产品
WO2021179117A1 (zh) 神经网络通道数搜索方法和装置
CN111723917B (zh) 运算方法、装置及相关产品
CN114202657A (zh) 用于图像处理的方法和设备
US11842273B2 (en) Neural network processing
KR102592346B1 (ko) 영상 분할 장치 및 방법
CN110852202A (zh) 一种视频分割方法及装置、计算设备、存储介质
CN111860825A (zh) 一种数据处理方法及相关产品
CN113761934B (zh) 一种基于自注意力机制的词向量表示方法及自注意力模型
US20240169025A1 (en) Implementing a scatter function on a neural network accelerator

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