在 PyTorch 中复制某些索引的张量元素

Copy tensor elements of certain indices in PyTorch

所需的操作在本质上与 torch.Tensor.index_copy 相似,但略有不同。

最好用一个例子来解释。

张量 A 具有我们将复制的原始值:

[10, 20, 30]

张量 B 的索引为 A:

[0, 1, 0, 1, 2, 1]

张量 CB 的长度相同,包含 A:

的索引值

[10, 20, 10, 20, 30, 20]

在 PyTorch 中从 AB 生成 C 而不使用循环的好方法是什么?

你试过只用 A 索引吗?

In [1]: import torch
  
In [2]: a = torch.tensor([20,30,40])

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

In [4]: a[b]
Out[4]: tensor([20, 30, 40, 30, 30, 40, 20, 20, 30, 40])