为什么编码器隐藏状态形状与 Bahdanau 注意力中的编码器输出形状不同

Why is Encoder hidden state shape different from Encoder Output shape in Bahdanau attention

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

这里:

批量大小 = 64

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

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

这解释为:

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

我的问题是:

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

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

另一个相关问题:

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

"为什么隐藏状态维度是(64, 1024)".

在您的 RNN 模型中,每个单词的输出是一个形状向量(GRU 单元数 = 1024),如果批次为 64,那么我们将 64 个单词从 EACH EXAMPLE 中的一个单词提供给模型batch ,它为每个输入提供形状为 (64,1024) 的输出向量。

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

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