如何结合两个RNN模型

时间:2019-02-12 14:46:09

标签: tensorflow

我对tensorflow有疑问,现在我使用tensorflow构建了两个RNN模型。

  • RNN1(编码器)是3层LSTM单元,单元大小为256

  • RNN2(解码器)是3层LSTM单元,单元大小为512。

现在我要按状态组合两个RNN,这意味着最后一个状态    RNN1的状态为RNN2的第一个状态。我想问一下如何实施    那?

我尝试将RNN1和RNN2设置为具有相同的像元大小(512),并使用以下代码:

decoder_initial_state = cell.zero_state(batch_size, tf.float32).clone(cell_state=encoder_state)`    #this code is from Internet.

但我认为这是不对的。

感谢任何帮助 谢谢

1 个答案:

答案 0 :(得分:0)

从您发布的示例代码中,我很确定它是正确的。

  

2)我认为这是不对的,因为RNN1编码器和RNN2解码器假定是通过状态连接的,但是在此代码中,它只是所有RNN2状态通过RNN1状态的初始状态。

尽管已对此进行了初始化,但是如果您查看build_decoder函数,则会看到在解码器中使用了decoder_initial_state。因此,encoder_state-> decoder_initial_state-> build_decoder

高级

Tensorflow构建计算图时,由于创建计算图的方式,它会自动将RNN1的结果馈送到RNN2中。在Tensorflow中定义操作时,并不是在“直接”馈送数据,而是在“将这些操作链接在一起”

前进

您应该从一个更简单的例子开始Seq2Seq Tutorial,它会引导您完成一个简单的编码器-解码器。这应该使您更好地理解,以便您可以处理已发布的代码:)

祝一切顺利!希望这会有所帮助