C++ 的程序如何调用Pytorch训练完的模型,最简单和有效的方法就是直接使用Pytorch c++ API. 网上这方面的资料并不多,遇过很多坑,想留下一点记录。
1. 版本
首先要确认python中的pytorch的版本,在对应下载c++ API. 如果没有对应,后续就会遇到模型导入问题。 因为Pytorch的模型是需要序列化以后才可以给C++使用,版本不匹配会导致导入后使用问题。
2. VS2017 配置
下载完官网提供的LIB,需要设置include和library。我自己下载是libtorch-win-shared-with-deps-1.8.1+cpu 和libtorch-win-shared-with-deps-debug-1.8.1+cpu。 因为测试需要,我还配置了opencv.
配置include:
opencv\build\include libtorch-win-shared-with-deps-debug-1.8.1+cpu\libtorch\include libtorch-win-shared-with-deps-debug-1.8.1+cpu\libtorch\include\torch\csrc\api\include
配置Lib
把libtorch/lib里面所有的lib都要写进去,不然编译不过
3. 使用调用
python: 序列化 需要用 torchscript https://pytorch.org/docs/stable/jit.html
traced = torch.jit.trace(model, (torch.rand(batch_size,c