C++¶
注意
如果您正在寻找PyTorch的C++ API文档,请直接点击这里。
PyTorch 提供了多种用于与 C++ 工作的功能,最好根据你的需求从中选择。在高层次上,可以提供以下支持:
TorchScript C++ API¶
TorchScript 允许在Python中定义的PyTorch模型被序列化,然后在C++中加载和运行,通过编译或跟踪其执行来捕获模型代码。你可以在 使用C++加载TorchScript模型教程 中了解更多。这意味着你可以尽可能地在Python中定义你的模型,但随后可以通过TorchScript导出它们,在生产或嵌入式环境中进行无Python执行。TorchScript C++ API 用于与这些模型和 TorchScript 执行引擎进行交互,包括:
加载从Python保存的序列化TorchScript模型
在需要时进行简单的模型修改(例如,提取子模块)
构建输入并使用C++ Tensor API进行预处理
使用C++扩展扩展PyTorch和TorchScript¶
TorchScript 可以通过自定义操作符和自定义类来增强,这些操作符和类由用户提供的代码实现。 一旦在 TorchScript 中注册,这些操作符和类可以在从 Python 或 C++ 运行的 TorchScript 代码中调用,也可以作为序列化的 TorchScript 模型的一部分调用。 使用自定义 C++ 操作符扩展 TorchScript 教程介绍了如何将 TorchScript 与 OpenCV 结合使用。除了使用自定义操作符封装函数调用外,C++ 类和结构体还可以通过类似 pybind11 的接口绑定到 TorchScript 中,这在 使用自定义 C++ 类扩展 TorchScript 教程中有详细说明。
张量和自动梯度在C++中¶
PyTorch Python API 中的大多数张量和自动梯度操作在 C++ API 中也是可用的。这些包括:
torch::Tensor方法,如add/reshape/clone。有关可用方法的完整列表,请参见:https://pytorch.org/cppdocs/api/classat_1_1_tensor.htmlC++ 张量索引API,其外观和行为与Python API相同。有关其用法的详细信息,请参阅:https://pytorch.org/cppdocs/notes/tensor_indexing.html
张量自动梯度API和对于在C++前端构建动态神经网络至关重要的
torch::autograd包。有关详细信息,请参阅:https://pytorch.org/tutorials/advanced/cpp_autograd.html
C++的打包¶
有关如何安装和链接libtorch(包含上述所有C++ API的库)的指导,请参阅:https://pytorch.org/cppdocs/installing.html。请注意,在Linux上提供了两种类型的libtorch二进制文件:一种是使用GCC pre-cxx11 ABI编译的,另一种是使用GCC cxx11 ABI编译的,你应该根据系统使用的GCC ABI进行选择。