如何在火炬中使用预定义的顺序对张量进行切片?

How to slice tensors with a predefined order in torch?

我有一个长度为 10 train = torch.range(1,10) 的数据集。我想按照 p = torch.randperm(10).

定义的随机顺序对其进行切片

要按范围获取切片,可以 a = train[{{1,3}}] 获取前三个元素的元素。但是可以说我想要第二、第三和第九个元素。我可以在不像这样运行 for 循环的情况下得到这个吗

for i = 1,3 do
  print(a[{ p[i] }])
end

其中

p[1] = 2, p[2] = 3, p[3] = 9. 

a = train[{{ p[{{1,3}}] }}] 不起作用。

好吧,对于一个 index,它需要 longTensors:

train = torch.range(1,10)
p = torch.randperm(10):long()
print(train:index(p))