未验证 提交 aff111bd 编写于 作者: 片刻小哥哥's avatar 片刻小哥哥 提交者: GitHub

Cool ! Merge pull request #633 from Fadegentle/master

Complete translation of "Introduction to PyTorch on YouTube" 《Introduction to PyTorch Tensors》 
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
您可以通过以下几种方式运行本教程: 您可以通过以下几种方式运行本教程:
- **云端**: 这是最简单的入门方法! 每个部分顶部都有一个 Colab 链接,点击后会在完全托管的环境中打开一个代码笔记本。专业提示: 以 GPU 运行时使用 Colab 能加速操作 `代码执行程序(Runtime) > 更改运行时类型(Change runtime type) > GPU` - **云端**: 这是最简单的入门方法! 每个部分顶部都有一个 Colab 链接,点击后会在完全托管的环境中打开一个代码笔记本。专业提示: 以 GPU 运行时使用 Colab 能加速操作 `代码执行程序(Runtime) > 更改运行时类型(Change runtime type) > GPU`
- **本地**: 这个方式要求您先在本地电脑上安装 PyTorch 和 torchvision([安装说明](https://pytorch.org/get-started/locally/))。下载 notebook 或将代码复制到喜欢的 IDE 中。 - **本地**: 这个方式要求您先在本地电脑上安装 PyTorch 和 torchvision([安装说明](https://pytorch.org/get-started/locally/))。下载 notebook 或将代码复制到喜欢的 IDE 中。
<br> <br>
......
...@@ -297,7 +297,7 @@ torch.Size([1, 10]) ...@@ -297,7 +297,7 @@ torch.Size([1, 10])
在此之下,我们创建了一个代表 32x32 图像且具有 1 个颜色通道的虚拟输入。通常,您会加载一个图像块并将其转换为这种形状的张量。 在此之下,我们创建了一个代表 32x32 图像且具有 1 个颜色通道的虚拟输入。通常,您会加载一个图像块并将其转换为这种形状的张量。
您可能已经注意到了张量中的额外维度 —— _批处理维度_。PyTorch 模型假定它们在 _批次_ 数据上进行操作,例如,批处理包含 16 个图像块的情况下,形状将为 (`16`, `1`, `32`, `32`)。由于我们只使用了一个图像,我们创建了一个形状为 (`1`, `1`, `32`, `32`) 的批次。 您可能已经注意到了张量中的额外维度——_批处理维度_。PyTorch 模型假定它们在 _批次_ 数据上进行操作,例如,批处理包含 16 个图像块的情况下,形状将为 (`16`, `1`, `32`, `32`)。由于我们只使用了一个图像,我们创建了一个形状为 (`1`, `1`, `32`, `32`) 的批次。
我们像调用函数一样调用该模型推断:`net(input)`。该调用的输出表示,模型对表示特定数字输入的置信度。(由于这个模型实例尚未学习任何内容,我们不应该在输出中看到任何信号。)观察 `output` 的形状,我们可以看到它也有一个批处理维度,其大小应始终与输入批处理维度相匹配。如果我们传入一个包含 16 个实例的输入批次,`output` 的形状将为 (`16`, `10`)。 我们像调用函数一样调用该模型推断:`net(input)`。该调用的输出表示,模型对表示特定数字输入的置信度。(由于这个模型实例尚未学习任何内容,我们不应该在输出中看到任何信号。)观察 `output` 的形状,我们可以看到它也有一个批处理维度,其大小应始终与输入批处理维度相匹配。如果我们传入一个包含 16 个实例的输入批次,`output` 的形状将为 (`16`, `10`)。
...@@ -379,7 +379,7 @@ Extracting ./data/cifar-10-python.tar.gz to ./data ...@@ -379,7 +379,7 @@ Extracting ./data/cifar-10-python.tar.gz to ./data
``` ```
!!! note "注意" !!! note "注意"
运行上面的单元格时,可能需要一些时间下载数据集。 运行上面的单元格时,可能需要一些时间下载数据集。
这是一个在 PyTorch 中创建数据集对象的示例。可下载数据集(如上文的 CIFAR-10)是 `torch.utils.data.Dataset` 的子类。PyTorch 中的 `Dataset` 类包括 TorchVision、Torchtext 和 TorchAudio 中的可下载数据集,以及像 `torchvision.datasets.ImageFolder` 般的实用数据集类,它可以读取带有标签的图像文件夹。您也可以创建自己的 `Dataset` 子类。 这是一个在 PyTorch 中创建数据集对象的示例。可下载数据集(如上文的 CIFAR-10)是 `torch.utils.data.Dataset` 的子类。PyTorch 中的 `Dataset` 类包括 TorchVision、Torchtext 和 TorchAudio 中的可下载数据集,以及像 `torchvision.datasets.ImageFolder` 般的实用数据集类,它可以读取带有标签的图像文件夹。您也可以创建自己的 `Dataset` 子类。
...@@ -397,7 +397,7 @@ trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, ...@@ -397,7 +397,7 @@ trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
shuffle=True, num_workers=2) shuffle=True, num_workers=2)
``` ```
`Dataset` 子类封装了对数据的访问权限,并专门针对所服务的数据类型。 `DataLoader` 对数据一无所知,但会根据指定的参数将 `Dataset` 提供的输入张量组织成批。 `Dataset` 子类封装了对数据的访问权限,并专门针对所服务的数据类型。 `DataLoader` 对数据一无所知,但会根据指定的参数将 `Dataset` 提供的输入张量组织成批。
在上面的示例中,我们要求 `DataLoader``trainset` 中批量加载 4 幅图像,并随机调整它们的顺序(`shuffle=True`),我们还告诉它启动两个工作者从磁盘加载数据。 在上面的示例中,我们要求 `DataLoader``trainset` 中批量加载 4 幅图像,并随机调整它们的顺序(`shuffle=True`),我们还告诉它启动两个工作者从磁盘加载数据。
...@@ -605,11 +605,11 @@ Finished Training ...@@ -605,11 +605,11 @@ Finished Training
**梯度归零**(第 9 行)是一个重要步骤。梯度是在一个批次中累积起来的;如果我们不在每个批次中重置梯度,它们就会不断累积,产生错误的梯度值,导致学习无法进行。 **梯度归零**(第 9 行)是一个重要步骤。梯度是在一个批次中累积起来的;如果我们不在每个批次中重置梯度,它们就会不断累积,产生错误的梯度值,导致学习无法进行。
在第 12 行,我们**要求模型对这一批数据进行预测**。在接下来的第 13 行,我们计算损失 —— 即 `outputs`(模型预测)和 `labels`(正确输出)之间的差值。 在第 12 行,我们**要求模型对这一批数据进行预测**。在接下来的第 13 行,我们计算损失——即 `outputs`(模型预测)和 `labels`(正确输出)之间的差值。
在第 14 行中,我们进行 `backward()` 传递,计算梯度以指导学习。 在第 14 行中,我们进行 `backward()` 传递,计算梯度以指导学习。
在第 15 行中,优化器执行一个学习步骤 —— 它使用来自 `backward()` 调用的梯度,将学习权重推向它认为能减少损失的方向。 在第 15 行中,优化器执行一个学习步骤——它使用来自 `backward()` 调用的梯度,将学习权重推向它认为能减少损失的方向。
循环的余下部分会简单报告一下当前周期数、已完成的训练实例数以及在训练循环中收集到的损失。 循环的余下部分会简单报告一下当前周期数、已完成的训练实例数以及在训练循环中收集到的损失。
...@@ -635,7 +635,7 @@ Finished Training ...@@ -635,7 +635,7 @@ Finished Training
最后一步,我们应该检查模型是否真的在进行一般学习,而不是简单地 "记忆 "数据集。这就是所谓的**过拟合**,通常表明数据集太小(没有足够的例子进行一般学习),或者模型的学习参数超过了正确建模数据集所需的参数。 最后一步,我们应该检查模型是否真的在进行一般学习,而不是简单地 "记忆 "数据集。这就是所谓的**过拟合**,通常表明数据集太小(没有足够的例子进行一般学习),或者模型的学习参数超过了正确建模数据集所需的参数。
这也是将数据集分为训练子集和测试子集的原因 —— 为了测试模型的通用性,我们让模型对其未训练过的数据进行预测: 这也是将数据集分为训练子集和测试子集的原因——为了测试模型的通用性,我们让模型对其未训练过的数据进行预测:
```python ```python
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册