From 00149e9df0f4200f2b13139c263fcf694c0511a5 Mon Sep 17 00:00:00 2001 From: fdc_mbp Date: Wed, 9 Aug 2023 17:32:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=AF=B9=E9=BD=90"=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=A2=AF=E5=BA=A6"->"=E8=87=AA=E5=8A=A8=E5=BE=AE?= =?UTF-8?q?=E5=88=86"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beginner/introyt/tensors_deeper_tutorial.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/2.0/tutorials/beginner/introyt/tensors_deeper_tutorial.md b/docs/2.0/tutorials/beginner/introyt/tensors_deeper_tutorial.md index f04c19f7..29721c47 100644 --- a/docs/2.0/tutorials/beginner/introyt/tensors_deeper_tutorial.md +++ b/docs/2.0/tutorials/beginner/introyt/tensors_deeper_tutorial.md @@ -695,13 +695,13 @@ tensor([[1., 1.], [1., 1.]]) ``` -**使用 `clone()` 时需要注意一件重要的事情**。如果源张量启用了自动梯度,那么克隆也会启用。**关于自动梯度的视频将对此进行更深入的介绍**,但如果您想了解更多细节,请继续往下看。 +**使用 `clone()` 时需要注意一件重要的事情**。如果源张量启用了自动微分,那么克隆也会启用。**关于自动微分的视频将对此进行更深入的介绍**,但如果您想了解更多细节,请继续往下看。 -_在大多情况下_,这就是您想要的。例如,如果模型的 `forward()` 方法有多个计算路径,而原始张量和克隆张量都对模型的输出有贡献,那么要实现模型学习,就需要同时打开两个张量的自动梯度。如果源张量启用了自动梯度(如果它是一组学习权重或从涉及权重的计算中导出,则通常会启用),那么就会得到想要的结果。 +_在大多情况下_,这就是您想要的。例如,如果模型的 `forward()` 方法有多个计算路径,而原始张量和克隆张量都对模型的输出有贡献,那么要实现模型学习,就需要同时打开两个张量的自动微分。如果源张量启用了自动微分(如果它是一组学习权重或从涉及权重的计算中导出,则通常会启用),那么就会得到想要的结果。 -_另一方面_,如果您正在进行的计算中,原始张量或其克隆都不需要跟踪梯度,那么只要源张量关闭了自动梯度,就可以正常运行。 +_另一方面_,如果您正在进行的计算中,原始张量或其克隆都不需要跟踪梯度,那么只要源张量关闭了自动微分,就可以正常运行。 -_不过还有第三种情况_,想象一下:您在模型的 `forward()` 函数中执行计算,默认情况下梯度都是打开的,但您想在中途取出一些值来生成一些指标。在这种情况下,您不希望源张量的克隆副本跟踪梯度——关闭自动梯度的历史跟踪可以提高性能。为此,您可以在源张量上使用 `.detach()` 方法: +_不过还有第三种情况_,想象一下:您在模型的 `forward()` 函数中执行计算,默认情况下梯度都是打开的,但您想在中途取出一些值来生成一些指标。在这种情况下,您不希望源张量的克隆副本跟踪梯度——关闭自动微分的历史跟踪可以提高性能。为此,您可以在源张量上使用 `.detach()` 方法: ```python a = torch.rand(2, 2, requires_grad=True) # turn on autograd @@ -730,13 +730,13 @@ tensor([[0.0905, 0.4485], 发生了什么? -- 我们创建了一个开启 `requirements_grad=True` 的 `a`。**我们还没有涉及这个可选参数,但会在自动梯度单元中涉及。** -- 当我们打印 `a` 时,它会告诉我们属性 `requires_grad=True` ——这意味着自动梯度和计算历史跟踪已打开。 -- 我们拷贝 `a` 并标记为 `b`。当我们打印 `b` 时,可以看到它正在跟踪计算历史记录——它继承了 `a` 的自动梯度设置,并添加到了计算历史记录中。 +- 我们创建了一个开启 `requirements_grad=True` 的 `a`。**我们还没有涉及这个可选参数,但会在自动微分单元中涉及。** +- 当我们打印 `a` 时,它会告诉我们属性 `requires_grad=True` ——这意味着自动微分和计算历史跟踪已打开。 +- 我们拷贝 `a` 并标记为 `b`。当我们打印 `b` 时,可以看到它正在跟踪计算历史记录——它继承了 `a` 的自动微分设置,并添加到了计算历史记录中。 - 我们将 `a` 复制到 `c` 中,但要先调用 `detach()`。 - 在打印 `c` 时,我们没有看到计算历史,也没有看到 `requires_grad=True`。 -`detach()` 方法 _将张量从其计算历史中分离出来_。它说:"不管接下来要做什么,都要像关闭自动梯度一样"。我们可以看到,当我们在最后再次打印 `a` 时,它保留了 `requires_grad=True` 属性。 +`detach()` 方法 _将张量从其计算历史中分离出来_。它说:"不管接下来要做什么,都要像关闭自动微分一样"。我们可以看到,当我们在最后再次打印 `a` 时,它保留了 `requires_grad=True` 属性。 ## 转用 GPU PyTorch 的主要优势之一是其在兼容 CUDA 的 Nvidia GPU 上的强大加速能力。 CUDA 是计算统一设备架构(Compute Unified Device Architecture)的缩写,是 Nvidia 的并行计算平台。到目前为止,我们所做的一切都是在 CPU 上完成的。我们该如何使用更快的硬件呢? -- GitLab