运算方法、装置及相关产品与流程

文档序号:22315463发布日期:2020-09-23 01:40阅读:115来源:国知局
运算方法、装置及相关产品与流程

本公开涉及信息处理技术领域,尤其涉及一种运算方法、装置及相关产品。



背景技术:

在人工智能技术领域,神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。



技术实现要素:

根据本公开的第一方面,提供了一种矩阵的运算方法,所述方法包括:

根据接收的待运算矩阵,获取对应的待运算张量,所述待运算张量包括第一张量和第二张量;

根据所述第一张量和所述第二张量的形状,确定神经网络模型的输入数据;

将所述输入数据通过所述神经网络模型,根据所述神经网络模型的输出结果,得到所述待运算矩阵的运算结果。

在一种可能的实现方式中,根据接收的待运算矩阵,获取对应的第一张量和第二张量,所述待运算张量包括第一张量和第二张量,包括:

接收第一矩阵和第二矩阵;

根据所述第一矩阵和所述第二矩阵,分别得到对应的第一张量和第二张量。

在一种可能的实现方式中,根据所述第一矩阵和所述第二矩阵,分别得到对应的第一张量和第二张量,包括:

对所述第一矩阵和所述第二矩阵分别进行相同的维度扩展,得到对应的第一张量和第二张量。

在一种可能的实现方式中,根据所述第一张量和所述第二张量的形状,确定神经网络模型的输入数据,包括:

将所述第一张量作为神经网络模型的初始输入张量,所述第二张量作为神经网络模型的初始过滤器张量,得到所述神经网络模型的初始输入数据;

根据所述初始输入张量和所述初始过滤器张量之间的比较结果,确定所述神经网络模型的输入数据。

在一种可能的实现方式中,根据所述初始输入张量和所述初始过滤器张量之间的比较结果,确定所述神经网络模型的输入数据,包括:

读取所述初始输入张量的批处理数目;

读取所述初始过滤器张量的输出通道数目;

根据所述批处理数目和所述输出通道数目的大小关系,确定所述神经网络模型的输入数据。

在一种可能的实现方式中,根据所述批处理数目和所述输出通道数目的大小关系,确定所述神经网络模型的输入数据,包括:

在所述输出通道数目与所述批处理数目之差不小于阈值时,对所述初始输入数据执行调换操作,得到所述神经网络模型的输入数据;

在所述输出通道数目与所述批处理数目之差小于阈值时,将所述初始输入数据作为所述神经网络模型的输入数据。

在一种可能的实现方式中,对所述初始输入数据执行调换操作,得到所述神经网络模型的输入数据,包括:

将所述初始输入张量作为所述神经网络模型的过滤器张量,将所述初始过滤器张量作为所述神经网络模型的输入张量,得到所述神经网络模型的输入数据。

在一种可能的实现方式中,将所述输入数据通过所述神经网络模型,根据所述神经网络模型的输出结果,得到所述待运算矩阵的运算结果,包括:

将所述输入数据通过所述神经网络模型,得到所述神经网络模型的输出结果;

根据矩阵运算的维度要求,提取所述输出结果中相应维度的数据,得到所述待运算矩阵的运算结果。

根据本公开的第二方面,提供了一种矩阵的运算装置,包括:

张量获取单元,用于根据接收的待运算矩阵,获取对应的待运算张量,所述待运算张量包括第一张量和第二张量;

输入数据确定单元,用于根据所述第一张量和所述第二张量的形状,确定神经网络模型的输入数据;

运算单元,用于将所述输入数据通过所述神经网络模型,根据所述神经网络模型的输出结果,得到所述待运算矩阵的运算结果。

在一种可能的实现方式中,所述张量获取单元用于:

接收第一矩阵和第二矩阵;

根据所述第一矩阵和所述第二矩阵,分别得到对应的第一张量和第二张量。

在一种可能的实现方式中,所述张量获取单元进一步用于:

对所述第一矩阵和所述第二矩阵分别进行相同的维度扩展,得到对应的第一张量和第二张量。

在一种可能的实现方式中,所述输入数据确定单元用于:

将所述第一张量作为神经网络模型的初始输入张量,所述第二张量作为神经网络模型的初始过滤器张量,得到所述神经网络模型的初始输入数据;

根据所述初始输入张量和所述初始过滤器张量之间的比较结果,确定所述神经网络模型的输入数据。

在一种可能的实现方式中,所述输入数据确定单元进一步用于:

读取所述初始输入张量的批处理数目;

读取所述初始过滤器张量的输出通道数目;

根据所述批处理数目和所述输出通道数目的大小关系,确定所述神经网络模型的输入数据。

在一种可能的实现方式中,所述输入数据确定单元进一步用于:

在所述输出通道数目与所述批处理数目之差不小于阈值时,对所述初始输入数据执行调换操作,得到所述神经网络模型的输入数据;

在所述输出通道数目与所述批处理数目之差小于阈值时,将所述初始输入数据作为所述神经网络模型的输入数据。

在一种可能的实现方式中,所述输入数据确定单元进一步用于:

将所述初始输入张量作为所述神经网络模型的过滤器张量,将所述初始过滤器张量作为所述神经网络模型的输入张量,得到所述神经网络模型的输入数据。

在一种可能的实现方式中,所述运算单元用于:

将所述输入数据通过所述神经网络模型,得到所述神经网络模型的输出结果;

根据矩阵运算的维度要求,提取所述输出结果中相应维度的数据,得到所述待运算矩阵的运算结果。

根据本公开的第三方面,提供了一种矩阵的运算装置,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行上述第一方面所述的方法。

根据本公开的第四方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第一方面所述的方法。

通过将待运算矩阵转化为对应的待运算张量,并根据待运算张量的形状确定神经网络模型的输入数据,从而利用神经网络模型进行矩阵运算,根据本公开的各方面实施例的矩阵的运算方法、装置及相关产品,能够便于硬件设备通过神经网络模型对不对称矩阵进行快速运算,同时由于神经网络模型的输入数据根据张量的形状会进行相应的调整,因此可以降低硬件设备进行矩阵运算时的时间消耗,提升运算效率,增加硬件设备的吞吐量。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出根据本公开一实施例的矩阵的运算方法的流程图。

图2示出根据本公开一实施例的矩阵的运算方法的流程图。

图3示出根据本公开一实施例的矩阵的运算方法的流程图。

图4示出根据本公开一实施例的矩阵的运算方法的流程图。

图5示出根据本公开一实施例的矩阵的运算方法的流程图。

图6示出根据本公开一实施例的矩阵的运算装置的框图。

图7示出根据本公开一应用示例的示意图。

图8示出根据本公开一实施例的矩阵的运算装置的框图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。不对称矩阵是指第一个矩阵的行数和第二个矩阵的列数不相同,也就是运算结果不是一个方阵。

深度学习框架(如tensorflow等)中通常用张量(tensor)这种数据结构来表示所有的数据。张量可以表示成一个n维的数组或列表。一个张量有一个静态类型和动态类型的维数。张量可以在图中的节点之间流通。张量是所有深度学习框架中最核心的组件,因为后续的所有运算和优化算法都是基于张量进行的。代数中定义的张量是基于向量和矩阵的推广,可以将标量视为零维张量,矢量视为一维张量,矩阵就是二维张量。

硬件设备在进行数据处理的过程中,往往需要涉及到对矩阵进行运算,在一种可能的实现方式中,基于张量和矩阵之间的关系,硬件设备可以将待运算的矩阵转化为张量,并将此张量作为输入,利用卷积神经网络模型,对张量进行相应的运算,并根据输出的结果得到对应矩阵的运算结果。卷积神经网络模型中一般会包括很多张量的基本运算,在一个示例中,卷积神经网络模型可以进行张量的乘法,在常见的神经网络模型中,张量不但有维数,还有对应的形状(shape),例如,卷积神经网络的图像输入张量的形状为(4,8,2,2),我们可以称其为4维,4、8、2、2分别表示它的批处理数目、通道数目、高度、和宽度,当高度和宽度固定时,张量的乘法此时就可看为矩阵的乘法。

然而硬件设备在利用卷积神经网络对张量进行运算时,由于硬件设备可能需要对输入的张量进行拷贝、读取等多次的输入和输出过程,如果待运算的张量被设定为一个比较大的数,此时硬件设备在进行运算时,时间消耗和空间消耗都会很高,同时吞吐量可能会很低,因此在运算的过程中极有可能会造成程序崩溃,导致硬件设备无法有效的利用神经网络模型来进行张量的计算,继而降低矩阵运算的效率,从而降低整个硬件设备的计算和工作效率。

为了提升硬件设备的工作效率,本实施例公开了一种矩阵的运算方法的应用示例,在本示例中,对矩阵进行的运算可以为乘法运算,本示例中相乘的两个矩阵可以分别记为矩阵a和矩阵b,因此,硬件设备在计算矩阵a乘矩阵b的结果时,可以将矩阵a和矩阵b分别转化成四维的张量a和张量b后,将张量a作为输入张量,张量b作为过滤器张量,将二者输入到卷积神经网络模型的单层感知机中,则输出的结果中,前两维度的对应的结果即为矩阵a乘矩阵b的运算结果,由于单层感知机中,硬件设备对于过滤器张量需要执行很多的输入输出(io)操作,如将过滤器张量从中央处理器(cpu,centralprocessingunit)拷入到机器学习处理器(mlu)、图形处理器(gpu,graphicsprocessingunit)或张量处理单元(tpu)等模块内的操作,或是将过滤器的计算结果从mlu拷入到cpu的操作,或是从文件中多次读取过滤器张量等操作。因此,在本示例中,为了保证硬件设备的工作效率,可以在作为过滤器张量的张量b的大小远大于张量a时,将张量a和张量b进行对调,即将张量b作为输入张量,张量a作为过滤器张量,来输入到卷积神经网络模型的单层感知机中,来完成张量的运算,继而完成矩阵的运算。由于张量a和张量b在感知机中的输入顺序进行了调换,因此感知机的输出结果中,前两维度的结果也相应的发生了调换,因此将输出结果的前两维度再次调换,得到的即为待运算矩阵的运算结果。通过这一调换操作,可以大大减小硬件设备在执行运算时需要进行的输入输出操作的数据量,从而可以降低硬件设备的时间消耗和空间消耗,提高硬件设备的工作效率。

图1示出根据本公开一实施例的矩阵的运算方法的流程图。该运算方法可以由终端设备或其它处理设备执行,其中,终端设备可以为用户设备(userequipment,ue)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(personaldigitalassistant,pda)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该运算方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图所示,该方法可以包括:

步骤s11,根据接收的待运算矩阵,获取对应的待运算张量,待运算张量包括第一张量和第二张量。

步骤s12,根据第一张量和第二张量的形状,确定神经网络模型的输入数据。

步骤s13,将输入数据通过神经网络模型,根据神经网络模型的输出结果,得到待运算矩阵的运算结果。

上述步骤中,待运算矩阵的数量和具体形式均不受限定,在一个示例中,可以是2个矩阵之间进行运算,在一个示例中,可以是3个矩阵来执行运算,在一个示例中,也可以是更多数量的矩阵共同执行运算。同时,待运算矩阵执行的具体运算种类不受限定,任何可以通过神经网络模型实现的运算操作,均可以作为矩阵执行的运算操作,因此根据实际情况进行确定即可,在一个示例中,待运算矩阵可以执行乘法运算,在一个示例中,待运算矩阵可以执行加法运算,在一个示例中,待运算矩阵可以执行相加后得到的矩阵之和再与第三个矩阵进行相乘的操作。由于待运算矩阵的数量、形式和执行的具体运算种类均不受限定,因此根据待运算矩阵获取的待运算张量,其形式也不受限定,因此步骤s11中提到的待运算张量包括第一张量和第二张量,其可以是具体的两个张量,也可以是相应的多个张量,在一个示例中,待运算矩阵可以包括2个矩阵,分别为待运算矩阵a和待运算矩阵b,此时第一张量可以为待运算矩阵a对应的张量a,第二张量可以为待运算矩阵b对应的张量b;在一个示例中,待运算矩阵可以包括3个矩阵,分别为待运算矩阵a、待运算矩阵b和待运算矩阵c,此时第一张量可以为待运算矩阵a和待运算矩阵b分别对应的张量a和张量b,第二张量可以为待运算矩阵c对应的张量c。具体第一张量和第二张量包含的张量数量和内容,根据待运算矩阵的数量和待运算矩阵执行的具体运算种类来确定,并不受具体限定。

同样,由于第一张量和第二张量的具体包含内容不受限定,因此第一张量和第二张量中具体包含的张量的形状可以根据实际情况来确定,在一个示例中,神经网络模型的输入可以是图像,因此此时第一张量和第二张量均可以为四维张量,即第一张量和第二张量的形状格式可以为(n,c,h,w),其中n可以代表该四维张量的批处理数目,c可以代表该四维张量张量的通道数目,h可以代表该四维张量的高度,w可以代表该四维张量的宽度。因此,张量的具体形状格式可以根据神经网络模型的具体要求来进行确定,并不受限定。

通过以上方法,本公开可以将待运算的矩阵,转化为对应的张量,同时根据对应张量的形状,来确定神经网络模型的输入数据,并将输入数据通过神经网络模型,从而根据神经网络模型的输出结果,来得到待运算矩阵的运算结果。由于神经网络模型的输入数据是根据张量的形状来确定的,因此可以预先将形状较小的张量作为神经网络模型中执行操作数量较少的输入数据,将形状较大的张量作为神经网络模型中执行操作数量较大的输入数据,这样可以降低执行运算的设备的时间消耗和空间消耗,继而增加运算设备的吞吐量,提高运算设备的工作效率。

由于待运算矩阵和待运算张量的具体形式均不受限定,因此如何根据待运算矩阵,获取对应的待运算张量,其具体过程也可以根据实际情况进行灵活选择。图2示出根据本公开一实施例的矩阵的运算方法的流程图,如图所示,在一种可能的实现方式中,步骤s11可以包括:

步骤s111,接收第一矩阵和第二矩阵。

步骤s112,根据第一矩阵和所述第二矩阵,分别得到对应的第一张量和第二张量。

通过上述公开内容可以看出,由于待运算矩阵的数量和运算形式并不受限定,因此第一矩阵和第二矩阵仅代表用于执行运算的两类矩阵,其可能只包含一个矩阵,也可能包含多个矩阵;同样的,第一张量和第二张量可以包含一个张量或多个张量。在一个示例中,本公开中矩阵的运算可能执行的是两个矩阵之间的乘法运算,因此此时第一矩阵可以代表待进行乘法运算的矩阵1,第二矩阵可以代表待进行乘法运算的矩阵2,第一张量可以代表矩阵1对应转化的张量1,第二张量可以代表矩阵2对应转化的张量2。在一个示例中,本公开中矩阵的运算可能执行的是两个矩阵相加后与第三个矩阵相乘的运算,此时第一矩阵可以代表待进行加法运算的矩阵3和矩阵4,第二矩阵可以代表矩阵3和矩阵4相加后与之相乘的矩阵5,第一张量可以代表矩阵3对应转化的张量3和矩阵4对应转化的张量4,第二张量可以代表矩阵5对应转化的张量5,则此时,输入到神经网络模型中的张量的数量可以为3个,分别为张量3、张量4和张量5。

上述公开的内容中已提出过,第一张量和第二张量中具体包含的张量的形状可以根据实际情况来确定,因此随着张量的形状不同,步骤s112的具体实现过程也可能存在着相应的变化,在一种可能的实现方式中,步骤s112可以包括:对第一矩阵和第二矩阵分别进行相同的维度扩展,得到对应的第一张量和第二张量。这一相同的维度扩展,具体过程可以为:为第一张量和第二张量分别在相同的维度位置上保留与第一矩阵和第二矩阵相同的维度内容,并在额外增加的维度位置上,赋予固定的数据。具体在第一张量和第二张量的哪一维度位置,保留第一矩阵和第二矩阵的维度内容,可以根据实际情况进行调整,并不受限定,同时,具体将第一矩阵和第二矩阵扩展至何种维度,也不受限定。

在一个示例中,神经网络模型需要的输入数据的格式可能是四维张量,因此可以将第一矩阵和第二矩阵均扩展至四维,具体的扩展过程可以为:将第一张量的前两个维度,即批处理数目和通道数目分别与第一矩阵的两个维度相对应,将第二张量的前两个维度分别与第二矩阵的两个维度相对应,并赋予第一张量和第二张量固定的第三维度和第四维度,即高度和宽度;在一个示例中,神经网络模型需要的输入数据的格式可能是四维张量,因此可以将第一矩阵和第二矩阵均扩展至四维,具体的扩展过程可以为:将第一张量的后两个维度,即高度和宽度分别与第一矩阵的两个维度相对应,将第二张量的后两个维度分别与第二矩阵的两个维度相对应,并赋予第一张量和第二张量固定的第一维度和第二维度,即批处理数目和通道数目;在一个示例中,神经网络模型需要的输入数据的格式可能是三维张量,因此可以将第一矩阵和第二矩阵均扩展至三维,具体的过程可以为:将第一张量的前两个维度,分别与第一矩阵的两个维度相对应,将第二张量的前两个维度分别与第二矩阵的两个维度相对应,并赋予第一张量和第二张量固定的第三维度。

通过上述公开的任意一种方式,可以获取第一张量和第二张量,具体如何根据第一张量和第二张量来确定神经网络模型的输入数据,其过程同样具有灵活的选择性。图3示出根据本公开一实施例的矩阵的运算方法的流程图,如图所示,在一种可能的实现方式中,步骤s12可以包括:

步骤s121,将第一张量作为神经网络模型的初始输入张量,第二张量作为神经网络模型的初始过滤器张量,得到神经网络模型的初始输入数据。

步骤s122,根据初始输入张量和初始过滤器张量之间的比较结果,确定神经网络模型的输入数据。

在一种可能的实现方式中,步骤s121的过程可以是随机的。上述公开内容中已经提出,第一张量和第二张量所代表的张量数量和内容并不固定,因此,具体将哪一张量来作为初始输入张量,具体将哪一张量作为初始过滤器张量,其赋予方式也不固定。在一个示例中,待执行的矩阵运算可能是矩阵1和矩阵2的乘法运算,此时第一张量可以为矩阵1对应的张量1,第二张量可以为矩阵2对应的张量2,则此时张量1可以作为神经网络模型的初始输入张量,张量2可以作为神经网络模型的初始过滤器张量,从而得到神经网络模型的初始输入数据;在一个示例中,待执行的矩阵运算可能是矩阵1和矩阵2的乘法运算,此时第一张量可以为矩阵2对应的张量2,第二张量可以为矩阵1对应的张量1,则此时张量2可以作为神经网络模型的初始输入张量,张量1可以作为神经网络模型的初始过滤器张量。在一个示例中,待执行的矩阵运算中待运算的矩阵数量可能超过2个,此时的神经网络模型可能包含的是多层感知机而非单层感知机,因此神经网络模型的输入数据可能包含的初始输入张量数目和初始过滤器张量数目也会随之发生变化,此时可以根据感知机的层数情况,相应的调整神经网络模型的初始输入数据。

在得到了神经网络模型的初始输入数据后,可以判断是否需要对初始输入数据进行一定的调整,来使得运算设备可以更加高效的针对初始输入数据,通过神经网络模型进行运算。具体的调整过程可以根据运算的类型和张量的形式进行灵活改动,不局限于某一具体的调整过程,图4示出根据本公开一实施例的矩阵的运算方法的流程图,如图所示,在一种可能的实现方式中,步骤s122可以包括:

步骤s1221,读取初始输入张量的批处理数目。

步骤s1222,读取初始过滤器张量的输出通道数目。

步骤s1223,根据批处理数目和输出通道数目的大小关系,确定神经网络模型的输入数据。

图4示出的步骤s122的可能实现过程,针对的是第一张量和第二张量均被扩展至四维,且扩展的方式是宽度和高度固定,批处理数目和通道数目与待运算矩阵相匹配的情况。在这种情况下,由于矩阵相乘的运算条件是一矩阵的行数与另一矩阵的列数相同,因此二者对应的张量,也会存在某一数量相同的维度,在一个示例中,可以是初始输入张量的通道数目,与初始过滤器张量的批处理数目,也就是初始过滤器张量的输入通道数目相同,因此,在本示例中,可以通过比较初始输入张量的批处理数目和初始过滤器张量的输出通道数目的大小,来判断是否需要调整初始输入数据。在初始输入张量和初始过滤器张量在其他维度上具有相同数目的情况下,或是第一张量和第二张量被扩展至其他维度的情况下,或是第一张量和第二张量通过其他的固定方式被扩展至四维的情况下,用于确定是否调整神经网络模型的输入数据的比较内容可以相应的进行调整,本领域技术人员可以类推得出具体的比较方式,在此不再一一列举。

基于图4中的过程,在一种可能的实现方式中,步骤s1223可以包括:

在输出通道数目与所述批处理数目之差不小于阈值时,对初始输入数据执行调换操作,得到神经网络模型的输入数据;

在输出通道数目与批处理数目之差小于阈值时,将初始输入数据作为神经网络模型的输入数据。

在一个示例中,在输出通道数目与批处理数目之差不小于阈值时,说明初始过滤器张量的规模已超过初始输入张量的规模至一定范围,由于运算设备在进行运算时,可能会对过滤器内的数据进行多次操作,如对过滤器张量进行从cpu拷入到mlu,或者gpu、tpu等;计算完成后从mlu拷入到cpu;甚至包括从文件读取等多次io过程等,因此如果初始过滤器张量过大,将不利于运算设备执行矩阵的运算,将大大降低运算的效率,因此,可以考虑将初始过滤器张量和初始输入张量进行对调,将规模较小的张量来作为过滤器张量,从而保证运算的效率,增加运算设备的吞吐量;而如果初始过滤器张量的规模小于或接近于初始输入张量,则将二者进行对调,并不会显著提升运算效率,因此此时可以直接将初始输入数据作为神经网络模型的输入数据来进行运算即可。本示例中,并不对用于比较输出通道数目和批处理数目规模大小的阈值的数值进行具体限定,本领域任意可以根据运算的实际情况进行相应调整。

需要注意的是,上述步骤s1223的具体示例,仅针对于针对的是第一张量和第二张量均被扩展至四维,且扩展的方式是宽度和高度固定,批处理数目和通道数目与待运算矩阵相匹配,且初始输入张量的通道数目,与初始过滤器张量的批处理数目,也就是初始过滤器张量的输入通道数目相同的情况,在任一条件发生改变时,步骤s1223的具体判断过程均可能发生相应的调整,本领域技术人员可以通过上述过程进行相应的改动,在此不再具体描述。

在一种可能的实现方式中,对初始输入数据执行调换操作,得到神经网络模型的输入数据,可以包括:将初始输入张量作为神经网络模型的过滤器张量,将初始过滤器张量作为神经网络模型的输入张量,得到神经网络模型的输入数据。即通过二者之间的对调,来实现初始输入数据的调换操作,与上述公开内容同理,在初始输入数据发生改变等其他情况下,其具体的调换操作的调换对象也会随之发生改变,在此不再赘述。

由于步骤s12可能发生了调换操作,因此与之相对的,最终得到的运算结果,可能会根据步骤s12发生的实际操作过程,进行相应的调整。图5示出根据本公开一实施例的矩阵的运算方法的流程图,如图所示,在一种可能的实现方式中,步骤s13可以包括:

步骤s131,将输入数据通过神经网络模型,得到神经网络模型的输出结果。

步骤s132,根据矩阵运算的维度要求,提取输出结果中相应维度的数据,得到待运算矩阵的运算结果。

在一个示例中,待执行的矩阵运算可能是矩阵1和矩阵2的乘法运算,且本示例中矩阵扩展至张量的方式均为将张量的前两维度与矩阵的维度相对应,并赋予张量后两维度以固定值,矩阵1对应的张量1可以作为神经网络模型的初始输入张量,矩阵2对应的张量2可以作为神经网络模型的初始过滤器张量,从而得到神经网络模型的初始输入数据,而在确定神经网络模型的输入数据的过程中,也并未发生调换操作,即最终张量1为神经网络模型的输入张量,张量2为神经网络模型的过滤器张量,则为了得到运算结果,可以从神经网络模型的输出数据中,直接提取前两维度对应的数据,作为运算结果。在一个示例中,待执行的矩阵运算可能是矩阵1和矩阵2的乘法运算,且本示例中矩阵扩展至张量的方式均为将张量的前两维度与矩阵的维度相对应,并赋予张量后两维度以固定值,矩阵1对应的张量1可以作为神经网络模型的初始输入张量,矩阵2对应的张量2可以作为神经网络模型的初始过滤器张量,从而得到神经网络模型的初始输入数据,而在确定神经网络模型的输入数据的过程中,发生了调换操作,即最终张量2为神经网络模型的输入张量,张量1为神经网络模型的过滤器张量,则为了得到运算结果,可以从神经网络模型的输出数据中,直接提取前两维度对应的数据,并对这两维度进行维度转置,从而得到运算结果。同理,由于张量扩展方式可能存在不同,以及确定神经网络模型的输入数据的过程可能存在不同,因此从神经网络模型的输出结果中,具体提取何维度的结果,以及是否需要进行维度转置,均可以根据实际情况进行灵活选择,在此不再赘述。

这样,通过对接收的待运算矩阵,进行相应的维度扩张,从而得到对应的待运算张量,可以将运算设备执行的矩阵运算操作通过神经网络模型进行实现,提高运算效率;同时,由于运算设备在执行神经网络模型计算的过程中,对于神经网络模型不同位置的数据,需要执行的操作过程可能存在差异,因此为了进一步提高运算设备的效率,可以在将矩阵扩展的张量输入到神经网络模型之前,先根据张量的形状进行预判,从而将规模较小的张量数据放置于神经网络模型中操作频率较高的位置,而将规模较大的张量数据放置于神经网络模型中操作频率较低的位置,这样可以有效的降低运算设备的时间消耗和空间消耗,提升吞吐量,通过实践证明,本公开的方法可以将运算过程的时间消耗降低为原有运算过程的时间消耗的1/3左右,从而大幅度的提升运算设备的吞吐率,继而提升运算效率。

图6示出根据本公开一实施例的矩阵的运算装置的框图,如图所示,该装置20包括:

张量获取单元21,用于根据接收的待运算矩阵,获取对应的待运算张量,待运算张量包括第一张量和第二张量;

输入数据确定单元22,用于根据第一张量和第二张量的形状,确定神经网络模型的输入数据;

运算单元23,用于将输入数据通过神经网络模型,根据神经网络模型的输出结果,得到待运算矩阵的运算结果。

在一种可能的实现方式中,张量获取单元用于:接收第一矩阵和第二矩阵;根据第一矩阵和第二矩阵,分别得到对应的第一张量和第二张量。

在一种可能的实现方式中,张量获取单元进一步用于:对第一矩阵和第二矩阵分别进行相同的维度扩展,得到对应的第一张量和第二张量。

在一种可能的实现方式中,输入数据确定单元用于:将第一张量作为神经网络模型的初始输入张量,第二张量作为神经网络模型的初始过滤器张量,得到神经网络模型的初始输入数据;根据初始输入张量和初始过滤器张量之间的比较结果,确定神经网络模型的输入数据。

在一种可能的实现方式中,输入数据确定单元进一步用于:读取初始输入张量的批处理数目;读取初始过滤器张量的输出通道数目;根据批处理数目和输出通道数目的大小关系,确定神经网络模型的输入数据。

在一种可能的实现方式中,输入数据确定单元进一步用于:在输出通道数目与批处理数目之差不小于阈值时,对初始输入数据执行调换操作,得到神经网络模型的输入数据;在输出通道数目与批处理数目之差小于阈值时,将初始输入数据作为神经网络模型的输入数据。

在一种可能的实现方式中,输入数据确定单元进一步用于:将初始输入张量作为神经网络模型的过滤器张量,将初始过滤器张量作为神经网络模型的输入张量,得到神经网络模型的输入数据。

在一种可能的实现方式中,运算单元用于:将输入数据通过神经网络模型,得到神经网络模型的输出结果;根据矩阵运算的维度要求,提取输出结果中相应维度的数据,得到待运算矩阵的运算结果。

图7示出根据本公开一应用示例的示意图,该应用示例仅为便于理解本公开实施例,不对本公开实施例进行限制。

如图7所示,本示例中,运算设备接收到了两个矩阵,分别为矩阵x(x1,x2)和矩阵y(y1,y2),且运算设备需要对矩阵x和矩阵y执行x×y的运算操作,本示例中,为了执行这一运算操作,运算设备首先将矩阵x和矩阵y分别扩展为张量x和张量y,具体的扩展方式为,在张量的前两维度中,保留原有矩阵的值,并在张量的后两维度中赋予固定值,基于此种扩展方式,本示例中的最终扩展得到的张量x和张量y分别为(x1,x2,h1,w1)和(y1,y2,h2,w2)。

在得到张量x和张量y后,需要将这两个张量作为输入,通过卷积神经网络来进行计算,本示例中,由于矩阵x和矩阵y执行的运算操作为乘法操作,因此对应的张量x和张量y可以作为单层感知机的输入张量和过滤器张量,来进行计算。为了由于运算设备在通过单层感知机进行运算时,需要对过滤器进行从cpu拷入到mlu、计算完成后从mlu拷入到cpu、甚至包括从文件读取等多次输入输出过程,因此,可以将张量x和张量y中规模较小的张量,来作为过滤器张量,从而保障运算的效率。因此,首先默认张量x为输入张量,而张量y为过滤器张量,但是在单层感知机进行正式计算之前,需要执行一次判断,即判断张量x和张量y谁的规模更大,从而确定单层感知机的最终输入数据。在本示例中,矩阵x和矩阵y可以执行乘法操作的前提为x2和y1的数量相等,因此,判断张量x和张量y的规模的方式即为比较x1和y2,如果y2远大于x1,则执行调换操作,即将张量y作为输入张量,而将张量x作为过滤器张量,如果y2小于x1或是与x1的规模差距不大,则不执行调换操作,此时仍将张量x作为输入张量,将张量y作为过滤器张量。在确定好张量与单层感知机的对应关系后,即可利用单层感知机进行运算,在单层感知机输出数据后,提取前两维度的数据,则为矩阵的计算结果,需要注意的是,如果张量x和张量y未发生过调换操作,则单层感知机输出数据的前两维度即为矩阵的计算结果,如果张量x和张量y发生了调换操作,则单层感知机输出数据的前两维度,进行转置后,得到的矩阵才是矩阵x和矩阵y的乘积。

图8是根据一示例性实施例示出的一种矩阵的运算装置1300的框图。例如,装置1300可以被提供为一服务器。参照图8,装置1300包括处理组件1322,其进一步包括一个或多个处理器,以及由存储器1332所代表的存储器资源,用于存储可由处理组件1322的执行的指令,例如应用程序。存储器1332中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1322被配置为执行指令,以执行上述方法。

装置1300还可以包括一个电源组件1326被配置为执行装置1300的电源管理,一个有线或无线网络接口1350被配置为将装置1300连接到网络,和一个输入输出(i/o)接口1358。装置1300可以操作基于存储在存储器1332的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1332,上述计算机程序指令可由装置1300的处理组件1322执行以完成上述方法。

本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。

这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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