Я использую внешний интерфейс torch C ++ и хочу иметь тензор с указанным значением. Чтобы достичь этого, можно выделить память и установить значение вручную, а затем использовать torch::from_blob
, чтобы построить тензор на блоке памяти, но он мне кажется недостаточно чистым.
В самом низу В этом документе я обнаружил, что могу использовать индекс для прямого доступа и изменения данных. Однако этот подход имеет большие накладные расходы времени выполнения, вероятно, потому, что доступ с индексом будет рассматривать элемент тензор как тензор 0-d. Следующий код будет стоить более 2 секунд на моем компьютере (-O3
уровень оптимизации), что неоправданно долго для современного процессора.
torch::Tensor tensor = torch::empty({1000, 1000});
for(int i=0; i < 1000; i++)
{
for(int j=0 ; j < 1000; j++)
{
tensor[i][j] = calc_tensor_data(i,j);
}
}
Существует ли чистый и быстрый способ достижения этой цели?