问题标签 [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 回答
419 浏览

c++ - 使用 Libtorch 1.5 和 C++ 中的优化器选项更新学习率

随着 PyTorch 的 C++ API 1.5 稳定版的发布,一些对象接口发生了一些变化。比如现在

将无法工作(此处使用的优化器是 Adam),因为learning_rate已更改为lr(请参阅https://github.com/pytorch/pytorch/releases),但优化器不再具有选项(no member named 'options' in 'torch::optim::Adam')。所以我的问题是:一个人怎么跑

或更新学习率

与新版本?任何帮助将不胜感激!谢谢

0 投票
2 回答
1394 浏览

c++ - 在 Raspberry PI 上使用 libtorch 构建程序时的链接问题

我正在使用 libtorch 和 OpenCV 编写一个 C++ 程序。

这是我的输出CMakeLists.txt,带有库版本:

你可以看到手电筒需要libc10.so工作。

当我打电话时make,一切都很好,直到在链接期间发生这种情况:

当我file对这个文件执行命令时,我看到它是为 x86-64 架构而不是 ARM 编译的。这是file命令的输出 on/usr/lib/libc10.so和 on/usr/lib/libtorch.so.3.0.0进行比较:

我怎样才能有一个工作的 libc10.so 文件?

编辑:

我开始在我的树莓派上重新构建 PyTorch,所以它也会重新构建 libtorch。这需要几个小时,并在夜间因链接问题而崩溃:

但是,构建输出了一个libc10.so具有以下签名的文件!

我在文件夹中替换它/usr/lib并尝试构建我的项目:它比以前更进一步,并因另一个文件格式问题而崩溃。这证明如果我设法完全重建 libtorch,我应该能够构建我的项目!

有人可以帮我解决新的链接问题吗?

编辑#2:

我发现这个问题有同样的问题。尝试给定的解决方案,如果可以编写完整的教程,请返回这里。

0 投票
0 回答
231 浏览

python - C++ 模块中不存在 PyTorch 训练属性

我有一个使用 跟踪和保存的脚本torch.jit.save,当我使用以下命令在 python 中加载它时:

我得到了预期的输出:

但是,当我使用 libtorch 和以下代码加载相同的文件时:

输出是

进入该is_training()函数,它会查找该training属性,但它不存在,因此默认为 true

使用此模块有效,我可以调用它forward并处理数据,但我需要能够将训练模式设置为false

有什么想法吗?追踪时有什么需要做的吗?

我在带有 CUDA 10.2 的 Ubuntu 16.04 上使用 PyTorch 1.5.0

0 投票
2 回答
267 浏览

libtorch - Torch C++ (libtorch) 中是否提供概率分布?

我正在尝试移植一个 Q 网络,它使用概率分布采样(NormalPython 中的类及其rsample函数)。这些在 PyTorch C++ 中可用吗?

0 投票
1 回答
377 浏览

c++ - 如何解决 GTest 和 LibTorch 联动冲突

这个问题遵循我的先例

我正在用 OpenCV、Torch 和 NumCpp 编写一个 C++ 程序。该程序现在可以编译并且运行良好,但我需要编写单元测试。

我已经按照谷歌的教程在我的项目中构建 GTest 和 GMock,但它失败了。当我不链接 Torch 库时,它可以工作。

链接 GTest + Torch 时出错:

我想它来自 Libtorch 定义的与 Gtest 同名的宏,Google 提出了解决此类问题的解决方法,但我需要找出哪个宏失败了。

希望有人能帮忙!

这是我的 CMakeLists.txt

和 CMakeLists.txt.in

0 投票
1 回答
1186 浏览

c++ - Raspberry 上的 Libtorch 无法加载 pt 文件但在 ubuntu 上工作

我正在尝试在 Raspberry PI 上使用 libtorch 构建一个 C++ 程序。该程序在 Ubuntu 上运行,但在 Raspberry 上构建时出现以下错误:

这是崩溃的代码:

声明network为私有torch::jit::script::Module network

我使用来自 github 的 pyTorch 在版本 '1.0.0a0+8322165' 中为 Raspberry (ARM) 构建 libtorch

0 投票
0 回答
142 浏览

c++ - dim() 在 Libtorch C++ 中调用未定义的张量(在 ../c10/core/UndefinedTensorImpl.cpp:24 处变暗)

执行图像时出现错误(如下所示)。我使用 Python 来跟踪 Yolo 模型,而 C++ 环境中的跟踪文件只给出了一张图像的错误。我猜这个错误可能是由于图像没有任何对象检测。

0 投票
1 回答
174 浏览

c++ - gtest 和 libtorch 未定义对 `testing::internal:: 的引用

我正在尝试将 gtest 与 libtorch 一起使用。目前,我有一个基本的测试程序:

然后我有一个主要制作,我在第三方文件夹中获取火炬,如下所示:

然后我的测试看起来像:

当我在发布版本中编译时它很好。如果我的链接目录中不包含“${TORCH_LIBRARIES}”也可以。但是,当我链接到 Torch 并在调试下进行测试时,我得到以下信息:

我认为这是因为torch 利用了测试并在发布版本下编译。我在torch下的lib文件夹中手动找到了一个gtest.so并删除了它,看看它是否可以解决它,但它没有。

0 投票
0 回答
470 浏览

c++ - CUDA 10.0 和 10.2 之间的 Pytorch 推理时间差异

我们有一个使用 LibTorch 1.5.0 的工作库,使用 CUDA 10.0 构建,可以按预期运行。

出于各种与 PyTorch 无关的原因,我们正在努力升级到 CUDA 10.2。我们注意到,当我们在新编译的 LibTorch 上运行 LibTorch 推理时(编译时完全相同,除了更改为 CUDA 10.2),运行时间大约慢了 20 倍。我们还使用预编译的二进制文件对其进行了检查。

这是在 3 台不同的机器上使用 3 个不同的 GPU(Tesla T4、GTX980 和 P1000)进行测试的,并且在 CUDA 10.2(Windows 10 和 Ubuntu 16.04 上)上都给出了一致的 ~20 倍慢,所有这些都使用最新的驱动程序和 3 个不同的火炬脚本(相同架构)

我已将代码简化为极少,无需 Torch 以外的外部依赖项

当使用使用 CUDA 10.0 编译的 Torch 编译它时,我们得到一个运行时18 ms,当我们使用使用 CUDA 10.2 编译的 Torch 运行它时,我们得到一个运行时430 ms

对此有什么想法吗?

这个问题也发布在PyTorch 论坛上。

GitHub 上的问题

更新

我使用两个 CUDA 分析了这个小程序

似乎两者都使用非常不同的内核

conv2d_grouped_direct_kernel在我的 P1000 上,96.5% 的 10.2 计算需要大约 60-100 毫秒

10.0 运行中的顶级内核在哪里

所以很容易看出时差是从哪里来的。现在的问题是,为什么。

0 投票
1 回答
986 浏览

c++ - Pytorch C++ RuntimeError:设备类型为 cuda 的预期对象,但在调用 _th_index_select 时获得了参数 #1 'self' 的设备类型 cpu

我正在使用torch::EmbeddingUbuntu 18.04LTS PyTorch C++(1.5.1,CUDA 10.1)上的预训练词向量(glove.300d)模块计算单词相似度。我相信我已经将所有可能的东西都移到了 GPU 上,但是当我执行它时,它仍然显示(问题末尾的完整错误日志):

我在main.cpp中检查了我的模型初始化方法,如果我只做初始化就可以了。

这就是我在Similarity.h中定义SimilarityModel的方式:

同时我已经在 Similarity.cpp 的SimilarityModel函数中嵌入了初始化:

Similarity.cpp中的转发功能:

至于forward()中的中间变量也已经放到了 GPU 上。但是,我完全不知道 CPU 中还剩下哪一个,而且错误日志也没有多大帮助。我已经尝试了设备类型 cuda 的预期对象中的方法,但是在调用 _th_index_select时得到了设备类型 cpu 的参数 #1 'self' SimilarityModel().to(device),但这不起作用。我仍然很难阅读此错误日志,并且想要一些有关如何调试此类问题的说明。

错误日志: