0

这个问题与此处显示的神经机器翻译有关: 神经机器翻译

这里:

批量大小= 64

输入长度(示例输入句子中的单词数,也称为不同的时间步长)= 16

RNN 单元的数量(也是隐藏状态向量的长度或隐藏状态向量在每个时间步的维数)= 1024

这被解释为:

在每批(共 64 个)中,对于每个输入词(共 16 个),每个时间步都存在一个 1024 维向量。这个 1024 维向量表示在编码过程中特定时间步的输入词。这个 1024 维的向量被称为每个词的隐藏状态。

我的问题是:

为什么 (64, 1024) 的隐藏状态维度与( 64, 16, 1024)的编码器输出维度不同?两者应该不一样,因为对于每个批次,我们在输入句子中有 16 个单词,对于输入句子中的每个单词,我们都有一个 1024 维的隐藏状态向量。所以在编码步骤结束时,我们得到一个形状为 (64, 16, 1024) 的累积隐藏状态向量,这也是编码器的输出。两者尺寸相同。

具有维度(64, 1024)的编码器隐藏输出进一步作为第一个隐藏状态输入提供给解码器。

另一个相关问题:

如果输入长度是 16 个字,而不是使用 16 个单元,那么在编码器中使用 1024 个单元的原因是什么?

4

1 回答 1

1

“为什么是 (64, 1024) 的隐藏状态维度”。

在您的 RNN 模型中,每个单词的输出是一个形状向量 (GRU 单元数 = 1024) ,如果批次是 64 ,那么我们将 64 个单词给模型一个来自批次中每个示例的单词,这给出我们为每个输入提供一个 shape(64,1024) 的输出向量。

现在,为了消耗所有序列,我们输入最多 16 个单词,以获得 RNN 层的正常 3d 输出(64,16,1024)。

对于您的第二个问题,在 RNN 模型中,GRU 单元的数量(例如 1024)不取决于序列的长度,我们在 RNN 层中添加更多单元以捕捉序列的复杂性

于 2020-09-25T18:06:01.517 回答