提交 4994a3e2 编写于 作者: W wizardforcel

2021-01-18 21:31:48

上级 7e963961
......@@ -15,7 +15,7 @@ PyTorch 是基于 Python 的科学计算软件包,可实现两个广泛的目
## 本教程的目标:
* 全面了解 PyTorch 的 Tensor 库和神经网络。
* 全面了解 PyTorch 的张量库和神经网络。
* 训练一个小型神经网络对图像进行分类
注意
......
......@@ -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)
......
# Torch.autograd 的简要介绍
# `torch.autograd`的简要介绍
> 原文:<https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html#sphx-glr-beginner-blitz-autograd-tutorial-py>
`torch.autograd`是 PyTorch 的自动差分引擎,可为神经网络训练提供支持。 在本节中,您将获得有关 autograd 如何帮助神经网络训练的概念性理解。
`torch.autograd`是 PyTorch 的自动差分引擎,可为神经网络训练提供支持。 在本节中,您将获得有关 Autograd 如何帮助神经网络训练的概念性理解。
## 背景
......@@ -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
```
至此,您已经具备了训练神经网络所需的一切。 以下各节详细介绍了 autograd 的工作原理-随时跳过它们。
至此,您已经具备了训练神经网络所需的一切。 以下各节详细介绍了 Autograd 的工作原理-随时跳过它们。
* * *
......@@ -80,17 +80,17 @@ Q = 3`a`3 - b**2
```
假设`a``b`是神经网络的参数,`Q`是错误。 在 NN 训练中,我们想要误差 w.r.t. 参数,即
假设`a``b`是神经网络的参数,`Q`是错误。 在 NN 训练中,我们想要相对于参数的误差,即
\[\frac{\partial Q}{\partial a} = 9a^2\] \[\frac{\partial Q}{\partial b} = -2b\]
当我们在`Q`上调用`.backward()`时,autograd 将计算这些梯度并将其存储在各个张量的`.grad`属性中。
当我们在`Q`上调用`.backward()`时,Autograd 将计算这些梯度并将其存储在各个张量的`.grad`属性中。
我们需要在`Q.backward()`中显式传递`gradient`参数,因为它是向量。 `gradient`是与`Q`形状相同的张量,它表示 Q w.r.t.的梯度。 本身,即
我们需要在`Q.backward()`中显式传递`gradient`参数,因为它是向量。 `gradient`是与`Q`形状相同的张量,它表示`Q`相对于本身的梯度,即
\[\frac{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])
## 计算图
从概念上讲,autograd 在由[函数](https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function)对象组成的有向无环图(DAG)中记录数据(张量)和所有已执行的操作(以及由此产生的新张量)。 在此 DAG 中,叶子是输入张量,根是输出张量。 通过从根到叶跟踪此图,可以使用链规则自动计算梯度。
从概念上讲,Autograd 在由[函数](https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function)对象组成的有向无环图(DAG)中记录数据(张量)和所有已执行的操作(以及由此产生的新张量)。 在此 DAG 中,叶子是输入张量,根是输出张量。 通过从根到叶跟踪此图,可以使用链规则自动计算梯度。
在前向传递中,autograd 同时执行两项操作:
在前向传递中,Autograd 同时执行两项操作:
* 运行请求的操作以计算结果张量,并且
* 在 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.
先完成此消息的编辑!
想要评论请 注册