问题标签 [torchscript]

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 回答
1585 浏览

pytorch - 将 PyTorch 模型转换为 TorchScript 时出错

我正在尝试按照PyTorch 指南在 C++ 中加载模型

以下示例代码有效:

但是,当尝试其他网络时,例如squeezenet(或alexnet),我的代码失败了:

0 投票
3 回答
688 浏览

python - _extra_files arg 在 torch.jit.save 中的正确用法是什么

我尝试过的一个选项是腌制词汇并使用额外文件 arg 保存

这给了

其他选项显然是单独加载泡菜,但我正在寻找单个文件选项。

如果一个人可以将词汇添加到火炬脚本中,那就太好了......如果有一些我显然不知道的不这样做的原因,也很高兴知道。

0 投票
1 回答
3310 浏览

pytorch - 如何在 pytorch 1.1.0 JIT 编译器中启用 Dict/OrderedDict/NamedTuple 支持?

来自 pytorch 1.1.0 的发布亮点。似乎最新的 JIT 编译器现在支持 Dict 类型。(来源:https ://jaxenter.com/pytorch-1-1-158332.html )

TorchScript 中的字典和列表支持:列表和字典类型的行为类似于 Python 列表和字典。

不幸的是,我找不到使这种改进正常工作的方法。以下代码是将特征金字塔网络 (FPN) 导出到 tensorboard 的简单示例,它使用 JIT 编译器:

当我运行它时,出现以下错误:

从错误消息看来,支持仍在等待中。我可以相信发布亮点吗?或者我没有正确使用 API?

0 投票
0 回答
422 浏览

pytorch - Pytorch(火炬脚本)错误:“NoneType”类型的属性“downsample”在脚本方法中不可用(您是否忘记添加它__constants__?)

我正在使用 torchscript 将 AlignedReID++ 的 pytorch 代码转换为 C++ 代码。在此过程中,我遇到了以下错误:

此外,错误来自torchvision Resnet模型,而不是我的代码,这让我对错误的位置感到困惑

我正在使用 pytorch==1.2 运行代码。我已经尝试使用 Optional[T] 标签,但它仍然没有按预期工作

我想知道我是否有任何问题,或者我必须创建更多文件以进行脚本编写。

欢迎任何帮助或建议

第一个模型

第二个模型

代码取自github:https ://github.com/michuanhaohao/AlignedReID

我在文件中进行了更改: https ://github.com/michuanhaohao/AlignedReID/blob/master/Alignedreid_demo.py

0 投票
1 回答
635 浏览

python - 在 pytorch 模块中使用 TorchScript 类作为成员

我正在尝试使一些现有的 pytorch 模型支持 TorchScript jit 编译器,但我遇到了非原始类型成员的问题。

这个小例子说明了这个问题:

运行时,jit 编译器给出错误

我已经测试过Factory该类对方法内的 jit 可用forward,但是当我将其存储为成员时它不承认它。为什么是这样?有什么方法可以让 jit 编译器将这种成员保存到编译模块中?

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 投票
1 回答
897 浏览

swift - 将pytorch转换为torchscript后结果不同?将 NSnumber 转换为 Float 会导致任何损失吗?

我将 pytorch 预训练模型(.pt)转换为 torchscript 模型(.pt),以便在 Swift 5(ios-iphone6s,xcode 11)中使用它。在 Swift 中,模型的“预测”功能给了我它的嵌入值(张量)。由于它返回 NSNumber 数组作为预测的结果,我使用类型转换 [NSNumber] 到 [Double] 或 [Float] 来计算两个嵌入值之间的距离。L2归一化、点积等

然而,虽然 pytorch 版本得到了正确的答案,但 torchscript 模型得到了很多错误的答案。不仅答案不同,torchscript中两个embedding pair的距离计算也与PC(CPU,Pycharm)上的pytorch模型结果不同。事实上,在使用类型转换进行距离计算之前,NSNumber(Swift) 中的嵌入值与 float32(pytorch) 中的值相差很大。我使用了相同的输入图像。

我试图找到原因。有一次,我从 swift-torchscript 中复制了嵌入值([NSNumber])并计算了 pytorch 中两个嵌入之间的距离,以检查我在 Swift 中的距离计算实现是否有问题. 我使用了 torch.FloatTensor 来使用类型转换 [NSNumber] -> [Float]。我也试过[双]。结果,我发现了许多无限数。这个无限数与错误答案有关吗?

这个“inf”是什么意思?是计算错误还是类型转换错误?从 NSNumber 转换为 Float 或 Double 时我是否丢失了信息?如何快速从 torchscript 模型中获得正确的值?我应该检查什么?

我使用以下代码进行转换。pytorch -> 火炬脚本。

0 投票
1 回答
217 浏览

android - 如何序列化 NLP 分类 PyTorch 模型

我正在尝试在 PyTorch android 演示应用程序Demo App Git中使用新的 NLP 模型,但是我正在努力序列化模型以使其适用于 Android。

PyTorch 给出的一个 Resnet 模型的演示如下:

但是,我不确定在我的 NLP 模型中使用什么作为“示例”输入。

我在 fastai 教程中使用的模型和 python 链接在这里:模型

这是用于创建我的模型的 Python(使用 Fastai 库)。它与上面的模型链接相同,但采用简化形式。

0 投票
1 回答
1371 浏览

python - 首次运行 TorchScript 模型及其在 Flask 中的实现太慢

我正在尝试在 Python 和 Flask 中部署 torchscripted 模型。正如我意识到(至少如此处所述脚本模型在使用前需要“预热”,因此此类模型的第一次运行需要比后续模型更长的时间。我的问题是:有没有办法在 Flask 路由中加载torchscripted 模型并在不损失“蠕虫”时间的情况下进行预测?我可以将“预热”模型存储在某个地方以避免在每个请求中进行预热吗?我编写了简单的代码来重现“热身”过程:

输出:

和烧瓶代码:

输出:

操作系统:Ubuntu 18.04 和 Windows10
Python 版本:3.6.9 Flask:1.1.1 Torch:1.4.0 Torchvision:0.5.0

更新:

将“热身”问题解决为:

Update2: 解决了 Flask 问题(如下所述),在服务器启动之前创建全局 python 模型对象并在那里对其进行预热。然后在每个请求中,模型都可以使用了。

然后在@app.route 中:

0 投票
1 回答
540 浏览

python - Torchscript 与张量列表的 torch.cat 不兼容

在 torchscript 中使用时,Torch.cat 对张量列表抛出错误

这是重现错误的最小可重现示例

预期的结果将是 torch.cat 的 torchscript 输出。这是提供的错误消息:

请让我知道此问题的修复或解决方法。

谢谢!