Стек Pytorch () добавляет измерение? - PullRequest
0 голосов
/ 21 сентября 2019

Я хочу поместить один тензорный массив shape=(1,2) поверх другого массива shape=(1,2) через dim=1, используя метод stack() Pytorch.

>>> import numpy as np
>>> import torch
>>> np_a = np.array([[1,2]])
>>> np_b = np.array([[3,4]])
>>> print(np_a)
[[1 2]]
>>> print(np_b)
[[3 4]]
>>> t_a = torch.from_numpy(np_a)
>>> t_b = torch.from_numpy(np_b)
>>> print(t_a)
tensor([[1, 2]])
>>> print(t_b)
tensor([[3, 4]])
>>> t_stacked = torch.stack((t_a, t_b), dim=1)
>>> print(t_stacked)
tensor([[[1, 2],
         [3, 4]]])

Полученный тензор имеет добавленныйразмерность и теперь имеет shape=(1,2,2).Почему stack() Пайторха не ведет себя как vstack() Нампи?См. Ниже:

>>> import numpy as np
>>> np_a = np.array([[1,2]])
>>> np_b = np.array([[3,4]])
>>> stacked = np.vstack((np_a, np_b))
>>> print(stacked)
[[1 2]
 [3 4]]

Как сделать так, чтобы Pytorch не добавлял измерение?

1 Ответ

1 голос
/ 21 сентября 2019

Я не могу сказать вам, почему было решено, что pytorch stack ведет себя не так, как numpy (возможно, совместимость с luatorch?).В любом случае, чтобы получить желаемый результат, вы можете использовать torch.cat:

>>> torch.cat((t_a, t_b), dim=0)     
tensor([[1, 2],
        [3, 4]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...