在OpenNMT-py中输出隐藏状态

时间:2019-06-23 21:00:46

标签: deep-learning pytorch tensorboard seq2seq opennmt

我只是对有关OpenNMT的pytorch版本有一个简短的问题。似乎没有一个选项可以返回编码器和解码器的隐藏状态。我是否缺少标志,或者这不是OpenNMT-py中的选项吗?

1 个答案:

答案 0 :(得分:1)

编码器和解码器不返回隐藏状态是什么意思?

如果看到RNNEncoder,它将返回encoder_final, memory_bank, lengths,其中memory_bank代表形状为seq_len x batch_size x hidden_size的隐藏状态。并且encoder_final通常由解码器用于序列到序列模型中。

现在,让我们来看一下RNNDecoder。如我们所见,forward()方法返回一个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)``.

通常,我们在序列到序列任务中使用dec_outs。例如,在自然语言生成任务中,我们将dec_outs馈送到softmax层以预测令牌。

还有其他几种类型的编码器/解码器,您可以从以下两个链接中进行探索。