Pytorch - вид / сплющить (4, 10, 3, 368, 368) до (40, 3, 368, 368) - PullRequest
0 голосов
/ 16 апреля 2019

Как можно преобразовать тензор формы (4, 10, 3, 368, 368) в (40, 3, 368, 368). Я не могу найти какую-либо документацию по этому вопросу. Я мог бы написать код, но уверен, что есть более простой способ сгладить первые два индекса.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

В 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
0 голосов
/ 16 апреля 2019

Вы можете использовать следующее, чтобы преобразовать ваш 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])
...