Matlab Mat2cell эквивалент в тензорном потоке или Pytorch - PullRequest
0 голосов
/ 14 июня 2019

У меня есть квадратная матрица, и я хотел бы разбить ее на несколько меньших матриц. Например, предположим, что у нас есть матрица в форме [4,4] и мы хотим преобразовать ее в 4 меньшие матрицы размером [2,2].

ввод:

[9, 9, 9, 9,
 8, 8, 8, 8,
 7, 7, 7, 7,
 6, 6, 6, 6] 

выход:

[[9, 9  | [9, 9,
 8, 8]  | 8, 8],
 ---------------
 [7, 7  | [7, 7,
 6, 6]  | 6, 6]] 

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Учитывая тензор с формой 4*4 или 1*16, самый простой способ сделать это с помощью функции просмотра или изменить форму:

a = torch.tensor([9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6])
# a = a.view(4,4)
a = a.view(2, 2, 2, 2)

# output:
tensor([[[[9, 9],
          [9, 9]],

         [[8, 8],
          [8, 8]]],


        [[[7, 7],
          [7, 7]],

         [[6, 6],
          [6, 6]]]])
0 голосов
/ 14 июня 2019

Вы можете использовать для этого повторные вызовы на torch.split.

>>> x
tensor([[ 1,  2,  3,  4],
        [ 5,  6,  7,  8],
        [ 9, 10, 11, 12],
        [13, 14, 15, 16]])
>>> [z for y in x.split(2) for z in y.split(2, dim=1)]
[tensor([[1, 2],
        [5, 6]]), tensor([[3, 4],
        [7, 8]]), tensor([[ 9, 10],
        [13, 14]]), tensor([[11, 12],
        [15, 16]])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...