执行卷积运算操作的方法及装置、生成指令的方法及装置与流程

文档序号:17474369发布日期:2019-04-20 06:01阅读:284来源:国知局
执行卷积运算操作的方法及装置、生成指令的方法及装置与流程

本申请涉及神经网络技术领域,尤其涉及一种执行卷积运算操作的方法及装置、生成指令的方法及装置。



背景技术:

卷积神经网络已成功应用于图像处理、自动驾驶等诸多领域。随着卷积神经网络在诸多领域的应用,一些应用场景下需要在卷积神经网络中应用各种尺寸卷积核的卷积运算操作。然而,专用于执行神经网络计算的硬件(例如,神经网络加速器)因其硬件的限制仅能够直接执行特定尺寸的卷积核的卷积运算操作。



技术实现要素:

为了解决上述技术问题,期望提供一种新的执行卷积运算操作的方法及装置、生成指令的方法及装置,以使因硬件限制而不能支持特定尺寸卷积核的硬件(例如,神经网络加速器)能够完成各种卷积核的卷积运算操作,从而在不增加硬件成本的前提下提高硬件执行卷积神经网络运算的效率。

根据本申请的一个方面,提供了一种执行卷积运算操作的方法,包括:获取n个第二卷积核中的第n个第二卷积核,所述n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,所述n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于计算单元在相应维度上的尺寸;基于第一卷积核在宽度和高度上的尺寸、与第一输入特征数据在宽度和高度上填充后的尺寸、所述第n个第二卷积核在宽度和高度上的尺寸、和所述第n个第二卷积核在所述第一卷积核中的宽度起点坐标和高度起点坐标,从所述填充后的第一输入特征数据中,获取与所述第n个第二卷积核对应的第二输入特征数据;由所述计算单元对与所述第n个第二卷积核对应的第二输入特征数据和所述第n个第二卷积核执行卷积运算操作,以获得与所述第n个第二卷积核对应的第二输出特征数据;以及在得到与所述n个第二卷积核对应的n个第二输出特征数据后,对所述n个第二输出特征数据进行整合,以获得与所述第一卷积核和所述第一输入特征数据对应的第一输出特征数据,其中,所述计算单元包括累加器和多个乘法器,用于对所述第二输入特征数据和所述第二卷积核进行卷积运算操作。

根据本申请的一个方面,提供了一种电子设备,包括:控制单元和计算单元,其中,所述控制单元配置为运行指令以控制所述计算单元执行上述执行卷积运算操作的方法。

根据本申请的一个方面,提供了一种执行卷积运算操作的装置,包括:第一获取模块,配置为获取n个第二卷积核中的第n个第二卷积核,所述n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,所述n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于计算单元在相应维度上的尺寸;第二获取模块,配置为基于第一卷积核在宽度和高度上的尺寸、与第一输入特征数据在宽度和高度上填充后的尺寸、所述第n个第二卷积核在宽度和高度上的尺寸、和所述第n个第二卷积核在所述第一卷积核中的宽度起点坐标和高度起点坐标,从所述填充后的第一输入特征数据中,获取与所述第n个第二卷积核对应的第二输入特征数据;卷积计算模块,配置为利用所述计算单元对所述与所述第n个第二卷积核对应的第二输入特征数据和所述第n个第二卷积核执行卷积运算操作,以获得与所述第n个第二卷积核对应的第二输出特征数据;以及整合模块,配置为在得到与所述n个第二卷积核对应的n个第二输出特征数据后,对所述n个第二输出特征数据进行整合,以获得与所述第一卷积核和所述第一输入特征数据对应的第一输出特征数据。

根据本申请的一个方面,提供了一种生成指令的方法,包括:获取第一输入特征数据的尺寸、填充尺寸、和第一卷积核的尺寸;根据所述第一卷积核的尺寸和用于执行卷积运算操作的计算单元支持的最大卷积核的尺寸,确定n个第二卷积核,所述n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,所述n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于所述计算单元在相应维度上的尺寸;基于第一卷积核在宽度和高度上的尺寸、所述第一输入特征数据的尺寸、所述填充尺寸、所述n个第二卷积核中第n个第二卷积核在宽度和高度上的尺寸、和所述第n个第二卷积核在所述第一卷积核中的宽度起点坐标和高度起点坐标,在所述填充后的第一输入特征数据的区域中,确定与所述第n个第二卷积核对应的第n个第二输入特征数据的尺寸和所述第n个第二输入特征数据在所述第一输入特征数据中的宽度起点坐标和高度起点坐标;生成整合指令和n条卷积操作指令,所述n条卷积操作指令中的第n条卷积操作指令用于对所述第n个第二输入特征数据和所述第n个第二卷积核执行卷积运算操作,以获得与所述第n个第二卷积核对应的第二输出特征数据,所述整合指令用于在得到与所述n个第二卷积核对应的n个第二输出特征数据后,对所述n个第二输出特征数据进行整合,以获得与所述第一卷积核和所述第一输入特征数据对应的第一输出特征数据。

根据本申请的一个方面,提供了一种电子设备,包括:一个或多个处理器;以及,存储器,存储有计算机指令,所述计算机指令在被所述处理器运行时使所述处理器执行上述生成指令的方法。

根据本申请的一个方面,提供了一种生成指令的装置,包括:第三获取模块,配置为获取第一输入特征数据的尺寸、填充尺寸、和第一卷积核的尺寸;第一确定模块,配置为根据所述第一卷积核的尺寸和用于执行卷积运算操作的计算单元支持的最大卷积核的尺寸,确定n个第二卷积核,所述n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,所述n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于所述计算单元在相应维度上的尺寸;第二确定模块,配置为基于第一卷积核在宽度和高度上的尺寸、所述第一输入特征数据的尺寸、所述填充尺寸、所述n个第二卷积核中第n个第二卷积核在宽度和高度上的尺寸、和所述第n个第二卷积核在所述第一卷积核中的宽度起点坐标和高度起点坐标,在所述填充后的第一输入特征数据的区域中,确定与所述第n个第二卷积核对应的第n个第二输入特征数据的尺寸和所述第n个第二输入特征数据在所述第一输入特征数据中的宽度起点坐标和高度起点坐标;指令生成模块,配置为生成整合指令和n条卷积操作指令,所述n条卷积操作指令中的第n条卷积操作指令用于对所述第n个第二输入特征数据和所述第n个第二卷积核执行卷积运算操作,以获得与所述第n个第二卷积核对应的第二输出特征数据,所述整合指令用于在得到与所述n个第二卷积核对应的n个第二输出特征数据后,对所述n个第二输出特征数据进行整合,以获得与所述第一卷积核和所述第一输入特征数据对应的第一输出特征数据。

根据本申请的一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行上述执行卷积运算操作的方法和/或上述生成指令的方法。

通过本申请实施例的方法和/或装置,由于多个第二输出特征数据通过整合后得到的第一输出特征数据与直接执行第一输入特征数据与第一卷积核进行卷积运算操作得到的结果保持一致,对于计算单元而言,其所包含的乘法器与加法器的数量只需要能够支持多个第二卷积核中具有最大尺寸的卷积核的卷积运算即可,避免计算单元为支持更大尺寸的卷积核而使用更多的乘法器和加法器,从而降低了计算单元的硬件成本;此外,由于计算单元采用了的乘法器和加法器的数量减少,因此可降低对计算单元所在的硬件加速器或者芯片的设计复杂度,进而降低硬件加速器或者芯片的功耗以及面积。

附图说明

通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。

图1是本申请所适用的系统的示例性结构图。

图2是本申请一示例性实施例提供的一电子设备的示例性结构图。

图3是本申请一示例性实施例提供的另一电子设备的示例性结构图。

图4a是本申请一示例性实施例提供的生成指令的方法的流程示意图。

图4b是本申请一示例性实施例提供的第一卷积核与第n个第二卷积核的关系示意图。

图4c是本申请一示例性实施例提供的第一输入特征数据与第二输入特征数据的关系示意图。

图5是本申请一示例性实施例提供的确定n组第二参数的具体实现流程示意图。

图6是本申请一示例性实施例提供的硬件由卷积核11划分出四个卷积核的示例图。

图7是本申请一示例性实施例提供的硬件由卷积核11划分出四个卷积核的数据分布示例图。

图8是本申请一示例性实施例提供的硬件由featuremap11确定featuremap24的示例图。

图9是本申请一示例性实施例提供的执行卷积运算操作的方法的流程示意图。

图10是本申请一示例性实施例提供的硬件直接执行卷积核11和输入特征数据featuremap11的卷积操作的示意图。

图11是本申请一示例性实施例提供的硬件执行卷积核21和输入特征数据featuremap21的卷积操作的示意图。

图12是本申请一示例性实施例提供的硬件执行卷积核22和输入特征数据featuremap22的卷积操作的示意图。

图13是本申请一示例性实施例提供的硬件执行卷积核23和输入特征数据featuremap23的卷积操作的示意图。

图14是本申请一示例性实施例提供的硬件执行卷积核24和输入特征数据featuremap24的卷积操作的示意图。

图15是本申请一示例性实施例提供的硬件由输出特征数据featuremap41、输出特征数据featuremap42、输出特征数据featuremap43、输出特征数据featuremap44累加得到输出特征数据featuremap31的示意图。

图16是本申请一示例性实施例提供的生成指令的装置的结构图。

图17是本申请一示例性实施例提供的生成指令的装置的结构图。

具体实施方式

下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。

申请概述

如上文所述,卷积神经网络中的每一个卷积层通常都需要对应多个尺寸不相同的卷积核(例如,大尺寸的卷积核),而专用于执行神经网络计算的硬件(例如,神经网络加速器)因硬件限制而仅能够针对特定尺寸的卷积核进行卷积运算操作。

相关技术中,为了解决上述硬件无法满足卷积神经网络实际运算需求的问题,一种实现方式是直接改进硬件结构,使其能够直接执行各种尺寸卷积核的卷积运算操作,但使硬件支持各种尺寸卷积核的运算必然会带来更高的硬件复杂度,硬件结构本身也会更为复杂,这将大幅增加硬件成本。

针对上述技术问题,本申请实施例的发明构思包括,提供一种执行卷积运算操作的方法及装置、电子设备、计算机可读存储介质,获取n个第二卷积核中的第n个第二卷积核,所述n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,所述n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于计算单元在相应维度上的尺寸;基于第一卷积核在宽度和高度上的尺寸、与第一输入特征数据在宽度和高度上填充后的尺寸、所述第n个第二卷积核在宽度和高度上的尺寸、和所述第n个第二卷积核在所述第一卷积核中的宽度起点坐标和高度起点坐标,从所述填充后的第一输入特征数据中,获取与所述第n个第二卷积核对应的第二输入特征数据;由所述计算单元对所述与第n个第二卷积核对应的第二输入特征数据和所述第n个第二卷积核执行卷积运算操作,以获得与所述第n个第二卷积核对应的第二输出特征数据;以及在得到与所述n个第二卷积核对应的n个第二输出特征数据后,对所述n个第二输出特征数据进行整合,以获得与所述第一卷积核和所述第一输入特征数据对应的第一输出特征数据;其中,所述计算单元包括累加器和多个乘法器,用于对所述第二输入特征数据和所述第二卷积核进行卷积运算操作。本申请中,n为大于或者等于2的整数,n为大于或者等于1并且小于或者等于n的整数。由此可见,本申请实施例通过将第一输入特征数据与第一卷积核的卷积运算操作等同为计算单元能直接执行的n个第二输入特征数据与n个第二输入特征数据各自对应的第二卷积核的卷积运算操作,使得计算单元能够通过直接执行其支持的特定尺寸卷积核的卷积运算操作来实现n个特定尺寸卷积核的卷积运算操作,由于n个第二输出特征数据通过整合后得到的第一输出特征数据与直接执行第一输入特征数据与第一卷积核进行卷积运算操作得到的结果保持一致,对于计算单元而言,其所包含的乘法器与加法器的数量只需要能够支持多个第二卷积核中具有最大尺寸的卷积核的卷积运算即可,避免计算单元为支持更大尺寸的卷积核而使用更多的乘法器和加法器,从而降低了计算单元的硬件成本;此外,由于计算单元采用了的乘法器和加法器的数量减少,因此可降低对计算单元所在的硬件加速器或者芯片的设计复杂度,进而降低硬件加速器或者芯片的功耗以及面积。

针对上述技术问题,本申请实施例的发明构思还包括提供一种生成指令的方法及装置、电子设备、计算机可读存储介质,获取第一输入特征数据的尺寸、填充尺寸、和第一卷积核的尺寸;根据第一卷积核的尺寸和用于执行卷积运算操作的计算单元支持的最大卷积核的尺寸,确定n个第二卷积核,n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于计算单元在相应维度上的尺寸;基于第一卷积核在宽度和高度上的尺寸、第一输入特征数据的尺寸、填充尺寸、n个第二卷积核中第n个第二卷积核在宽度和高度上的尺寸、和第n个第二卷积核在第一卷积核中的宽度起点坐标和高度起点坐标,在填充后的第一输入特征数据的区域中,确定与第n个第二卷积核对应的第n个第二输入特征数据的尺寸和第n个第二输入特征数据在第一输入特征数据中的宽度起点坐标和高度起点坐标;根据第一输入特征数据的尺寸、n个第二卷积核中每个第二卷积核在宽度和高度上的尺寸、和每个第二卷积核在第一卷积核中的宽度起点坐标和高度起点坐标、n个第二输入特征数据的尺寸和n个第二输入特征数据中每个第二输入特征数据在第一输入特征数据中的宽度起点坐标和高度起点坐标,生成整合指令和n条卷积操作指令,n条卷积操作指令中的第n条卷积操作指令用于对第n个第二输入特征数据和第n个第二卷积核执行卷积运算操作,以获得与第n个第二卷积核对应的第二输出特征数据,整合指令用于在得到与n个第二卷积核对应的n个第二输出特征数据后,对n个第二输出特征数据进行整合,以获得与第一卷积核和第一输入特征数据对应的第一输出特征数据。由此可见,本申请实施例可避免计算单元为支持更大尺寸的卷积核使用更多的乘法器和加法器,从而降低了计算单元的硬件成本;此外,由于计算单元采用了的乘法器和加法器的数量减少,因此可降低对计算单元所在的硬件加速器或者芯片的设计复杂度,进而降低硬件加速器或者芯片的功耗以及面积。

本申请实施例可应用于各类应用场景中,例如,通过执行本申请可提取图像特征或者语音特征的应用场景。

本申请实施例可适用于因硬件限制而无法直接执行神经网络中特定卷积核的卷积运算的情况。举例来说,在计算单元中包括的乘法器和/或累加器的数量小于用于直接执行一卷积核的卷积运算操作的乘法器和/或累加器的数量的情况下,可通过本申请实施例来解决。例如,以通道方向的维度为1进行示例性说明,计算单元包含32个乘法器,而尺寸为6*6*1的卷积核需要36个乘法器,那么计算单元将无法直接完成该卷积核的卷积运算。再例如,计算单元仅支持大小为1*1、2*2、3*3、4*4的卷积核的卷积运算,那么计算单元将无法直接完成5*5的卷积核的卷积运算操作。对于上述情况均可通过本申请实施例来解决。

本申请实施例中,输入特征数据分别可以是但不限于原始图像的至少一部分、经卷积神经网络中至少一层(包括但不限于卷积层(convolution,conv)、池化层(pooling,pool)、全连接层(fullyconnected,fc)、激活层)的运算操作(该运算操作包括但不限于卷积运算操作、池化运算操作、激活函数运算操作等)处理而获得的特征图的至少一部分。输出特征数据可以是经卷积神经网络中至少一层(包括但不限于卷积层(convolution,conv)、池化层(pooling,pool)、全连接层(fullyconnected,fc)、激活层)的运算操作(该运算操作包括但不限于卷积运算操作、池化运算操作、激活函数运算操作等)而获得的特征图的至少一部分。其中,输出特征数据和输入特征数据中的“特征”可以是图像经过卷积运算得到的特征。

本文涉及的输入特征数据、输出特征数据、第一卷积核、多个第二卷积核的尺寸可以具有四个维度,这四个维度包括:数量、高度、宽度、通道(也称为深度)。

本申请实施例的具体实现方式将在下文详细说明。

示例性系统和示例性电子设备

本申请的实施例可适用于任何支持卷积神经网络运算的系统。

图1为本申请实施例适用的系统的示例性结构10,包括:相互连接或通信的编译侧设备101和运行侧设备102,编译侧设备101用于生成卷积神经网络的指令序列,运行侧设备102用于通过运行编译侧设备101提供的指令序列来执行卷积神经网络的运算,这些运算包括但不限于:卷积、激活函数的计算、池化等。可以理解,图1仅为本申请实施例使用的系统的一示例性结构,具体应用中本申请实施例可应用于支持卷积神经网络运算的任意系统。

至少一些实施例中,编译侧设备101可通过如下的电子设备20来实现。该电子设备20可以为(但不限于)个人计算机、服务器计算机、多处理器系统、基于微处理器的系统等。

至少一些实施例中,运行侧设备102可通过如下的电子设备30来实现。该电子设备30可以为(但不限于)神经网络加速器或者神经网络芯片等。

图2是本申请实施例中电子设备20的示例性结构示意图。如图2所示,本申请的电子设备20可以包括:一个或多个处理器21和用于存储所述处理器可执行指令的存储器22,处理器21用于执行下文“示例性方法”中所述生成指令的方法的步骤。

处理器21可以是强性能的cpu、gpu等支持神经网络指令序列编译的处理器,或者具有编译处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备20中的其他组件以执行期望的功能。

存储器22可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器21可以运行所述程序指令,以实现下文所述的本申请的各个实施例的生成指令的方法以及/或者其他期望的功能。

在一个示例中,电子设备20还可以包括:输入装置23和输出装置24,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。该输入装置23还可以包括例如键盘、鼠标等等,可供编译人员输入卷积神经网络的参数,例如,卷积神经网络每层的输入特征图的大小、输出特征图的大小、卷积核等。该输出装置24可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等,可供编译人员查看编译的最终结果或编译过程中的任何中间数据等。

当然,为了简化,图2中仅示出了该电子设备20中的部分组件,省略了诸如总线、输入/输出接口等的组件。除此之外,根据具体应用情况,电子设备20还可以包括任何其他适当的组件。

图3是本申请实施例中电子设备30的示例性结构示意图。如图3所示,本申请的电子设备30可以包括:控制单元31和计算单元32,控制单元31配置为运行指令以控制计算单元32执行下文“示例性方法”中所述执行卷积运算操作的方法。

控制单元31可以包括一个或多个处理器或者具有神经网络运算能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备30中的其他组件以执行期望的功能。上述处理器可以包括但不限于gpu、大脑处理器(bpu,brainprocessingunit)、张量处理单元(tpu,tensorprocessingunit)等支持神经网络相关计算的处理器。至少一些实施例中,控制单元31负责根据指令(例如,下文“生成指令的方法”中获得的卷积操作指令)控制计算单元32执行卷积运算操作。

计算单元32包括运算电路,该运算电路可配置为执行卷积神经网络的运算操作,该运算操作包括但不限于卷积运算操作、池化运算操作、激活函数运算操作等运算操作中的任一项或多项。至少一些实施例中,该运算电路包括乘法累加器阵列。一种示例中,该乘法累加器阵列由多个乘法器和多个加法器连接而成,配置为对输入的数据执行至少一次运算操作(例如,下文的卷积运算操作等)。具体应用中,计算单元32的结构可采用各种形式,只需要支持卷积神经网络的运算操作(该运算操作包括但不限于:卷积运算操作)即可。

至少一些实施例中,计算单元32可以包括控制部件和运算电路,该控制部件基于控制单元31下发的指令控制运算电路中的多个乘法器和多个加法器执行下文的卷积操作和累加操作。

一个示例中,控制单元31可以通过译码将下文的卷积操作指令转换为计算单元32能够执行的指令格式并下发给计算单元32的控制部件,控制部件根据控制单元31下发的指令控制运算电路中的各个乘法器和加法器执行乘加运算,从而完成相应的卷积操作。

一个示例中,控制单元31可以通过译码将下文的累加指令转换为计算单元32能够执行的指令并将该指令下发给计算单元32的控制部件,控制部件根据控制单元31下发的指令控制运算电路中的各个加法器执行加运算,从而完成相应的累加操作。

在一个示例中,电子设备30还可以包括但不限于缓冲存储器33和片外存储器34。

缓冲存储器33可以包括一个或多个独立的缓存存储器或者具有数据高速缓存能力的处理单元,并且可以在控制单元31的控制下对片外存储器34进行访存。至少一些实施例中,缓冲存储器31可以为速度快、容量小的静态存取存储器,比如,静态随机存取存储器(sram,staticrandomaccessmemory)。一个示例中,缓冲存储器33可配置为接收来自片外存储器34的输入特征数据的至少一部分和/或卷积核的数据并缓存以供计算单元32使用,以及还可配置为接收并缓存计算单元32输出的输出特征数据,并将该输出特征数据输出到片外存储器34中。

片外存储器34可以包括一个或多个独立的存储器或者具有数据存储能力的处理单元,并且可以在控制单元31的控制下供缓冲存储器33进行访存。至少一些实施例中,片外存储器34为速度慢、容量大的动态存取存储器,比如动态随机存取存储器(dram,dynamicrandomaccessmemory)。在至少一个实施例中,片外存储器34为双倍数据速率(doubledatarate,ddr)dram。一个示例中,片外存储器343可配置为向缓冲存储器33提供输入特征数据的至少一部分和/或卷积核的数据以便计算单元32使用,以及还可配置为接收并存储来自缓冲存储器33的输出特征数据(该输出特征数据是由计算单元32通过对输入特征数据与相应的卷积核执行卷积运算操作而得到的)。

在一个示例中,电子设备30中控制单元31、计算单元32、缓冲存储器33和片外存储器34之间可以通过总线(图中未示出)或其他方式连接。

当然,为了简化,图3中仅示出了该电子设备30中的部分部件,省略了诸如总线等的部件。除此之外,根据具体应用情况,电子设备30还可以包括任何其他适当的部件。

示例性方法

图4a是本申请实施例的生成指令的示例性方法400,该示例性方法400可通过上文所述编译侧设备来执行。一个示例中,该示例性方法400可通过上文的电子设备20来执行。

如图4a所示,示例性方法400可包括如下步骤:

步骤401,获取第一参数,第一参数包括:第一输入特征数据的尺寸、填充尺寸、和第一卷积核的尺寸。

步骤402,根据第一卷积核的尺寸和用于执行卷积运算操作的计算单元支持的最大卷积核的尺寸,确定n个第二卷积核,n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于计算单元在相应维度上的尺寸。

步骤403,基于第一卷积核在宽度和高度上的尺寸、第一输入特征数据的尺寸、填充尺寸、n个第二卷积核中第n个第二卷积核在宽度和高度上的尺寸、和第n个第二卷积核在第一卷积核中的宽度起点坐标和高度起点坐标,在填充后的第一输入特征数据的区域中,确定与第n个第二卷积核对应的第n个第二输入特征数据的尺寸和第n个第二输入特征数据在第一输入特征数据中的宽度起点坐标和高度起点坐标。

步骤404,根据n组第二参数生成整合指令和n条卷积操作指令,n条卷积操作指令中的第n条卷积操作指令用于对第n个第二输入特征数据和第n个第二卷积核执行卷积运算操作,以获得与第n个第二卷积核对应的第二输出特征数据,整合指令用于在得到与n个第二卷积核对应的n个第二输出特征数据后,对n个第二输出特征数据进行整合,以获得与第一卷积核和第一输入特征数据对应的第一输出特征数据。

其中,n组第二参数中的每一组参数可包括:填充尺寸、所述第一卷积核在宽度和高度上的尺寸、所述第一输入特征数据的尺寸、所述n个第二卷积核中每个第二卷积核在宽度和高度上的尺寸、和每个第二卷积核在所述第一卷积核中的宽度起点坐标和高度起点坐标、n个第二输入特征数据的尺寸和n个第二输入特征数据中每个第二输入特征数据在所述第一输入特征数据中的宽度起点坐标和高度起点坐标。

其中,计算单元可以为上述图3所示的计算单元32,可包括累加器和多个乘法器,用于对第二输入特征数据和第二卷积核进行卷积运算操作。

本申请实施例的示例性方法400,基于计算单元支持的最大卷积核的尺寸以及作为大卷积核的第一卷积核的尺寸,确定多个第二卷积核各自的尺寸,由于多个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,也即,多个第二卷积核在相应维度上的尺寸小于第一卷积核在相应维度上的尺寸,因此对于计算单元而言,其所包含的乘法器与加法器的数量只需要能够支持多个第二卷积核中具有最大尺寸的卷积核的卷积运算即可,避免计算单元为支持更大尺寸的卷积核(例如,第一卷积核)使用更多的乘法器和加法器,从而降低了计算单元的硬件成本;此外,由于计算单元采用了的乘法器和加法器的数量减少,因此可降低对计算单元所在的硬件加速器或者芯片的设计复杂度,进而降低硬件加速器或者芯片的功耗以及面积。

本申请实施例中,步骤401中获取第一参数的方式可以有多种。一个示例中,可以由编译人员输入上述第一参数(例如,通过上文电子设备20的输入装置23将第一参数输入到电子设备20)。另一示例中,从存储有上述第一参数的设备中主动获取或被动接收上述第一参数。本申请实施例中获取第一参数的方式不限于上述示例。获取第一参数的方式还有很多种,在此不再一一列举。

在一实施例中,第一输入特征数据的尺寸可以为第一输入特征数据在宽度、高度以及通道方向的大小。在一实施例中,第一卷积核的尺寸可以为第一卷积核在宽度、高度以及通道方向的大小。

在一实施例中,填充(padding)方式可以由卷积神经网络在相应卷积层上的输出特征数据的维度来确定,例如,卷积层的输入特征数据在宽度和高度上的尺寸为100*100,卷积核在宽度和高度上的尺寸为5*5,若需要该卷积层输出的特征数据在宽度和高度上的尺寸为100*100,则需要将该卷积层在宽度和高度上进行填充,使得填充后的输入特征数据在宽度和高度上的尺寸为104*104,此时,填充方式为在输入特征数据的四周(即,上下左右方向)上各填充2行以及2列。需要说明的是,上述例子仅为一个示例性说明,填充方式在四周可以是任意行数或者任意列数,本申请对此不做限制。

本申请实施例中,计算单元的参数可以表征计算单元执行卷积运算操作时的硬件限制。至少一些实施例中,计算单元的参数可以包括但不限于计算单元支持的最大卷积核的参数、计算单元支持的各个卷积核的参数、计算单元中乘法器的数量、计算单元中累加器的数量等。例如,由计算单元中乘法器的数量可以指示计算单元支持的最大卷积核的尺寸,在卷积核的尺寸超出该最大卷积核的尺寸时,计算单元将无法直接完成该卷积核的卷积运算操作。再例如,如果计算单元的参数中包含计算单元支持的各个卷积核的尺寸,这些卷积核的尺寸可以包括但不限于卷积核在数量、高度、宽度、通道这四个维度上的大小,这表明计算单元可以支持这些参数定义的卷积核的卷积运算。又例如,计算单元的参数可以包括计算单元支持的最大卷积核的参数,最大卷积核的尺寸可以包括但不限于最大卷积核在数量、高度、宽度、通道这四个维度上的大小,这表明在卷积核任一维度上的尺寸超出该最大卷积核相应维度上的尺寸时,计算单元将无法直接完成该卷积核的卷积运算操作,即计算单元不支持该卷积核的卷积运算。

步骤402中,由第一卷积核的尺寸确定多个第二卷积核的尺寸,即可基于计算单元支持的最大卷积核的尺寸将第一卷积核划分为n个在相应维度上尺寸较小的第二卷积核,且这n个第二卷积核的数据组合起来是第一卷积核的完整数据。一个示例中,可以选择在相应维度为宽度、高度和通道中的至少之一个维度将第一卷积核划分为n个第二卷积核。

至少一个实施例中,步骤402中确定n个第二卷积核的一示例性实现流程可以包括:

将具有宽度w、高度h和通道数c的第一卷积核划分成n个第二卷积核,其中,n个第二卷积核中的第x(x为不小于1、不大于n的整数)个第二卷积核具有宽度ax、高度bx和通道数qx,n为大于或者等于2的整数。第二卷积核在第一卷积核中的宽度维度起点坐标、高度维度起点坐标和通道维度起点坐标分别为a1~an、b1~bn、q1~qn,各个第二卷积核的宽度a1~an、高度b1~bn和通道数q1~qn彼此相同或不同;图4b是本申请一示例性实施例提供的第一卷积核与第n个第二卷积核的关系示意图,如图4b所示,在宽度和高度方向上,第一卷积核411为7*7大小的卷积核,通道方向垂直于高度与宽度所在平面向里。第二卷积核412可视为本申请中所述的第i个第二卷积核,且第二卷积核412为第一卷积核411在宽度和高度上的一部分。第二卷积核412的宽度和宽度均为3,通道数qx与第一卷积核的通道数相同,第二卷积核412在第一卷积核411中的宽度维度起点坐标为0,高度维度起点坐标为3,通道维度起点坐标为0。需要说明的是,图4b中的第二卷积核412仅为一个示例性说明,其不能形成对本申请技术方案的限制。

至少一个实施例中,在步骤403中,在填充后的第一输入特征数据的区域中,确定与第n个第二卷积核对应的第n个第二输入特征数据的尺寸和第n个第二输入特征数据在第一输入特征数据中的宽度起点坐标和高度起点坐标,可包括:

在第一输入特征数据的宽度和高度上,按照预设的填充尺寸对第一输入特征数据的区域进行填充,得到第三输入特征数据的区域;

基于第一卷积核在宽度和高度上的尺寸、第n个第二卷积核在宽度和高度上的尺寸、和第n个第二卷积核在第一卷积核中的宽度起点坐标和高度起点坐标,从第三输入特征数据的区域中,确定与第n个第二卷积核对应的第二输入特征数据的尺寸和第n个第二输入特征数据在第一输入特征数据中的宽度起点坐标和高度起点坐标。

图4c是本申请一示例性实施例提供的第一输入特征数据与第二输入特征数据的关系示意图,下面结合图4c对如何在填充后的第一输入特征数据的区域中,确定与第n个第二卷积核对应的第n个第二输入特征数据的尺寸和第n个第二输入特征数据在第一输入特征数据中的宽度起点坐标和高度起点坐标,如图4c所示,在宽度和高度方向上,第一输入特征数据的区域421为10*10大小,通道方向垂直于高度与宽度所在平面向里。

若预设的填充尺寸在宽度和高度方向上在第一输入特征数据的四周(即,上下左右方向)上各填充2行以及2列,则在第一输入特征数据421的宽度和高度上,对第一输入特征数据的区域421进行填充,得到第三输入特征数据的区域422,其中,第一输入特征数据的区域421为第三输入特征数据的区域422中的一部分,从宽度和高度上的尺寸而言,第三输入特征数据的区域422为14*14大小。

其中,第一卷积核411在宽度和高度上的尺寸均为7,第二卷积核412在宽度和高度上的尺寸均为3,第二卷积核412在第一卷积核411中的宽度起点坐标为0,高度起点坐标为3,从第三输入特征数据的区域422中,确定与第二卷积核412对应的第二输入特征数据的尺寸和第二输入特征数据在第一输入特征数据中的宽度起点坐标和高度起点坐标。

具体地,基于第一卷积核411在宽度上的尺寸7、第二卷积核412在宽度上的尺寸3以及第二卷积核412在第一卷积核411中的宽度起点坐标0,确定左侧切除列数0和右侧切除列数4。

基于第一卷积核411在高度上的尺寸7、第二卷积核412在高度上的尺寸3以及第二卷积核412在第一卷积核中的高度起点坐标3,确定上侧切除行数3和下侧切除行数1;

从第三输入特征数据的区域422中保留从上下左右四侧去除上侧切除行数3、下侧切除行数1的数据、左侧切除列数0、右侧切除列数4之外的区域,作为第四输入特征数据的区域423,其中,第四输入特征数据的区域423如图4c中黑色加粗的方框所形成的区域。

基于第一输入特征数据的区域421与第四输入特征数据的区域423的重叠区域424,确定与第二卷积核412对应的第二输入特征数据的尺寸和第二输入特征数据在所述第一输入特征数据中的宽度起点坐标和高度起点坐标,如图4c所示,与第二卷积核412对应的第二输入特征数据的尺寸为8*9,第二输入特征数据在第一输入特征数据中的宽度起点坐标为0,高度起点坐标为1。

更一般地,第一输入特征数据的宽度、高度分别是w0、h0。卷积操作对第一输入特征数据在上、下、左、右四个方向的填充尺寸分别是ptop、pbottom、pleft、pright。将第一输入特征数据在宽度、高度方向进行相应的填充,得到第三输入特征数据,其宽度为w0+pleft+pright,高度为h0+ptop+pbottom。

将与n个第二卷积核各自对应的第四输入特征数据确定为具有宽度w0+pleft+pright-w+a1~w0+pleft+pright-w+an、高度h0+ptop+pbottom-h+b1~h0+ptop+pbottom-h+bn,且n个第四输入特征数据在第三输入特征数据中的宽度维度起点坐标为a1~an、高度维度起点坐标为b1~bn。

确定与第二卷积核对应的卷积操作的填充尺寸。n个第二卷积核的左侧填充尺寸pleft1~pleftn分别为max(pleft-a1,0),max(pleft-a2,0),……,max(pleft-an,0);右侧填充尺寸pright1~prightn分别为max(pright-w+a1+a1,0),max(pright-w+a2+a2,0),……,max(pright-w+an+an,0);上侧填充尺寸ptop1~ptopn分别为max(ptop-b1,0),max(ptop-b2,0),……,max(ptop-bn,0);下侧填充尺寸pbottom1~pbottomn分别为max(pbottom-h+b1+b1,0),max(pbottom-h+b2+b2,0),……,max(pbottom-h+bn+bn,0);第二卷积核在第一卷积核的横向坐标是a1~an,也就是卷积核左面切掉了a1~an,所以第三输入特征数据的左面也切掉a1~an,得到第四特征数据。

第三输入特征数据的左面本来有pleft列填充,切掉的列数为a1~an,所以剩下pleft-a1~pleft-an列。为了确保列填尺寸为非零值,即需要在0与上述相应的max函数中选择一个值。

对于第一卷积核而言,其左侧分别切掉了w-a1-a1~w-an-an,因此第三输入特征数据的区域也需要要切除同样的列数,即,n个第二卷积核各自对应的第三特征输入数据的左侧切除列数分别为w-a1-a1~w-an-an。对于右侧切除列数、上侧切除列数与下侧切除列数,可参考左侧切除列数的说明,本实施例不再详述。

确定与第二卷积核对应的第二输入特征数据。n个第二输入特征数据的宽度为w0-max(a1-pleft,0)-max(w-a1-a1-pright,0),w0-max(a2-pleft,0)-max(w-a2-a2-pright,0),……,w0-max(an-pleft,0)-max(w-an-an-pright,0);高度为h0-max(b1-ptop,0)-max(h-b1-b1-pbottom,0),h0-max(b2-ptop,0)-max(h-b2-b2-pbottom,0),……,h0-max(bn-ptop,0)-max(h-bn-bn-pbottom,0)。第二输入数据在第一输入数据宽度方向的起始坐标是max(a1-pleft,0),max(a2-pleft,0),……,max(an-pleft,0);高度方向的起始坐标是max(b1-ptop,0),max(b2-ptop,0),……,max(bn-ptop,0)。

其中,s、r和p分别是所述计算单元支持的最大卷积核的宽度、高度和通道数,且s≥a1~an、r≥b1~bn、p≥q1~qn。

至少一个实施例中,上述n个第二卷积核的数据没有重叠且n个第二卷积核的数据组合起来即为第一卷积核的完整数据,这些第二卷积核的数量与第一卷积核的数量相同(即为k)。

至少一个实施例中,假设第一输入特征数据的宽度为w0、高度为h0、通道数为c0,第一输入特征数据中的卷积部分的高度维度起点坐标为h0、宽度维度起点坐标为w0、通道维度起点坐标为c0,假设一第二卷积核在第一卷积核中的宽度维度起点坐标、高度维度起点坐标和通道维度起点坐标为ax、bx、qx,那么该第二卷积核对应的第二输入特征数据满足:宽度为w0-w+ax、高度h0-h+bx、通道数为qx,其高度维度起点坐标为h0+bx、宽度维度起点坐标为w0+ax、通道维度起点坐标为c0+qx,x为不小于1、不大于n的整数。这里,在没有填充(padding)的情况下,h0和w0可以取为0。在有填充(padding)或其它情形时,h0和w0可以不为0。

至少一个实施例中,将具有宽度w、高度h和通道数c的第一卷积核划分成多个第二卷积核,可以包括:确定第二卷积核的高度为bx、宽度为ax、通道数为qx、高度维度起点坐标为bx、宽度维度起点坐标为ax、通道维度起点坐标为qx;其中,bx=min(h-i,r),ax=min(w-j,s),qx=min(c-k,p),bx=i,ax=j,qx=k。其中,i=0,r,2r,……,i<h;j=0,s,2s,……,j<w;k=0,p,2p,……,k<c,x为不小于1、不大于n的整数。

下面结合图5-图8举例说明本申请实施例中步骤402中确定n组第二参数的具体实现过程。

一个示例中,假设输入特征数据featuremap11的高度为32、宽度为32、通道数为64,featuremap11中卷积部分的高度维度起点坐标为0、宽度维度起点坐标为0、通道维度起点坐标0,卷积核11(上文第一卷积核的示例)的数量为64、高度为5、宽度为5、通道数为64,相应的输出特征数据featuremap31的高度为28、宽度为28、通道数为64,计算单元支持的最大卷积核的高度为3、宽度为3、数量为64、通道数为64。

假设在宽度和高度上对卷积核11进行划分。如图5所示,确定n组第二参数的具体流程可以包括如下步骤:

步骤501,设置i=0;

步骤502,设置j=0;

步骤503,确定卷积核(上文第二卷积核的示例)的参数,包括:数量为64、高度为b、宽度为a、通道数为64,高度维度起点坐标为b、宽度维度起点坐标为a、通道维度起点坐标为q,其中,b=min(h-i,r),a=min(w-j,s),b=i,a=j,q=0;

步骤504,确定当前卷积核对应的输入特征数据的参数,其中,输入特征数据的参数包括:高度为32-h+a、高度为32-w+b、通道数为64,高度维度起点坐标为b、宽度维度起点坐标为a、通道维度起点坐标为q,h=5,w=5;

步骤505,输出一组第二参数,该组第二参数包括步骤503中确定的卷积核的参数和步骤504中确定的输入特征数据的参数;

步骤506,置j+=s,s=3;

步骤507,w=5,是否满足j<w,如果是,则返回步骤503;否则,继续步骤508;

步骤508,置i+=r,r=3;

步骤509,h=5,是否满足i<h,如果是,则返回步骤502;否则,结束当前流程。

图6是上述示例中卷积核11被划分成四个卷积核的示意图。其中,卷积核11可视为本申请中的第一卷积核,如图6所示,上述示例中卷积核11被划分为卷积核21、卷积核22、卷积核23、卷积核24,则卷积核21、卷积核22、卷积核23、卷积核24可视为本申请中的多个第二卷积核。其中,卷积核21的宽度a1是3、高度b1是3、通道数q1是64,卷积核22的宽度a2是2、高度b2是3、通道数q2是64,卷积核23的宽度a3是3、高度b3是2、通道数q3是64,卷积核24的宽度a4是2、高度b4是2、通道数q4是64,四个卷积核中具有最大尺寸的卷积核为卷积核21,卷积核21的尺寸可视为计算单元支持的最大卷积核的尺寸。

图7是上述示例中卷积核11划分前后一个通道上的数据分布示意图。如图7所示,由卷积核11划分的卷积核21、卷积核22、卷积核23、卷积核24,在相应维度为高度时,卷积核21、卷积核22、卷积核23、卷积核24在高度上的尺寸之和与第一卷积核在高度上的尺寸相同,均为5,在相应维度为宽度时,卷积核21、卷积核22、卷积核23、卷积核24在宽度上的尺寸之和与第一卷积核在宽度上的尺寸相同,同样也均为5。其中,四个卷积核中具有最大尺寸的卷积核为卷积核21,则卷积核21的尺寸为计算单元支持的最大卷积核的尺寸,而且卷积核21、卷积核22、卷积核23、卷积核24中的全部数据为卷积核11中的完整数据。

上述示例中,卷积核21对应的输入特征数据featuremap21的高度为30、宽度30、通道数64、高度维度起点坐标为0、宽度维度起点坐标为0、通道维度起点坐标为0;卷积核22对应的输入特征数据featuremap22的高度为30、宽度29、通道数64、高度维度起点坐标为0、宽度维度起点坐标为3、通道维度起点坐标为0;卷积核23对应的输入特征数据featuremap23的高度为29、宽度30、通道数64、高度维度起点坐标为3、宽度维度起点坐标为0、通道维度起点坐标为0;卷积核24对应的输入特征数据featuremap24的高度为29、宽度29、通道数64、高度维度起点坐标为3、宽度维度起点坐标为3、通道维度起点坐标为0。

图8示出了由featuremap11确定输入特征数据featuremap24的过程。其中,图8仅示出了一个通道上的划分情况,在其他每个通道上的划分与图8类似。图8中每个方框代表输入特征数据中的一个数据,方框中的数字表示该数据的高度坐标和宽度坐标,例如,“0,0”表示该通道上高度坐标为0、宽度坐标为0的数据。上述示例中,由featuremap11确定featuremap21、featuremap22、featuremap23的方式与图8类似。

类似地,如果硬件只支持高度为1、宽度为1的卷积,那么可以把上述高度为5、宽度为5的卷积核11划分成25个高度为1、宽度为1的小卷积核,这些小卷积核的参数可通过图5所示的方法流程来确定。

需要说明的是,尽管上述示例是通过在宽度和高度两个维度上划分第一卷积核来确定多个第二卷积核的参数,但具体应用中,除宽度和高度这两个维度之外,还可以同时在通道维度上进行划分,其原理与上述示例相同。例如,宽度为6、高度为6、通道数为256的一卷积核(即上文的第一卷积核)可以划分成8个宽度为3、高度为3、通道数为128的小尺寸卷积核(即上文的第二卷积核),或者可以划分为6*6*256个高度为1、宽度为1、通道数为1的小尺寸卷积核(即上文的第二卷积核)。本申请实施例中,对具体如何划分第一卷积核来确定多个第二卷积核的参数,不作限制。

本申请实施例中,步骤404中,可以包括:利用n组第二参数生成n条卷积操作指令,一条卷积操作指令对应一组第二参数;以及,生成用于将这n条卷积操作指令获得的n个第二输出数据进行整合的整合指令。

在至少一些实施例中,整合指令可以是累加指令,该累加指令用于对多条卷积操作指令获得的第二输出特征数据按维度坐标进行累加。在至少一个实施例中,步骤404中还可以包括:生成与上述累加指令相对应的指令组,该指令组包括读取指令和存储指令,该读取指令用于从缓冲存储器的不同存储空间中依次读取上述多条卷积操作指令获得的第二输出特征数据中维度坐标相同的数据,以便对其执行累加操作;该存储指令用于依次将所述累加操作获得的数据存储到所述缓冲存储器的一预定存储空间,以获得第一输出特征数据。

在至少一些实施例中,步骤404中还可以包括:确定所述第一卷积核或第二卷积核在缓冲存储器和/或片外存储器中的地址;以及,基于所述第一卷积核或第二卷积核的地址,生成对应所述第二卷积核的读取指令或者包含读取指令与存储指令的指令组;其中,所述读取指令用于从所述缓冲存储器或所述片外存储器读取所述第二卷积核的数据,所述存储指令用于向所述缓冲存储器存储从所述片外存储器读取的所述第二卷积核的数据。这样,便于硬件(例如,电子设备30)在执行卷积运算操作时可直接通过运行各个第二卷积核的读取指令和存储指令来高效存取这多个第二卷积核中的数据,从而通过执行多个小卷积核的卷积运算操作来高效地完成大尺寸卷积核的卷积运算操作。

在至少一个实施例中,生成对应所述第二卷积核的指令组,可以包括:生成用于从片外存储器或缓冲存储器中读取第二卷积核的每段数据的读取指令;以及,生成用于将所述第二卷积核的每段数据连续地存储到所述缓冲存储器的一预定存储空间中的存储指令。这样,在不支持跳读的情况下,硬件(例如,电子设备30)可以通过该第二卷积核的指令组来重排第二卷积核中的数据以使第二卷积核的数据紧密排布于片外存储器或缓冲存储器中,便于在硬件不支持跳读的情况下也能够高效且准确地读取到这多个第二卷积核中的数据。

一个示例中,可以根据第二卷积核的参数、以及预先配置的数据维度坐标与缓冲存储器和/或片外存储器的地址之间的映射关系,确定第二卷积核的数据在缓冲存储器和/或片外存储器中的地址。比如,可以将缓冲存储器分配给第二卷积核的存储空间分为多个容量固定的预定存储空间,并配置各预定存储空间的地址与维度坐标区间之间的映射关系,基于第二卷积核的参数中第二卷积核的高度维度起点坐标、宽度维度起点坐标、通道维度起点坐标以及高度大小、宽度大小和通道数大小即可确定该第二卷积核对应的维度坐标区间,基于第二卷积核的维度坐标区间、以及各预定存储空间与维度坐标区间之间的映射关系即可确定该第二卷积核的数据在缓冲存储器中的地址。片外存储器与缓冲存储器的上述处理过程基本相同,不同的是,在缓冲存储器中上述映射关系是将三维或四维的维度坐标区间映射到一维地址或二维地址或三维地址或其他多维地址上,而片外存储器中上述映射关系是将三维或四维的维度坐标区间映射在一维地址上。

一个示例中,可以根据第一卷积核的参数(例如,第一卷积核的高度维度起点坐标、宽度维度起点坐标、通道维度起点坐标以及高度大小、宽度大小和通道数大小)、以及预先配置的数据维度坐标与缓冲存储器的地址之间的映射关系,确定所述第一卷积核的数据在所述缓冲存储器和/或片外存储器中的地址。这里,确定第一卷积核的地址的过程与上述第二卷积核相同,不再赘述。

一个示例中,可以根据默认配置,确定第二卷积核在所述缓冲存储器和/或片外存储器中的地址。比如,预先设置第二卷积核的存储地址为一默认地址,每个第二卷积核的数据可按照这个地址来存储,读取时也可以直接按照这个地址来读取。

在至少一些实施例中,步骤404中还可以包括:确定所述第一输入特征数据或第二输入特征数据在缓冲存储器和/或片外存储器中的地址;以及,基于所述第一输入特征数据或第二输入特征数据的地址,生成对应所述第二输入特征数据的读取指令或者包含读取指令与存储指令的指令组;其中,所述读取指令用于从所述缓冲存储器或所述片外存储器读取所述第二输入特征数据,所述存储指令用于向所述缓冲存储器存储从所述片外存储器读取的所述第二输入特征数据。这样,可便于硬件(例如,电子设备30)在执行卷积运算操作时直接通过运行各个第二输入特征数据的读取指令和存储指令来高效存取这多个第二输入特征数据,从而高效地完成卷积运算操作。

在至少一个实施例中,生成对应所述第二输入特征数据的指令组,包括:生成用于从片外存储器或缓冲存储器中读取第二输入特征数据中的每段数据的读取指令;以及,生成用于将所述第二输入特征数据中的每段数据连续地存储到所述缓冲存储器的一预定存储空间中的存储指令。这样,在不支持跳读的情况下,硬件(例如,电子设备30)可以通过该第二输入特征数据的指令组来重排第二输入特征数据中的数据以使第二输入特征数据紧密排布于片外存储器或缓冲存储器中,便于在硬件不支持跳读的情况下也能够高效且准确地读取到第二输入特征数据。

一个示例中,可以根据第一输入特征数据的参数(例如,第一输入特征数据的高度维度起点坐标、宽度维度起点坐标、通道维度起点坐标以及高度大小、宽度大小和通道数大小)、以及预先配置的数据维度坐标与缓冲存储器的地址之间的映射关系,确定所述第一输入特征数据在所述缓冲存储器和/或片外存储器中的地址。

一个示例中,可以根据第二输入特征数据的参数(例如,第二输入特征数据的高度维度起点坐标、宽度维度起点坐标、通道维度起点坐标以及高度大小、宽度大小和通道数大小)、以及预先配置的数据维度坐标与缓冲存储器的地址之间的映射关系,确定第二输入特征数据在所述缓冲存储器和/或片外存储器中的地址。

一个示例中,可以根据默认配置,确定第二输入特征数据在缓冲存储器和/或片外存储器中的地址。比如,预先设置第二输入特征数据的存储地址为一默认地址,每个第二输入特征数据都可以按照这个地址来存储,读取的时候也可以直接按照这个地址来读取。

图9是本申请实施例的执行卷积运算操作的示例性方法900,该示例性方法900可通过上文运行侧设备来执行。

一个示例中,该示例性方法900可通过上文的电子设备30来执行。该示例中,电子设备30可通过运行上述示例性方法400得到的指令来执行示例性方法900。具体地,可以由电子设备30中的控制单元运行示例性方法400得到的指令来控制计算单元32、缓冲存储器33、片外存储器34执行示例性方法900中的步骤。

如图9所示,示例性方法900可包括如下步骤:

步骤901,获取n个第二卷积核中的第n个第二卷积核,n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于计算单元在相应维度上的尺寸;

步骤902,基于第一卷积核在宽度和高度上的尺寸、与第一输入特征数据在宽度和高度上填充后的尺寸、第n个第二卷积核在宽度和高度上的尺寸、和第n个第二卷积核在第一卷积核中的宽度起点坐标和高度起点坐标,从填充后的第一输入特征数据中,获取与第n个第二卷积核对应的第二输入特征数据;

步骤903,由计算单元对与第n个第二卷积核对应的第二输入特征数据和第n个第二卷积核执行卷积运算操作,以获得与第n个第二卷积核对应的第二输出特征数据;

步骤904,在得到与n个第二卷积核对应的n个第二输出特征数据后,对n个第二输出特征数据进行整合,以获得与第一卷积核和第一输入特征数据对应的第一输出特征数据。

其中,计算单元可以为上述图3所示的计算单元32,可包括累加器和多个乘法器,用于对第二输入特征数据和第二卷积核进行卷积运算操作。

本申请实施例的示例性方法900,由于多个第二输出特征数据通过整合后得到的第一输出特征数据和直接执行第一输入特征数据与第一卷积核的卷积运算操作得到的结果保持一致,对于计算单元而言,其所包含的乘法器与加法器的数量只需要能够支持多个第二卷积核中具有最大尺寸的卷积核的卷积运算即可,避免计算单元为支持更大尺寸的卷积核(例如,第一卷积核)使用更多的乘法器和加法器,从而降低了计算单元的硬件成本;此外,由于计算单元采用了的乘法器和加法器的数量减少,因此可降低对计算单元所在的硬件加速器或者芯片的设计复杂度,进而降低硬件加速器或者芯片的功耗以及面积。

本申请实施例中,步骤902可以包括:

在第一输入特征数据的宽度和高度上,按照预设的填充尺寸对第一输入特征数据进行填充,得到第三输入特征数据;

基于第一卷积核在宽度和高度上的尺寸、第n个第二卷积核在宽度和高度上的尺寸、和第n个第二卷积核在第一卷积核中的宽度起点坐标和高度起点坐标,从第三输入特征数据中确定与第n个第二卷积核对应的第二输入特征数据。

其中,基于第一卷积核在宽度和高度上的尺寸、第n个第二卷积核在宽度和高度上的尺寸以及第n个第二卷积核在第一卷积核中的宽度起点坐标和高度起点坐标,从第三输入特征数据中确定与第n个第二卷积核对应的第二输入特征数据,包括:

基于第一卷积核在宽度上的尺寸、第n个第二卷积核在宽度上的尺寸以及第n个第二卷积核在第一卷积核中的宽度起点坐标,确定左侧切除列数和右侧切除列数;

基于第一卷积核在高度上的尺寸、第n个第二卷积核在高度上的尺寸以及第n个第二卷积核在第一卷积核中的高度起点坐标,确定上侧切除行数和下侧切除行数;

从第三输入特征数据中保留从上下左右四侧去除上侧切除行数、下侧切除行数的数据、左侧切除列数、右侧切除列数之外的数据,作为第四输入特征数据;

确定第一输入特征数据与第四输入特征数据重叠部分的数据,得到第二输入特征数据。

下面结合图4c对从填充后的第一输入特征数据中获取与第n个第二卷积核对应的第二输入特征数据进行示例性描述,如图4c所示,在宽度和高度方向上,第一输入特征数据的区域421为10*10大小,此时区域421对应的方块内可表示已经有相应的特征数据,第一输入特征数据的通道方向垂直于高度与宽度所在平面向里。

若预设的填充尺寸在宽度和高度方向上在第一输入特征数据的四周(即,上下左右方向)上各填充2行以及2列,则在第一输入特征数据421的宽度和高度上,对第一输入特征数据的区域421进行填充,得到第三输入特征数据的区域422,其中,第一输入特征数据的区域421为第三输入特征数据的区域422中的一部分,从宽度和高度上的尺寸而言,第三输入特征数据的区域422为14*14大小。

其中,第一卷积核411在宽度和高度上的尺寸均为7,第二卷积核412在宽度和高度上的尺寸均为3,第二卷积核412在第一卷积核411中的宽度起点坐标为0,高度起点坐标为3,从第三输入特征数据的区域422中,确定与第二卷积核412对应的第二输入特征数据的尺寸和第二输入特征数据在第一输入特征数据中的宽度起点坐标和高度起点坐标。

具体地,基于第一卷积核411在宽度上的尺寸7、第二卷积核412在宽度上的尺寸3以及第二卷积核412在第一卷积核411中的宽度起点坐标0,确定左侧切除列数0和右侧切除列数4。

基于第一卷积核411在高度上的尺寸7、第二卷积核412在高度上的尺寸3以及第二卷积核412在第一卷积核中的高度起点坐标3,确定上侧切除行数3和下侧切除行数1;

从第三输入特征数据的区域422中保留从上下左右四侧去除上侧切除行数3、下侧切除行数1的数据、左侧切除列数0、右侧切除列数4之外的区域,作为第四输入特征数据的区域423,其中,第四输入特征数据的区域423如图4c中黑色加黑的方框所形成的区域。

基于第一输入特征数据的区域421与第四输入特征数据423的区域的重叠区域424,其中,重叠区域424中的重叠数据即可视为本申请与第二卷积核412对应的第二输入特征数据。

更一般地,第一输入特征数据的宽度、高度分别是w0、h0。卷积操作对第一输入特征数据在上、下、左、右四个方向的填充尺寸分别是ptop、pbottom、pleft、pright。将第一输入特征数据在宽度、高度方向进行相应的填充,得到第三输入特征数据,其宽度为w0+pleft+pright,高度为h0+ptop+pbottom。

将与n个第二卷积核各自对应的第四输入特征数据确定为具有宽度w0+pleft+pright-w+a1~w0+pleft+pright-w+an、高度h0+ptop+pbottom-h+b1~h0+ptop+pbottom-h+bn,且n个第四输入特征数据在第三输入特征数据中的宽度维度起点坐标为a1~an、高度维度起点坐标为b1~bn。

确定与第二卷积核对应的卷积操作的填充尺寸。n个第二卷积核的左侧填充尺寸pleft1~pleftn分别为max(pleft-a1,0),max(pleft-a2,0),……,max(pleft-an,0);右侧填充尺寸pright1~prightn分别为max(pright-w+a1+a1,0),max(pright-w+a2+a2,0),……,max(pright-w+an+an,0);上侧填充尺寸ptop1~ptopn分别为max(ptop-b1,0),max(ptop-b2,0),……,max(ptop-bn,0);下侧填充尺寸pbottom1~pbottomn分别为max(pbottom-h+b1+b1,0),max(pbottom-h+b2+b2,0),……,max(pbottom-h+bn+bn,0);第二卷积核在第一卷积核在宽度方向上的横向坐标是a1~an,也就是卷积核左面切掉了a1~an,所以第三输入特征数据的左面也切掉a1~an,得到第四输入特征数据。

第三输入特征数据的左面本来有pleft列填充,切掉的列数为a1~an,所以剩下pleft-a1~pleft-an列。为了确保列填尺寸为非零值,即需要在0与上述相应的max函数中选择一个值。

对于第一卷积核而言,其左侧分别切掉了w-a1-a1~w-an-an,因此第三输入特征数据的区域也需要要切除同样的列数,即,n个第二卷积核各自对应的第三特征输入数据的左侧切除列数分别为w-a1-a1~w-an-an。对于右侧切除列数、上侧切除列数与下侧切除列数,可参考左侧切除列数的说明,本实施例不再详述。

确定与第二卷积核对应的第二输入特征数据。n个第二输入特征数据的宽度为w0-max(a1-pleft,0)-max(w-a1-a1-pright,0),w0-max(a2-pleft,0)-max(w-a2-a2-pright,0),……,w0-max(an-pleft,0)-max(w-an-an-pright,0);高度为h0-max(b1-ptop,0)-max(h-b1-b1-pbottom,0),h0-max(b2-ptop,0)-max(h-b2-b2-pbottom,0),……,h0-max(bn-ptop,0)-max(h-bn-bn-pbottom,0)。第二输入数据在第一输入数据宽度方向的起始坐标是max(a1-pleft,0),max(a2-pleft,0),……,max(an-pleft,0);高度方向的起始坐标是max(b1-ptop,0),max(b2-ptop,0),……,max(bn-ptop,0)。

其中,s、r和p分别是所述计算单元支持的最大卷积核的宽度、高度和通道数,且s≥a1~an、r≥b1~bn、p≥q1~qn。

基于多个第二卷积核的尺寸从第一输入特征数据中确定与多个第二卷积核各自对应的第二输入特征数据。这样,多个第二卷积核的卷积运算操作可彼此独立地来完成,而且其结果即多个第二输出数据又能被整合为第一输出特征数据,这不仅可使硬件执行示例性方法900获得的结果等同于硬件直接执行第一卷积核的卷积运算操作而得的结果,而且可以结合计算单元中乘法器和加法器的数量、缓冲存储器分配给当前神经网络的存储空间大小等硬件水平,采用并行和/或串行的方式来高效地完成这多个第二卷积核的卷积运算操作(例如,该多个第二卷积核中尺寸较小的两个或多个卷积核的卷积运算操作可并行,而尺寸较大的卷积核的卷积运算操作可单独执行等),从而节省硬件成本、提高硬件资源的利用率,同时提升硬件执行示例性方法900的速度。

至少一些实施例中,如果根据上述示例性方法400得到的卷积操作指令中包含第一输入特征数据的参数和第二卷积核的参数,可以根据第一输入特征数据的参数(例如,第一输入特征数据的高度维度起点坐标、宽度维度起点坐标、通道维度起点坐标以及高度大小、宽度大小和通道数大小)和该第二卷积核的参数(例如,第二卷积核的高度维度起点坐标、宽度维度起点坐标、通道维度起点坐标以及高度大小、宽度大小和通道数大小)来确定对应该第二卷积核的第二输入特征数据。这里,具体的确定方式可参照上文示例性方法400中的相关描述,例如,图5所示的流程。

至少一些实施例中,如果根据上述示例性方法400得到的卷积操作指令中包含第二输入特征数据的参数和第二卷积核的参数,可以根据第二输入特征数据的参数(例如,第二输入特征数据的高度维度起点坐标、宽度维度起点坐标、通道维度起点坐标以及高度大小、宽度大小和通道数大小)来确定与对应该第二卷积核的第二输入特征数据。

一个示例中,步骤901中,可分多次从缓冲存储器中读取n个第二卷积核中的第n个第二卷积核。

至少一些实施例中,在缓冲存储器的容量足以存储第一输入特征数据和第一卷积核的数据时,可以从片外存储器读取第一输入特征数据和第一卷积核的数据并存储到缓冲存储器中。这样,在执行多个第二卷积核的卷积操作的过程中只需要访问一次片外存储器即可,减少了对片外存储器的访问,可进一步提高硬件(例如,电子设备30)执行卷积神经网络运算的效率。

至少一些实施例中,在缓冲存储器的容量不足以存储第一输入特征数据和第一卷积核的数据时,可以从片外存储器读取当前需要的第二输入特征数据及其对应的第二卷积核的数据并存储到缓冲存储器中。这样,可适应硬件的容量限制,使得因存储器容量有限而仅能够支持小尺寸卷积核的运算操作的硬件能够实现大尺寸卷积核的运算操作。

在硬件(例如,计算单元)支持跳读的情况下,执行第二卷积核的卷积操作时计算单元可以直接基于跳读参数直接从缓冲存储器中读取相应的第二输入特征数据和第二卷积核的数据,该跳读参数可以通过上文的卷积操作指令或读取指令预先配置。

在硬件(例如,计算单元)不支持跳读的情况下,计算单元可以在执行一第二卷积核的卷积操作之前预先在缓冲存储器重排该第二卷积核的数据和相应的第二输入特征数据,使得该第二卷积核的数据和相应的第二输入特征数据在缓冲存储器中紧密排布,以便在执行该第二卷积核的卷积操作时可准确高效的读取该第二卷积核的数据和相应的第二输入特征数据。

至少一些实施例中,在缓冲存储器重排第二卷积核的数据和相应的第二输入特征数据的过程可以包括:从片外存储器或缓冲存储器中读取第二输入特征数据中的每段数据,并将所述第二输入特征数据中的每段数据连续地存储到所述缓冲存储器的一预定存储空间中;以及,从片外存储器或缓冲存储器中读取第二卷积核的每段数据,并将所述第二卷积核的每段数据连续地存储到所述缓冲存储器的另一预定存储空间中。至少一个实施例中,缓冲存储器的容量有限时,可以使用同一个预定存储空间来完成多个第二卷积核的数据重排。至少一个实施例中,缓冲存储器的容量允许时,可以为各个第二卷积核分别设置其专用的预定存储空间来完成其数据重排,以避免数据重排过程中发生错误。

本申请实施例中,步骤904中的整合可通过多种方式来实现。至少一些实施例中,步骤904中可以包括:对所述多个第二输出特征数据按维度坐标进行累加,以获得所述第一输出特征数据。除此累加的方式之外,步骤904的整合还可通过池化操作、卷积操作或其结合等来实现,对于步骤904中的具体实现方式,本申请实施例不予限制。

可以参考上文图5~图8的示例性描述来理解本申请实施例中示例性方法900的具体实现过程,在此不再详述。

图10是直接执行卷积核11和输入特征数据featuremap11的卷积操作的示意图,直接执行卷积核11的卷积操作得到的输出特征数据是输出特征数据featuremap31,该featuremap31的高度是28、宽度是28、通道数64。

图11是卷积核21和输入特征数据featuremap21的卷积操作的示意图,该卷积操作得到的输出特征数据是输出特征数据featuremap41,其中,输入特征数据featuremap21是输入特征数据featuremap11中高度维度坐标0~29、宽度维度坐标0~29的部分数据。

图12是卷积核22和输入特征数据featuremap22的卷积操作的示意图,该卷积操作得到的输出特征数据是输出特征数据featuremap42,其中,输入特征数据featuremap22是输入特征数据featuremap11中高度维度坐标0~29、宽度维度坐标3~31的部分数据。

图13是卷积核23和输入特征数据featuremap23的卷积操作的示意图,该卷积操作得到的输出特征数据是输出特征数据featuremap43,其中,输入特征数据featuremap23是输入特征数据featuremap11中高度维度坐标3~31、宽度维度坐标0~29的部分数据。

图14是卷积核24和输入特征数据featuremap24的卷积操作的示意图,该卷积操作得到的输出特征数据是输出特征数据featuremap44,其中,输入特征数据featuremap24是输入特征数据featuremap11中高度维度坐标3~31、宽度维度坐标3~31的部分数据。

图15示出了由输出特征数据featuremap41、输出特征数据featuremap42、输出特征数据featuremap43、输出特征数据featuremap44累加得到输出特征数据featuremap31的过程。如图16所示,在一个通道上,将featuremap41中高度维度坐标为0且宽度维度坐标为0的数据、featuremap42中高度维度坐标为0且宽度维度坐标为0的数据、featuremap43中高度维度坐标为0且宽度维度坐标为0的数据、featuremap44中高度维度坐标为0且宽度维度坐标为0的数据执行加运算操作得到featuremap31中高度维度坐标为0且宽度维度坐标为0的数据,如此类推,对其他各坐标点上的数据也逐个执行加操作,即由featuremap41、featuremap42、featuremap43、featuremap44得到featuremap31。在其他通道上,累加操作的过程与图16类似,在此不再详述。

需要说明的是,图10~图15仅示出了示例性方法900中一个通道维度(例如,通道维度坐标为0的通道)的执行过程,示例性方法900包括其他各个通道维度的执行过程,其他各个通道的执行过程与图10~图15的执行过程类似。

示例性装置

图16示出了本申请实施例的生成指令的示例性装置160的结构,该示例性装置160可通过软件、硬件或两者的结合来实现。具体应用中,该示例性装置160可设置于上文所述的编译侧设备中或通过该编译侧设备来实现。一个示例中,该示例性装置160可设置于上文的电子设备20中或通过该电子设备20来实现。

如图16所示,本申请实施例的生成指令的示例性装置160可以包括:

第三获取模块161,配置为获取第一输入特征数据的尺寸、填充尺寸、和第一卷积核的尺寸;

第一确定模块162,配置为根据所述第一卷积核的尺寸和用于执行卷积运算操作的计算单元支持的最大卷积核的尺寸,确定n个第二卷积核,所述n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,所述n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于所述计算单元在相应维度上的尺寸;

第二确定模块163,配置为基于第一卷积核在宽度和高度上的尺寸、所述第一输入特征数据的尺寸、所述填充尺寸、所述n个第二卷积核中第n个第二卷积核在宽度和高度上的尺寸、和所述第n个第二卷积核在所述第一卷积核中的宽度起点坐标和高度起点坐标,在所述填充后的第一输入特征数据的区域中,确定与所述第n个第二卷积核对应的第n个第二输入特征数据的尺寸和所述第n个第二输入特征数据在所述第一输入特征数据中的宽度起点坐标和高度起点坐标;

指令生成模块164,配置为根据n组第二参数生成整合指令和n条卷积操作指令,所述n条卷积操作指令中的第n条卷积操作指令用于对所述第n个第二输入特征数据和所述第n个第二卷积核执行卷积运算操作,以获得与所述第n个第二卷积核对应的第二输出特征数据,所述整合指令用于在得到与所述n个第二卷积核对应的n个第二输出特征数据后,对所述n个第二输出特征数据进行整合,以获得与所述第一卷积核和所述第一输入特征数据对应的第一输出特征数据。

其中,n组第二参数中的每一组参数可包括:填充尺寸、所述第一卷积核在宽度和高度上的尺寸、所述第一输入特征数据的尺寸、所述n个第二卷积核中每个第二卷积核在宽度和高度上的尺寸、和每个第二卷积核在所述第一卷积核中的宽度起点坐标和高度起点坐标、n个第二输入特征数据的尺寸和n个第二输入特征数据中每个第二输入特征数据在所述第一输入特征数据中的宽度起点坐标和高度起点坐标。

本申请实施例中,第二确定模块162具体配置为:

在所述第一输入特征数据的宽度和高度上,按照预设的填充尺寸对所述第一输入特征数据的区域进行填充,得到第三输入特征数据的区域;

基于所述第一卷积核在宽度和高度上的尺寸、所述第n个第二卷积核在宽度和高度上的尺寸、和所述第n个第二卷积核在所述第一卷积核中的宽度起点坐标和高度起点坐标,从所述第三输入特征数据的区域中,确定与所述第n个第二卷积核对应的第二输入特征数据的尺寸和所述第n个第二输入特征数据在所述第一输入特征数据中的宽度起点坐标和高度起点坐标。

在一实施例中,第一确定单元1622具体配置为:

基于所述第一卷积核在宽度上的尺寸、所述第n个第二卷积核在宽度上的尺寸以及所述第n个第二卷积核在所述第一卷积核中的宽度起点坐标,确定左侧切除列数和右侧切除列数;

基于所述第一卷积核在高度上的尺寸、所述第n个第二卷积核在高度上的尺寸以及所述第n个第二卷积核在所述第一卷积核中的高度起点坐标,确定上侧切除行数和下侧切除行数;

从所述第三输入特征数据的区域中保留从上下左右四侧去除所述上侧切除行数、所述下侧切除行数的数据、所述左侧切除列数、所述右侧切除列数之外的区域,作为第四输入特征数据的区域;

基于所述第一输入特征数据的区域与所述第四输入特征数据的区域的重叠区域,确定与所述第n个第二卷积核对应的第二输入特征数据的尺寸和所述第n个第二输入特征数据在所述第一输入特征数据中的宽度起点坐标和高度起点坐标。

至少一些实施例中,第一确定模块162可配置为:将具有宽度w、高度h和通道数c的第一卷积核划分成具有宽度a、高度b和通道数q的多个第二卷积核,所述第二卷积核在所述第一卷积核中的宽度维度起点坐标、高度维度起点坐标和通道维度起点坐标分别为a、b、q,各个第二卷积核的宽度a、高度b和通道数q彼此相同或不同;将与第二卷积核对应的第二输入特征数据确定为具有宽度w0-w+a、高度h0-h+b和通道数q,且所述第二输入特征数据在所述第一输入特征数据中的宽度维度起点坐标为a、高度维度起点坐标为b、通道维度起点坐标为q;其中,s、r和p分别是所述计算单元支持的最大卷积核的宽度、高度和通道数,且s≥a、r≥b、p≥q;w0、h0分别是第一输入特征数据的宽度、高度。

至少一个实施例中,第一确定模块162可配置为:确定第二卷积核的高度为b、宽度为a、通道数为q、高度维度起点坐标为b、宽度维度起点坐标为a、通道维度起点坐标为q;其中,b=min(h-i,r),a=min(w-j,s),q=min(c-k,p),b=i,a=j,q=k,其中i=0,r,2r,……,i<h;j=0,s,2s,……,j<w;k=0,p,2p,……,k<c。

至少一些实施例中,指令生成模块164可具体配置为生成用于从片外存储器或缓冲存储器中读取第二输入特征数据中的每段数据的读取指令;以及,生成用于将所述第二输入特征数据中的每段数据连续地存储到所述缓冲存储器的一预定存储空间中的存储指令。

至少一些实施例中,指令生成模块164可具体配置为生成用于从片外存储器或缓冲存储器中读取第二卷积核的每段数据的读取指令;以及,生成用于将所述第二卷积核的每段数据连续地存储到所述缓冲存储器的一预定存储空间中的存储指令。

图17示出了本申请实施例的执行卷积运算操作的示例性装置170的结构,该示例性装置170可通过软件、硬件或两者的结合来实现。具体应用中,该示例性装置170可设置于上文的运行侧设备中或通过该运行侧设备来实现。一个示例中,该示例性装置170可设置于上文的电子设备30中或通过该电子设备30来实现。

如图17所示,本申请实施例的执行卷积运算操作的示例性装置170可以包括:

第一获取模块171,配置为获取n个第二卷积核中的第n个第二卷积核,所述n个第二卷积核在相应维度上的尺寸之和与第一卷积核在相应维度上的尺寸相同,所述n个第二卷积核中的每一第二卷积核在相应维度上的尺寸小于或者等于计算单元在相应维度上的尺寸;

第二获取模块172,配置为基于第一卷积核在宽度和高度上的尺寸、与第一输入特征数据在宽度和高度上填充后的尺寸、第n个第二卷积核在宽度和高度上的尺寸、和第n个第二卷积核在第一卷积核中的宽度起点坐标和高度起点坐标,从填充后的第一输入特征数据中,获取与第n个第二卷积核对应的第二输入特征数据;

卷积计算模块173,配置为利用计算单元对与第n个第二卷积核对应的第二输入特征数据和第n个第二卷积核执行卷积运算操作,以获得与第n个第二卷积核对应的第二输出特征数据;以及

整合模块174,配置为在得到与n个第二卷积核对应的n个第二输出特征数据后,对n个第二输出特征数据进行整合,以获得与第一卷积核和第一输入特征数据对应的第一输出特征数据。

在一实施例中,第二获取模块172具体配置为:

在第一输入特征数据的宽度和高度上,按照预设的填充尺寸对第一输入特征数据进行填充,得到第三输入特征数据;

基于第一卷积核在宽度和高度上的尺寸、第n个第二卷积核在宽度和高度上的尺寸、和第n个第二卷积核在第一卷积核中的宽度起点坐标和高度起点坐标,从第三输入特征数据中确定与第n个第二卷积核对应的第二输入特征数据。

在一实施例中,第二获取模块172具体配置为:

基于第一卷积核在宽度上的尺寸、第n个第二卷积核在宽度上的尺寸以及第n个第二卷积核在第一卷积核中的宽度起点坐标,确定左侧切除列数和右侧切除列数;

基于第一卷积核在高度上的尺寸、第n个第二卷积核在高度上的尺寸以及第n个第二卷积核在第一卷积核中的高度起点坐标,确定上侧切除行数和下侧切除行数;

从第三输入特征数据中保留从上下左右四侧去除上侧切除行数、下侧切除行数的数据、左侧切除列数、右侧切除列数之外的数据,作为第四输入特征数据;

确定第一输入特征数据与第四输入特征数据重叠部分的数据,得到第二输入特征数据。

在一实施例中,整合模块174具体配置为:

对n个第二输出特征数据按维度坐标进行累加,以获得与第一卷积核和第一输入特征数据对应的第一输出特征数据。

示例性计算机程序产品和计算机可读存储介质

除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的执行卷积运算操作的方法和/或生成指令的方法中的步骤。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的执行卷积运算操作的方法和/或生成指令的方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。

本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。

还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。

提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

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