一种数据处理方法、设备及装置与流程

文档序号:15518908发布日期:2018-09-25 18:56阅读:199来源:国知局

本发明涉及芯片设计技术领域,特别是涉及一种数据处理方法、设备及装置。



背景技术:

cnn(convolutionalneuralnetwork,卷积神经网络)属于深度学习算法中的一种,是一种模拟大脑神经网络的工作方式实现数据信息提取的算法。该算法利用卷积计算完成信息的初步提取,结合一些非线性运算,实现高性能的目标检测。随着深度学习算法的不断发展,cnn在目标检测、数据分类、信息提取及匹配等图像处理领域中得到了广泛应用。由于cnn算法本身的特性,有大量的数据需要重复参与运算,因此对芯片片内缓存空间有较高的要求,需要有足够大的存储空间才能存储cnn运算所需要的所有信息,现有的大部分芯片无法达到直接存储所有所需的信息的要求。

针对上述大部分芯片无法在片内直接存储所有所需信息的问题,现有技术提出一种cnn实现方法,该方法在进行卷积运算之前,每次都重新从内存中导入运算所需的所有数据,进行计算。

由于cnn计算中存在着大量重复使用的数据,现有技术每次从内存导入的数据块中存在着大量重复数据的情况,从而导致读取的过程当中有大量的带宽被浪费,进而使得芯片在进行数据处理时产生了较大的功耗、影响处理性能。



技术实现要素:

本发明实施例的目的在于提供一种数据处理方法、设备及装置,以降低芯片在进行数据处理时所产生的功耗、提高处理性能。具体技术方案如下:

第一方面,本发明实施例提供了一种数据处理方法,所述方法包括:

获取预设卷积核,并确定所述预设卷积核的卷积框宽度;

获取并根据芯片缓存容量、预设数据量及第一预设行数,确定数据列宽度,其中,所述数据列宽度大于或等于所述卷积框宽度;

按照所述数据列宽度对待处理数据矩阵进行列划分,得到多列区域,其中,所述待处理数据矩阵为存储在内存中的、包含所有待处理数据的矩阵;

在接收到数据处理指令时,针对所有列区域中的任一列区域,提取第二预设行数的待运算数据发送至所述芯片缓存,以利用所述预设卷积核,对缓存的所述待运算数据进行卷积运算,其中,所述第二预设行数大于或等于所述卷积框宽度、且小于或等于所述第一预设行数;

在所述待运算数据中的第一行数据参与完卷积运算后,将所述第一行数据从所述芯片缓存中删除,并从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据;

利用所述预设卷积核,对更新的待运算数据进行卷积运算,直至所述区域中的所有行数据均参与完卷积运算,将卷积运算后得到的所有运算结果发送至所述内存。

可选的,所述获取并根据芯片缓存容量、预设数据量及第一预设行数,确定数据列宽度的步骤,包括:

获取芯片缓存容量及预设数据量,将所述芯片缓存容量与所述预设数据量相除,得到所述芯片缓存的数据个数的最大值;

获取第一预设行数,将所述数据个数的最大值与所述第一预设行数相除,得到所述芯片缓存的每行数据的个数;

确定所述芯片缓存的每行数据的个数为数据列宽度。

可选的,所述按照所述数据列宽度对待处理数据矩阵进行列划分,得到多列区域的步骤之前,所述方法还包括:

将所述卷积框宽度减去预设值,得到重合区域的宽度,其中,所述重合区域为任一数据列与相邻数据列重合的区域;

确定所述数据列宽度中包含所述重合区域的宽度。

可选的,所述接收数据处理指令,针对所有区域中的任一列区域,提取第二预设行数的待运算数据发送至所述芯片缓存的步骤之前,所述方法还包括:

针对所有区域中的任一列区域,在第一行数据之前添加第一空行,并设置所述第一空行的数据为0;

在最后一行数据之后添加第二空行,并设置所述第二空行的数据为0;

所述提取第二预设行数的待运算数据发送至所述芯片缓存的步骤,包括:

从所述第一空行开始提取第二预设行数的待运算数据发送至所述芯片缓存。

可选的,所述在所述待运算数据中的第一行数据参与完卷积运算后,将所述第一行数据从所述芯片缓存中删除,并从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据的步骤,包括:

在所述待运算数据中的第一行数据参与完卷积运算时,将所述第一行数据从所述芯片缓存中删除,并从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据;

或者,

在进行完任一次卷积运算后,将所述第一行数据从所述芯片缓存中删除,并在删除所述第一行数据后进行任一次卷积运算时,从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据。

可选的,所述利用所述预设卷积核,对更新的待运算数据进行卷积运算,直至所述区域中的所有行数据均参与完卷积运算,将卷积运算后得到的所有运算结果发送至所述内存的步骤,包括:

利用所述预设卷积核,对更新的待运算数据进行卷积运算,得到卷积结果;

将所述卷积结果存储至与对应列区域的列数相同的下一卷积层的列中;

发送所述下一卷积层至所述内存。

第二方面,本发明实施例提供了一种数据处理设备,所述设备包括:

主控单元,用于接收数据处理指令,并发送控制命令至滚动缓存及计算单元,以控制滚动缓存从内存中提取数据、控制计算单元对提取的数据进行卷积运算;

滚动缓存,用于获取预设卷积核,并确定所述预设卷积核的卷积框宽度;获取并根据芯片缓存容量、预设数据量及第一预设行数,确定数据列宽度,其中,所述数据列宽度大于或等于所述卷积框宽度;在接收到所述主控单元发送的控制命令后,针对按照所述数据列宽度对内存中的待处理数据矩阵进行列划分得到的多列区域中的任一列区域,提取第二预设行数的待运算数据;在所述待运算数据中的第一行数据参与完卷积运算后,将所述第一行数据删除,并从对应列区域中提取下一行数据,作为待运算数据的最后一行数据,更新待运算数据;

计算单元,用于在接收到所述滚动缓存发送的所述待运算数据后,利用所述预设卷积核,对所述待运算数据或更新的待运算数据进行卷积运算,直至所述区域中的所有行数据均参与完卷积运算,将卷积运算后得到的所有运算结果发送至所述内存。

可选的,所述滚动缓存,具体还用于:

获取芯片缓存容量及预设数据量,将所述芯片缓存容量与所述预设数据量相除,得到所述滚动缓存的数据个数的最大值;

获取第一预设行数,将所述数据个数的最大值与所述第一预设行数相除,得到所述滚动缓存的每行数据的个数;

确定所述滚动缓存的每行数据的个数为数据列宽度。

可选的,所述滚动缓存,具体还用于:

将所述卷积框宽度减去预设值,得到重合区域的宽度,其中,所述重合区域为任一数据列与相邻数据列重合的区域;

确定所述数据列宽度中包含所述重合区域的宽度。

可选的,所述滚动缓存,具体还用于:

针对所有区域中的任一列区域,在提取第一行数据之前,于所述第一行数据前添加第一空行,并设置所述第一空行的数据为0;

在提取最后一行数据之前,于所述最后一行数据后添加第二空行,并设置所述第二空行的数据为0;

从所述第一空行开始提取第二预设行数的待运算数据。

可选的,所述滚动缓存,具体还用于:

在所述待运算数据中的第一行数据参与完卷积运算时,将所述第一行数据删除,并从对应列区域中提取下一行数据,作为待运算数据的最后一行数据,更新待运算数据;

或者,

在进行完任一次卷积运算后,将所述第一行数据从所述芯片缓存中删除,并在删除所述第一行数据后进行任一次卷积运算时,从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据。

可选的,所述计算单元,具体还用于:

利用所述预设卷积核,对所述待运算数据或更新的待运算数据进行卷积运算,得到卷积结果;

将所述卷积结果存储至与对应列区域的列数相同的下一卷积层的列中;

发送所述下一卷积层至所述内存。

第三方面,本发明实施例提供了一种数据处理装置,所述装置包括:

第一确定模块,用于获取预设卷积核,并确定所述预设卷积核的卷积框宽度;

第二确定模块,用于获取并根据芯片缓存容量、预设数据量及第一预设行数,确定数据列宽度,其中,所述数据列宽度大于或等于所述卷积框宽度;

划分模块,用于按照所述数据列宽度对待处理数据矩阵进行列划分,得到多列区域,其中,所述待处理数据矩阵为存储在内存中的、包含所有待处理数据的矩阵;

提取模块,用于在接收到数据处理指令时,针对所有列区域中的任一列区域,提取第二预设行数的待运算数据发送至所述芯片缓存,利用所述预设卷积核,对缓存的所述待运算数据进行卷积运算,其中,所述第二预设行数大于或等于所述卷积框宽度、且小于或等于所述第一预设行数;

更新模块,用于在所述待运算数据中的第一行数据参与完卷积运算后,将所述第一行数据从所述芯片缓存中删除,并从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据;

第一运算模块,用于利用所述预设卷积核,对更新的待运算数据进行卷积运算,直至所述区域中的所有行数据均参与完卷积运算,将卷积运算后得到的所有运算结果发送至所述内存。

可选的,所述第二确定模块,包括:

第一运算子模块,用于获取芯片缓存容量及预设数据量,将所述芯片缓存容量与所述预设数据量相除,得到所述芯片缓存的数据个数的最大值;

第二运算子模块,用于获取第一预设行数,将所述数据个数的最大值与所述第一预设行数相除,得到所述芯片缓存的每行数据的个数;

确定子模块,用于确定所述芯片缓存的每行数据的个数为数据列宽度。

可选的,所述数据处理装置,还包括:

第二运算模块,用于将所述卷积框宽度减去预设值,得到重合区域的宽度,其中,所述重合区域为任一数据列与相邻数据列重合的区域;

第三确定模块,用于确定所述数据列宽度中包含所述重合区域的宽度。

可选的,所述数据处理装置,还包括:

第一设置模块,用于针对所有区域中的任一列区域,在第一行数据之前添加第一空行,并设置所述第一空行的数据为0;

第二设置模块,用于在最后一行数据之后添加第二空行,并设置所述第二空行的数据为0;

所述提取模块,具体还用于:

从所述第一空行开始提取第二预设行数的待运算数据发送至所述芯片缓存。

可选的,所述更新模块,具体用于:

在所述待运算数据中的第一行数据参与完卷积运算时,将所述第一行数据从所述芯片缓存中删除,并从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据;

或者,

在进行完任一次卷积运算后,将所述第一行数据从所述芯片缓存中删除,并在删除所述第一行数据后进行任一次卷积运算时,从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据。

可选的,所述第一运算模块,还包括:

第三运算子模块,用于利用所述预设卷积核,对更新的待运算数据进行卷积运算,得到卷积结果;

存储子模块,用于将所述卷积结果存储至与对应列区域的列数相同的下一卷积层的列中;

发送子模块,用于发送所述下一卷积层至所述内存。

本发明实施例提供的一种数据处理方法、设备及装置,在从内存中获取运算所需要的数据时,根据卷积核尺寸、芯片缓存容量、需要缓存的数据量及第一预设行数所确定的数据列宽度,每次从内存中存储的待处理数据中获取一列具有该宽度的数据,利用了卷积运算中数据大量重复的特性,保证每次计算仅需从内存中获取需要参与运算的数据,降低了对片外内存的宽带需求,从而降低芯片在进行数据处理时所产生的功耗、提高处理性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例的数据处理方法的一种流程示意图;

图2为本发明实施例的应用实例的数据列划分方式示意图;

图3为本发明实施例的应用实例的卷积运算的流程示意图;

图4为本发明实施例的数据处理设备的一种结构示意图;

图5为本发明实施例的数据处理装置的一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了降低芯片在进行数据处理时所产生的功耗、提高处理性能,本发明实施例提供了一种数据处理方法、设备及装置。

下面首先对本发明实施例所提供的一种数据处理方法进行介绍。

需要说明的是,本发明实施例所提供的一种数据处理方法的执行主体可以为一种用于数据处理的芯片,例如dsp(digitalsignalprocessor,数字信号处理器)、arm(advancedreducedinstructionsetcomputermachines,精简指令集计算机微处理器)或者fpga(field-programmablegatearray,现场可编程门阵列)等,也可以为一种数据处理控制器,当前,还可以为具有数据处理能力的其他设备,这里不作限定。其中,实现本发明实施例所提供的一种数据处理方法的方式可以为设置于用于数据处理的芯片或者数据处理控制器中的软件、硬件电路和/或逻辑电路。本发明实施例的应用场景可以为图像处理,也可以为雷达扫描,当然,其它应用卷积神经网络的应用场景都适用本发明实施例。

如图1所示,本发明实施例所提供的一种数据处理方法,可以包括如下步骤:

s101,获取预设卷积核,并确定预设卷积核的卷积框宽度。

需要说明的是,由于本实施例针对卷积神经网络,需要进行卷积运算,预设卷积核可以预先设定,也可以根据所选择的预设运算策略确定。预设运算策略可以为非线性修正激活、池化等卷积神经网络的任一种运算策略,每一种运算策略给定进行卷积运算的卷积核,则根据选择的预设运算策略,便可确定预设卷积核。

需要强调的是,进行卷积运算的关键是卷积算子也就是系数矩阵的选择,这个系数矩阵就是卷积核,这个系数矩阵的宽度即为卷积框宽度,例如,常说3×3的卷积核,其中3即为卷积框宽度。

s102,获取并根据芯片缓存容量、预设数据量及第一预设行数,确定数据列宽度。

其中,数据列宽度大于或等于卷积框宽度;数据列中包括多个数据;芯片中包括用于存储参与运算的数据的缓存;预设数据量可以为根据需要参与运算的数据的特征得到的,也可以为预先设定的,预设数据量表征进行一次卷积运算所需要缓存的数据量。需要说明的是,在芯片缓存容量很大时,提取的一列数据可以包含更多行数据进行缓存,以进行卷积运算。

可选的,所述获取并根据芯片缓存容量、预设数据量及第一预设行数,确定数据列宽度的步骤,可以包括:

首先,获取芯片缓存容量及预设数据量,将芯片缓存容量与预设数据量相除,得到芯片缓存的数据个数的最大值。

需要说明的是,本实施例中,在从内存中提取数据时,需要将所需提取的待处理数据分为存在重合区域的多列区域,每次仅在某一列区域中读取数据,每一列区域的宽度由芯片缓存容量、预设数据量及第一预设行数共同决定,首先可以根据芯片缓存容量及预设数据量,确定芯片缓存的数据个数的最大值,也就是芯片所能缓存的最多个数。例如,芯片缓存容量为100kb,每一个数据的数据量为256b,则芯片缓存的个数的最大值可以为400个数据。

其次,获取第一预设行数,将数据个数的最大值与第一预设行数相除,得到芯片缓存的每行数据的个数。

最后,确定芯片缓存的每行数据的个数为数据列宽度。

其中,所述数据列宽度包括所述重合区域的宽度;第一预设行数可以为存储于内存中的数据的行数,也可以为预先设定可提取的行数,也可以等于预设卷积核的卷积框宽度。具体的,第一预设行数可以根据芯片的缓存容量确定。需要说明的是,在确定芯片缓存的数据个数的最大值后,可以利用数据个数的最大值除以第一预设行数,得到芯片缓存的每行数据的个数,可将每行数据的个数作为数据列宽度,例如,芯片缓存的个数阈值为400个数据,第一预设行数为4行,则数据列宽度可以为100。

s103,按照数据列宽度对待处理数据矩阵进行列划分,得到多列区域。

其中,待处理数据矩阵为存储在内存中的、包含所有待处理数据的矩阵。通常情况下,内存中存储的是原始数据,例如在图像处理系统中,内存中存储的可以是采集的原图像;当然也可以为原始数据经转换后得到的二维形式的数据。需要说明的是,在从内存中提取数据时,内存中如果为原始数据,先将原始数据转换为二维形式的数据,然后根据上述得到的数据列宽度,将所需提取的待处理数据分为多列区域,每次仅在某一列区域中读取数据。在得到数据列宽度之后,为了减小每次缓存的数据量,可以按照数据列宽度对内存中的待处理数据矩阵进行划分。例如,如果得到的数据列宽度为6,则可以按照每6列数据为一列区域对待处理数据矩阵进行划分。

需要强调的是,为了保证对划分后的数据进行卷积运算的结果与对原待处理数据矩阵进行卷积运算的结果完全一致,可以在对待处理数据矩阵进行划分时,令相邻两列区域之间存在一定的重合区域。

可选的,在按照数据列宽度对待处理数据矩阵进行列划分,得到多列区域的步骤之前,数据处理方法还可以包括:

首先,将卷积框宽度减去预设值,得到重合区域的宽度。

其次,确定数据列宽度中包含重合区域的宽度。

其中,重合区域为任一数据列与相邻数据列重合的区域。由于重合区域是相邻的两个数据列重合的区域,并且每一列区域中的第一列数据只参与本列区域的卷积运算,而其他列数据需要参与其他列区域的卷积运算,因此,一般情况下预设值取1。例如,在卷积框宽度为3时,重合区域的宽度为2;在卷积框宽度为5时,重合区域的宽度为4,以此类推。需要说明的是,重合区域是为了保证卷积运算计算到边界时,依然能获得所需的数据,保证结果与正常的卷积过程完全一致。

s104,在接收到数据处理指令时,针对所有列区域中的任一列区域,提取第二预设行数的待运算数据发送至芯片缓存,利用预设卷积核,对缓存的待运算数据进行卷积运算。

其中,第二预设行数大于或等于卷积框宽度、且小于或等于第一预设行数。需要说明的是,数据处理指令用于启动数据处理操作,可以接收用户发送的数据处理指令,开始执行数据处理,增加了用户与数据处理的交互,提高用户体验。当然,还可以是在采集到原始数据后,由采集模块产生数据处理指令,开始数据处理,例如,在图像处理中,在采集到原图像时,接收到内存存储原图像的已存储状态,开始进行数据处理。

需要强调的是,在接收到数据处理指令后,从内存中已划分区域的待处理数据中提取数据,由于芯片的缓存空间有限,在计算数据列宽度时,第一预设行数相当于芯片所能缓存具有数据列宽度的最大行数,则在第一次从内存提取数据时,所能提取的某一列区域的数据行数最大为第一预设行数,由于要进行卷积运算,则所提取的数据行数最小为预设卷积核的卷积框宽度。则可以按照第二预设行数对待运算数据进行提取,在第一次提取后,可直接利用预设卷积核,对待运算数据进行卷积运算,卷积运算的过程属于现有技术,这里不再赘述。

可选的,所述在接收到数据处理指令时,针对所有区域中的任一列区域,提取第二预设行数的待运算数据发送至芯片缓存的步骤之前,数据处理方法还可以包括:

首先,针对所有区域中的任一列区域,在第一行数据之前添加第一空行,并设置第一空行的数据为0;

其次,在最后一行数据之后添加第二空行,并设置第二空行的数据为0。

需要说明的是,针对一列数据的第一行和最后一行数据,对于例如图像,为图像的边缘点信息,在提取边缘点信息时,如果直接提取第一行或者最后一行的数据可能会造成数据丢失。因此,在第一行数据之前及最后一行数据之后分别添加数据为0的空行,保证提取数据的完整性。

可选的,所述提取第二预设行数的待运算数据发送至芯片缓存的步骤,可以包括:

从第一空行开始提取第二预设行数的待运算数据发送至芯片缓存。

需要说明的是,卷积神经网络需按卷积框宽度从第一行开始顺序进行卷积运算,直至提取的一列数据中所有的数据均完成卷积运算,数据列的卷积运算才结束,一个数据列的运算结束再开始下一个数据列的卷积运算。

s105,在待运算数据中的第一行数据参与完卷积运算后,将第一行数据从芯片缓存中删除,并从对应列区域中提取下一行数据发送至芯片缓存,作为待运算数据的最后一行数据,更新待运算数据。

其中,对应列区域中的下一行数据指的是,对应列区域中未提取的第一行数据。需要说明的是,在对第一次提取的待运算数据进行卷积运算时,由于第一次提取的待运算数据的行数有可能等于卷积框宽度,也有可能大于卷积框宽度。如果待运算数据的行数等于卷积框宽度,则可以在进行完卷积运算后将第一行数据删除,再从内存中对应列区域提取下一行数据;如果待运算数据的行数大于卷积框宽度,可以在待运算数据都参与完卷积运算、将参与完卷积运算的第一行数据删除后,再从内存中对应列区域提取下一行数据,也可以在待运算数据的第一行数据参与完卷积运算的同时,将参与完卷积运算的第一行数据删除,再从内存中对应列区域提取下一行数据,这里不做具体限定。但是,一定需要在第一行数据参与完卷积运算、将参与完卷积运算的第一行数据删除后,才可以从内存中对应列区域提取下一行数据,否则会超过芯片的缓存容量。在接收到新的一行数据后,需要按照行的先后顺序,将新的一行数据设置为待运算数据的最后一行,更新待运算数据。

可选的,所述在待运算数据中的第一行数据参与完卷积运算后,将第一行数据从芯片缓存中删除,并从对应列区域中提取下一行数据发送至芯片缓存,作为待运算数据的最后一行数据,更新待运算数据的步骤,可以包括:

在待运算数据中的第一行数据参与完卷积运算时,将第一行数据从芯片缓存中删除,并从对应列区域中提取下一行数据发送至芯片缓存,作为待运算数据的最后一行数据,更新待运算数据。

需要说明的是,为了保证芯片缓存的利用率,最大程度的使用芯片的缓存容量,并且为了保证数据运算的效率,本实施例的一个具体实现方式可以为:在待运算数据的第一行数据参与完卷积运算的同时,将第一行数据删除,并立即从内存的对应列区域中提取下一行数据,更新待运算数据。例如,已经从内存中提取了5行数据(某一列区域的第0行至第4行数据)存储于芯片缓存中,利用3×3的卷积核对待运算数据进行卷积运算,在第0行数据参与完卷积运算的同时,将第0行数据从芯片缓存中删除,并从内存的对应列区域中提取第5行数据发送至芯片缓存,将第5行数据作为最后一行数据,更新待运算数据。

或者,

在进行完任一次卷积运算后,将第一行数据从芯片缓存中删除,并在删除第一行数据后进行任一次卷积运算时,从对应列区域中提取下一行数据发送至芯片缓存,作为待运算数据的最后一行数据,更新待运算数据。

需要说明的是,在第二预设行数大于卷积框宽度时,本实施例的另一种实现方式可以为:在每进行完一次卷积运算时,删除第一行数据,但不立即提取新的一行数据,可以在后续任一次的卷积运算时提取新的一行数据,例如,在所有行数据都参与完卷积运算后再提取新的一行数据。还可以为:在进行完一次卷积运算时,不立即删除第一行数据,可以在第一次卷积运算之后的任一次卷积运算后删除第一行数据,在删除第一行数据后进行任一次卷积运算时,从对应列区域中提取下一行数据。例如,第二预设行数为5行,则从内存中提取某一列区域第0行至第4行的数据存储至芯片缓存,采用3×3的卷积核,先对第0行至第2行数据进行卷积运算,在进行完卷积运算的同时,可以删除第0行数据,提取该列区域中的第5行数据,也可以仅删除第0行数据,不提取新的一行数据;再对第1行至第3行数据进行卷积运算,可以删除第0行和/或第1行数据,提取该列区域中的第5行和/或第6行数据,也可以仅删除第0行和/或第1行数据,不提取新的一行数据;再对第2行至第4行数据进行卷积运算,删除第0行和/或第1行和/或第2行数据,提取该列区域中的第5行和/或第6行和/或第7行数据。

s106,利用预设卷积核,对更新的待运算数据进行卷积运算,直至区域中的所有行数据均参与完卷积运算,将卷积运算后得到的所有运算结果发送至内存。

需要说明的是,卷积神经网络就是利用卷积核对数据逐次执行卷积运算,经卷积运算得到的卷积结果可作为下一次卷积运算的输入,也可以作为特征数据输出作为判断或比较依据。例如,在图像处理中,卷积运算得到的可以是图像特征,及图像的多个属性特征的集合,可以作为输出,以获得图像的特征进行目标检测等判断。需要强调的是,通常将卷积运算的运算结果存储至内存中。

可选的,利用预设卷积核,对更新的待运算数据进行卷积运算,并将卷积运算后得到的所有运算结果发送至内存的步骤,可以包括:

首先,利用预设卷积核,对更新的待运算数据进行卷积运算,得到卷积结果;

其次,将卷积结果存储至与对应列区域的列数相同的下一卷积层的列中;

最后,发送下一卷积层至内存。

需要说明的是,存储至内存的数据为通过卷积运算得到的所有列数据的运算结果,因此,根据当前进行卷积运算的数据在数据列中的列数建立运算结果矩阵,存储运算结果,该运算结果矩阵即为下一卷积层。例如,对数据列中第1列的数据进行卷积运算,运算结果存储至下一卷积层的第一列。卷积运算的过程为现有技术,这里不再赘述。

应用本实施例,在从内存中获取运算所需要的数据时,根据卷积核尺寸、芯片缓存容量、需要缓存的数据量及第一预设行数所确定的数据列宽度,每次从内存中存储的待处理数据中获取具有该宽度的一定行数的数据,利用了卷积运算中数据大量重复的特性,保证每次计算仅需从内存中获取需要参与运算的数据,降低了对片外内存的宽带需求,从而降低芯片在进行数据处理时所产生的功耗、提高处理性能;由于将数据划分为数据列提取至缓存进行运算,则使用小的缓存也可以运算数据量大的数据;并且通过重合区域的设定,保证卷积计算到边界时,依然能够获取所需的数据,保证结果与正常卷积过程完全一致。

下面结合具体的应用实例,对本发明实施例所提供的数据处理方法进行介绍。

内存中存储有分辨率为256×160的图像,每个数据的数据量为256b,则该图像共占用的存储空间为256*256*160=100mb,选择卷积神经网络的卷积算法,预设卷积核为尺寸为5×5的卷积核,假设芯片缓存容量为100kb。进行数据列划分的方式如图2所示,由于卷积框的宽度为5,则重合区域202的宽度为2。并且由于假设芯片缓存容量是100kb,每一个数据的数据量为256b,则在卷积核的尺寸为5×5的情况下,将数据列宽度201设定为100*1024/256/(5+1)≈66。

为了减少数据列的数目,从而降低重复加载的次数,这样,针对上述图像,需要反复加载的数据量为其中,256为图像的宽度,66为数据列宽度,2为一侧重合区域的宽度,160为图像的总行数,256b为一个数据的数据量。因此,在该条件下,每处理1张100mb的分辨率为256×160的图像,会有640kb的数据被加载两次,无效加载数据占比为640/(100*1024)=0.63%。

通过分析,第一次从内存中提取原二维形式的数据中第1列至第66列的数据,进行卷积运算;第二次从内存中提取原二维形式的数据中第65列至第130列的数据,进行卷积运算;依次按宽度为66,进行数据列的提取,进行卷积运算。

具体的,每一次提取数据列进行卷积运算的过程如图3所示,假设预设卷积核为尺寸为5×5的卷积核、且第一预设行数等于卷积框宽度,待处理数据矩阵中共有50行数据,具体步骤如下:

第一步,读取第一个数据列310的第0行311、第1行312、第2行313、第3行314及第4四行315中的数据,其中,第0行311为空行,将第0行311数据设置为0,对第0行311至第4行315进行卷积运算,将结果存储至下一卷积层数据的第1列第1行;在进行卷积运算的同时,读取第5行316中的数据存储至缓存。

第二步,读取第一个数据列310的第1行312、第2行313、第3行314、第4行315及第5行316中的数据,对第1行312至第5行316进行卷积运算,将结果存储至下一卷积层数据的第1列第2行;同时读取第6行317中的数据存储至缓存。

第三步,按照第二步,按照每次读取三行数据依次读取第一个数据列310的每行数据。

第四步,经过47行的计算后,对第47行318、第48行319、第49行3110、第50行3111及第51行3112的数据进行卷积运算,其中,第51行3112为空行,将第51行3112中的数据设置为0,将结果存储至下一卷积层数据的第1列第50行。

第五步,重新载入第二个数据列320的第0行321、第1行322、第2行323、第3行324及第4行325中的数据,其中,第0行321为空行,将第0行321中的数据设置为0,对第0行321至第4行325进行卷积运算,将结果存储至下一卷积层数据的第2列第1行;在进行卷积运算的同时,读取第5行326中的数据存储至缓存。

第六步,重复执行第四步和第五步,直至对第n个数据列330的第47行331、第48行332、第49行333、第50行334及第51行335的数据进行卷积运算,其中,第51行335为空行,将第51行335中的数据设置为0,将结果存储至下一卷积层数据的第n列第50行,其中第n列为内存中存储的数据的最后一列。

最后,将得到的下一卷积层发送至内存。

与现有技术相比,本方案中,在从内存中获取运算所需要的数据时,根据卷积核尺寸、芯片缓存容量、需要缓存的数据量及第一预设行数所确定的数据列宽度,每次从内存中存储的待处理数据中获取一列具有该宽度的数据,利用了卷积运算中数据大量重复的特性,保证每次计算仅需从内存中获取需要参与运算的数据,降低了对片外内存的宽带需求,从而降低芯片在进行数据处理时所产生的功耗、提高处理性能;由于将数据划分为数据列提取至缓存进行运算,则使用小的缓存也可以运算数据量大的数据;并且通过重合区域的设定,保证卷积计算到边界时,依然能够获取所需的数据,保证结果与正常卷积过程完全一致。

相应于上述实施例,本发明实施例提供了一种数据处理设备,如图4所示,数据处理设备可以包括:

主控单元410,用于接收数据处理指令,并发送控制命令至滚动缓存及计算单元,以控制滚动缓存从内存中提取数据、控制计算单元对提取的数据进行卷积运算;

滚动缓存420,用于获取预设卷积核,并确定所述预设卷积核的卷积框宽度;获取并根据芯片缓存容量、预设数据量及第一预设行数,确定数据列宽度,其中,所述数据列宽度大于或等于所述卷积框宽度;在接收到所述主控单元发送的控制命令后,针对按照所述数据列宽度对内存中的待处理数据矩阵进行列划分得到的多列区域中的任一列区域,提取第二预设行数的待运算数据;在所述待运算数据中的第一行数据参与完卷积运算后,将所述第一行数据删除,并从对应列区域中提取下一行数据,作为待运算数据的最后一行数据,更新待运算数据;

计算单元430,用于在接收到所述滚动缓存发送的所述待运算数据后,利用所述预设卷积核,对所述待运算数据或更新的待运算数据进行卷积运算,直至所述区域中的所有行数据均参与完卷积运算,将卷积运算后得到的所有运算结果发送至所述内存。

应用本实施例,在从内存中获取运算所需要的数据时,根据卷积核尺寸、芯片缓存容量、需要缓存的数据量及第一预设行数所确定的数据列宽度,每次从内存中存储的待处理数据中获取一列具有该宽度的数据,利用了卷积运算中数据大量重复的特性,保证每次计算仅需从内存中获取需要参与运算的数据,降低了对片外内存的宽带需求,从而降低芯片在进行数据处理时所产生的功耗、提高处理性能;由于将数据划分为数据列提取至缓存进行运算,则使用小的缓存也可以运算数据量大的数据;并且通过重合区域的设定,保证卷积计算到边界时,依然能够获取所需的数据,保证结果与正常卷积过程完全一致。

可选的,所述滚动缓存420,具体还可以用于:

获取芯片缓存容量及预设数据量,将所述芯片缓存容量与所述预设数据量相除,得到所述滚动缓存的数据个数的最大值;

获取第一预设行数,将所述数据个数的最大值与所述第一预设行数相除,得到所述滚动缓存的每行数据的个数;

确定所述滚动缓存的每行数据的个数为数据列宽度。

可选的,所述滚动缓存420,具体还可以用于:

将所述卷积框宽度减去预设值,得到重合区域的宽度,其中,所述重合区域为任一数据列与相邻数据列重合的区域;

确定所述数据列宽度中包含所述重合区域的宽度。

可选的,所述滚动缓存420,具体还可以用于:

针对所有区域中的任一列区域,在提取第一行数据之前,于所述第一行数据前添加第一空行,并设置所述第一空行的数据为0;

在提取最后一行数据之前,于所述最后一行数据后添加第二空行,并设置所述第二空行的数据为0;

从所述第一空行开始提取第二预设行数的待运算数据。

可选的,所述滚动缓存420,具体还可以用于:

在所述待运算数据中的第一行数据参与完卷积运算时,将所述第一行数据删除,并从对应列区域中提取下一行数据,作为待运算数据的最后一行数据,更新待运算数据;

或者,

在进行完任一次卷积运算后,将所述第一行数据从所述芯片缓存中删除,并在删除所述第一行数据后进行任一次卷积运算时,从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据。

可选的,所述计算单元430,具体还可以用于:

利用所述预设卷积核,对所述待运算数据或更新的待运算数据进行卷积运算,得到卷积结果;

将所述卷积结果存储至与对应列区域的列数相同的下一卷积层的列中;

发送所述下一卷积层至所述内存。

需要说明的是,本发明实施例的数据处理设备为应用上述数据处理方法的设备,则上述数据处理方法的所有实施例均适用于该设备,且均能达到相同或相似的有益效果。

相应于上述实施例,本发明实施例提供了一种数据处理装置,如图5所示,数据处理装置可以包括:

第一确定模块510,用于获取预设卷积核,并确定所述预设卷积核的卷积框宽度;

第二确定模块520,用于获取并根据芯片缓存容量、预设数据量及第一预设行数,确定数据列宽度,其中,所述数据列宽度大于或等于所述卷积框宽度;

划分模块530,用于用于按照所述数据列宽度对待处理数据矩阵进行列划分,得到多列区域,其中,所述待处理数据矩阵为存储在内存中的、包含所有待处理数据的矩阵;

提取模块540,用于在接收到数据处理指令时,针对所有列区域中的任一列区域,提取第二预设行数的待运算数据发送至所述芯片缓存,利用所述预设卷积核,对缓存的所述待运算数据进行卷积运算,其中,所述第二预设行数大于或等于所述卷积框宽度、且小于或等于所述第一预设行数;

更新模块550,用于在所述待运算数据中的第一行数据参与完卷积运算后,将所述第一行数据从所述芯片缓存中删除,并从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据;

第一运算模块560,用于利用所述预设卷积核,对更新的待运算数据进行卷积运算,直至所述区域中的所有行数据均参与完卷积运算,将卷积运算后得到的所有运算结果发送至所述内存。

应用本实施例,在从内存中获取运算所需要的数据时,根据卷积核尺寸、芯片缓存容量、需要缓存的数据量及第一预设行数所确定的数据列宽度,每次从内存中存储的待处理数据中获取一列具有该宽度的数据,利用了卷积运算中数据大量重复的特性,保证每次计算仅需从内存中获取需要参与运算的数据,降低了对片外内存的宽带需求,从而降低芯片在进行数据处理时所产生的功耗、提高处理性能;由于将数据划分为数据列提取至缓存进行运算,则使用小的缓存也可以运算数据量大的数据;并且通过重合区域的设定,保证卷积计算到边界时,依然能够获取所需的数据,保证结果与正常卷积过程完全一致。

可选的,所述第二确定模块520,还可以包括:

第一运算子模块,用于获取芯片缓存容量及预设数据量,将所述芯片缓存容量与所述预设数据量相除,得到所述芯片缓存的数据个数的最大值;

第二运算子模块,用于获取第一预设行数,将所述数据个数的最大值与所述第一预设行数相除,得到所述芯片缓存的每行数据的个数;

确定子模块,用于确定所述芯片缓存的每行数据的个数为数据列宽度。

可选的,所述数据处理装置,还可以包括:

第二运算模块,用于将所述卷积框宽度减去预设值,得到重合区域的宽度,其中,所述重合区域为任一数据列与相邻数据列重合的区域;

第三确定模块,用于确定所述数据列宽度中包含所述重合区域的宽度。

可选的,所述数据处理装置,还可以包括:

第一设置模块,用于针对所有区域中的任一列区域,在第一行数据之前添加第一空行,并设置所述第一空行的数据为0;

第二设置模块,用于在最后一行数据之后添加第二空行,并设置所述第二空行的数据为0;

可选的,所述提取模块540,具体还可以用于:

从所述第一空行开始提取第二预设行数的待运算数据发送至所述芯片缓存。

可选的,所述更新模块550,具体可以用于:

在所述待运算数据中的第一行数据参与完卷积运算时,将所述第一行数据从所述芯片缓存中删除,并从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据;

或者,

在进行完任一次卷积运算后,将所述第一行数据从所述芯片缓存中删除,并在删除所述第一行数据后进行任一次卷积运算时,从对应列区域中提取下一行数据发送至所述芯片缓存,作为待运算数据的最后一行数据,更新待运算数据。

可选的,所述第一运算模块560,还可以包括:

第三运算子模块,用于利用所述预设卷积核,对更新的待运算数据进行卷积运算,得到卷积结果;

存储子模块,用于将所述卷积结果存储至与对应列区域的列数相同的下一卷积层的列中;

发送子模块,用于发送所述下一卷积层至所述内存。

需要说明的是,本发明实施例的数据处理装置为应用上述数据处理方法的装置,则上述数据处理方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。

可以理解的是,本发明实施例的另一实施例中数据处理装置可以同时包括:第一确定模块510、第二确定模块520、划分模块530、提取模块540、更新模块550、第一运算模块560、第二运算模块、第三确定模块、第一设置模块、第二设置模块。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1