同步操作将从 OpenDocCN/pytorch-doc-zh 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
这些页面提供了 PyTorch C ++ API 公共部分的文档。 该 API 大致可分为五个部分:
这些构建模块一起构成了一个可用于张量计算和动态神经网络的研究和生产就绪的 C ++库,其中特别强调 GPU 加速以及快速的 CPU 性能。 目前,Facebook 正在研究和生产中使用它。 我们期待欢迎更多的 PyTorch C ++ API 用户。
警告
目前,应将 C ++ API 视为“测试版”稳定性。 我们可能会对后端进行重大更改,以改进 API,或者在为 PyTorch 提供 Python 接口(这是我们最稳定和最受支持的接口)时使用。
ATen 从根本上讲是一个张量库,在 PyTorch 中几乎所有其他 Python 和 C ++接口都在其上构建。 它提供了一个核心Tensor
类,在该类上定义了数百种操作。 这些操作大多数都具有 CPU 和 GPU 实现,Tensor
类将根据其类型向其动态调度。 使用 ATen 的一个小示例如下所示:
#include <ATen/ATen.h>
at::Tensor a = at::ones({2, 2}, at::kInt);
at::Tensor b = at::randn({2, 2});
auto c = a + b.to(at::kInt);
此Tensor
类和 ATen 中的所有其他符号在at::
命名空间中找到,在这里记录在中。
我们所称的 autograd 是 PyTorch C ++ API 的一部分,这些部分通过涉及自动区分的功能扩展了 ATen Tensor
类。 autograd 系统在张量上记录操作,以形成 autograd 图。 在该图中的叶变量上调用backwards()
,可通过跨越 autograd 图的函数和张量网络执行反向模式微分,最终产生梯度。 以下示例提供了该界面的外观:
#include <torch/csrc/autograd/variable.h>
#include <torch/csrc/autograd/function.h>
torch::Tensor a = torch::ones({2, 2}, torch::requires_grad());
torch::Tensor b = torch::randn({2, 2});
auto c = a + b;
c.backward(); // a.grad() will now hold the gradient of c w.r.t. a.
默认情况下,ATen 中的at::Tensor
类不可区分。 若要增加 autograd API 提供的张量的可微性,必须使用 <cite>torch ::</cite> 命名空间中的张量工厂函数,而不是位于::: 命名空间中的<cite>。 例如,使用<cite>在:: ones</cite> 创建的张量将是不可微的,而使用 <cite>Torch :: ones</cite> 创建的张量将是可微的。</cite>
PyTorch C ++前端为神经网络以及一般的机器学习研究和生产用例提供了一个高级的纯 C ++建模接口,在设计和提供的功能上很大程度上遵循了 Python API。 C ++前端包括以下内容:
torch.nn.Module
)定义机器学习模型的接口;torch.utils.data.DataLoader
);torch.nn.parallel.DataParallel
);有关 C ++前端的详细说明,请参见本文档的。 与 C ++前端相关的 <cite>torch ::</cite> 命名空间的相关部分包括 torch :: nn , torch :: optim 和 [torch :: data , torch :: serialize , torch :: jit 和 torch :: python 。 C ++前端的示例可以在该存储库的中找到,该存储库正在持续不断地扩展。
注意
除非有特殊原因要专门限制自己使用 ATen 或 Autograd API,否则 C ++前端是 PyTorch C ++生态系统的推荐入口点。 尽管它仍处于测试阶段,因为我们收集了您的用户反馈,但与 ATen 和 Autograd API 相比,它提供了更多的功能和更好的稳定性保证。
TorchScript 是 PyTorch 模型的表示形式,可以由 TorchScript 编译器理解,编译和序列化。 从根本上说,TorchScript 本身就是一种编程语言。 它是使用 PyTorch API 的 Python 的子集。 TorchScript 的 C ++接口包含三个主要功能:
如果您想尽可能地在 Python 中定义模型,但是随后将它们导出到 C ++进行生产环境和无 Python 推断,第一种机制可能对您很感兴趣。 您可以通过以下此链接找到有关此内容的更多信息。 第二个 API 涉及您想使用自定义运算符扩展 TorchScript 的场景,可以类似地在推理过程中从 C ++对其进行序列化和调用。 最后, torch :: jit :: compile 函数可用于直接从 C ++访问 TorchScript 编译器。
_C ++扩展_提供了一种简单而强大的方法来访问上述所有接口,以扩展 PyTorch 的常规 Python 用例。 C ++扩展最常用于在 C ++或 CUDA 中实现自定义运算符,以加快对原始 PyTorch 设置的研究。 C ++扩展 API 不会向 PyTorch C ++ API 添加任何新功能。 相反,它提供了与 Python setuptool 以及 JIT 编译机制的集成,该机制允许从 Python 访问 ATen,autograd 和其他 C ++ API。 要了解有关 C ++扩展 API 的更多信息,请参见本教程的。
笔记
PyTorch C ++领域的此文档网站已由 Exhale 项目启用,并且其维护者 svenevs 投入了大量时间和精力。 我们感谢 Stephen 的工作以及他对 PyTorch C ++文档的帮助。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。