Вывод первого и второго значений в тензор - PullRequest
0 голосов
/ 14 октября 2019

Я знаю, что это может быть простой проблемой для некоторых из вас. Я не могу получить результат, как ожидалось. Входной тензор приведен ниже.

X = tensor([[50.7500, 44.0000],
        [47.0000, 47.0000],
        [42.5000, 52.2500],
        [59.6163, 50.7097],
        [54.6682, 54.6682],
        [48.7304, 61.5956],
        [71.3156, 59.5631],
        [64.7864, 64.7864],
        [56.9515, 73.9272]])

Мне нужны два тензора A и B, такие, что

A = tensor([[50.7500],
        [47.0000],
        [42.5000],
        [59.6163],
        [54.6682],
        [48.7304],
        [71.3156],
        [64.7864],
        [56.9515]]) and 
B = tensor([[44.0000],
        [47.0000],
        [52.2500],
        [50.7097],
        [54.6682],
        [61.5956],
        [59.5631],
        [64.7864],
        [73.9272]])

Это то, что я пытался до сих пор.

idx = torch.LongTensor([0]) 
idx1 = torch.LongTensor([1]) 
A = X.index_select(1,idx)
B = X.index_select(1,idx1)

, который не дает мне выводкак и ожидалось. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Вы можете использовать torch.split, чтобы разбить тензор на тензоры заданной длины (здесь: 1) вдоль желаемого размера (здесь: 1)

A, B = X.split(1, dim=1)

A
>>> tensor([[50.7500],
        [47.0000],
        [42.5000],
        [59.6163],
        [54.6682],
        [48.7304],
        [71.3156],
        [64.7864],
        [56.9515]])

B
>>> tensor([[44.0000],
        [47.0000],
        [52.2500],
        [50.7097],
        [54.6682],
        [61.5956],
        [59.5631],
        [64.7864],
        [73.9272]])

1 голос
/ 14 октября 2019

Вы хотите выбрать элементы из второго индекса в тензоре, вы можете сделать это следующим образом:

A=X[:,0]
B=X[:,1]

Вывод этого будет:

print(B)
>>>tensor([44.0000, 47.0000, 52.2500, 50.7097, 54.6682, 61.5956, 59.5631, 
64.7864, 73.9272])

print(A)                                                                                                                                                               
>>>tensor([50.7500, 47.0000, 42.5000, 59.6163, 54.6682, 48.7304, 
71.3156, 64.7864,56.9515])

Но так как выЕсли вам нужны двумерные тензоры, вы можете сделать

A.unsqueeze(dim=1)
B.unsqueeze(dim=1)

. В вышеупомянутом случае вам нужно было явно указать, какое измерение вы должны добавить / отменить, но вы можете избежать этого, используя список индексов, как показано ниже:

A = X[:, 0:1]
B = x[:, 1:2]

Использование индексов типа i:i+1 позволит сохранить числовые измерения от старого тензора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...