Tôi đang đào tạo một ô LSTM trên các chuỗi các trình tự có độ dài khác nhau. Các tf.nn.rnn
có tham số rất thuận tiện sequence_length
, nhưng sau khi gọi nó, tôi không biết làm thế nào để chọn các hàng đầu ra tương ứng với bước thời gian cuối cùng của mỗi mục trong lô.Cách chọn giá trị đầu ra hợp lệ cuối cùng từ tensorflow RNN
Mã của tôi về cơ bản là như sau:
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
là một danh sách với sản lượng LSTM tại mỗi bước. Tuy nhiên, mỗi mục trong nhóm của tôi có độ dài khác nhau, và vì vậy tôi muốn tạo một tensor chứa đầu ra LSTM cuối cùng hợp lệ cho mỗi mục trong lô của tôi.
Nếu tôi có thể sử dụng chỉ mục NumPy, tôi sẽ chỉ làm điều gì đó như thế này:
all_outputs = tf.pack(lstm_outputs)
last_outputs = all_outputs[sequence_lengths, tf.range(batch_size), :]
Nhưng nó chỉ ra rằng trong thời gian này bắt đầu tensorflow không hỗ trợ nó (tôi nhận thức được feature request) .
Vì vậy, làm cách nào tôi có thể nhận được các giá trị này?
Vâng, chắc chắn đó sẽ không phải là giải pháp tốt nhất. Nhưng ngay bây giờ tôi không thể nhìn thấy bất kỳ cách nào khác. – erickrf
Có cách nào tốt hơn bây giờ không? – Zhao