Как нарезать тензоры с предопределенным порядком в горелке?

У меня есть набор данных длиной 10 train = torch.range(1,10), Я хочу нарезать его в случайном порядке, определяемом p = torch.randperm(10),

Чтобы получить срез по диапазонам можно сделать a = train[{{1,3}}] чтобы получить элементы, первые три элемента. Но допустим, я хочу 2-й, 3-й и 9-й элементы. Могу ли я получить это без использования цикла 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}}] }}] не работает

1 ответ

Решение

Ну, для одного есть индекс, однако он требует longTensors:

train = torch.range(1,10)
p = torch.randperm(10):long()
print(train:index(p))
Другие вопросы по тегам