如果不训练,直接用随机的参数生成C++脚本,没有问题。
把网络训练好后,再用torch.jit.trace输出成C++脚本时就会报错。
-
pytorch Tracing到C++的时候出现了问题,求助
-
刘看山 |
@fenglingsa 其实不建议用trace到c++来做c++的操作。原因有两个:
- c++推理不会带来太大的加速;
- 假如你成功trace到了c++模型,那么也能export到onnx,而onnx你可以用更通用的后端加速它。
至于你的这个报错,我认为你需要google一下,我总结一下我trace过程中遇到的问题:
- 一些python wrapper是无法被trace到的;
- 有一些张量的操作,它的逻辑和python不太一样,你需要仔细定位是哪一步出错了,再寻找解决方案。
-
@金天 尺寸应该没问题,直接在python中训练和推测都没问题,结果也是OK的。但是一旦trace到C++就报错,而且很有趣的是,如果只是单纯生成网络,不训练,仅有自生成的随机权重时,trace到C++没有问题,如果load训练后的参数,再trace,就会出现这个错误。
我查了一下pytorch的文档,发现官方文档里提过这个错误

但是,我这边不存在原地更新张量的操作,我猜测这个错误可能与pytorch内部的内存操作有关,不知道是不是我网络权重参数过多造成的。 -
刘看山 |
@fenglingsa 大概的意思是尺寸不对,你trace的时候先看看模型尺寸是否正确
-
@金天 FPN+SSD的那个,不过代码被我做过一些修改,我把卷积层的第二层也加入了FPN结构中
-
刘看山 |
这是哪个项目?相关model tracing的codes是?