我在 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 倍。
提前致谢。