dynamic_rnn的形状

时间:2017-08-15 21:28:05

标签: tensorflow lstm rnn

我在TensorFlow中实现了堆叠LSTM网络,使用:

# Stack up multiple LSTM layers
cell = tf.contrib.rnn.MultiRNNCell([lstm_layer() for _ in range(lstm_layers)])

其中lstm_layer()定义为:

def lstm_layer():
    return tf.contrib.rnn.BasicLSTMCell(lstm_size, state_is_tuple=True)

我使用批量大小为20,序列长度为200. 200是最大值,其余用零填充。我使用dynamic_rnn,我为每个样本传递序列长度:

outputs, final_state = tf.nn.dynamic_rnn(cell, 
                                     embed,
                                     sequence_length=seq_lengths,
                                     initial_state=initial_state)

当我使用outputs[:,-1,:]查看最后一个输出时,h向量的形状为(2, batch_size, cell.output_size),其中cell.output_size只是顶部LSTM图层中的单位数(在我的情况下,128,等于lstm_size)。

2来自哪里?根据我的理解,我应该为批次中的每个样本提供128个输出,而不是该数量的2倍。

提前致谢。

0 个答案:

没有答案