Я использую dynamic_rnn для обработки данных MNIST:
# LSTM Cell
lstm = rnn_cell.LSTMCell(num_units=200,
forget_bias=1.0,
initializer=tf.random_normal)
# Initial state
istate = lstm.zero_state(batch_size, "float")
# Get lstm cell output
output, states = rnn.dynamic_rnn(lstm, X, initial_state=istate)
# Output at last time point T
output_at_T = output[:, 27, :]
Полный код: http://pastebin.com/bhf9MgMe
Вход в lstm равен (batch_size, sequence_length, input_size)
В результате размеры output_at_T
равны (batch_size, sequence_length, num_units)
, где num_units=200
.
Мне нужно получить последний результат по размеру sequence_length
. В приведенном выше коде это жестко закодировано как 27
. Тем не менее, я не знаю sequence_length
заранее, так как он может меняться от партии к партии в моем приложении.
Я пробовал:
output_at_T = output[:, -1, :]
но он говорит, что отрицательная индексация еще не реализована, и я попытался использовать переменную-заполнителя, а также константу (в которую я мог бы идеально комбинировать sequence_length
для определенной партии); ни работали.
Любой способ реализовать что-то подобное в тензорном потоке atm?