Как сгенерировать новый тензор по заданным индексам и тензор в pytorch? - PullRequest
1 голос
/ 23 сентября 2019

У меня есть такой тензор:

x = torch.tensor([[3, 4, 2], [0, 1, 5]])

, и у меня есть такие индексы:

ind = torch.tensor([[1, 1, 0], [0, 0, 1]])

тогда я хочу сгенерировать новый тензор с помощью x и ind:

z = torch.tensor([0, 1, 2], [3, 4, 5])

Я использую Python так:

# -*- coding: utf-8 -*-

import torch

x = torch.tensor([[3, 4, 2], [0, 1, 5]])
ind = torch.tensor([[1, 1, 0], [0, 0, 1]])

z = torch.zeros_like(x)
for i in range(x.shape[0]):
    for j in range(x.shape[1]):
        z[i, j] = x[ind[i][j]][j]

print(z)

Я хочу знать, как решить эту проблему с помощью pytorch?

1 Ответ

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

Вы ищете torch.gather

In [1]: import torch

In [2]: x = torch.tensor([[3, 4, 2], [0, 1, 5]])

In [3]: ind = torch.tensor([[1, 1, 0], [0, 0, 1]])

In [4]: torch.gather(x, 0, ind)
Out[4]:
tensor([[0, 1, 2],
        [3, 4, 5]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...