Отмена тензорного dstack и повторная загрузка по столбцам

#pytorch #tensor

Вопрос:

У меня есть два, тензоры a и b :

 import torch

a = torch.tensor(([1,2],
                  [3,4],
                  [5,6],
                  [7,8]))

b = torch.tensor(([0,0],
                  [1,1],
                  [2,2],
                  [3,3]))
 

Которые я могу складывать как по горизонтали, так и по глубине.

 d = torch.dstack([a, b])
h = torch.hstack([a, b])
 

Итак, есть ли какая-либо функция PyTorch, предпочтительно в одной строке, к которой я могу применить d , чтобы получить h ? Похоже, что я хочу отменить укладку по глубине и повторно сложить их по столбцам. Я пробовал изменять и выравнивать, но ни то, ни другое не работает, так как они оба нарушают порядок значений.

Ответ №1:

в вашем случае используйте torch.unbind

 import torch

a = torch.tensor(([1,2],
                  [3,4],
                  [5,6],
                  [7,8]))

b = torch.tensor(([0,0],
                  [1,1],
                  [2,2],
                  [3,3]))

d = torch.dstack([a, b])
h = torch.hstack(torch.unbind(d,2)) # get h from d
 

Комментарии:

1. Огромное спасибо. Я просмотрел всю документацию, но никогда бы не подумал, что она пройдет мимо unbind .