Как нарезать тензоры с предопределенным порядком в горелке?
У меня есть набор данных длиной 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))