快捷方式

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++ 张量 API 构造输入并进行预处理

使用 C++ 扩展扩展 PyTorch 和 TorchScript

TorchScript 可以通过自定义运算符和自定义类来增强用户提供的代码。一旦在 TorchScript 中注册,这些运算符和类就可以在从 Python 或 C++ 运行的 TorchScript 代码中调用,作为序列化 TorchScript 模型的一部分。该 使用自定义 C++ 运算符扩展 TorchScript 教程介绍了使用 OpenCV 与 TorchScript 交互的过程。除了使用自定义运算符包装函数调用之外,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.ac.cn/cppdocs/installing.html。请注意,在 Linux 上,提供了两种类型的 libtorch 二进制文件:一种使用 GCC 预 cxx11 ABI 编译,另一种使用 GCC cxx11 ABI 编译,您应该根据系统使用的 GCC ABI 进行选择。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源