一个人如何将形状为(4,10,3,368,368)的张量转换为(40,3,368,368)。我找不到与此有关的任何文档。我可以手工编写代码,但是我敢肯定有任何更简单的方法可以展平前两个索引。
答案 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中有两个功能可以为您提供帮助。
因此,以下两项均应起作用。
# 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