一种卷积神经网络的数据调度方法、系统及计算机设备与流程

文档序号:12719468阅读:275来源:国知局
一种卷积神经网络的数据调度方法、系统及计算机设备与流程

本发明涉及卷积神经网络技术领域,尤其涉及一种卷积神经网络的数据调度方法、系统及计算机设备。



背景技术:

卷积神经网络(Convolutional Neural Network,CNN)是一种常见的深度学习架构,受生物自然视觉认知机制启发而来。20世纪90年代,LeCun et al等人发表论文,确立了CNN的现代架构。CNN能够得出原始图像的有效表征,这使得CNN能够直接从原始像素中,经过极少的预处理,识别视觉上面的规律。然而,由于当时缺乏大规模训练数据,计算机的计算能力也跟不上,CNN对于复杂问题的处理结果并不理想。

进入二十一世纪,随着计算机能力的大幅度提升,以及大数据的广泛应用,CNN的应用能力取得了重大突破,同时,CNN的平台也从中央处理器(Central Processing Unit,CPU)扩展到了图形处理器(Graphic Processing Unit,GPU)、现场可编程门级阵列(Field-Programmable Gate Array,FPGA)以及专用集成电路(Application Specific Integrated Circuit,ASIC)。常见的CNN的组成部分有:卷积层、池化层、全连接层。

卷积神经网络的硬件实现设计中,常见的是采用通用的计算单元来计算卷积,需要针对每个计算单元设计一块存储空间,用来存储数据和权重参数。存储空间大小由数据大小来决定。随着CNN模型复杂程度的提高,存储空间的限制问题越来越突出,限制了计算单元的增加,从而限制了计算能力的提高。另外,这种设计对数据的带宽要求也比较高,每次都必须把数据全部载入才能开始计算,而且还需要保存中间数据。



技术实现要素:

本发明实施例提供了一种卷积神经网络的数据调度方法、系统及计算机设备,用于减少处理图像数据时所需的存储空间以及图像数据的载入和上传时间。

一方面本发明实施例还提供了一种卷积神经网络的数据调度方法,包括:

将图像数据分成N个目标图像数据,所述N为大于1的整数,所述N个目标图像数据中包含第一目标图像数据和第二目标图像数据,所述第一目标图像数据和所述第二目标图像数据为相邻的所述目标图像数据;

将所述第一目标图像数据载入第一数据缓冲模块,计算单元读取所述第一数据缓冲模块存储的所述第一目标图像数据后进行卷积计算;在所述计算单元读取所述第一数据缓冲模块存储的所述第一目标图像数据后进行卷积计算的过程中,将所述第二目标图像数据载入第二数据缓冲模块;

所述计算单元得到计算结果后将所述计算结果上传到外部存储。

在一个可选的实现方式中,所述将图像数据分成N个目标图像数据包括:

将所述图像数据分成所述N个所需存储空间相等的所述目标图像数据;

所述将所述第一目标图像数据载入第一数据缓冲模块包括:

为所述第一数据缓冲模块和第二数据缓冲模块分配与所述目标图像数据所需存储空间相等的存储空间,将所述第一目标图像数据载入所述第一数据缓冲模块。

在一个可选的实现方式中,所述计算单元得到计算结果后将所述计算结果上传到外部存储包括:

所述计算单元读取所述第一数据缓冲模块存储的所述第一目标图像数据后进行卷积计算,得到所述计算结果后将所述计算结果上传到所述外部存储;

或者,所述计算单元将计算出的计算结果存储到缓存中,若所述缓存中存储的所述计算结果的数据量达到预设条件,则上传到所述外部存储。

在一个可选的实现方式中,所述计算单元读取所述第一数据缓冲模块存储的所述第一目标图像数后进行卷积计算包括:

所述计算单元从缓存中读取所述图像数据的权重参数以及读取所述第一数据缓冲模块存储的所述第一目标图像数据后,进行卷积计算,得到计算结果,将所述计算结果存储到所述缓存。

在一个可选的实现方式中,在所述将所述图像数据分成N个所述目标图像数据之前,所述方法还包括:

根据缓存当前可用的存储空间以及计算单元的数量,确定第一数据缓冲模块和第二数据缓冲模块可分配的最大存储空间,所述第一数据缓冲模块和所述第二数据缓冲模块可分配的最大存储空间相同;

所述将图像数据分成N个目标图像数据包括:

确定若将所述图像数据分成所述N个数据量相等的所述目标图像数据后,所述第一目标图像数据所需的存储空间是否小于或等于所述第一数据缓冲模块可分配的最大存储空间;

若是,将所述图像数据分成所述N个所述目标图像数据。

二方面本发明实施例还提供了一种卷积神经网络的数据调度系统,包括:

划分模块,用于将图像数据分成N个目标图像数据,所述N为大于1的整数,所述N个目标图像数据中包含第一目标图像和第二目标图像,所述第一目标图像数据和所述第二目标图像数据为相邻的所述目标图像数据;

载入模块,用于将所述第一目标图像数据载入第一数据缓冲模块;在所述计算单元读取所述第一数据缓冲模块存储的所述第一目标图像数据后进行卷积计算的过程中,将所述第二目标图像数据载入第二数据缓冲模块;

计算单元,用于读取所述第一数据缓冲模块存储的所述第一目标图像数据后进行卷积计算;

第一数据缓冲模块,用于存储所述第一目标图像数据;

第二数据缓冲模块,用于存储所述第二目标图像数据;

上传模块,用于将所述计算单元得到的计算结果上传到外部存储。

在一个可选的实现方式中,所述划分模块,具体用于将所述图像数据分成所述N个数据量相等的所述目标图像数据;

所述载入模块,具体用于为所述第一数据缓冲模块和第二数据缓冲模块分配与所述目标图像数据所需存储空间相等的存储空间,将所述第一目标图像数据载入所述第一数据缓冲模块。

在一个可选的实现方式中,所述上传模块,具体用于在所述计算单元读取所述第一数据缓冲模块存储的所述第一目标图像数据后进行卷积计算,得到所述计算结果后,将所述计算结果上传到所述外部存储;

或者,具体用于在所述计算单元存储到缓存中的计算结果的数据量达到预设条件后,将所述计算结果上传到所述外部存储。

在一个可选的实现方式中,所述计算单元,具体用于从缓存中读取所述图像数据的权重参数以及读取所述第一数据缓冲模块存储的所述第一目标图像数据后,进行卷积计算,得到计算结果,将所述计算结果存储到所述缓存。

在一个可选的实现方式中,所述系统还包括:

确定模块,用于根据缓存当前可用的存储空间以及计算单元的数量,确定第一数据缓冲模块和第二数据缓冲模块可分配的最大存储空间,所述第一数据缓冲模块和所述第二数据缓冲模块可分配的最大存储空间相同;确定若将所述图像数据分成所述N个数据量相等的所述目标图像数据后,所述第一目标图像数据所需的存储空间是否小于或等于所述第一数据缓冲模块可分配的最大存储空间;

所述划分模块,还用于在所述确定模块确定所述第一目标图像数据所需的存储空间小于或等于所述第一数据缓冲模块可分配的最大存储空间后,将所述图像数据分成所述N个所述目标图像数据。

三方面本发明实施例还提供了一种计算机设备,包括:

存储器,存储可执行指令以及图像数据;

一个或多个处理器,与存储器通信以执行可执行指令从而完成以下操作:

将图像数据分成N个目标图像数据,所述N为大于1的整数,所述N个目标图像数据中包含第一目标图像数据和第二目标图像数据,所述第一目标图像数据和所述第二目标图像数据为相邻的目标图像数据;

将所述第一目标图像数据载入第一数据缓冲模块,计算单元读取所述第一数据缓冲模块存储的所述第一目标图像数据后进行卷积计算;在所述计算单元读取所述第一数据缓冲模块存储的所述第一目标图像数据后进行卷积计算的过程中,将所述第二目标图像数据载入第二数据缓冲模块;

所述计算单元得到计算结果后将所述计算结果上传到外部存储。

从以上技术方案可以看出,本发明实施例具有以下优点:将图像数据拆分成多个所需存储空间较小的目标图像数据,处理该目标图像数据所需的存储空间较少,解决了卷积神经网络硬件设计中存储空间的限制问题,可以提高计算能力;在进行卷积计算的过程中,动态地载入和上传数据可以有效地减少数据的载入和上传的时间。

附图说明

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

图1为本发明实施例一种卷积神经网络的数据调度方法流程示意图;

图2为本发明实施例图像数据存储的结构示意图;

图3为本发明实施例载入目标图像数据的流程示意图;

图4为本发明实施例另一种卷积神经网络的数据调度方法流程示意图;

图5为本发明实施例卷积神经网络的数据调度系统结构示意图;

图6为本发明实施例卷积神经网络的数据调度系统结构示意图;

图7为本发明实施例计算机设备结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例提供了一种卷积神经网络的数据调度方法,如图1所示,包括:

101、将图像数据分成N个目标图像数据;

上述N为大于1的整数,上述N个目标图像数据中包含第一目标图像数据和第二目标图像数据,上述第一目标图像数据和上述第二目标图像数据为相邻的上述目标图像数据。如图2所示,左半图可以表示整个图像数据的存储情况,该图像数据的存储地址可以是连续的也可以不是连续的,该图像数据是按照相邻顺序依次存储的,右半图可以表示该图像数据分成4个目标图像数据的情况,上述4目标图像数据是相邻的即第一目标图像数据和第二目标图像相邻、第二目标图像数据和第三目标图像相邻、第三目标图像数据和第四目标图像相邻。上述图像数据是对采集到的原始图像数据进行预处理后得到的,每个目标图像数据可以表示该原始图像数据经过预处理后的一部分连续的数据。上述目标图像数据所需的存储空间是相同的。上述图像数据分成上述N个目标数据图像后,每个目标数据图像所需占据的存储空间是相等。

102、将上述第一目标图像数据载入第一数据缓冲模块,计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算;在上述计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算的过程中,将上述第二目标图像数据载入第二数据缓冲模块;

上述第一数据缓冲模块和上述第二数据缓冲模块都是缓存的一部分,且占据的缓存空间的大小相同。例如上述第一数据缓冲模块和上述第二数据缓冲模块都为缓存中的100MB的存储区域。由于缓存空间有限,图像数据可以存储在外部存储设备中,当需要处理上述图像数据时,将上述图像数据从上述外部存储设备中载入到上述第一数据缓冲模块和上述第二数据缓冲模块。上述第一数据缓冲模块和上述第二数据缓冲模块为乒乓缓存,可以进行输入和输出切换,如图3所示,图3中表示了上述第一数据缓冲模块和上述第二数据缓冲模块以及计算单元在三个时间段执行的操作,在第一时间段将上述第一目标图像数据载入第一数据缓冲模块,在这一时间段第二数据缓冲模块不执行载入目标图像数据的操作,也未存储有目标图像数据;在第二时间段,上述第二数据缓冲模块载入上述第二目标图像数据,并行地上述计算单元读取上述第一数据缓冲模块中的上述第一目标图像数据后进行卷积计算,并将计算结果上述到缓存;在第三时间段,上述第一数据缓冲模块载入第三目标图像数据,并行地上述计算单元读取上述第二数据缓冲模块中的上述第二目标图像数据后进行卷积计算,并将计算结果上述到上述缓存。上述三个时间段的时间长短可以是不同的。从图3可以看出,计算单元在读取目标图像数据进行卷积计算的过程中,上述第一数据缓冲模块或上述第二数据缓冲模块可以载入上述计算单元下一次计算所需的目标图像数据,节省了载入目标图像数据的时间。

103、上述计算单元得到计算结果后将上述计算结果上传到外部存储。

上述计算单元可以将每次计算得到的计算结果先上传到缓存,当缓存中存储的计算结果达到预设条件时,再上传到外部存储中;也可以直接上传到外部存储。例如,当缓存中的计算结果的数量达到100个时,将这100个计算结果上传到上述外部存储。

本发明实施例中,将图像数据拆分成多个所需存储空间较小的目标图像数据,处理该目标图像数据所需的存储空间较少,解决了卷积神经网络硬件设计中存储空间的限制问题,可以提高计算能力;在进行卷积计算的过程中,动态地载入和上传数据可以有效地减少数据的载入和上传的时间。

本发明实施例中,提出了一种将图像数据划分为多个目标图像数据的方法,具体如下:上述将图像数据分成N个目标图像数据包括:

将上述图像数据分成上述N个所需存储空间相等的上述目标图像数据;

上述将上述第一目标图像数据载入第一数据缓冲模块包括:

为上述第一数据缓冲模块和第二数据缓冲模块分配与上述目标图像数据所需存储空间相等的存储空间,将上述第一目标图像数据载入上述第一数据缓冲模块。

上述目标图像数据所需的存储空间是相等且上述每个目标图像数据中的数据都是连续的。在确定上述目标图像数据所需的存储空间后,检测缓存中可用的存储空间,为上述第一数据缓冲模块和第二数据缓冲模块分配与上述目标图像数据所需存储空间相等的存储空间,上述第一数据缓冲模块和上述第二数据缓冲模块交替执行载入操作,即当上述计算单元读取上述第一数据缓冲模块中的目标图像数据时,上述第二数据缓冲模块载入上述计算单元所需读取的下一个目标图像数据,这样可以有效节省数据的载入时间。另外,只需上述第一数据缓冲模块和上述第二数据缓冲模块就可以完成计算任务,所需的存储空间较少。将上述图像数据划分为多少个目标图像数据,即上述N的确定,可以根据上述图像数据的数据量确定。

本发明实施例中,先将图像数据分成N个所需存储空间相同的目标图像数据,再根据目标图像数据所需的存储空间为第一数据缓冲模块和第二数据缓冲模块分配缓存空间,可以有效地减少占用的存储空间。

本发明实施例在前实施例的基础上提出了一种将计算结果上传到外部存储的方法,具体如下:上述计算单元得到计算结果后将上述计算结果上传到外部存储包括:

上述计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算,得到上述计算结果后将上述计算结果上传到上述外部存储;

或者,上述计算单元将计算出的计算结果存储到缓存中,若上述缓存中存储的上述计算结果的数据量达到预设条件,则上传到上述外部存储。

上述计算单元可以得到一个计算结果就进行一次上传,这样可以节省缓存空间。上述计算结果也可以暂时存储在缓存中,当上述缓存中存储的上述计算结果的数据量达到预设条件时,再将上述结果上传到上述外部存储。由于得到一个计算结果就上传一次需要上传的次数较多,可以先将计算结果存储在缓存中,当上述缓存中的计算结果达到预设条件时,一次上传给上述外部存储。上述预设条件可以根据将计算结果上述到外部存储的速度以及计算单元将计算结果上传到缓存的速度确定。例如,计算单元每1秒上传5个计算结果到上述缓存中,上述缓存每1秒上传500个计算结果到上述外部存储中,上述缓存可以在存储的计算结果的数量达到500后,进行一次上传。

本发明实施例中提出了两种将计算单元得到的计算结果进行上传的方法,一种可以节省缓存空间,另一种可以减少上传的次数。

本发明实施例中,提出了计算单元进行卷积计算的方法,具体如下:

上述计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数后进行卷积计算包括:

上述计算单元从缓存中读取上述图像数据的权重参数以及读取上述第一数据缓冲模块存储的上述第一目标图像数据后,进行卷积计算,得到计算结果,将上述计算结果存储到上述缓存。

上述权重参数存储在缓存中,上述图像数据仅对应一份权重参数且权重参数的数据量较少。上述权重参数和上述目标图像数据是行数和列数都相同的矩阵。上述计算单元在读取上述目标图像数据和上述权重参数后,进行矩阵点乘计算,如果目标图像数据有多个输入层,那么需要将每一输入层的中间结果算出后,进行求和运算得到一个输出层的一个点的最终结果。上述中间结果为一个输入层和权重参数进行矩阵点乘计算后得到的。

本发明实施例中,每次计算一个目标图像数据可以有效减少占用的存储空间。

本发明实施例在前实施例的基础上,提出了另一种将图像数据分成N个目标图像数据的方法,具体如下:在上述将上述图像数据分成N个上述目标图像数据之前,上述方法还包括:

根据缓存当前可用的存储空间以及计算单元的数量,确定第一数据缓冲模块和第二数据缓冲模块可分配的最大存储空间,上述第一数据缓冲模块和上述第二数据缓冲模块可分配的最大存储空间相同;

上述将图像数据分成N个目标图像数据包括:

确定若将上述图像数据分成上述N个数据量相等的上述目标图像数据后,上述第一目标图像数据所需的存储空间是否小于或等于上述第一数据缓冲模块可分配的最大存储空间;

若是,将上述图像数据分成上述N个上述目标图像数据。

本发明实施例可以先确定当前缓存中可用的存储空间,即可以分配给上述第一数据缓冲模块和上述第二数据缓冲模块的最大存储空间;再确定上述图像数据分成多少个目标图像数据;最后为上述第一数据缓冲模块和上述第二数据缓冲模块分配缓存空间。

举例来说,当前缓存的可用存储空间为100MB、计算单元的数量为10个、图像数据所需的存储空间为200MB,每个计算单元可以分配的最大存储空间为100MB/10即10MB,上述第一数据缓冲模块和上述第二数据缓冲模块的最大存储空间为10MB/2即5MB,上述图像数据可以分成40、45、50、100、200等多个目标图像数据。若上述图像数据分为50个目标图像数据,每个目标图像数据所需的存储空间为4MB,需要为上述第一数据缓冲模块和上述第二数据缓冲模块的都分配4MB的缓存。上述图像数据分成目标图像数据后,只需保证目标图像数据所需的存储空间小于或等于即可,分成的目标图像数据的个数不作限定。

本发明实施例中,根据缓存当前可用的存储空间以及计算单元的数量确定图像数据分成目标图像数据的个数,可以充分利用缓存空间,提高计算能力。

本发明实施例中,提出了一种卷积神经网络的数据调度方法,如图4所示,可以包括以下步骤:

401、根据缓存当前可用的存储空间以及计算单元的数量,确定第一数据缓冲模块和第二数据缓冲模块可分配的最大存储空间;

402、确定若将图像数据分成上述N个数据量相等的目标图像数据后,第一目标图像数据所需的存储空间是否小于或等于上述第一数据缓冲模块可分配的最大存储空间;

上述图像数据包含第一目标图像数据和第二目标图像数据,上述第一目标图像数据和上述第二目标图像数据为相邻的上述目标图像数据。

403、若是,将上述图像数据分成上述N个上述目标图像数据;

404、将上述第一目标图像数据载入上述第一数据缓冲模块;

405、计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算,在上述计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算的过程中,将上述第二目标图像数据载入第二数据缓冲模块;

406、将上述计算单元得到的计算结果存储到上述缓存;

407、检测上述缓存中存储的上述计算结果的数据量是否达到预设条件,若达到上述预设条件,执行408,否则,执行406;

408、将上述计算结果上传到外部存储;

409、调整上述N,执行405。

可以增大上述N,例如上述N原来为8,可以将N调整为9、10或者其他整数。

本发明实施例中,将图像数据拆分成多个所需存储空间较小的目标图像数据,处理该目标图像数据所需的存储空间较少,解决了卷积神经网络硬件设计中存储空间的限制问题,可以提高计算能力;在进行卷积计算的过程中,动态地载入和上传数据可以有效地减少数据的载入和上传的时间。

本发明实施例中,提出了一种卷积神经网络的数据调度系统,如图5所示,包括:

划分模块501,用于将图像数据分成N个目标图像数据,上述N为大于1的整数,上述N个目标图像数据中包含第一目标图像和第二目标图像,上述第一目标图像数据和上述第二目标图像数据为相邻的上述目标图像数据;

载入模块502,用于将上述第一目标图像数据载入第一数据缓冲模块;在上述计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算的过程中,将上述第二目标图像数据载入第二数据缓冲模块;

计算单元503,用于读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算;

第一数据缓冲模块504,用于存储上述第一目标图像数据;

第二数据缓冲模块505,用于存储上述第二目标图像数据;

上传模块506,用于将上述计算单元得到的计算结果上传到外部存储。

实现方法和图1中的方法相同,这里不作详述。

本发明实施例中,提出了一种将图像数据划分为多个目标图像数据的方法,具体如下:进一步地,上述划分501模块,具体用于将上述图像数据分成上述N个数据量相等的上述目标图像数据;

上述载入模块502,具体用于为上述第一数据缓冲模块和第二数据缓冲模块分配与上述目标图像数据所需存储空间相等的存储空间,将上述第一目标图像数据载入上述第一数据缓冲模块。

上述目标图像数据所需的存储空间是相等且上述每个目标图像数据中的数据都是连续的。在确定上述目标图像数据所需的存储空间后,检测缓存中可用的存储空间,为上述第一数据缓冲模块和第二数据缓冲模块分配与上述目标图像数据所需存储空间相等的存储空间,上述第一数据缓冲模块和上述第二数据缓冲模块交替执行载入操作,即当上述计算单元读取上述第一数据缓冲模块中的目标图像数据时,上述第二数据缓冲模块载入上述计算单元所需读取的下一个目标图像数据,这样可以有效节省数据的载入时间。另外,只需上述第一数据缓冲模块和上述第二数据缓冲模块就可以完成计算任务,所需的存储空间较少。将上述图像数据划分为多少个目标图像数据,即上述N的确定,可以根据上述图像数据的数据量确定。

本发明实施例中,先将图像数据分成N个上述存储空间相同的目标图像数据,再根据目标图像数据所需的存储空间为第一数据缓冲模块和第二数据缓冲模块分配缓存空间,可以有效地减少占用的存储空间。

本发明实施例在前实施例的基础上提出了一种将计算结果上传到外部存储的方法,具体如下:上述上传模块506,具体用于在上述计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算,得到上述计算结果后,将上述计算结果上传到上述外部存储;

或者,具体用于在上述计算单元存储到缓存中的计算结果的数据量达到预设条件后,将上述计算结果上传到上述外部存储。

上述计算单元可以得到一个计算结果就进行一次上传,可以节省缓存空间。上述计算结果可以暂时存储在缓存中,当上述缓存中存储的上述计算结果的数据量达到预设条件时,再将上述结果上传到上述外部存储。由于得到一个计算结果就上传一次需要上传的次数较多,可以先将计算结果存储在缓存中,当上述缓存中的计算结果达到预设条件时,一次上传给上述外部存储。上述预设条件可以根据将计算结果上述到外部存储的速度以及计算单元将计算结果上传到缓存的速度确定。例如,计算单元每1秒上传5个计算结果到上述缓存中,上述缓存每1秒上传500个计算结果到上述外部存储中,上述缓存可以在存储的计算结果的数量达到500后,进行一次上传。

本发明实施例中提出了两种将计算单元得到的计算结果进行上传的方法,一种可以节省缓存空间,另一种可以减少上传的次数。

本发明实施例中,提出了计算单元进行卷积计算的方法,具体如下:

上述计算单元503,具体用于从缓存中读取上述图像数据的权重参数以及读取上述第一数据缓冲模块存储的上述第一目标图像数据后,进行卷积计算,得到计算结果,将上述计算结果存储到上述缓存。

上述权重参数存储在缓存中,上述图像数据仅对应一份权重参数且权重参数的数据量较少。上述权重参数和上述目标图像数据是行数和列数都相同的矩阵。上述计算单元在读取上述目标图像数据和上述权重参数后,进行矩阵点乘计算,如果目标图像数据有多个输入层,那么需要将每一输入层的中间结果算出后,进行求和运算得到一个输出层的一个点的最终结果。上述中间结果为一个输入层和权重参数进行矩阵点乘计算后得到的。

本发明实施例中,每次计算一个目标图像数据可以有效减少占用的存储空间。

本发明实施例在前实施例的基础上,提出了另一种将图像数据分成N个目标图像数据的方法,具体如下:进一步地,如图6所示,上述系统还包括:

确定模块601,用于根据缓存当前可用的存储空间以及计算单元的数量,确定第一数据缓冲模块和第二数据缓冲模块可分配的最大存储空间,上述第一数据缓冲模块和上述第二数据缓冲模块可分配的最大存储空间相同;确定若将上述图像数据分成上述N个数据量相等的上述目标图像数据后,上述第一目标图像数据所需的存储空间是否小于或等于上述第一数据缓冲模块可分配的最大存储空间;

上述划分模块501,还用于在上述确定模块确定上述第一目标图像数据所需的存储空间小于或等于上述第一数据缓冲模块可分配的最大存储空间后,将上述图像数据分成上述N个上述目标图像数据。

本发明实施例可以先确定当前缓存中可用的存储空间,即可以分配给上述第一数据缓冲模块和上述第二数据缓冲模块的最大存储空间;再确定上述图像数据分成多少个目标图像数据;最后为上述第一数据缓冲模块和上述第二数据缓冲模块分配缓存空间。

举例来说,当前缓存的可用存储空间为100MB、计算单元的数量为10个、图像数据所需的存储空间为200MB,每个计算单元可以分配的最大存储空间为100MB/10即10MB,上述第一数据缓冲模块和上述第二数据缓冲模块的最大存储空间为10MB/2即5MB,上述图像数据可以分成40、50、100、200等多个目标图像数据。若上述图像数据分为50个目标图像数据,每个目标图像数据所需的存储空间为4MB,需要为上述第一数据缓冲模块和上述第二数据缓冲模块的都分配4MB的缓存。上述图像数据分成目标图像数据后,只需保证目标图像数据所需的存储空间小于或等于即可,分成的目标图像数据的个数不作限定。

本发明实施例中,根据缓存当前可用的存储空间以及计算单元的数量确定图像数据分成目标图像数据的个数,可以充分利用缓存空间,提高计算能力。

本发明实施例提出了一种计算机设备,如图7所示,包括:

存储器701,存储可执行指令以及图像数据;

处理器702,与存储器701通信以执行可执行指令从而完成以下操作:

将图像数据分成N个目标图像数据,上述N为大于1的整数,上述N个目标图像数据中包含第一目标图像数据和第二目标图像数据,上述第一目标图像数据和上述第二目标图像数据为相邻的目标图像数据;

将上述第一目标图像数据载入第一数据缓冲模块,计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算;在上述计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算的过程中,将上述第二目标图像数据载入第二数据缓冲模块;

上述计算单元得到计算结果后将上述计算结果上传到外部存储。

实现方法和图1中的方法相同,这里不做详述。

本发明实施例中,提出了一种将图像数据划分为多个目标图像数据的方法,具体如下:进一步地,上述处理器702,具体用于将上述图像数据分成上述N个数据量相等的上述目标图像数据;为上述第一数据缓冲模块和第二数据缓冲模块分配与上述目标图像数据所需存储空间相等的存储空间,将上述第一目标图像数据载入上述第一数据缓冲模块。

上述目标图像数据所需的存储空间是相等且上述每个目标图像数据中的数据都是连续的。在确定上述目标图像数据所需的存储空间后,检测缓存中可用的存储空间,为上述第一数据缓冲模块和第二数据缓冲模块分配与上述目标图像数据所需存储空间相等的存储空间,上述第一数据缓冲模块和上述第二数据缓冲模块交替执行载入操作,即当上述计算单元读取上述第一数据缓冲模块中的目标图像数据时,上述第二数据缓冲模块载入上述计算单元所需读取的下一个目标图像数据,这样可以有效节省数据的载入时间。另外,只需上述第一数据缓冲模块和上述第二数据缓冲模块就可以完成计算任务,所需的存储空间较少。将上述图像数据划分为多少个目标图像数据,即上述N的确定,可以根据上述图像数据的数据量确定。

本发明实施例中,先将图像数据分成N个上述存储空间相同的目标图像数据,再根据目标图像数据所需的存储空间为第一数据缓冲模块和第二数据缓冲模块分配缓存空间,可以有效地减少占用的存储空间。

本发明实施例在前实施例的基础上提出了一种将计算结果上传到外部存储的方法,具体如下:上述处理器702,具体用于在上述计算单元读取上述第一数据缓冲模块存储的上述第一目标图像数据后进行卷积计算,得到上述计算结果后,将上述计算结果上传到上述外部存储;或者,具体用于在上述计算单元存储到缓存中的计算结果的数据量达到预设条件后,将上述计算结果上传到上述外部存储。

上述计算单元可以得到一个计算结果就进行一次上传,可以节省缓存空间。上述计算结果可以暂时存储在缓存中,当上述缓存中存储的上述计算结果的数据量达到预设条件时,再将上述结果上传到上述外部存储。由于得到一个计算结果就上传一次需要上传的次数较多,可以先将计算结果存储在缓存中,当上述缓存中的计算结果达到预设条件时,一次上传给上述外部存储。上述预设条件可以根据将计算结果上述到外部存储的速度以及计算单元将计算结果上传到缓存的速度确定。例如,计算单元每1秒上传5个计算结果到上述缓存中,上述缓存每1秒上传500个计算结果到上述外部存储中,上述缓存可以在存储的计算结果的数量达到500后,进行一次上传。

本发明实施例中提出了两种将计算单元得到的计算结果进行上传的方式,一种可以节省缓存空间,另一种可以减少上传的次数。

本发明实施例中,提出了计算单元进行卷积计算的方法,具体如下:

上述处理器702,具体用于从缓存中读取上述图像数据的权重参数以及读取上述第一数据缓冲模块存储的上述第一目标图像数据后,进行卷积计算,得到计算结果,将上述计算结果存储到上述缓存。

上述权重参数存储在缓存中,上述图像数据仅对应一份权重参数且权重参数的数据量较少。上述权重参数和上述目标图像数据是行数和列数都相同的矩阵。上述计算单元在读取上述目标图像数据和上述权重参数后,进行矩阵点乘计算,如果目标图像数据有多个输入层,那么需要将每一输入层的中间结果算出后,进行求和运算得到一个输出层的一个点的最终结果。上述中间结果为一个输入层和权重参数进行矩阵点乘计算后得到的。

本发明实施例中,每次计算一个目标图像数据可以有效减少占用的存储空间。

本发明实施例在前实施例的基础上,提出了另一种将图像数据分成N个目标图像数据的方法,具体如下:上述处理器702,还用于根据缓存当前可用的存储空间以及计算单元的数量,确定第一数据缓冲模块和第二数据缓冲模块可分配的最大存储空间,上述第一数据缓冲模块和上述第二数据缓冲模块可分配的最大存储空间相同;确定若将上述图像数据分成上述N个数据量相等的上述目标图像数据后,上述第一目标图像数据所需的存储空间是否小于或等于上述第一数据缓冲模块可分配的最大存储空间;在上述确定模块确定上述第一目标图像数据所需的存储空间小于或等于上述第一数据缓冲模块可分配的最大存储空间后,将上述图像数据分成上述N个上述目标图像数据。

本发明实施例可以先确定当前缓存中可用的存储空间,即可以分配给上述第一数据缓冲模块和上述第二数据缓冲模块的最大存储空间;再确定上述图像数据分成多少个目标图像数据;最后为上述第一数据缓冲模块和上述第二数据缓冲模块分配缓存空间。

举例来说,当前缓存的可用存储空间为100MB、计算单元的数量为10个、图像数据所需的存储空间为200MB,每个计算单元可以分配的最大存储空间为100MB/10即10MB,上述第一数据缓冲模块和上述第二数据缓冲模块的最大存储空间为10MB/2即5MB,上述图像数据可以分成40、50、100、200等多个目标图像数据。上述图像数据分成目标图像数据后,只需保证目标图像数据所需的存储空间小于或等于即可,分成的目标图像数据的个数不作限定。

本发明实施例中,根据缓存当前可用的存储空间以及计算单元的数量确定图像数据分成目标图像数据的个数,可以充分利用缓存空间,提高计算能力。

以上仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

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