如何解决MEX文件中出现意外的标准异常向前为pytorch模型
当我从Matlab调用mex api时,出现了意外的标准异常。
我将2个pytorch DNN模型导出到“ A.pt”和“ B.pt”文件中。
然后我实现了c ++函数,这些函数从'.pt'文件中加载模型并运行模型(向前)。
c ++实现工作正常,我可以从模型中获得正确的结果。
我将“加载并运行”功能内置到“ .dll”库中, 我实现了一个可以调用它们的mex api函数。
当我在Matlab环境中调用mex api时, 这两个模型已正常加载,第一个模型正确运行。
但是,当向前运行第二个模型时,出现了以下异常。
MEX文件出现意外的标准异常
What():TorchScript解释器中的以下操作失败。
TorchScript的跟踪(最近一次通话最后一次):
RuntimeError:TorchScript解释器中的以下操作失败。
TorchScript跟踪(最近一次通话结束):
RuntimeError:LoadLibraryA中的错误
我不知道为什么c ++实现可以正常工作,但是通过Matlab的mex api调用它时会发生异常。
由于加载和运行功能未更改,所以我希望得到完全相同的结果。
由于没有调用堆栈打印,因此调试起来更加困难。
有什么方法可以获取调用堆栈?
请给我任何建议。
谢谢。
-环境-------------------------------
C ++编译器:Visual Studio 2017社区
matlab:R2020a
libtorch:1.6
火炬:1.5
python:3.6
cuda:10.2
解决方法
从Cris Luengo先生的评论中,我通过将所有libtorch dll复制到Matlab自己的bin文件夹中解决了这个问题。有几个重复的文件,但我覆盖了它们。我不确定它是否安全,因此备份以前的dll是个不错的选择。谢谢克里斯·伦戈先生。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。