我试图在张量流中将两个LSTM状态连接在一起。以前,这已经使用tf.concat
完成,但这对我不起作用,因为我需要计算结果状态的日志,并且我无法遍历'Tensor' object is not iterable
以来的结果状态。
以下是我要做的事情:
outputs, fstate = tf.nn.dynamic_rnn(cell=lstm, inputs=rnn_inputs,
sequence_length=lengths,
dtype=tf.float32, time_major=False)
outputs2, fstate2 = tf.nn.dynamic_rnn(cell=lstm2, inputs=rnn_inputs2,
sequence_length=lengths2,
dtype=tf.float32, time_major=False)
newRnnState = tf.concat([fstate, fstate2], 1)
logits = tf.matmul(tf.concat([f.h for f in newRnnState], 1), output_layer[0]) + output_bias[0]
这会返回错误:TypeError: 'Tensor' object is not iterable.
有没有办法做到这一点,以便我可以将两个RNN状态连接在一起并像这样使用它们?
由于
答案 0 :(得分:1)
根据我们在评论中所说的,您应该将输出图层的大小设置为(2*cell_size, output_size)
,因为您沿着轴1连接了2个cell_size大小的状态。然后您可以使用:
tf.matmul(tf.concat([fstate[0].h, fstate2[0].h], 1), output_layer[0]) + output_bias[0]