在 OpenNMT-py 中输出隐藏状态

Output hidden state in OpenNMT-py

我有一个关于 OpenNMT 的 pytorch 版本的简短问题。选项中好像没有return编码器和解码器隐藏状态的选项。我是否遗漏了一个标志或者这不是 OpenNMT-py 中的一个选项?

编码器和解码器没有return隐藏状态是什么意思?

如果您看到 RNNEncoder,它 returns encoder_final, memory_bank, lengths 其中 memory_bank 表示形状为 seq_len x batch_size x hidden_size 的隐藏状态。 encoder_final 通常由 sequence-to-sequence 模型中的解码器使用。

现在,让我们看看RNNDecoder。如我们所见,forward() 方法 return 是一个 FlaotTensor 和一个 FlaotTensors 字典。

(FloatTensor, dict[str, FloatTensor]):
* dec_outs: output from the decoder (after attn)
  ``(tgt_len, batch, hidden)``.
* attns: distribution over src at each tgt
  ``(tgt_len, batch, src_len)``.

通常,我们在sequence-to-sequence任务中使用dec_outs。例如,在自然语言生成任务中,我们将 dec_outs 馈送到 softmax 层以预测标记。

还有其他几种类型 encoders/decoders,您可以从以下两个链接中进行探索。