提交 6e57b11b 编写于 作者: W wizardforcel

2021-01-16 17:45:33

上级 9e2fcacf
......@@ -23,7 +23,7 @@
在上图中,我们可以看到 RNN 中的输入,输出和循环本身。 RNN 是为信息的持久性而设计的,而循环组件则可以实现这一点。
这是*图 1* 的扩展版本:
这是“图 1”的扩展版本:
![](img/a503c507-a800-47b7-ba2a-8ed34c3c4a5e.png)
......@@ -73,7 +73,7 @@ pip install torchtext
# 怎么做...
在本食谱中,我们将编写一个标记器,将在本章的*创建字段*部分中使用:
在本食谱中,我们将编写一个标记器,将在本章的“创建字段”部分中使用:
1. 我们将首先编写一个简单的 lambda 函数:
......@@ -269,7 +269,7 @@ pip install torchtext
# 开发迭代器
迭代器用于从数据集中加载一批数据。 它们提供了使加载数据和将数据移动到适当设备的方法更加容易。 我们可以使用这些迭代器对象遍历历元时对数据进行迭代。 在本食谱中,我们将从数据集中开发这些迭代器。 您将需要完成*开发数据集*配方中的步骤,因为我们将在此处使用该配方中的`Dataset`对象。
迭代器用于从数据集中加载一批数据。 它们提供了使加载数据和将数据移动到适当设备的方法更加容易。 我们可以使用这些迭代器对象遍历历元时对数据进行迭代。 在本食谱中,我们将从数据集中开发这些迭代器。 您将需要完成“开发数据集”配方中的步骤,因为我们将在此处使用该配方中的`Dataset`对象。
# 怎么做...
......@@ -323,13 +323,13 @@ pip install torchtext
# 探索单词嵌入
单词嵌入是单词的学习表示。 它们是单词的密集表示,其中为每个单词分配一个向量,即预定义向量空间中的实值向量,而不是数字标识符。 例如,一个单词将表示为![](img/e8ab6120-79d8-46fd-aa75-470d721ff4e5.png)`n`维向量-例如,语料库中的单词*图书*可能表示为[0.22,0.242,...。 ..,1.234]而不是[0,0,1,....,0]的单引号表示。
单词嵌入是单词的学习表示。 它们是单词的密集表示,其中为每个单词分配一个向量,即预定义向量空间中的实值向量,而不是数字标识符。 例如,一个单词将表示为![](img/e8ab6120-79d8-46fd-aa75-470d721ff4e5.png)`n`维向量-例如,语料库中的单词`book`可能表示为`[0.22, 0.242, ..., ..., 1.234]`而不是`[0, 0, 1, ..., 0]`的单引号表示。
数字表示只是单词的表示; 但是,单词嵌入是令牌的表示,其中该表示也包含令牌/单词的含义。 模型从单词出现的上下文中获悉了此含义。 在词嵌入中,具有相似含义的词具有相似的表示形式,我们可以对这些词向量执行向量算术,如下所示:
![](img/c4fc9f6e-bc00-4e90-a9e6-00637c82c64d.png)
在这里,我们能够从*王*向量中减去 *man* 向量,并将其与*女人*向量相加,所得向量将接近该向量 *Queen* 的表示形式。 我们将在本食谱中探讨此实现。
在这里,我们能够从`king`向量中减去`man`向量,并将其与`woman`向量相加,所得向量将接近该向量`Queen`的表示形式。 我们将在本食谱中探讨此实现。
# 怎么做...
......@@ -482,7 +482,7 @@ return self.fc(hidden)
# 多层 LSTM
我们在先前的食谱中介绍了简单的 LSTM。 在本食谱中,我们将为多层 LSTM 升级该简单的 LSTM 定义。 您需要完成*构建 LSTM 网络*配方才能了解此配方。
我们在先前的食谱中介绍了简单的 LSTM。 在本食谱中,我们将为多层 LSTM 升级该简单的 LSTM 定义。 您需要完成“构建 LSTM 网络”配方才能了解此配方。
# 怎么做...
......@@ -547,15 +547,15 @@ class MultiLSTMClassifier(nn.Module):
# 双向 LSTM
该配方以多层 LSTM 配方为基础。 在正常的 LSTM 中,LSTM 会从头到尾读取输入序列。 但是,在双向 LSTM 中,有第二个 LSTM 从最后到第一个读取序列,即反向 RNN。 当当前时间戳的预测取决于序列中进一步输入时,这种类型的 LSTM 可以提高模型性能。 考虑示例“我看过漫画”和“我昨天看过漫画”。 在这种情况下,基于将来出现的令牌,相同的令牌(即*读取为*)具有不同的含义。 我们将在本食谱中探讨其实现。
该配方以多层 LSTM 配方为基础。 在正常的 LSTM 中,LSTM 会从头到尾读取输入序列。 但是,在双向 LSTM 中,有第二个 LSTM 从最后到第一个读取序列,即反向 RNN。 当当前时间戳的预测取决于序列中进一步输入时,这种类型的 LSTM 可以提高模型性能。 考虑示例“我看过漫画”和“我昨天看过漫画”。 在这种情况下,基于将来出现的令牌,相同的令牌(即`read`)具有不同的含义。 我们将在本食谱中探讨其实现。
# 做好准备
该配方建立在*多层 LSTM* 配方的基础上,因此在尝试该配方之前,请务必先完成该配方。
该配方建立在“多层 LSTM”配方的基础上,因此在尝试该配方之前,请务必先完成该配方。
# 怎么做...
在此配方中,我们将修改*多层 LSTM* 配方中的类定义,使其成为双向 LSTM:
在此配方中,我们将修改“多层 LSTM”配方中的类定义,使其成为双向 LSTM:
1. 我们将`bidirectional`参数设置为`True`
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册