问题标签 [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.
libtorch - 使用 nn::sequential 访问权重和偏差
如果我std::vector<torch::nn::Linear> linear_layers;
用一些对象定义并填充这个向量torch::nn::Linear
,那么我可以通过and访问weight
andbias
值。其他图层类型也可以使用相同的功能,例如.linear_layers[k].weight
linear_layers[k].bias
torch::nn::Conv2d
如果使用创建我的网络nn::sequential
然后推回其中一个,Linear
或者Conv2d
我无法直接访问weight
and bias
。现在,我的问题是如何在使用后访问每一层的权重和偏差值nn::sequential
?
谢谢, 阿夫辛
libtorch - 恢复 NN 前向传递的 const 正确性
我正在尝试使用 pytorch/libtorch 实现一个简单的神经网络。以下示例改编自libtorch cpp 前端教程。
请注意,该函数forward
已声明const
。我正在编写的代码要求 NN 的评估是一个 const 函数,这对我来说似乎是合理的。但是,此代码无法编译。编译器抛出
错误:不匹配调用 '(const torch::nn::Linear) (at::Tensor&)'<br> x = linear1(x);
我已经找到了解决这个问题的方法,通过将图层定义为mutable
:
所以我的问题是
- 为什么在张量上应用层不是
const
- 正在使用
mutable
这种方法来解决这个问题,它安全吗?
我的直觉是,在前向传播中,层被组装成一个可用于反向传播的结构,需要一些写入操作。如果这是真的,那么问题就变成了如何在第一步(非const
)中组装层,然后在第二步(const
)中评估结构。
c++ - 如何将张量转换为图像数组?
我想将张量转换为图像数组并使用 tensor.data() 方法。
但它不起作用。
运行时日志如下所示:
加载脚本模块:model_myo_jit.pt
加载脚本模块 DONE Load
图片:patch_6.nii.gz
加载图像完成!
输入大小:128、128、128
将 itk 转换为数组 DONE!
将数组转换为张量完成!
推理完成!
张量 dtype = unsigned char
张量大小 = [1, 1, 96, 96, 96]
开始!
分段错误(核心转储)
为什么以及如何转换?
linker - 将静态库合并为一个 STATIC 库时的 Libtorch/Pytorch 困境
我有大约 26 个静态库,例如liba.a, libb.a, libc.a, ..., libz.a
. 这里有两个问题:
1) 例如liba.a
和之间的循环依赖libb.a
;
2) 一些lib*.a
具有未引用的静态全局注册代码,但不应被剥离。
感谢stackoverflow,我设法用 ld 选项解决了上述两个问题 -Wl,--whole-archive -la -lb -lc -ld -le ...(omitted)... -lz -Wl,--no-whole-archive -lpthread -lm -ldl -lrt -fopenmp
,并且可执行二进制文件有效!ld 链接器问题中也对此进行了解释: --whole-archive 选项
现在我需要将所有 26个组合lib*.a
成一个静态库liball.a
。还要感谢 stackoverflow,下面的 MRI script.mriliball.a
通过命令成功生成ar -M < script.mri
但是,与新组合的静态库链接时出现了问题liball.a
:
1)使用选项-Wl,--whole-archive -lall -Wl,--no-whole-archive -lpthread -lm -ldl -lrt -fopenmp
失败!它产生数千个multiple defined symbols error
或undefined symbols error
!
2)没有选项-Wl,--whole-archive
,链接命令-lall -lpthread -lm -ldl -lrt -fopenmp
成功生成可执行二进制文件。但是,二进制文件无法执行,抱怨一些设备注册代码错误。我知道这是由于链接时某些 CPU 初始化代码被删减所致。下面是详细的错误
这里也提到了这个问题https://github.com/pytorch/pytorch/issues/14367
解决它的一种方法是使用选择性注册。任何人都可以分享更多细节吗?
这个问题不是如何将两个“ar”静态库合并为一个? MRI 脚本方法来自上述链接的最高投票答案,它不起作用。请删除重复标记,以便人们可以贡献。谢谢。
c++ - Libtorch 构建失败。在“qlinear_unpack.cpp”中,一个类没有成员“unpack”
更新:我尝试了我队友之前下载的v1.1.0源,然后这个问题就消失了。似乎主分支(190604)存在以下问题。尝试使用标签 v1.1.0 而不是 master。
我从 github 下载了 pytorch 源来构建 libtorch。使用以下命令:
然后运行
然后得到以下错误消息:
如何正确构建 libtorch?
c++ - Pytorch/ATen C++中切片张量的等价性
在 Python 中,给定一个二维张量,我们可以使用tensor[:,:2]
对矩阵左上角前两个元素的 2x2 矩阵进行切片,例如:
[出去]:
对于 PyTorch 的 ATen,在 C++ 中做这件事的正确方法是什么?
例如,在 LSTM 中,https: //github.com/pytorch/pytorch/blob/master/aten/src/ATen/native/RNN.cpp#L253 有 gate.chunk(4,1) 函数
如果我想做一个gate[:,:2].chunk(2,1)
提取门的不同部分,例如auto partial_gates = gates[:,:2].chunk(4, 1);
,怎么做?
python - 在 LibTorch 中运行从 PyTorch 训练和导出的模型时获得的不正确结果
我正在尝试使用 LibTorch 导出经过训练的模型以及权重以在 C++ 中进行推理。但是,输出张量结果不匹配。
输出张量的形状是相同的。
但是会生成一些警告,我认为这可能会导致生成不正确的结果。
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:137:TracerWarning:将张量转换为 Python 索引可能会导致跟踪不正确。我们无法记录 Python 值的数据流向,所以以后这个值会被当作一个常量来处理。这意味着跟踪可能不会推广到其他输入!/usr/local/lib/python3.6/dist-packages/torch/tensor.py:435:RuntimeWarning:迭代张量可能会导致跟踪不正确。传递不同形状的张量不会改变执行的迭代次数(并可能导致错误或默默地给出不正确的结果)。'不正确的结果)。',category=RuntimeWarning)
以下是生成输出张量的 LibTorch 代码
有没有人尝试在 LibTorch 中使用经过训练的 PyTorch 模型?
pytorch - LibTorch,将 deeplabv3_resnet101 转换为 c++
我正在尝试使用 PyTorch网站上的此示例代码来转换 Python 模型以在 PyTorch c++ api (LibTorch) 中使用。
此示例工作正常,并按预期保存文件。当我切换到这个模型时:
model = models.segmentation.deeplabv3_resnet101(pretrained=True)
它给了我以下错误:
我认为这是因为example
格式错误,但是我怎样才能得到正确的格式呢?
根据下面的评论,我的新代码是:
我现在得到错误:
c++ - 在 C++ API 中将一个张量的一部分复制到另一个张量中
我需要将一个张量 (in ) 的一行复制c++ API
到另一个张量的某个部分,其中 begin 和 end 索引可用。在 C++ 中,我们可以使用类似的东西:
从myints
into复制三个值myvector
,从第四个索引开始。libtorch
我想知道(即C++)中是否有类似的API ?
pytorch - LibTorch,使用 deeplab 模型在转发时出现段错误
我正在尝试通过 Libtorch 中的 DeepLab 模型运行图像来分割它们。使用 pytorch,我正在像这样转换 Deeplabv3 模型:
现在,在带有 LibTorch 的 c++ 中,我正在尝试加载模型并通过它运行数据。然而,这失败了:
我在哪里错了?