Создайте torch :: Tensor из массива C / C ++, не используя "from_blob (...) ..." - PullRequest
0 голосов
/ 30 октября 2019

Использование внешнего интерфейса C ++ libtorch для Pytorch

Я хочу создать torch::Tensor из массива C ++ double[].
Я не смог найти простую документациюо теме нет ни в документах , ни на форумах.

Что-то вроде:

double array[5] = {1, 2, 3, 4, 5};
auto tharray = torch::Tensor(array, 5, torch::Device(torch::kCUDA));

Единственное, что я нашел, это использовать torch::from_blob, но тогда мне бы пришлось clone() и использовать to(device), если бы я хотел использовать его сCUDA.

double array[] = { 1, 2, 3, 4, 5};
auto options = torch::TensorOptions().dtype(torch::kFloat64);
torch::Tensor tharray = torch::from_blob(array, {5}, options);

Есть ли способ сделать это чище?

1 Ответ

0 голосов
/ 30 октября 2019

Подробнее о создании тензора можно прочитать здесь: https://pytorch.org/cppdocs/notes/tensor_creation.html

Я не знаю ни одного способа создания тензора из массива без использования from_blob, но вы можете использовать TensorOptions для управленияразличные вещи о тензоре, включая его устройство.

На основе вашего примера вы можете создать свой тензор на графическом процессоре следующим образом:

double array[] = { 1, 2, 3, 4, 5};
auto options = torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCUDA, 1);
torch::Tensor tharray = torch::from_blob(array, {5}, options);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...