【发布时间】:2016-06-20 13:05:52
【问题描述】:
我正在用不同长度的批次序列训练 LSTM 单元。 tf.nn.rnn有一个很方便的参数sequence_length,但是调用后不知道如何选择批次中每一项的最后一个时间步对应的输出行。
我的代码基本如下:
lstm_cell = tf.nn.rnn_cell.LSTMCell(num_lstm_units, input_size)
lstm_outputs, state = tf.nn.rnn(lstm_cell, input_list, dtype=tf.float32, sequence_length=sequence_lengths)
lstm_outputs 是一个包含每个时间步长的 LSTM 输出的列表。但是,我的批次中的每个项目都有不同的长度,因此我想创建一个张量,其中包含对我的批次中的每个项目有效的最后一个 LSTM 输出。
如果我可以使用 numpy 索引,我会这样做:
all_outputs = tf.pack(lstm_outputs)
last_outputs = all_outputs[sequence_lengths, tf.range(batch_size), :]
但事实证明,当时开始 tensorflow 不支持它(我知道feature request)。
那么,我怎样才能得到这些值呢?
【问题讨论】:
标签: python tensorflow lstm