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是个不错的选择。谢谢克里斯·伦戈先生。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...