一种张量转置方法、装置、计算机及存储介质
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种张量转置方法、装置、计算机及存储介质。
背景技术
随着技术的进步,每天都有越来越多的数据被创建和分析。机器学习技术(例如深度学习和卷积神经网络),作为分析这些大量数据的重要方法,正变得日益重要。
张量是一个数学概念,包括标量、向量和线性算子,可通过坐标系统来表达,标记为张量的数字。张量被广泛应用于深度神经网络领域,用于表示神经元的权重信息。张量转置是神经网络中常用的一种张量操作,用于在逻辑上调换张量各维度的维度顺序,当神经网络中张量格式与原始张量数据格式不同时,可通过张量转置的处理方式将原始张量数据转换为神经网络中需求的张量格式。
目前,进行张量转置处理一般是采用直接内存访问设备(Direct Memory Access,DMA)实现,但是上述硬件仅支持有限维度的张量转置,无法实现其他任意维度的张量转置,尤其是维度大于硬件可支持的有限维度的张量数据。
发明内容
本发明提供一种张量转置方法、装置、计算机及存储介质,以实现对任意维度的张量数据进行转置处理。
第一方面,本发明实施例提供了一种张量转置方法,包括:
获取待处理的第一张量数据和所述第一张量数据的期望维度序列;
当所述第一张量数据的维度序列和所述期望维度序列不同时,根据转置处理顺序、所述第一张量数据的维度序列和所述期望维度序列确定当前处理的张量维度;
根据所述当前处理的张量维度和张量转换规则,将所述第一张量数据转换为第一预设维度数量的第二张量数据;
根据所述期望维度序列对所述第二张量数据中与所述第一张量数据中的当前处理的张量维度相对应的维度数据进行转置处理;
将处理后的第二张量数据进行张量反转换为第三张量数据,其中,所述第三张量数据与所述第一张量数据的维度数量相同。
第二方面,本发明实施例还提供了一种张量转置装置,该装置包括:
数据获取模块,用于获取待处理的第一张量数据和所述第一张量数据的期望维度序列;
当前处理的张量维度确定模块,用于当所述第一张量数据的维度序列和所述期望维度序列不同时,根据转置处理顺序、所述第一张量数据的维度序列和所述期望维度序列确定当前处理的张量维度;
第二张量数据确定模块,用于根据所述当前处理的张量维度和张量转换规则,将所述第一张量数据转换为第一预设维度数量的第二张量数据;
数据转置模块,用于根据所述期望维度序列对所述第二张量数据中与所述第一张量数据中的当前处理的张量维度相对应的维度数据进行转置处理;
第三张量数据确定模块,用于将处理后的第二张量数据进行张量反转换为第三张量数据,其中,所述第三张量数据与所述第一张量数据的维度数量相同。
第三方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例提供的张量转置方法。
第四方面,本发明实施例还提供了一种计算机,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明任意实施例提供的张量转置方法。
本发明实施例提供的技术方案,通过在确定当前处理的张量维度后,将维度数量较大的第一张量数据转换为硬件设备可处理的第一预设维度数量的第二张量数据,根据期望维度序列对第二张量数据进行转置处理,实现对当前处理的张量维度的转置。进一步的,通过上述转置方式,对第一张量数据中不符合期望维度序列的张量维度依次进行循环转置,达到通过已有硬件设备对任意维度的张量数据进行转置处理的效果,同时无需对硬件设备进行改进,降低成本。
附图说明
图1为本发明实施例一提供的一种张量转置方法的流程示意图;
图2为本发明实施例二提供的一种张量转置方法的流程示意图;
图3为本发明实施例三提供的一种张量转置装置的结构示意图;
图4是本发明实施例五中的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种张量转置方法的流程示意图,本实施例可适用于对任意维度的张量数据进行转置的情况,该方法可以由本申请实施例提供的张量转置装置来执行,具体包括如下步骤:
S110、获取待处理的第一张量数据和所述第一张量数据的期望维度序列。
其中,第一张量数据为需要进行转置处理的张量数据,第一张量数据的维度可以是任意维度,例如二维、三维、四维、五维或者其他维度。可选的,在获取第一张量数据之后,还包括确定所述第一张量数据的维度大小,各维度的维度大小,以及根据第一张量数据中各维度的顺序对各个维度设置标识,各维度的标识可以是序号、或者其他唯一表示一个维度数据的符号。示例性的,当第一张量数据为五维数据时,可以是依序设置各维度的标识(例如为序号)为0、1、2、3、4,即第一张量数据可表示为index(T)=[0,1,2,3,4],其中,index(T)用于通过维度序号表示第一张量数据T,第一张量数据T的维度数量为5,分别包括标识为0、1、2、3、4的五个维度的数据,其中,第一张量数据T中各不同维度的数据量(即维度大小不同),例如维度标识分别为0、1、2、3、4的维度大小可以是3、4、5、2、6,即dims(T)=[3,4,5,2,6],dims(T)用于提取第一张量数据T中各维度的维度大小。
可选的,在获取待处理的第一张量数据和所述第一张量数据的期望维度序列之后,还包括:确定所述第一张量数据的维度数量是否大于所述第二预设维度数量,若否,则根据所述期望维度序列对所述第一张量数据进行转置处理。其中,预设维度数量根据进行张量转置处理的硬件设备确定,若第一张量数据的维度数量小于或等于该硬件设备可处理的第二预设维度数量,则直接将第一张量数据输入至该硬件设备,使得该硬件设备根据第一张量数据的期望维度序列对第一张量数据进行转置处理,当若第一张量数据的维度数量大于该硬件设备可处理的第二预设维度数量,则继续执行本实施例的张量转置方法。例如,进行张量转置处理的硬件设备可以是但不限于直接内存访问设备。
张量转置是对张量数据中调换各维度的维度顺序,对各维度的数据不进行任何处理,第一张量数据的期望维度序列用于表征第一张量数据进行转置处理后生成的张量数据的维度序列,用于指示第一张量数据进行转置处理,例如index(T)=[0,1,2,3,4],第一张量数据的期望维度序列为ctrl=[4,0,3,1,2]。
S120、当所述第一张量数据的维度序列和所述期望维度序列不同时,根据转置处理顺序、所述第一张量数据的维度序列和所述期望维度序列确定当前处理的张量维度。
对第一张量数据的维度序列和期望维度序列进行比对,当第一张量数据的维度序列和期望维度序列相同时,表明无需进行转置处理或者已完成转置处理,当第一张量数据的维度序列和期望维度序列不同时,确定需要进行转置处理的张量维度。在本实施例中,根据转置处理顺序将不符合期望维度序列的张量维度依次进行转置处理,通过循环进行各张量维度的转置,实现对第一张量数据的转置处理。
其中,转置处理顺序可以是按照第一张量数据的维度序列由前向后,或者由后向前,可根据用户设置确定。本实施例中,以按照第一张量数据的维度序列由后向前为转置处理顺序为例进行描述。根据该转置处理顺序确定第一张量数据的维度序列中最后一个维度与期望维度序列中最后一个维度是否相同(例如可以是将维度的标识进行比对),若相同,则继续比对前一维度是否相同,若不相同,则将进行比对的维度需要进行转置处理,即将进行比对的维度确定为当前处理的张量维度。
可选的,根据转置处理顺序、所述第一张量数据的维度序列和所述期望维度序列确定当前处理的张量维度,包括:根据所述转置处理顺序依次对第一张量数据的维度序列和所述期望维度序列中同一位置的维度标识进行比对;根据首次比对失败时,所述期望维度序列中进行对比的维度标识确定当前处理的张量维度。对于index(T)=[0,1,2,3,4]和ctrl=[4,0,3,1,2],根据转置处理顺序,依次确定期望维度序列中对应的维度标识,其中,N为第一张量数据的张量数量,i为1至N-1,示例性的,当i=1是,ctrl(N-i+1)=2,在第一张量数据中,与ctrl(N-i+1)进行比对的维度标识为4,二者不同,将ctrl(N-i+1)(即维度标识为2的维度)确定为当前处理的张量维度。
需要说明的是,在确定当前处理的张量维度之前,还可以是确定是否易存在对第一张量维度中某些维度的转置处理,若是,则可知上述转置处理已对ctrl(N-i+1)的维度进行转置,直接对i+1对应的ctrl(N-i+1)进行维度标识比对,根据比对结果确定当前处理的张量维度。示例性的,若已进行的转置处理对应的i=2,则在本次处理中,直接比对i=3时ctrl(N-i+1)的维度标识与第一张量数据中对应位置的维度标识是否相同。
S130、根据所述当前处理的张量维度和张量转换规则,将所述第一张量数据转换为第一预设维度数量的第二张量数据。
其中,张量转换规则为在不影响第一张量数据中各数据存储顺序的情况下,将第一张量数据转换成第一预设维度数量的第二张量数据,第一预设维度数量根据进行张量转置处理的硬件设备确定,可选的,第一预设维度数量为小于或等于4,优先的,第一预设维度数量为4。需要说明的是,本实施例中,进行张量转置处理的硬件设备为可进行四维或四维以上维度数量的张量转置处理。本实施例中,将第一张量数据转换成第二张量数据时,需要进行转置处理的当前处理的张量维度保持不变,将其他维度的数据进行合并,已达到将大于第一预设维度数量的第一张量数据转换为第一预设维度数量的第二张量数据。
可选的,根据所述当前处理的张量维度和张量转换规则,将所述第一张量数据转换为第一预设维度数量的第二张量数据,包括:根据维度序列的比对结果,确定所述第一张量数据中如下条件的维度标识:当前处理的张量维度的第二维度标识、位于所述当前处理的张量维度位置前的不符合期望维度序列的第一维度标识、位于所述当前处理的张量维度位置后的不符合期望维度序列的第三维度标识和符合期望维度序列的第四维度标识;对于任一条件的维度标识,当所述条件的维度标识数量大于1时,根据所述第一张量数据中数据顺序将所述条件的维度标识对应的维度数据合并为同一维度的数据,生成第二张量数据。示例性的,对于第一张量数据T,index(T)=[0,1,2,3,4]和ctrl=[4,0,3,1,2],可知在第一张量数据中,当前处理的张量维度的第二维度标识为2,位于所述当前处理的张量维度位置前的不符合期望维度序列的第一维度标识包括0和1,位于所述当前处理的张量维度位置后的不符合期望维度序列的第三维度标识包括3和4,不存在符合期望维度序列的第四维度标识。据此,可将第一张量数据中的各维度根据上述比对结果进行分组,例如index(T)=[(0,1),2,(3,4)],本实施例中,可以是将具有符合相同比对条件的维度进行数据合并,已将较大维度的第一张量数据转换成较低维度的第二张量数据。示例性的,可以是将维度0和维度1进行合并,将维度3和维度4进行合并,合并后的张量数据的维度数量小于或等于进行张量转置的硬件设备的可处理维度数量,可对合并后的张量数据进行转置处理。
可选的,在本实施例中,所述方法还包括:对于任一条件的维度标识,当所述条件的维度标识数量等于1时,保持所述维度标识对应的维度数据,示例性的,对于当前处理的张量维度的第二维度标识只有标识2,则在张量数据的转换过程中,保持维度2的维度数据,不对该维度2的数据进行任何处理。需要说明的是,对于位于所述当前处理的张量维度位置前的不符合期望维度序列的第一维度标识、位于所述当前处理的张量维度位置后的不符合期望维度序列的第三维度标识和符合期望维度序列的第四维度标识,当所述条件的维度标识数量等于1时,同样保持所述维度标识对应的维度数据,不进行处理。
可选的,在本实施例中,所述方法还包括:对于任一条件的维度标识,当所述条件的维度标识数量为0时,将所述维度标识对应的维度数据设为1。对于张量数据,若增加维度大小为1的维度,不影响张量数据,示例性的,张量数据T,dims(T)=[3,1],对张量数据T增加一个维度,生成新的张量数据T’,dims(T’)=[3,1,1],可知上述两个张量数据相同。本实施例中,为了将第一张量数据转换为四维的第二张量数据,当维度标识数量为0时,在该维度标识对应位置增加一个维度大小为1的维度。示例性的,对于第一张量数据T,index(T)=[0,1,2,3,4]和ctrl=[4,0,3,1,2],可以是第一张量数据设置为index(T)=[(0,1),2,(3,4),()],其中,“()”表示存在一个维度大小为1的维度。相应的,dims(T’)=[12,5,12,1],便于硬件设备对第一张量数据进行转换。
本实施例中,可以是对第一维度标识、第二维度标识、第三维度标识和第四维度标识可以是不同于第一张量数据中的维度标识,示例性的,第二张量数据可以是T’,index(T’)=[A,B,C,D],其中,维度A为第一张量数据中维度标识0和1的维度合并而成,维度C为第一张量数据中维度标识3和4的维度合并而成。需要说明的是,第一维度标识、第二维度标识、第三维度标识和第四维度标识同样可以是数字,其中,用于表示第一维度标识、第二维度标识、第三维度标识和第四维度标识的数字与用于标识每一个维度的标识含义不同。
S140、根据所述期望维度序列对所述第二张量数据中与所述第一张量数据中的当前处理的张量维度相对应的维度数据进行转置处理。
本实施例中,根据期望维度序列中当前处理的张量维度的位置,确定第二张量数据中第二维度标识的期望位置,根据该期望位置对第二张量数据中第二维度标识对应的维度数据进行转置处理。可选的,根据所述期望维度序列对所述第二张量数据中与所述第一张量数据中的当前处理的张量维度相对应的维度数据进行转置处理,包括:根据所述期望维度序列对所述第一维度标识、第二维度标识、第三维度标识和第四维度标识的期望序列;根据所述期望序列调节各维度标识对应的维度数据的位置。其中,对于按照第一张量数据的维度序列由后向前的转置处理顺序,第一维度标识、第二维度标识、第三维度标识和第四维度标识的期望序列可以是ctrl’=[A,C,B,D],对于按照第一张量数据的维度序列由前向后的转置处理顺序,第一维度标识、第二维度标识、第三维度标识和第四维度标识的期望序列可以是ctrl’=[D,B,C,A],将第二张量数据,以及第二张量数据的期望序列输入至硬件设备进行转置处理,实现对当前处理的张量维度的转置。具体的,可以是将index(T’)=[A,B,C,D]和ctrl’=[A,C,B,D]输入至硬件设备,执行T’=transpose(T’,[A,C,B,D])操作,实现对第二张量数据的装置。
S150、将处理后的第二张量数据进行张量反转换为第三张量数据,其中,所述第三张量数据与所述第一张量数据的维度数量相同。
本实施例中,对第二张量数据进行反转换即对第二张量数据中经合并生成的维度进行反向拆分,示例性的,将第一张量数据index(T)=[(0,1),2,(3,4),()]转换为index(T’)=[A,B,C,D],对于进行转置后的第二张量数据为[A,C,B,D],相应的,将经合并生成的维度标识A和C的维度数据进行反向拆分,得到第三张量数据index(T”)=[0,1,3,4,2]。在得到第三张量数据之后,将该第三张量数据作为新的第一张量数据,继续执行步骤S120,直到第三张量数据的维度序列与期望维度序列相同,即完成对原始第一张量数据的转置。
循环执行步骤S110至步骤S150,根据张量转置顺序依次对张量维度进行循环转置,当第三张量数据的维度序列与期望维度序列相同时,完成对任意维度的第一张量数据的转置处理。
本实施例的技术方案,通过在确定当前处理的张量维度后,将维度数量较大的第一张量数据转换为硬件设备可处理的第一预设维度数量的第二张量数据,根据期望维度序列对第二张量数据进行转置处理,实现对当前处理的张量维度的转置。进一步的,通过上述转置方式,对第一张量数据中不符合期望维度序列的张量维度依次进行循环转置,达到通过已有硬件设备对任意维度的张量数据进行转置处理的效果,同时无需对硬件设备进行改进,降低成本。
在一些实施例中,在步骤S120之后,还可以是包括确定当前处理的张量维度是否存在可同步转置的维度。具体的,确定当前处理的张量维度与至少一个相邻维度的第一相对位置关系,确定期望维度序列中所述当前处理的张量维度与所述至少一个相邻维度的第二相对位置关系,若第一相对位置关系与第二相对位置关系相同时,将该至少一个相邻维度确定为当前处理的张量维度的可同步转置的维度,将当前处理的张量维度与可同步转置的至少一个相邻维度进行同步转置。示例性的,对于第一张量数据,index(T)=[0,1,2,3,4]和ctrl=[4,0,3,1,2],当前处理的张量维度为维度2,维度2和维度1在第一张量数据中的第一相对位置关系和在期望维度序列中的第二相对位置关系相同,则对维度2和维度1进行同步转置,即将维度2和维度1作为当前处理的两个张量维度。对第一张量数据进行转换时,index(T)=[0,(1,2),(3,4),()],即第二张量数据中index(T’)=[A,B,C,D],维度标识为A的维度为第一张量数据中的维度标识0的维度,维度标识为B的维度为第一张量数据中的维度标识1和维度标识2的两个维度合并生成,维度标识C的维度为第一张量数据中的维度标识3和维度标识4的两个维度合并生成。相应的,对第二张量数据进行转置处理,并进行反转换得到的第三张量数据为index(T”)=[0,3,4,1,2]。
本实施例中,通过将可同时进行转置处理的两个或两个以上的张量维度同步进行转置处理,减少了循环处理次数,提高了转置处理效率。
实施例二
图2是本发明实施例提供的一种张量转置方法的流程示意图,在上述实施例的基础上,对张量转置方法进行细化,具体包括如下步骤:
S210、获取待处理的第一张量数据和所述第一张量数据的期望维度序列。
S220、当所述第一张量数据的维度序列和所述期望维度序列不同时,根据转置处理顺序、所述第一张量数据的维度序列和所述期望维度序列确定当前处理的张量维度。
S230、根据所述当前处理的张量维度和张量转换规则,将所述第一张量数据转换为第一预设维度数量的第二张量数据,其中,在所述第二张量数据中,合成维度数据的维度大小为用于合成的各原始维度数据的维度大小的乘积。
在本实施例中,对张量数据的存储是依序各张量维度中的数据进行顺序存储,基于上述存储特性,对于二维张量
和一维张量T'=[a b c d]在张量存储过程中,数据存储顺序相同。基于上述数据存储特性,对维度数量较大的第一张量数据转换为维度数量较小的第二张量数据。其中,第一张量数据index(T)=[(0,1),2,(3,4),()],dims(T)=[3,4,5,2,6],第二张量数据index(T’)=[A,B,C,D],其中将维度0和维度1进行合并时,将两个维度的数据转换为一个维度数据,即将维度为3×4的数据转换为维度为12×1的数据,同理,对维度3和维度4进行合并,生成的第二张量数据为dims(T’)=[12,5,12,1]。
S240、根据所述期望维度序列对所述第二张量数据中与所述第一张量数据中的当前处理的张量维度相对应的维度数据进行转置处理。
S250、根据用于合成所述合成维度数据的各原始维度数据的数量和维度大小确定所述合成维度数据的拆分维度数据的数量的维度大小。
S260、根据数据顺序、拆分维度数据的数量的维度大小对所述合成维度数据进行拆分,生成所述第三张量数据。
其中,在第一张量数据转换为第二张量数据的过程中,将维度标识0和维度标识1的维度合并生成维度A,确定维度标识0的维度大小为3,维度标识1的维度大小为4,可知维度A拆分维度数据的数量的维度大小分别为3和4。将该维度A拆分为维度大小为3和维度大小为4的两个维度数据。需要说明的是,确定用于合成所述合成维度数据的各原始维度数据的顺序,在对合成维度数据进行拆分时,拆分的两个维度数据顺序与用于合成所述合成维度数据的各原始维度数据的顺序相同,以保证第三张量数据的准确性,示例性的,该用于合成维度A的维度0和维度1,维度0在维度1之前,即对维度A进行拆分时,将维度A拆分为3×4的两个维度,而非4×3的两个维度。
本实施例提供的技术方案,通过根据张量数据存储特性,对任意维度的第一张量数据转换为硬件设备可进行转置的第二张量数据,对第二张量数据进行转置后,根据张量转换规则进行反向转换,得到处理后的第三张量数据,保证转置后各维度数据的准确性,保证转置处理精度。
实施例三
图3是本发明实施例三提供的一种张量转置装置,该张量转置装置具有包括:
数据获取模块310,用于获取待处理的第一张量数据和所述第一张量数据的期望维度序列;
当前处理的张量维度确定模块320,用于当所述第一张量数据的维度序列和所述期望维度序列不同时,根据转置处理顺序、所述第一张量数据的维度序列和所述期望维度序列确定当前处理的张量维度;
第二张量数据确定模块330,用于根据所述当前处理的张量维度和张量转换规则,将所述第一张量数据转换为第一预设维度数量的第二张量数据;
数据转置模块340,用于根据所述期望维度序列对所述第二张量数据中与所述第一张量数据中的当前处理的张量维度相对应的维度数据进行转置处理;
第三张量数据确定模块350,用于将处理后的第二张量数据进行张量反转换为第三张量数据,其中,所述第三张量数据与所述第一张量数据的维度数量相同。
可选的,当前处理的张量维度确定模块320包括:
维度序列比对单元,用于根据所述转置处理顺序依次对第一张量数据的维度序列和所述期望维度序列中同一位置的维度标识进行比对;
当前处理的张量维度确定单元,用于根据首次比对失败时,所述期望维度序列中进行对比的维度标识确定当前处理的张量维度。
可选的,第二张量数据确定模块330包括:
维度标识确定单元,用于根据维度序列的比对结果,确定所述第一张量数据中如下条件的维度标识:当前处理的张量维度的第二维度标识、位于所述当前处理的张量维度位置前的不符合期望维度序列的第一维度标识、位于所述当前处理的张量维度位置后的不符合期望维度序列的第三维度标识和符合期望维度序列的第四维度标识;
第一数据处理单元,用于对于任一条件的维度标识,当所述条件的维度标识数量大于1时,根据所述第一张量数据中数据顺序将所述条件的维度标识对应的维度数据合并为同一维度的数据,生成第二张量数据。
可选的,第二张量数据确定模块330还包括:
第二数据处理单元,用于对于任一条件的维度标识,当所述条件的维度标识数量等于1时,保持所述维度标识对应的维度数据;
第三数据处理单元,用于对于任一条件的维度标识,当所述条件的维度标识数量为0时,将所述维度标识对应的维度数据设为1。
可选的,数据转置模块340包括:
期望序列确定单元,用于根据所述期望维度序列对所述第一维度标识、第二维度标识、第三维度标识和第四维度标识的期望序列;
数据位置调节单元,用于根据所述期望序列调节各维度标识对应的维度数据的位置。
可选的,在所述第二张量数据中,合成维度数据的维度大小为用于合成的各原始维度数据的维度大小的乘积;
相应的,第三张量数据确定模块350用于:
根据用于合成所述合成维度数据的各原始维度数据的数量和维度大小确定所述合成维度数据的拆分维度数据的数量的维度大小;
根据数据顺序、拆分维度数据的数量的维度大小对所述合成维度数据进行拆分,生成所述第三张量数据。
可选的,所述装置还包括:
维度判断摸,用于在获取待处理的第一张量数据和所述第一张量数据的期望维度序列之后,确定所述第一张量数据的维度数量是否大于所述第二预设维度数量,若否,则根据所述期望维度序列对所述第一张量数据进行转置处理。
上述张量转置装置可执行本发明任意实施例所提供的张量转置方法,具备执行张量转置方法相应的功能模块和有益效果。
实施例四
本发明实施例四提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的张量转置方法。所述方法包括:
获取待处理的第一张量数据和所述第一张量数据的期望维度序列;
当所述第一张量数据的维度序列和所述期望维度序列不同时,根据转置处理顺序、所述第一张量数据的维度序列和所述期望维度序列确定当前处理的张量维度;
根据所述当前处理的张量维度和张量转换规则,将所述第一张量数据转换为第一预设维度数量的第二张量数据;
根据所述期望维度序列对所述第二张量数据中与所述第一张量数据中的当前处理的张量维度相对应的维度数据进行转置处理;
将处理后的第二张量数据进行张量反转换为第三张量数据,其中,所述第三张量数据与所述第一张量数据的维度数量相同。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
实施例五
图4为本发明实施例四提供的一种计算机设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性计算机设备500的框图。图4显示的计算机设备500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,计算机设备500以通用计算设备的形式表现。计算机设备500的组件可以包括但不限于:一个或者多个处理器或者处理单元501,系统存储器502,连接不同系统组件(包括系统存储器502和处理单元501)的总线503。
总线503表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备500典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备500访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器502可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)504和/或高速缓存存储器505。计算机设备500可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统506可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线503相连。存储器502可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块507的程序/实用工具508,可以存储在例如存储器502中,这样的程序模块507包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块507通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备500也可以与一个或多个外部设备509(例如键盘、指向设备、显示器512等)通信,还可与一个或者多个使得用户能与该计算机设备500交互的设备通信,和/或与使得该计算机设备500能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口510进行。并且,计算机设备500还可以通过网络适配器511与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器511通过总线503与计算机设备500的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元501通过运行存储在系统存储器502中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的张量转置方法。
所述方法包括:
获取待处理的第一张量数据和所述第一张量数据的期望维度序列;
当所述第一张量数据的维度序列和所述期望维度序列不同时,根据转置处理顺序、所述第一张量数据的维度序列和所述期望维度序列确定当前处理的张量维度;
根据所述当前处理的张量维度和张量转换规则,将所述第一张量数据转换为第一预设维度数量的第二张量数据;
根据所述期望维度序列对所述第二张量数据中与所述第一张量数据中的当前处理的张量维度相对应的维度数据进行转置处理;
将处理后的第二张量数据进行张量反转换为第三张量数据,其中,所述第三张量数据与所述第一张量数据的维度数量相同。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。