В pytorch, почему существует разница в индексации тензора между этими методами - PullRequest
2 голосов
/ 03 февраля 2020

У меня есть тензор формы: (batch_size, max_length, embedding_dim).

Каждый образец соответствует предложению (списку токенов). У меня также есть список индексов, по одному на образец формы (batch_size). Я хотел бы собрать встроенный вектор, который соответствует индексу в каждом предложении, в тензор формы: (batch_size, embedding_dim). Звучит просто, верно?

Однако я не могу понять, что я делаю неправильно с этими параметрами:

# option 1, doesn't work:
torch.gather(batch, dim=1, index=indices)
# option 2, doesn't work:
torch.index_select(batch, dim=1, index=indices)
# option 3, doesn't work:
batch[:, indices]
# option 4, the one that works:
batch[range(batch_size), indices]

В чем различия? Как правильно использовать каждый?

Спасибо

...