4.1张量的操作(broadcasting维度自动扩张,拼接与拆分)

1:Broadcasting维度的自动扩张

 特点:能够进行维度的自动扩张,而又不复制数据。

使用例如下图:

 例如上图:A 形状为[4,32,14,14]的tensor与B 形状为[32]的tensor相加,首先需要右对齐,由于右对齐32与A最右边的

的14不匹配,故需要先手动添加两个维度生成B [32,1,1],然后使用broadcasting进行自动扩张成[4,32,14,14]。

【注】broadcasting可以使用的情况:只有维度为1的能与不相等的维度对齐。例如:1能与32对齐,3不能。

 

 2:cat(list,d)/stack(list,d)拼接

(1)cat(list,d)参数list为需要拼接的tensor,参数d为需要拼接的索引维度。

 【注】需要拼接的索引维度的大小可以不同,其它必须相同。

 (2)stack(list,d)拼接:执行了两步:1:添加一个大小为1的维度 2:对添加的维度进行拼接 

参数list为需要拼接的tensor,参数d为需要插入的维度也即是需要拼接的索引维度.

 【注】原来维度的大小必须相同。

3:split(list,d)或者 split(int,d)拆分:参数list为要拆分索引维度的拆分的长度列表,d为要拆分的索引维度;int 为要拆分成等长的长度,d为要拆分的维度。

Chunk(int,d)拆分:参数int为拆分的数量,d是需要拆分的索引维度

 

 【注】两者一个是按照长度进行拆分,一个是按照数量进行拆分。

原文地址:https://www.cnblogs.com/jiafeng1996/p/14993325.html