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

c++ - 检查 torch::Tensor 是否为空的最佳方法是什么?

我目前正在使用该has_storage()方法来检查张量是否为空,但是我想知道除此之外还有什么更好的方法!torch::Tensor以及除了初始化总是有存储而空的没有的事实之外,使用它是否有任何影响!

0 投票
1 回答
183 浏览

c++ - libtorch 中的 np.delete 等价物是什么?

似乎我们np.delete在 libtorch 中还没有等价物,那么我们如何模拟它的行为呢?例如,我试图在 libtorch 中重写以下代码:

我该怎么办?我考虑过切片,但我不确定是否有我不知道的影响。这就是我想出的:

火炬:

这是一个示例演示,以测试它们的结果是否相同:

这是 libtorch 中的 cpp 计数器部分:

它们都打印相同的输出,所以我在这里遗漏了什么,或者这实际上是在 libtorch 中实现删除的合理方式?

我还有什么其他可能更有效的方法来实现/模拟np.delete()

0 投票
1 回答
134 浏览

c++ - PyTorch C++ API 中的 randperm 不应该返回默认类型为 int 的张量吗?

当我尝试randperm使用 C++ PyTorch API 生成置换整数索引列表时,生成的张量具有元素类型CPUFloatType{10}而不是整数类型:

返回

它不能用于张量的索引,因为元素类型是浮点数而不是整数类型。当尝试使用my_tensor.index(shuffled_indices)我得到

环境:

  • python-pytorch,Arch Linux 上的版本 1.6.0-2
  • g++ (GCC) 10.1.0

为什么会这样?

0 投票
1 回答
2654 浏览

c++ - Libtorch C++ 和 pytorch 的不同输出

我在 pytorch 和 libtorch 中使用相同的跟踪模型,但我得到不同的输出。

蟒蛇代码:

C++ 代码:

该模型给出了(1x512)大小输出张量,如下所示。

Python 输出

C++ 输出

使用

  • 火炬 1.6.0
  • Libtorch 1.6.0
  • 视觉工作室 2019
  • 视窗 10
  • 库达 10.1
0 投票
1 回答
348 浏览

matlab - MEX 文件中的意外标准异常(pytorch 模型转发)

当我从 Matlab 调用 mex api 时,我遇到了一个意外的标准异常。

我将 2 个 pytorch DNN 模型导出到“A.pt”和“B.pt”文件。

我实现了从“.pt”文件加载模型并运行模型(转发)的 c++ 函数。

c++ 实现工作正常,我可以从模型中得到正确的结果。

我将加载和运行转发函数构建到“.dll”库中,并实现了一个可以调用它们的 mex api 函数。

当我在Matlab环境中调用mex api时,2个模型加载正常,第一个模型向前运行正常。

但是,当向前运行第二个模型时,我得到了以下异常。


MEX 文件中的意外标准异常

What():以下操作在 TorchScript 解释器中失败。

TorchScript 的回溯(最后一次调用):

RuntimeError:TorchScript 解释器中的以下操作失败。

TorchScript 的回溯(最后一次调用):

RuntimeError:LoadLibraryA 中的错误


我不知道为什么 c++ 实现可以正常工作,但是当通过 Matlab 的 mex api 调用它时会发生异常。

因为加载和运行前向功能没有改变,所以我期望得到完全相同的结果。

由于没有调用堆栈打印,因此更难以调试。

有没有办法获得调用堆栈?

请给我任何建议。

提前致谢。

-环境 - - - - - - - - - - - - - - - -

c++ 编译器:Visual Studio 2017 社区

matlab : R2020a

火炬:1.6

火炬:1.5

蟒蛇:3.6

库达:10.2


0 投票
1 回答
262 浏览

c++ - 如何将 torch::Tensor 转换为 cv::InputArray?

我正在尝试使用cv::getAffineTransform(),但我一直坚持如何将张量转换为对应的cv::InputArray. 我已经尝试过这些来面对访问冲突:

我在这里做错了什么?有没有办法共享底层缓冲区并完全避免复制?

0 投票
2 回答
281 浏览

c++ - libtorch 中 numpy.spacing(1) 的等价物是什么?

似乎 pytorch 确实有/公开了finfo 链接,但我在libtorch. 它甚至可以在 libtorch 中使用吗?使用 torch.finfo 我可以轻松做到:

我相信这是对应物/等价物,np.spacing(1)但在 libtorch 中我不能做同样的事情,因为我找不到任何finfo课程痕迹。我该怎么办?

0 投票
0 回答
424 浏览

c++ - 如何将 torch::tensor 形状与其他一些形状进行比较?

我正在尝试将 atorch::Tensorsizes其他东西进行比较,但似乎我做错了。

我试过了:

总是返回假。

我也试过:

这也返回false。由于 IntArratRef 本身不拥有存储空间,因此我尝试了:

但它失败了,说:

我目前正在单独比较每个维度,这远非理想,更不用说麻烦了。这里有什么问题?

0 投票
1 回答
1012 浏览

c++ - 如何将张量列表转换为 Torch::Tensor?

我正在尝试将以下 Python 代码转换为等效的 libtorch:

在 Pytorch 中,我们可以简单地使用torch.stack或简单地使用torch.tensor()如下:

但是,在 libtorch 中,这并不成立,那就是我不能简单地这样做:

甚至使用 astd::vector都不起作用。torch::stack 也是如此。我目前正在使用三个torch::stack来完成这项工作:

那么有没有更好的方法来做到这一点?我们可以用单线做到这一点吗?

0 投票
1 回答
4305 浏览

c++ - 如何正确地将 cv::Mat 转换为具有完美匹配值的 torch::Tensor?

我正在尝试在 C++ 中的 jit 跟踪模型上运行推理,目前我在 Python 中获得的输出与我在 C++ 中获得的输出不同。

最初我认为这是由 jit 模型本身引起的,但现在我不这么认为,因为我发现 C++ 代码中的输入张量存在一些小的偏差。我相信我按照文档的指示做了所有事情,这样也可以在torch::from_blob. 我不知道!

因此,为了确定是哪种情况,这里是 Python 和 C++ 中的代码片段以及用于测试它的示例输入。

这是示例图像:

对于 Pytorch,运行以下代码片段:

对于 C++:

C++/Libtorch 张量值 ( img.index({Slice(), Slice(), Slice(None, 10), Slice(None, 10)});):

顺便说一下,这些是标准化/预处理之前的张量值:

Python:

共产党:

如您所见,乍一看,它们可能看起来相同,但仔细观察,您会发现输入中有许多小的偏差!如何避免这些更改,并获得 C++ 中的确切值?

我想知道是什么导致了这种奇怪的现象发生!