在不使用“from_blob(...)...”的情况下从 C/C 数组创建一个 torch::Tensor

新手上路,请多包涵

将 C++ libtorch 前端用于 Pytorch

我想从 C++ double[] 数组创建一个 torch::Tensor 。来自旧版 C/C++ API。我在 文档 和论坛中都找不到关于该主题的简单文档。

就像是:

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

我发现的唯一方法是使用 torch::from_blob 但如果我想将它与 CUDA 一起使用,我将不得不使用 clone() 并使用 to(device)

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

有没有更清洁的方法呢?

原文由 imbr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 655
1 个回答

您可以在此处阅读有关张量创建的更多信息: https ://pytorch.org/cppdocs/notes/tensor_creation.html

我不知道有任何方法可以在不使用 from_blob 的情况下从数组创建张量,但您可以使用 TensorOptions 来控制有关张量的各种事情,包括其设备。

根据您的示例,您可以在 GPU 上创建张量,如下所示:

 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);

原文由 JoshVarty 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题