如何批量设置张量索引的值

How to set value at Tensor index in batch

我有一个批量大小为 N 的张量。

t = [[...], [....], [....] .... ]

在第二个张量索引中,我有 N 个要在每个张量中更改的元素索引

indices = [i0, i1, i2 .... ]

所以我想通过

t 创建 t0
t0 = [[ set X at i0 ], [ set X at i1 ], [ set X at i2 ] .... ]

我怎样才能在 Torch 做到这一点?

您似乎在寻找以下内容:

t[torch.arange(N),indices]

举个例子:

import torch
a = torch.zeros((3,3))
a[torch.arange(3),[0,2,1]] = 0.2
print(a)

输出:

tensor([[0.2000, 0.0000, 0.0000],
        [0.0000, 0.0000, 0.2000],
        [0.0000, 0.2000, 0.0000]])

注意:此行为与 NumPy 的相同integer array indexing