From d4f1b93d4bec5b25f8595ca7298e35b2f430e27d Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Mon, 4 Jan 2021 16:22:54 +0800 Subject: [PATCH] 2021-01-04 16:22:54 --- docs/1.md | 34 +++++++++++++++++----------------- docs/3.md | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/1.md b/docs/1.md index 7217283..03bedcb 100644 --- a/docs/1.md +++ b/docs/1.md @@ -83,7 +83,7 @@ Fruit flies like a banana. 短语、句子或文档的 TF 表示仅仅是构成词的单热的总和。为了继续我们愚蠢的示例,使用前面提到的单热编码,`Fruit flies like time flies a fruit`这句话具有以下 TF 表示:[1,2,2,1,1,1,0,0]。注意,每个条目是句子(语料库)中出现相应单词的次数的计数。我们用 TF(w)表示一个单词的 TF。 -Example 1-1\. Generating a “collapsed”单热 or binary representation using scikit-learn +示例 1-1:使用 sklearn 生成“塌陷的”单热或二进制表示 ```py from sklearn.feature_extraction.text import CountVectorizer @@ -111,7 +111,7 @@ sns.heatmap(one_hot, annot=True, 其中`n[w]`是包含单词`w`的文档数量,`N`是文档总数。TF-IDF 分数就是`TF(w) * IDF(w)`的乘积。首先,请注意在所有文档(例如,`n[w] = N`), `IDF(w)`为 0, TF-IDF 得分为 0,完全惩罚了这一项。其次,如果一个术语很少出现(可能只出现在一个文档中),那么 IDF 就是`log n`的最大值。 -Example 1-2\. Generating TF-IDF representation using scikit-learn +示例 1-2:使用 sklearn 生产 TF-IDF 表示 ```py from sklearn.feature_extraction.text import TfidfVectorizer @@ -198,7 +198,7 @@ def describe(x): PyTorch 允许我们使用`torch`包以许多不同的方式创建张量。创建张量的一种方法是通过指定一个随机张量的维数来初始化它,如例 1-3 所示。 -Example 1-3\. Creating a tensor in PyTorch with torch.Tensor +示例 1-3:在 PyTorch 中使用`torch.Tensor`创建张量 ```py Input[0]: @@ -215,7 +215,7 @@ tensor([[ 3.2018e-05, 4.5747e-41, 2.5058e+25], 我们还可以创建一个张量通过随机初始化值区间上的均匀分布(`0,1`)或标准正态分布(从均匀分布随机初始化张量,说,是很重要的,正如您将看到的在第三章和第四章),见示例 1-4。 -Example 1-4\. Creating a randomly initialized tensor +示例 1-4:创建随机初始化的张量 ```py Input[0]: @@ -239,7 +239,7 @@ tensor([[-0.1330, -2.9222, -1.3649], 我们还可以创建张量,所有张量都用相同的标量填充。对于创建 0 或 1 张量,我们有内置函数,对于填充特定值,我们可以使用`fill_()`方法。任何带有下划线(`_`)的 PyTorch 方法都是指就地(in place)操作;也就是说,它在不创建新对象的情况下就地修改内容,如示例 1-5 所示。 -Example 1-5\. Creating a filled tensor +示例 1-5:创建填充的张量 ```py Input[0]: @@ -272,7 +272,7 @@ tensor([[ 5., 5., 5.], 示例 1-6 演示了如何通过使用 Python 列表以声明的方式创建张量。 -Example 1-6\. Creating and initializing a tensor from lists +示例 1-6:从列表创建和初始化张量 ```py Input[0]: @@ -290,7 +290,7 @@ tensor([[ 1., 2., 3.], 值可以来自列表(如前面的示例),也可以来自 NumPy 数组。当然,我们也可以从 PyTorch 张量变换到 NumPy 数组。注意,这个张量的类型是一个`double`张量,而不是默认的`FloatTensor`。这对应于 NumPy 随机矩阵的数据类型`float64`,如示例 1-7 所示。 -Example 1-7\. Creating and initializing a tensor from NumPy +示例 1-7:从 NumPy 创建和初始化张量 ```py Input[0]: @@ -313,7 +313,7 @@ tensor([[ 0.8360, 0.8836, 0.0545], 每个张量都有一个相关的类型和大小。使用`torch`时的默认张量类型。张量构造函数是`torch.FloatTensor`。但是,可以在初始化时指定张量,也可以在以后使用类型转换方法将张量转换为另一种类型(`float`、`long`、`double`等)。有两种方法可以指定初始化类型,一种是直接调用特定张量类型(如`FloatTensor`和`LongTensor`)的构造函数,另一种是使用特殊的方法`torch.tensor`,并提供`dtype`,如例 1-8 所示。 -Example 1-8\. Tensor properties +示例 1-8:张量属性 ```py Input[0]: @@ -363,7 +363,7 @@ tensor([[ 1., 2., 3.], 在创建了张量之后,可以像处理传统编程语言类型(如`+`、`-`、`*`和`/`)那样对它们进行操作。除了操作符,我们还可以使用`.add()`之类的函数,如示例 1-9 所示,这些函数对应于符号操作符。 -Example 1-9\. Tensor operations: addition +示例 1-9:张量操作:加法 ```py Input[0]: @@ -397,7 +397,7 @@ tensor([[ 0.0923, 0.8048, -2.0231], 还有一些运算可以应用到张量的特定维数上。正如您可能已经注意到的,对于 2D 张量,我们将行表示为维度 0,列表示为维度 1,如示例 1-10 所示。 -Example 1-10\. Dimension-based tensor operations +示例 1-10:基于维度的张量操作 ```py Input[0]: @@ -450,7 +450,7 @@ tensor([[ 0., 3.], 如果您是一个 NumPy 用户,那么您可能非常熟悉示例 1-11 中所示的 PyTorch 的索引和切片方案。 -Example 1-11\. Slicing and indexing a tensor +示例 1-11:切片和索引张量 ```py Input[0]: @@ -482,7 +482,7 @@ Values: 示例 1-12 演示了 PyTorch 还具有用于复杂索引和切片操作的函数,您可能对有效地访问张量的非连续位置感兴趣。 -Example 1-12\. Complex indexing: noncontiguous indexing of a tensor +示例 1-12:复杂索引:张量的非连续索引 ```py Input[0]: @@ -517,7 +517,7 @@ tensor([ 0., 4.]) 注意索引(indices)是一个长张量;这是使用 PyTorch 函数进行索引的要求。我们还可以使用内置的连接函数连接张量,如示例 1-13 所示,通过指定张量和维度。 -Example 1-13\. Concatenating tensors +示例 1-13:连接张量 ```py Input[0]: @@ -564,7 +564,7 @@ tensor([[[ 0., 1., 2.], PyTorch 还在张量上实现了高效的线性代数操作,如乘法、逆和迹,如示例 1-14 所示。 -Example 1-14\. Linear algebra on tensors: multiplication +示例 1-14:张量上的线性代数:乘法 ```py Input[0]: @@ -605,7 +605,7 @@ tensor([[ 3., 6.], PyTorch 张量类封装了数据(张量本身)和一系列操作,如代数操作、索引操作和整形操作。然而,1-15 所示的例子,当`requires_grad`布尔标志被设置为`True`的张量,记账操作启用,可以追踪的梯度张量以及梯度函数,这两个需要基于促进梯度学习讨论“监督学习范式”。 -Example 1-15\. Creating tensors for gradient bookkeeping +示例 1-15:为梯度记录创建张量 ```py Input[0]: @@ -655,7 +655,7 @@ False PyTorch 使创建这些 CUDA 张量变得非常容易(示例 1-16),它将张量从 CPU 传输到 GPU,同时维护其底层类型。PyTorch 中的首选方法是与设备无关,并编写在 GPU 或 CPU 上都能工作的代码。在下面的代码片段中,我们首先使用`torch.cuda.is_available()`检查 GPU 是否可用,然后使用`torch.device`检索设备名。然后,将实例化所有未来的张量,并使用`.to(device)`方法将其移动到目标设备。 -Example 1-16\. Creating CUDA tensors +示例 1-16:创建 CUDA 张量 ```py Input[0]: @@ -684,7 +684,7 @@ tensor([[ 0.9149, 0.3993, 0.1100], 要对 CUDA 和非 CUDA 对象进行操作,我们需要确保它们在同一设备上。如果我们不这样做,计算就会中断,如下面的代码片段所示。例如,在计算不属于计算图的监视指标时,就会出现这种情况。当操作两个张量对象时,确保它们在同一个设备上。例子 1-17 所示。 -Example 1-17\. Mixing CUDA tensors with CPU bound tensors +示例 1-17:混合 CUDA 张量和 CPU 绑定的张量 ```py Input[0] diff --git a/docs/3.md b/docs/3.md index 956e584..fbb0394 100644 --- a/docs/3.md +++ b/docs/3.md @@ -26,7 +26,7 @@ 激活函数,这里用`f`表示,通常是一个非线性函数。示例 3-1 展示了 PyTorch 中的感知器实现,它接受任意数量的输入、执行仿射转换、应用激活函数并生成单个输出。 -Example 3-1\. Implementing a Perceptron using PyTorch +示例 3-1:使用 PyTorch 实现感知机 ```py import torch