0

我在 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 倍。

提前致谢。

4

0 回答 0