我对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.
但我认为这是不对的。
感谢任何帮助 谢谢
答案 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,它会引导您完成一个简单的编码器-解码器。这应该使您更好地理解,以便您可以处理已发布的代码:)
祝一切顺利!希望这会有所帮助