问题标签 [libtorch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
10643 浏览

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

使用 C++ libtorch 前端Pytorch

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

就像是:

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

有没有更清洁的方法呢?

0 投票
0 回答
505 浏览

c++ - 零维张量和项目有什么区别?

这段代码占用大量内存:

这不是(item()在最后一个作业中注意)

为什么会这样?

0 投票
1 回答
1456 浏览

c++ - 带有 Cuda 的 LibTorch(C++) 引发异常

我正在尝试使用 Cuda 10.1 和 Windows 10 使用 LibTorch 1.3 和 C++ 创建 NN。对于构建,我使用的是 Visual Studio 2019。

到目前为止,我尝试了基本示例和MNIST 示例,其中 CPU 正在工作。但是我不能用 CUDA 运行它。我试图将模型移动到 GPU,如此处所述但它不起作用。

要将模型移动到 GPU 内存,您可以编写 model.to(at::kCUDA);。通过调用 tensor.to(at::kCUDA) 确保模型的输入也存在于 CUDA 内存中,这将在 CUDA 内存中返回一个新的张量。

所以我尝试了简单的

然后我尝试将简单的张量移动到 gpu 内存,但它也崩溃了。

我得到了:

KernelBase.dll在调试模式下,它指向

使用torch::cuda::is_available()显示它可以找到 cuda 设备。

我对异常没有太多经验。

0 投票
2 回答
3164 浏览

visual-studio - 在 Windows 上的 C++ 应用程序中使用 PyTorch 模型

按照官方 PyTorch教程,我在 Python 中创建了模型,通过跟踪将其转换为 Torch 脚本,并将脚本模块保存到.pt文件中。加载模型和 CMakeLists 的 C++ 代码与教程中的相同。

我下载了LibTorch 1.3(稳定,Windows,无CUDA,release)并解压,所以我的目录结构是:

我将 CMake 安装为组件的 Visual Studio 2019,因此我运行了 VS2019 的开发人员命令提示符并运行cd到项目目录 (cmakeapp)。

根据指南,我运行了以下命令来构建应用程序:

CMake 似乎成功了,除了一些警告:

现在第一个问题,既不工作make也不nmake工作:

我错过了什么吗?

其次,我找到了生成的custom_ops.sln文件,所以在 Visual Studio 中打开它。该项目提供 4 种不同的配置:Debug、MinSizeRel、Release 和 RelWithDebInfo。构建除 Release 之外的任何东西都会失败:

我对这个错误感到非常惊讶,因为指定了 libtorch 路径并且 CMake 成功找到了它。

第三,构建Release成功,但是跳过了ALL_BUILD项目:

不确定应该选择哪种解决方案配置来构建所有配置。

对于这些令人困惑的问题的澄清,我将不胜感激。

0 投票
2 回答
3029 浏览

c++ - 如何在 LibTorch (C++) 中将 Torch::Torch 的类型从 Float 更改为 Long

我正在使用 LibTorch(PyTorch C++ API)在 C++ 中编码。在这里,我传递了 predict_value 和 target_value,它们都是大小为 {1, 1} 的 torch::Tensor。

当我尝试评估上述内容时,出现以下错误:

我尝试搜索如何将浮点类型张量转换为长类型张量,但只能找到 Python 的文档。非常感谢您提出解决此问题的建议!

0 投票
0 回答
46 浏览

android - 使用 Android 工具链构建时,CMake 找不到库和包

我正在开发一个算法库,为 Android 应用程序提供预编译的 .so 文件。我们想在我们的库中使用 PyTorch C++ API,所以我付出了一些努力。但是我在尝试使用 CMake 构建时遇到了一些问题。

在不使用 NDK 中提供的情况下,构建工作良好android.cmake.toolchain,并且编译后的程序按预期运行。当我尝试使用android.cmake.toolchain构建库时出现问题, TorchConfig.cmake(此文件由 Torch 提供)中的以下两行奇怪地出错了:

尽管这些命令用于PATHS指定绝对路径,但 CMake 坚持认为无法找到这些包和库。我尝试使用message打印出这些路径并检查,CMaKe 应该寻找的文件(Caffe2Config.cmakelibc10.so)确实存在于指定的路径中。

我知道 android 工具链会更改要使用的编译器(捆绑的 clang),但我看不出 cmake 在我的情况下表现异常的原因。

0 投票
1 回答
1442 浏览

c++ - 在 Torch C++ API 中,如何快速写入张量的内部数据?

我正在使用 Torch C++ 前端,并希望在其中有一个具有指定值的张量。要实现这一点,可以手动分配内存并设置值,然后使用torch::from_blob在内存块上构建张量,但对我来说似乎不够干净。

在本文档的最底部,我发现可以使用下标直接访问和修改数据。但是,这种方法的运行时间开销很大,可能是因为下标访问会将张量的元素视为 0-d 张量。以下代码在我的机器上将花费超过 2 秒(-O3优化级别),这对于现代 CPU 来说太长了。

有没有一种干净快速的方法来实现这个目标?

0 投票
1 回答
2797 浏览

c++ - Libtorch:如何加载 ONNX 模型?

我需要在 Windows 10(Visual Studio 2015,v140)上使用 Libtorch 在 C++ 环境中加载和运行 ONNX 模型。在网上搜索,似乎几乎有关于如何在 Python 中执行此操作的独家说明。是否有一个有据可查的方式/有谁知道如何在 C++ 中做到这一点?

0 投票
1 回答
1529 浏览

c++ - 如何将代码从 Python Pytorch 翻译或转换为 C++ Libtorch

对于我的 Python Pytorch代码,我在Libtorch ( Pytorch C++ Frontend ) 中找不到等效的 C++ 调用。

根据我的搜索(Pytorch Discuss),我的代码尚不存在文档。我想知道是否有人可以指导我使用以下作品(如下)。

我在 Libtorch C++ 发生更多崩溃(错误使用)的地方进行了删减。

0 投票
3 回答
1557 浏览

c++ - Pytorch torch.cholesky 忽略异常

对于我的批次中的某些矩阵,由于矩阵是奇异的,我遇到了异常。

cholesky_cpu:对于批次 51100:U(22,22) 为零,单数 U

由于它们对于我的用例来说很少,我想忽略异常并进一步处理它们。我将结果计算设置为nan有可能以某种方式吗?

实际上,如果我仍然catch使用异常并使用continue它并没有完成其余批次的计算。

在带有 Pytorch libtorch 的 C++ 中也会发生同样的情况。