Pytorch-视图/平面(4、10、3、368、368)至(40、3、368、368)

时间:2019-04-16 00:28:57

标签: python multidimensional-array deep-learning pytorch tensor

一个人如何将形状为(4,10,3,368,368)的张量转换为(40,3,368,368)。我找不到与此有关的任何文档。我可以手工编写代码,但是我敢肯定有任何更简单的方法可以展平前两个索引。

2 个答案:

答案 0 :(得分:0)

您可以使用以下方法将5D张量重塑为4D:

# some sample tensor to work with
In [12]: shape = (4, 10, 3, 368, 368)
In [13]: tensor_5D = torch.randn(shape)

In [14]: tensor_5D.shape
Out[14]: torch.Size([4, 10, 3, 368, 368])

现在,我们将使用view()方法将前两个维度展平,从而重塑上述张量:

In [22]: tensor_4D = tensor_5D.view(tuple((-1, *shape[2:])))

# desired shape
In [23]: tensor_4D.shape
Out[23]: torch.Size([40, 3, 368, 368])

答案 1 :(得分:0)

PyTorch中有两个功能可以为您提供帮助。

  1. view():返回一个新的张量,其数据与自张量相同,但大小不同。

  2. reshape():返回具有与输入相同的数据和元素数量,但具有指定形状的张量。 如果可能,返回的张量将是输入视图。否则,它将是副本。

因此,以下两项均应起作用。

# input_tensor = (4, 10, 3, 368, 368)
output_tensor = input_tensor.view((-1, *input_tensor.shape[2:])) # option1
output_tensor = input_tensor.reshape((-1, *input_tensor.shape[2:])) # option2