提交 c6df80b4 编写于 作者: W wizardforcel

2021-01-22 11:25:06

上级 e2bdbb4a
......@@ -116,7 +116,7 @@ torch.cuda.is_available()
这意味着张量不仅是数据结构,而且是容器,当容器提供某些数据时,它们可以与其他张量以多线性方式映射。
类似于 NumPy 阵列或任何其他类似矩阵的结构,PyTorch 张量可以具有所需的任意多个尺寸。 可以使用以下代码片段在 PyTorch 中定义一维张量(`tensor_1`)和二维张量(`tensor_2`):
类似于 NumPy 数组或任何其他类似矩阵的结构,PyTorch 张量可以具有所需的任意多个尺寸。 可以使用以下代码片段在 PyTorch 中定义一维张量(`tensor_1`)和二维张量(`tensor_2`):
```py
tensor_1 = torch.tensor([1,1,0,2])
......
......@@ -52,7 +52,7 @@
![](img/169cea75-5669-4783-a7c4-a4b77f185c91.png)
此图中`S``R``L``W``T`的随机变量的联合分布 通过一个简单的链规则可分为多个分布:
此图中`S``R``L``W``T`的随机变量的联合分布 通过一个简单的链规则可分为多个分布:
![](img/9511985a-1153-4134-8e00-3c8126a5dc83.png)
......
......@@ -124,7 +124,7 @@ BERT 是按照**转换器**的原理构建的,现在将对其进行详细说
![Figure 9.6 – Linked encoder/decoder array ](img/B12365_09_6.jpg)
图 9.6 –链接的编码器/解码器阵列
图 9.6 –链接的编码器/解码器数组
这将为您提供有关大型模型中不同编码器和解码器如何堆叠的有用概述。 接下来,我们将更详细地检查各个部分。
......
......@@ -334,7 +334,7 @@ tensor([[3, 3],
NumPy 是 Python 中科学计算的基本软件包。 它是一个 Python 库,提供多维数组对象和各种派生对象。 除此之外,NumPy 用作通用多维数据的有效容器。 NumPy 允许与各种数据库进行无缝,快速的集成。
NumPy 是标准的 Python 库,用于处理数字数据。 Python 中许多著名的 ML/DS 库,例如 pandas(用于从许多来源读取数据的库)和 scikit-learn(用于读取和写入图像的最重要的 ML 库之一)都使用 NumPy 引擎盖。 例如,在处理表格数据,使用`pandas`库加载表格数据并将`numpy`数组移出数据框时,您将处理很多`numpy`。 读取图像,许多现有库都具有内置的 API,可以将它们读取为`numpy`数组; 并将`numpy`数组转换为图像以及文本和其他形式的数据。 同样,它们都使用`scikit-learn`(机器学习库)支持`numpy`数组。 如您所见,在`numpy`阵列和 PyTorch 张量之间建立桥梁非常重要。
NumPy 是标准的 Python 库,用于处理数字数据。 Python 中许多著名的 ML/DS 库,例如 pandas(用于从许多来源读取数据的库)和 scikit-learn(用于读取和写入图像的最重要的 ML 库之一)都使用 NumPy 引擎盖。 例如,在处理表格数据,使用`pandas`库加载表格数据并将`numpy`数组移出数据框时,您将处理很多`numpy`。 读取图像,许多现有库都具有内置的 API,可以将它们读取为`numpy`数组; 并将`numpy`数组转换为图像以及文本和其他形式的数据。 同样,它们都使用`scikit-learn`(机器学习库)支持`numpy`数组。 如您所见,在`numpy`数组和 PyTorch 张量之间建立桥梁非常重要。
# 操作步骤
......
......@@ -129,7 +129,7 @@ b2 = torch.zeros(1, output_size, requires_grad=True, device=device, dtype=dtype)
这是反向模式自动微分的关键特征之一。 这有助于 PyTorch 动态化,因为无论用户在向前传递中作为操作编写的内容都可以写入磁带,并且在反向传播开始时,Autograd 可以在磁带上向后移动并随梯度一起移动,直到到达最外层 父母
磁带或内存的写操作可忽略不计,PyTorch 通过将操作写到磁带上并在向后遍历后销毁磁带来利用每次正向遍历中的行为。 尽管我会在本书中尽量避免使用尽可能多的数学方法,但是有关 Autograd 如何工作的数学示例绝对可以为您提供帮助。 在下面的两个图中,说明了反向传播算法和使用链规则的 Autograd 的方法。 下图中我们有一个小型网络,其中有一个乘法节点和一个加法节点。 乘法节点获取输入张量和权重张量,将其传递到加法节点以进行加法运算。
磁带或内存的写操作可忽略不计,PyTorch 通过将操作写到磁带上并在向后遍历后销毁磁带来利用每次正向遍历中的行为。 尽管我会在本书中尽量避免使用尽可能多的数学方法,但是有关 Autograd 如何工作的数学示例绝对可以为您提供帮助。 在下面的两个图中,说明了反向传播算法和使用链规则的 Autograd 的方法。 下图中我们有一个小型网络,其中有一个乘法节点和一个加法节点。 乘法节点获取输入张量和权重张量,将其传递到加法节点以进行加法运算。
```py
output = X * W + B
......@@ -143,7 +143,7 @@ output = X * W + B
![Autograd](img/B09475_02_04.jpg)
图 2.4:Autograd 使用的链规则
图 2.4:Autograd 使用的链规则
前面的图可以使用以下代码转换为 PyTorch 图:
......
......@@ -96,7 +96,7 @@ array([[O., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
使用自然语言(或由离散的单个单元组成的任何序列)的标准方法是将每个单词转换为一个热编码向量,并将其用于网络的后期。 这种方法的明显缺点是,随着词汇量的增加,输入层的大小也会增加。
词嵌入是减少阵列或张量维数的数十年历史的想法。 **潜在迪利克雷分配****LDA**)和**潜在语义分析****LSA**)是我们用来进行嵌入的两个此类示例。 但是,在 Facebook 研究科学家 Tomas Mikolov 和他的团队于 2013 年实现 word2vec 之后,就开始将嵌入视为前提。
词嵌入是减少数组或张量维数的数十年历史的想法。 **潜在迪利克雷分配****LDA**)和**潜在语义分析****LSA**)是我们用来进行嵌入的两个此类示例。 但是,在 Facebook 研究科学家 Tomas Mikolov 和他的团队于 2013 年实现 word2vec 之后,就开始将嵌入视为前提。
Word2vec 是一种无监督的学习算法,在这种算法中,网络未经训练就进行嵌入。 这意味着您可以在一个英语数据集上训练 word2vec 模型,并使用它为另一模型生成嵌入。
......
......@@ -273,7 +273,7 @@ def get_screen():
return resize(screen).unsqueeze(0).to(device) # Resize, and add a batch dimension (BCHW)
```
在这里,我们定义了`get_screen`函数。 柱状环境渲染并返回一个屏幕(3D 像素阵列)。 我们将要剪裁一个正方形的图像,其中心是小刀。 我们从`env.state[0]`获得了位置。 根据文档,第一个参数是购物车位置。 然后我们去掉顶部,底部,左侧和右侧,以使小柱位于中心。 接下来,我们将其转换为张量,进行一些转换,添加另一个尺寸,然后返回图像。
在这里,我们定义了`get_screen`函数。 柱状环境渲染并返回一个屏幕(3D 像素数组)。 我们将要剪裁一个正方形的图像,其中心是小刀。 我们从`env.state[0]`获得了位置。 根据文档,第一个参数是购物车位置。 然后我们去掉顶部,底部,左侧和右侧,以使小柱位于中心。 接下来,我们将其转换为张量,进行一些转换,添加另一个尺寸,然后返回图像。
```py
class DQN(nn.Module):
......
......@@ -258,7 +258,7 @@ tensor([[6., 5., 6., 6.],
## 与 NumPy 桥接
CPU 和 NumPy 阵列上的张量可以共享其基础内存位置,更改一个将更改另一个。
CPU 和 NumPy 数组上的张量可以共享其基础内存位置,更改一个将更改另一个。
### 张量到 NumPy 数组
......
......@@ -137,7 +137,7 @@ 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 同时执行两项操作:
......@@ -148,7 +148,7 @@ tensor([True, True])
* 从每个`.grad_fn`计算梯度,
* 将它们累积在各自的张量的`.grad`属性中,然后
* 使用链规则,一直传播到叶张量。
* 使用链式规则,一直传播到叶子张量。
下面是我们示例中 DAG 的直观表示。 在图中,箭头指向前进的方向。 节点代表正向传播中每个操作的反向功能。 蓝色的叶节点代表我们的叶张量`a``b`
......
......@@ -9,7 +9,7 @@
PyTorch 的核心是提供两个主要功能:
* n 维张量,类似于 NumPy,但可以在 GPU 上运行
* 自动区分以构建和训练神经网络
* 用于构建和训练神经网络的自动微分
我们将使用将三阶多项式拟合`y = sin(x)`的问题作为运行示例。 该网络将具有四个参数,并且将通过使网络输出与实际输出之间的欧几里德距离最小化来进行梯度下降训练,以适应随机数据。
......
......@@ -723,7 +723,7 @@ plt.show()
* 训练更长的时间,看看效果如何
* 修改此模型以采用其他数据集,并可能更改图像的大小和模型架构
* 在处查看其他一些不错的 GAN 项目
* 查看其他一些不错的 GAN 项目
* [创建可生成音乐的 GAN](https://deepmind.com/blog/wavenet-generative-model-raw-audio/)
**脚本的总运行时间**:(29 分钟 17.480 秒)
......
......@@ -237,7 +237,7 @@ Median relative difference between original and MuLaw reconstucted signals: 1.28
上面看到的转换依赖于较低级别的无状态函数进行计算。 这些功能在`torchaudio.functional`下可用。 完整列表在[此处](https://pytorch.org/audio/functional.html),包括:
* `istft`:短傅立叶逆变换。
* `istft`:短傅立叶逆变换。
* `gain`:对整个波形进行放大或衰减。
* `dither`:增加以特定位深度存储的音频的动态范围。
* `compute_deltas`:计算张量的增量系数。
......
......@@ -305,8 +305,8 @@ criterion = nn.NLLLoss()
* 创建输入和目标张量
* 创建归零的初始隐藏状态
* 阅读和中的每个字母
*下一个字母的隐藏状态
* 阅读每个字母
*下一个字母的隐藏状态
* 比较最终输出与目标
* 反向传播
* 返回输出和损失
......
......@@ -338,7 +338,7 @@ plt.plot(all_losses)
* 为输入类别,起始字母和空隐藏状态创建张量
* 用起始字母创建一个字符串`output_name`
* 直到最大输出长度,
* 将当前信件输入网络
* 将当前字母输入网络
* 从最高输出中获取下一个字母,以及下一个隐藏状态
* 如果字母是`EOS`,请在此处停止
* 如果是普通字母,请添加到`output_name`并继续
......@@ -409,7 +409,7 @@ Iun
## 练习
* 尝试使用类别 -> 行的其他数据集,例如:
* 虚构列 -> 角色名称
* 虚构列 -> 角色名称
* 词性 -> 词
* 国家 -> 城市
* 使用“句子开头”标记,以便无需选择开始字母即可进行采样
......
......@@ -204,7 +204,7 @@ def filterPairs(pairs):
准备数据的完整过程是:
* 读取文本文件并拆分为行,将行拆分为
* 读取文本文件并拆分为行,将行拆分为
* 规范文本,按长度和内容过滤
* 成对建立句子中的单词列表
......@@ -487,7 +487,7 @@ def timeSince(since, percent):
* 启动计时器
* 初始化优化器和标准
* 创建一组训练对
* 启动空损失阵列进行绘图
* 启动空损失数组进行绘图
然后,我们多次调用`train`,并偶尔打印进度(示例的百分比,到目前为止的时间,估计的时间)和平均损失。
......
......@@ -283,7 +283,7 @@ ReLU 的导数图,对于`x <= 0`,`f'(x) = 1`,对于`x > 0`,`f'(x) = 0`
# 计算图
基本的神经网络由前向传播和后向传播组成。 结果,它由一系列步骤组成,这些步骤包括不同节点,权重和偏差的值,以及所有权重和偏差的成本函数导数。 为了跟踪这些过程,图片中出现了**计算图**。 无论神经网络的深度如何,计算图还可以跟踪链规则的区分。
基本的神经网络由前向传播和后向传播组成。 结果,它由一系列步骤组成,这些步骤包括不同节点,权重和偏差的值,以及所有权重和偏差的成本函数导数。 为了跟踪这些过程,图片中出现了**计算图**。 无论神经网络的深度如何,计算图还可以跟踪链规则的区分。
# 使用梯度下降法解决逻辑回归的步骤
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册