为什么编码器隐藏状态形状与 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 层添加更多单元以捕获序列的复杂性
这个问题与此处显示的神经机器翻译有关: 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 层添加更多单元以捕获序列的复杂性