Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
D_ACMER
apachecn-dl-zh
提交
4994a3e2
A
apachecn-dl-zh
项目概览
D_ACMER
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4994a3e2
编写于
1月 18, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-18 21:31:48
上级
7e963961
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
18 deletion
+18
-18
new/pt-tut-17/02.md
new/pt-tut-17/02.md
+1
-1
new/pt-tut-17/03.md
new/pt-tut-17/03.md
+4
-4
new/pt-tut-17/04.md
new/pt-tut-17/04.md
+13
-13
未找到文件。
new/pt-tut-17/02.md
浏览文件 @
4994a3e2
...
...
@@ -15,7 +15,7 @@ PyTorch 是基于 Python 的科学计算软件包,可实现两个广泛的目
## 本教程的目标:
*
全面了解 PyTorch 的
Tensor
库和神经网络。
*
全面了解 PyTorch 的
张量
库和神经网络。
*
训练一个小型神经网络对图像进行分类
注意
...
...
new/pt-tut-17/03.md
浏览文件 @
4994a3e2
...
...
@@ -4,7 +4,7 @@
张量是一种特殊的数据结构,与数组和矩阵非常相似。 在 PyTorch 中,我们使用张量对模型的输入和输出以及模型的参数进行编码。
张量与 NumPy 的
ndarray 相似,除了张量可以在 GPU 或其他专用硬件上运行以加速计算。 如果您熟悉 ndarray,就可以使用 Tensor
API。 如果没有,请遵循此快速 API 演练。
张量与 NumPy 的
`ndarray`
相似,除了张量可以在 GPU 或其他专用硬件上运行以加速计算。 如果您熟悉
`ndarray`
,就可以使用张量
API。 如果没有,请遵循此快速 API 演练。
```
py
import
torch
...
...
@@ -134,7 +134,7 @@ if torch.cuda.is_available():
```
尝试从列表中进行一些操作。 如果您熟悉 NumPy API,则可以轻松使用
Tensor
API。
尝试从列表中进行一些操作。 如果您熟悉 NumPy API,则可以轻松使用
张量
API。
**类似 Numpy 的标准索引和切片**
:
...
...
@@ -155,7 +155,7 @@ tensor([[1., 0., 1., 1.],
```
**连接张量**
可以使用
`torch.cat`
沿给定维度连接一系列张量。 另请参见
[
火炬堆栈
](
https://pytorch.org/docs/stable/generated/torch.stack.html
)
,这是另一个与
`torch.cat`
稍有不同的张量连接
op
。
**连接张量**
可以使用
`torch.cat`
沿给定维度连接一系列张量。 另请参见
[
火炬堆栈
](
https://pytorch.org/docs/stable/generated/torch.stack.html
)
,这是另一个与
`torch.cat`
稍有不同的张量连接
操作
。
```
py
t1
=
torch
.
cat
([
tensor
,
tensor
,
tensor
],
dim
=
1
)
...
...
@@ -295,7 +295,7 @@ n: [2\. 2\. 2\. 2\. 2.]
```
### 将 NumPy 数组转换为
Tensor
### 将 NumPy 数组转换为
张量
```
py
n
=
np
.
ones
(
5
)
...
...
new/pt-tut-17/04.md
浏览文件 @
4994a3e2
#
Torch.autograd
的简要介绍
#
`torch.autograd`
的简要介绍
> 原文:<https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html#sphx-glr-beginner-blitz-autograd-tutorial-py>
`torch.autograd`
是 PyTorch 的自动差分引擎,可为神经网络训练提供支持。 在本节中,您将获得有关
a
utograd 如何帮助神经网络训练的概念性理解。
`torch.autograd`
是 PyTorch 的自动差分引擎,可为神经网络训练提供支持。 在本节中,您将获得有关
A
utograd 如何帮助神经网络训练的概念性理解。
## 背景
...
...
@@ -12,7 +12,7 @@
**正向传播**
:在正向传播中,NN 对正确的输出进行最佳猜测。 它通过其每个功能运行输入数据以进行猜测。
**反向传播**
:在反向传播中,NN 根据其猜测中的错误调整其参数。 它通过从输出向后遍历,收集有关函数参数(
*梯度*
)的误差导数并使用梯度下降来优化参数来实现。 有关
backprop
的更详细的演练,请查看 3Blue1Brown 的
[
视频
](
https://www.youtube.com/watch?v=tIeHLnjs5U8
)
。
**反向传播**
:在反向传播中,NN 根据其猜测中的错误调整其参数。 它通过从输出向后遍历,收集有关函数参数(
*梯度*
)的误差导数并使用梯度下降来优化参数来实现。 有关
反向传播
的更详细的演练,请查看 3Blue1Brown 的
[
视频
](
https://www.youtube.com/watch?v=tIeHLnjs5U8
)
。
## 在 PyTorch 中的用法
...
...
@@ -55,7 +55,7 @@ optim.step() #gradient descent
```
至此,您已经具备了训练神经网络所需的一切。 以下各节详细介绍了
a
utograd 的工作原理-随时跳过它们。
至此,您已经具备了训练神经网络所需的一切。 以下各节详细介绍了
A
utograd 的工作原理-随时跳过它们。
* * *
...
...
@@ -80,17 +80,17 @@ Q = 3`a`3 - b**2
```
假设
`a`
和
`b`
是神经网络的参数,
`Q`
是错误。 在 NN 训练中,我们想要
误差 w.r.t. 参数
,即
假设
`a`
和
`b`
是神经网络的参数,
`Q`
是错误。 在 NN 训练中,我们想要
相对于参数的误差
,即
\[\f
rac{
\p
artial Q}{
\p
artial a} = 9a^2
\]
\[\f
rac{
\p
artial Q}{
\p
artial b} = -2b
\]
当我们在
`Q`
上调用
`.backward()`
时,
a
utograd 将计算这些梯度并将其存储在各个张量的
`.grad`
属性中。
当我们在
`Q`
上调用
`.backward()`
时,
A
utograd 将计算这些梯度并将其存储在各个张量的
`.grad`
属性中。
我们需要在
`Q.backward()`
中显式传递
`gradient`
参数,因为它是向量。
`gradient`
是与
`Q`
形状相同的张量,它表示
Q w.r.t.的梯度。 本身
,即
我们需要在
`Q.backward()`
中显式传递
`gradient`
参数,因为它是向量。
`gradient`
是与
`Q`
形状相同的张量,它表示
`Q`
相对于本身的梯度
,即
\[\f
rac{dQ}{dQ} = 1
\]
同样,我们也可以将
Q
聚合为一个标量,然后隐式地向后调用,例如
`Q.sum().backward()`
。
同样,我们也可以将
`Q`
聚合为一个标量,然后隐式地向后调用,例如
`Q.sum().backward()`
。
```
py
external_grad
=
torch
.
tensor
([
1.
,
1.
])
...
...
@@ -115,7 +115,7 @@ tensor([True, True])
```
### 可选阅读-使用`autograd`的向量演算
(docs / modern-java-zh /
### 可选阅读-使用`autograd`的向量演算
从数学上讲,如果您具有向量值函数
\(\
vec {y} = f(
\
vec {x})
\)
,则
\(\
vec {y}
\)
相对于
\(\
vec {x }
\)
是雅可比矩阵
\(
J
\)
:
...
...
@@ -135,9 +135,9 @@ tensor([True, True])
## 计算图
从概念上讲,
a
utograd 在由
[
函数
](
https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function
)
对象组成的有向无环图(DAG)中记录数据(张量)和所有已执行的操作(以及由此产生的新张量)。 在此 DAG 中,叶子是输入张量,根是输出张量。 通过从根到叶跟踪此图,可以使用链规则自动计算梯度。
从概念上讲,
A
utograd 在由
[
函数
](
https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function
)
对象组成的有向无环图(DAG)中记录数据(张量)和所有已执行的操作(以及由此产生的新张量)。 在此 DAG 中,叶子是输入张量,根是输出张量。 通过从根到叶跟踪此图,可以使用链规则自动计算梯度。
在前向传递中,
a
utograd 同时执行两项操作:
在前向传递中,
A
utograd 同时执行两项操作:
*
运行请求的操作以计算结果张量,并且
*
在 DAG 中维护操作的
*梯度函数*
。
...
...
@@ -216,14 +216,14 @@ optimizer = optim.SGD(model.fc.parameters(), lr=1e-2, momentum=0.9)
请注意,尽管我们在优化器中注册了所有参数,但唯一可计算梯度的参数(因此会在梯度下降中进行更新)是分类器的权重和偏差。
[
torch.no_grad()
](
https://pytorch.org/docs/stable/generated/torch.no_grad.html
)
中的上下文管理器可以使用相同的排除功能。
[
`torch.no_grad()`
](
https://pytorch.org/docs/stable/generated/torch.no_grad.html
)
中的上下文管理器可以使用相同的排除功能。
* * *
## 进一步阅读:
*
[
原地操作&多线程 Autograd
](
https://pytorch.org/docs/stable/notes/autograd.html
)
*
[
反向模式
autodiff
](
https://colab.research.google.com/drive/1VpeE6UvEPRz9HmsHh1KS0XxXjYu533EC
)
的示例实现
*
[
反向模式
自动微分
](
https://colab.research.google.com/drive/1VpeE6UvEPRz9HmsHh1KS0XxXjYu533EC
)
的示例实现
**脚本的总运行时间**
:(0 分钟 5.184 秒)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录