目录

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 中也是可用的。这些包括:

在C++中编写模型

“在TorchScript中编写,在C++中推理”的工作流要求模型的编写必须在TorchScript中完成。然而,可能会有需要在C++中编写模型的情况(例如,在不希望有Python组件的工作流中)。为了满足这些使用场景,我们提供了完全用C++编写和训练神经网络模型的能力,包括熟悉的组件如torch::nn / torch::nn::functional / torch::optim,这些组件与Python API非常相似。

C++的打包

有关如何安装和链接libtorch(包含上述所有C++ API的库)的指导,请参阅:https://pytorch.org/cppdocs/installing.html。请注意,在Linux上提供了两种类型的libtorch二进制文件:一种是使用GCC pre-cxx11 ABI编译的,另一种是使用GCC cxx11 ABI编译的,你应该根据系统使用的GCC ABI进行选择。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源