问题标签 [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 投票
1 回答
426 浏览

c++ - libtorch (PyTorch C++) 奇怪的类语法

在 GitHub 上的官方 PyTorch C++ 示例中, 可以看到一个奇怪的类定义:

我的理解是,这定义了一个CustomDataset“继承自”或“扩展”的类torch::data::datasets::Dataset<CustomDataset>。这对我来说很奇怪,因为我们正在创建的类是从另一个由我们正在创建的类参数化的类继承的......这甚至是如何工作的?这是什么意思?在我看来,这就像一个Integer继承自 的类vector<Integer>,这似乎很荒谬。

0 投票
1 回答
312 浏览

c++ - Libtorch:如何从 tensorRT fp16 半类型指针创建张量?

如何从 libtorch 中的 tensorRT fp16 半类型指针创建张量?我正在研究检测模型。我把它的主干改成tensorRT做FP16推理,解码盒和nms等检测代码是在libtorch和torchvisoin中完成的,那么如何从tensorRT半类型指针创建fp16张量呢?重要的代码是为了说明问题:

提前致谢。

0 投票
1 回答
486 浏览

cmake - 结合两个 CMakeLists.txt 文件(ROS 和 Libtorch)

我正在尝试组合两个 CMakeLists.txt 文件来编译一个同时具有 ROS 和 Libtorch 依赖项的 C++ 程序。下面提供了各个文件:

Libtorch CMakeLists.txt 文件:

我在这里找到了这个:https ://pytorch.org/cppdocs/installing.html

ROS CMakeListis.txt 文件:

程序 example-app.cpp 有 ROS 和 LibTorch 两个库。

所以这是我试图做的:

代码test_quad.cpp(以前称为example-app.cpp)包含ros头文件和torch头文件:

但是,我收到以下错误。

有人可以帮我吗?

太感谢了。

0 投票
1 回答
1026 浏览

c++ - pytorch / libtorch C++ 中的自定义子模块

完全披露,几天前我在 PyTorch 论坛上问了同样的问题,但没有得到回复,所以这在技术上是一个转发,但我相信这仍然是一个好问题,因为我一直无法在网上的任何地方找到答案. 开始:

您能否展示一个将 register_module 与自定义模块一起使用的示例? 我在网上找到的唯一示例是将线性层或卷积层注册为子模块。

我试图编写自己的模块并将其注册到另一个模块,但我无法让它工作。我的 IDE 告诉我no instance of overloaded function "MyModel::register_module" matches the argument list -- argument types are: (const char [14], TreeEmbedding)

(TreeEmbedding 是我创建的另一个结构的名称,它扩展了 torch::nn::Module。)

我错过了什么吗?这方面的一个例子会很有帮助。



编辑:附加上下文如下。

我有一个头文件“model.h”,其中包含以下内容:

我还有一个 cpp 文件“model.cpp”,其中包含以下内容:

此设置仍然存在与上述相同的错误。文档中的代码确实可以工作(使用线性层等内置组件),但使用自定义模块则不行。在追踪torch::nn::Linear之后,它看起来好像是一个ModuleHolder(不管是什么......)

谢谢,杰克

0 投票
1 回答
878 浏览

c++ - 如果我改变形状,Pytorch C++ (libtorch) 会输出不同的结果

所以我现在正在学习神经网络,我注意到我的网络中有一些非常奇怪的东西。我有一个像这样创建的输入层

和一个输出层,它是一个 tanh 函数。

所以它期待一个形状为 {/ batchSize /, 4, / sideLength /, / sideLength / } 的 torch::Tensor,它将输出一个只有 1 个浮点值的张量。

因此,为了进行测试,我创建了一个形状为 {4, 15, 15} 的自定义张量。

真正奇怪的部分是下面发生的事情

那么为什么 customTensor 从我的网络中获得 2 个不同的值只是因为批量大小发生了变化?我不了解张量如何工作的某些部分吗?

PS我确实检查了上面的代码块在评估模式下运行。

编辑:既然有人问过这里,请更深入地了解我的网络

它是如何前进的

0 投票
0 回答
298 浏览

swift - 使用 LibTorch 依赖构建 Swift macOS 应用程序时遇到问题

我最近使用 LibTorch 构建了一个移动(iOS)应用程序,以本教程为指导:https ://medium.com/flawless-app-stories/on-device-machine-learning-with-swiftui-and-pytorch-mobile -aa0dcec5d881。该项目将 CocoaPods 用于 LibTorch 依赖项,因此非常简单,但现在我正在尝试构建应用程序的 macOS 版本,老实说,我不明白如何构建和链接到 LibTorch for macOS(pod 似乎仅限 iOS)。我在 Swift 中工作,并且有使用 Obj-C、Java 和 Python 的经验,但对 C/C++ 了解不多,所以构建和链接 C/C++ 的整个过程对我来说非常陌生。

我已经阅读了 macOS 上的 LibTorch C++ 教程(此处:https ://medium.com/@albertsundjaja/installing-pytorch-c-api-d52c722f47ec ),构建了一个基本的 C++“example-app”与 libtorch 依赖项. 这很好用,但我不确定这些知识如何转化为在 Xcode 中构建具有 LibTorch 依赖项的 Swift 应用程序。

我也尝试过这里的指南:https ://github.com/rystylee/ofxLibTorch ,但是有很多Undefined symbols for architecture x86_64:错误。我正在尝试链接到从这里下载的 LibTorch:https ://pytorch.org/get-started/locally/

非常感谢任何帮助、建议或指向其他指南的链接。我在 Xcode 11.4.1 和 Catalina 上(根据我的阅读,它有自己的一系列问题)。

更新:深入这个兔子洞,我最终打了这个:Catalina C++: Using <cmath> headers yield error: no member named 'signbit' in the global namespace,但没​​有一个“解决方案”似乎有帮助(具体来说,我看到cmath相关线程中多次提到的问题)。

0 投票
1 回答
2041 浏览

c++ - PyTorch C++ 前端向前返回多个张量

我想知道如何std::vector<torch::Tensor>在模块类的前向传递中返回 a,我在文档中阅读了FORWARD_HAS_DEFAULT_ARGS的宏,但并不真正了解如何使用它,以及如何使用它来实现返回一个向量作为回报。先感谢您。

0 投票
2 回答
818 浏览

opencv - 无法使用 cmake 将项目与 OpenCV 和 LibTorch 链接

几天前,我问了一个关于将项目与 OpenCV 链接的类似问题。我得到了这个工作,但现在我遇到了一个非常奇怪的问题,使用 CMake 并将 LibTorch 添加到项目中。

如果我只在项目中使用 OpenCV,那么一切都可以编译、链接并运行良好。

但是,如果我将 Torch 添加到 CMakeLists.txt,则会出现链接器错误:

此 CMakeLists.txt 文件会导致此错误:

这是命令:

我尝试了很多不同的命令组合,但我无法弄清楚我们出了什么问题。当我回显 TORCH_LIBRARIES 变量时,它返回:

如果我更改库,例如更改为 torch_cpu,我可以链接 OpenCV 库。

我不知道为什么 Torch 库会在同一个项目中导致与 OpenCV 的链接错误。任何建议都会很棒。

0 投票
1 回答
275 浏览

pytorch - Why use Caffe2 or Core-ML instead of LibTorch(.pt file) on iOS?

It seems like there are several ways to run Pytorch models on iOS.

  1. PyTorch(.pt) -> onnx -> caffe2
  2. PyTorch(.pt) -> onnx -> Core-ML (.mlmodel)
  3. PyTorch(.pt) -> LibTorch (.pt)
  4. PyTorch Mobile?

What is the difference between the above methods? Why people use caffe2 or Core-ml (.mlmodel), which requires model format conversion, instead of LibTorch?

0 投票
0 回答
229 浏览

c++ - 无法在 C++ 中使用 libtorch 1.5 加载跟踪文件

训练模型后,我使用 Pytorch 1.5 在 Python 端创建了一个跟踪文件。我尝试使用 libtorch 1.5 编写该代码在 C++ 端加载该文件:

它给了我这个错误信息:

“DL_Predicton.exe 中 0x00007FF8C2A0A799 处未处理的异常:Microsoft C++ 异常:内存位置 0x0000009B6118EFE0 处的 c10::Error。”