张量处理方法及相关产品与流程

文档序号:23686571发布日期:2021-01-23 09:28阅读:155来源:国知局
张量处理方法及相关产品与流程

[0001]
本申请涉及神经网络领域,尤其涉及一种张量处理方法及相关产品。


背景技术:

[0002]
人工神经网络(artificial neural network,即ann),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于cpu(central processing unit,中央处理器)或gpu(英文:graphics processing unit,图形处理器)来实现神经网络的运算,现有的神经网络运算无法支持高维张量的运算。


技术实现要素:

[0003]
本申请实施例提供了一种张量计算方法及相关产品,可以实现高维张量的运算。
[0004]
第一方面,提供一种张量处理方法,该方法包括:
[0005]
获取待计算的α维张量以及对人工智能学习库支持的操作,所述α为正整数且α≥5;
[0006]
将所述α维张量中的至少二个维度映射至β维张量中的目标维度上,所述β为正整数且β≤4;
[0007]
对所述β维张量执行所述操作,实现所述β维张量处理。。
[0008]
可选的,所述将所述α维张量中的至少二个维度映射至β维张量中的目标维度上的步骤具体包括:
[0009]
解析所述操作确定该操作的类型,依据所述类型确定该β维张量中的目标维度,将所述α维张量中的至少二个维度映射至该目标维度。
[0010]
可选的,所述依据所述类型确定该β维张量中的目标维度具体包括:
[0011]
如所述操作为算术运算操作或转置操作,确定所述目标维度为所述β维张量中除最内层维度的任一维度。
[0012]
可选的,如所述β=4,所述目标维度具体为:第1维度或第-3维度。
[0013]
可选的,所述算术运算操作包括:乘法操作、加法操作的一种或任意组合。
[0014]
可选的,所述依据所述类型确定该β维张量的目标维度具体包括:
[0015]
如所述操作为某维度操作,确定所述目标维度为所述β维张量中除最内层维度和某维度以外的任一维度。
[0016]
可选的,所述某维度操作具体包括:softmax、reducemax、splite、concat、transpose中的一个或任意组合。
[0017]
第二方面,提供一种张量处理装置,所述装置包括:
[0018]
获取单元,用于获取待计算的α维张量以及对人工智能学习库支持的操作,所述α
为正整数且α≥5;
[0019]
解析单元,用于解析所述操作确定该操作的类型;
[0020]
映射单元,用于将所述α维张量中的至少二个维度映射至β维张量中的目标维度,所述β为正整数且β≤4;
[0021]
计算单元,用于对所述β维张量执行所述操作,实现所述β维张量处理。
[0022]
可选的,所述解析单元,具体用于解析所述操作确定该操作的类型,依据所述类型确定该β维张量中的目标维度,将所述α维张量中的至少二个维度映射至该目标维度。
[0023]
可选的,所述解析单元,具体用于如所述操作为算术运算操作或转置操作,确定所述目标维度为所述β维张量中除最内层维度的任一维度。
[0024]
可选的,如所述β=4,所述目标维度具体为:第2维度或第-3维度。
[0025]
可选的,所述算术运算操作包括:乘法操作、加法操作的一种或任意组合。
[0026]
可选的,所述解析单元,具体用于如所述计算操作为某维度操作指令,确定所述目标维度为所述β维张量中除最内层维度和某维度以外的任一维度。
[0027]
可选的,所述某维度操作指令具体包括:softmax、reducemax、splite、concat、transpose中的一个或任意组合。
[0028]
第三方面,提供一种计算芯片,所述计算芯片包括:第二方面提供的装置。
[0029]
第四方面,提供一种电子设备,所述电子设备包括第三方面提供的芯片或第二方面提供的装置。
[0030]
第五方面,提供一种计算机可读存储介质,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
[0031]
第六方面,提供一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行第一方面提供的方法。
附图说明
[0032]
图1是人工智能学习库支持的多种类型的基本算子的示意图;
[0033]
图2是一种4维向量的示意图。
[0034]
图3是一种张量处理方法的流程示意图。
[0035]
图4是一种张量处理装置的结构示意图。
[0036]
图5是本申请提供的计算芯片的结构示意图。
具体实施方式
[0037]
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0038]
为了便于更好的理解本技术方案,下面先解释本申请实施例所涉及的技术术语:
[0039]
人工智能学习库:用于在人工智能处理器上加速各种人工智能学习算法。这里,人工智能学习算法包括但不限于深度学习算法,例如,卷积神经网络算法、循环神经网络算法
等。具体地,人工智能学习库用于支持多种类型的基本算子。具体实现中,通过基本算子的组合,可以实现多样的机器学习算法,从而满足通用性、灵活性、可扩展性需求。
[0040]
更具体地,这里所涉及的多种类型的基本算子可以包括:常见的神经网络算子1、矩阵、向量、标量算子2、循环神经网络算子3。参见图1,是本申请实施例提供的一种人工智能学习库支持的多种类型的基本算子的示意图,如图1所示,人工智能学习库支持的多种类型的基本算子包括常见的神经网络算子1包括卷积/反卷积算子11,池化算子12,激活算子13、lrn/批规范化算子14,softmax算子15,全连接算子16。其中,激活算子13可以包括但不限于relu、sigmoid、tanh以及其他可以用插值方式实现的算子。矩阵、向量、标量算子2包括矩阵乘算子21、张量加、减算子22、张量逻辑运算算子23、tensor变换算子24、roipooling算子25、proposal算子26。其中,tensor变换算子24可以包括但不限于crop、reshape、slice、concat等;循环神经网络算子3包括lstm算子31、基本循环神经网络rnn(recurrent neural network,rnn)、循环神经网络rnn算子32、svdf算子33。在实际应用中,用户还可以根据自身需求自由在人工智能学习库中添加新算子或更改不同版本的人工智能学习库,这里不再详述,会在调试人工智能学习任务时详细描述在软件开发平台上如何基于人工智能学习库优化人工智能学习任务。
[0041]
对于高维张量,本申请中的高维张量如无特殊说明,特指5维以及5维以上的张量。参阅图2,图2为一个四维张量示意图,如图2所示,该四维张量的4个维度分别可以表示为:n、h、w、c。对于4维张量可以看成是多个3维张量组成的,如图1所示的4维张量可以看成是由n个hwc的三维张量组成的。如图2所示的4维张量中,每个正方形表示一个元素。为了描述的方便,可以将4维张量按维度的排列顺序表示为nhwc,其中,n表示最外层维度,h、w表示中间维度,c表示最内层维度。为了方便维度的表示,可以将nhwc从左到右表示为,0维、1维、2维、4维,或者可以将nhwc从左到右表示为,-4维、-3维、-2维、-1维。
[0042]
随着计算机技术的发展,高维张量的越来越多的出现在计算中,如何使用较小的开销来解决高维张量的计算成为一个急需解决的技术问题,对此,本申请提供的技术方案将高维张量改变成4维张量,将改变后的4维张量执行计算从而实现了对高维张量的计算。
[0043]
参阅图3,图3提供了一种张量处理方法,该方法可以由计算装置执行,该计算装置可以包括:神经网络芯片、cpu、gpu中的一种或任意组合。当然上述计算装置还可以为智能终端,该智能终端包括但不限于:机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。该交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;该医疗设备包括核磁共振仪、b超仪和/或心电图仪。该方法如图3所示,包括如下步骤:
[0044]
步骤s301、获取待计算的α维张量以及对人工智能学习库支持的操作;所述α为正整数且α≥5;
[0045]
上述步骤s301中的α维张量具体可以包括:高维张量,即等于或大于5维的张量。上述对人工智能学习库支持的操作包括但不限于:加法操作、乘法操作、softmax、reducemax、splite、concat、transpose中的一个或任意组合。
[0046]
下面介绍一下softmax、reducemax、splite、concat、transpose中每个操作的含义:
[0047]
softmax,或称归一化指数函数计算。
[0048]
reducemax,用于计算张量指定维度的最大值。
[0049]
splite,用于对一个张量切割成多个张量的计算。
[0050]
concat,用于对多个张量合并成一个张量的计算。
[0051]
transpose,用于对张量执行转置计算。
[0052]
步骤s302、将所述α维张量中的至少二个维度映射至β维张量中的目标维度,所述β为正整数且β≤4;
[0053]
上述β可以选择4,当然也可以选择4以下的数值。需要说明的是,这里优先选择4,因为如果β越小,那么映射至β维度的一个维度的选择就越小,映射的维度数量就越多,增加的开销就越多,因此,这里优先选择β=4。
[0054]
上述目标维度具体可以为β维张量中的一个维度,例如第x维度。
[0055]
步骤s303、对所述β维张量执行该操作得到操作结果。
[0056]
本申请提供的技术方案在获取一个高维张量α张量后,确定该α张量的操作的类型,然后依据该类型从β个维度中确定目标维度(例如可以为x维度),将α张量中至少二个维度映射到β维张量中的目标维度,从而减少了高维张量的计算维度,实现了高维张量的计算,因此本申请的技术方案具有实现高维张量运算的优点。
[0057]
可选的,上述步骤s302的实现方法具体可以包括:
[0058]
解析所述操作,确定该操作的类型,依据所述类型确定该β维张量中的目标维度,将所述α维张量中的至少二个维度映射至所述目标维度。
[0059]
上述目标维度可以是β维张量中的一个维度,也可以是β维张量中的二个维度,大多数情况下,均为一个维度,下面也以一个维度为例来进行说明。
[0060]
具体的,可以采用如下确定目标维度的方式,如该操作为算术运算操作或转置操作,该算术运算操作包括但不限于:乘法操作、加法操作,则可以确定该目标维度为除了最内层维度以外的任意一个维度。
[0061]
上述将最内层维度排除在目标维度之外是因为如果映射到最内层维度,会改变存储器内存储的元素值的顺序,改变存储器内存储的元素值的顺序会产生存储开销,将目标维度确定为除最内层维度之外的任意维度,可以不改变存储器内存储的元素值的顺序,不会产生存储开销,具有减少存储开销的优点。
[0062]
可选的,如β=4,目标维度可以为第1维度或第-3维度。以nhwc为例,该第1维度或第-3维度即为h维度,因为选择h维度作为目标维度,方便将映射维度转移至与h维度相邻的维度。例如,x维度为h维度时,可以通过一个reshape指令即能够双向调整h维度,例如将映射维度调整至w维度或n维度,如果该x维度不是h维度,例如w维度,那么如果要调整w维度至n维度,对于放置w维度增加硬件的开销,对于放置在n维度,缺乏灵活性。
[0063]
为了更好的说明h维度与w维度(这里以w维度为例来说明),以一个实际的例子来说明。比如6维张量(a0,a1,a2,a3,a4,a5),目标维度为h维度,映射成了(a0,a1*a2*a3,a4,a5),如果需要在a2维度进行操作,可以先进行reshape,数据变为(a0*a1,a2,a3*a4,a5),这样就可以对a2进行操作了。这个reshape没有任何开销。如果目标维度为w维:(a0,a1,a2,a3,a4,a5),映射成了(a0,a1,a2*a3*a4,a5),如果需要对a2进行操作,需要进行reshape,变为(a0,a1,a2,a3*a4*a5),这样就可以对a2进行操作了,但是这个reshape改动了最低维度
(即-4维度),因此会增加硬件的开销。如果目标维度为n维:(a0,a1,a2,a3,a4,a5),映射成了(a0*a1*a2,a3,a4,a5),如果需要对a1进行操作,需要进行reshape,变为(a0,a1,a2*a3*a4,a5),然后对a1操作。此时不会增加硬件开销,但是在代码实现没有h维度灵活,缺乏灵活性。
[0064]
任意维度的transpose(转置)操作,可以通过4维的transpose+reshape操作组合实现,因为4维的transpose是一个完备的计算集合。
[0065]
比如transpose的输入α维(α=5)张量的形状为(a0,a1,a2,a3,a4),perm()=(0,2,1,3,4)。则确定该β维张量的x可以为除了最内层维度以外的任意维度,例如x=1,那么传递给人工智能学习库的β维张量形状为(a0,a1*a2,a3,a4),那么执行transpose指令时,先将(a0,a1*a2,a3,a4)reshape成(a0,a1,a2,a3*a4),再转置为(a0,a2,a1,a3*a4),再reshape成(a0,a2*a1,a3,a4)得到输出结果。这里需要说明的是,在执行transpose时,初始输入即β维张量的最内层维度不能映射多个维度,输出结果的最内层维度也不能映射多个维度。
[0066]
可选的,上述步骤s202的实现方法具体可以包括:
[0067]
如所述操作为某维度操作,确定所述目标维度为所述β维张量中除最内层维度和某维度以外的任一维度。
[0068]
上述某维度操作具体包括:softmax、reducemax、splite、concat、transpose中的任意一种操作。
[0069]
对于某维操作,例如reducemax操作,其需要对高维张量中的一个维度执行最大值计算,那么该维度不能与其他维度映射在β维张量的目标维度上,如果和其他维度映射在目标维度上,则无法执行某维操作的运算。例如一个5维张量(a0,a1,a2,a3,a4),其需要对第0维或第-5维执行reducemax运算,那么第0维或第-5维即a0维不能与其他维映射在一起,换句话说,β维张量中的第0维不能是目标维度,该目标维度可以选择第1维或第2维,具体的,例如β维张量具体可以为:(a0,a1*a2,a3,a4)或(a0,a1,a2*a3,a4)。
[0070]
下面以一个大于5维的高维张量为例来说明,假设这里的高维张量为(a[0],a[1],

a[x-1],a[x],a[x+1],

,a[-2],a[-1]),假设这里需要对第x维执行reducemax操作,则可以确定该目标维度可以为β维度中除了某维以及最内层维度以外的维度,即第0维和第2维,该β维张量具体可以为:(a[0]*a[1]*

a[x-1],a[x],a[x+1]*

*a[-2],a[-1])。
[0071]
参阅图4,图4提供一种张量处理装置,所述装置包括:
[0072]
获取单元401,用于获取待计算的α维张量以及计算操作,所述α为正整数且α≥5;
[0073]
解析单元402,用于解析所述计算操作确定该计算操作的类型;
[0074]
映射单元403,用于将所述α维张量中的至少二个维度映射至β维张量的目标维度,所述β为正整数且β≤4;
[0075]
计算单元404,用于对所述β维张量执行操作,实现所述张量处理。
[0076]
可选的,解析单元402,具体用于解析所述计算操作确定该计算操作的类型,依据所述类型确定该β维张量的目标维度,将所述α维张量中的至少二个维度映射至目标维度。
[0077]
可选的,解析单元402,具体用于如所述计算操作为算术运算操作,确定所述目标维度为所述β维张量中除最内层维度的任一维度;如所述计算操作为转置操作,确定所述目标维度为所述β维张量中除最内层维度的任一维度。
[0078]
可选的,如所述β=4,所述目标维度具体为:第2维度或第-3维度。
[0079]
可选的,所述算术运算操作包括:乘法操作、加法操作的一种或任意组合。
[0080]
可选的,解析单元402,具体用于如所述计算操作为某维度操作,确定所述目标维度为所述β维张量中除最内层维度和某维度以外的任一维度。
[0081]
可选的,所述某维度操作具体包括:softmax、reducemax、splite、concat、transpose中的任意一个或任意组合。
[0082]
参阅图5,图5为本申请还提供一种计算芯片,所述计算芯片包括:如图4所示装置。
[0083]
本申请还提供一种电子设备,所述电子设备包括如图5所示的芯片或如图4所示装置。
[0084]
本申请还提供一种计算机可读存储介质,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如图3所示的方法。
[0085]
本申请还提供一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如图3所示的方法。
[0086]
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1