से अंतिम मान्य आउटपुट मान कैसे चुनें I अलग-अलग लंबाई वाले अनुक्रमों के बैचों पर एक एलएसटीएम सेल प्रशिक्षण दे रहा हूं। tf.nn.rnn
में बहुत सुविधाजनक पैरामीटर sequence_length
है, लेकिन इसे कॉल करने के बाद, मुझे नहीं पता कि बैच में प्रत्येक आइटम के आखिरी बार चरण के साथ आउटपुट पंक्तियों को कैसे चुनें।tensorflow RNN
मेरे कोड मूल रूप से इस प्रकार है:
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 उत्पादन के साथ एक सूची है। हालांकि, मेरे बैच में प्रत्येक आइटम की एक अलग लंबाई होती है, और इसलिए मैं अपने बैच में प्रत्येक आइटम के लिए वैध अंतिम एलएसटीएम आउटपुट युक्त एक टेंसर बनाना चाहता हूं।
मैं numpy अनुक्रमण इस्तेमाल कर सकते हैं, तो मैं बस कुछ इस तरह करना होगा:
all_outputs = tf.pack(lstm_outputs)
last_outputs = all_outputs[sequence_lengths, tf.range(batch_size), :]
लेकिन यह पता चला है कि समय के लिए tensorflow इसका समर्थन नहीं करता शुरू (मैं feature request के बारे में पता कर रहा हूँ) ।
तो, मैं इन मूल्यों को कैसे प्राप्त कर सकता हूं?
हाँ, यह निश्चित रूप से नहीं सबसे अच्छा समाधान होगा: जब राज्य एक
LSTMStateTuple
है आप निम्नलिखित स्निपेट (tensorflow 0.12 में काम कर) का उपयोग कर सकते हैं। लेकिन अभी मैं किसी अन्य तरीके से नहीं देख सकता। – erickrfक्या अब कोई बेहतर तरीका है? – Zhao