Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
pytorch-doc-zh
提交
00149e9d
P
pytorch-doc-zh
项目概览
OpenDocCN
/
pytorch-doc-zh
通知
120
Star
3932
Fork
992
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
pytorch-doc-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
00149e9d
编写于
8月 09, 2023
作者:
F
fdc_mbp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
翻译对齐"自动梯度"->"自动微分"
上级
c0f60cea
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
8 deletion
+8
-8
docs/2.0/tutorials/beginner/introyt/tensors_deeper_tutorial.md
...2.0/tutorials/beginner/introyt/tensors_deeper_tutorial.md
+8
-8
未找到文件。
docs/2.0/tutorials/beginner/introyt/tensors_deeper_tutorial.md
浏览文件 @
00149e9d
...
...
@@ -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 上完成的。我们该如何使用更快的硬件呢?
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录