2017-10-31 36 views
5

मैं लंबे अनुक्रमिक डेटा से निपट रहा हूं जिसे आरएनएन को पारित किया जाना है। छोटा कर दिया BPTT और बैचिंग करने के लिए, लगता है कि वहाँ दो विकल्प हैं:tensorflow की tf.contrib.training.batch_sequences_with_states API कार्य कैसे करता है?

  1. विभिन्न दृश्यों से संबंधित क्षेत्रों के संयोजन के द्वारा एक बैच बनाएँ। बैच में प्रत्येक अनुक्रम की अंतिम स्थिति को सुरक्षित रखें और इसे अगले बैच पर पास करें।
  2. बैच के सदस्य बनने के अनुक्रम से सेगमेंट के साथ मिनी-बैच के रूप में प्रत्येक अनुक्रम पर विचार करें। एक सेगमेंट में आखिरी बार कदम की स्थिति को सुरक्षित रखें और इसे अगले सेगमेंट के पहले चरण में पास करें।

मैं tf.contrib.training.batch_sequences_with_states पर आया जो कि दोनों में से एक ऐसा प्रतीत होता है। दस्तावेज मुझे भ्रमित कर रहा है और इसलिए मैं निश्चित होना चाहता हूं कि यह बैच उत्पन्न करता है।

मेरा अनुमान है कि यह पहला तरीका है। इसका कारण यह है कि, यदि बैचिंग दूसरे तरीके से की जा रही है, तो हम वेक्टरेशन के लाभों का लाभ नहीं उठा सकते हैं, क्योंकि, अगले सेगमेंट के पहले चरण में एक सीमेंट के आखिरी बार चरण के बीच राज्य को संरक्षित करने के लिए, आरएनएन को एक प्रक्रिया करनी चाहिए अनुक्रमिक रूप से एक समय में टोकन।

प्रश्न:

इन दो बैचिंग रणनीतियों में से कौन सा tf.contrib.training.batch_sequences_with_states में लागू कर रहे हैं?

उत्तर

2

tf.contrib.training.batch_sequences_with_states पूर्व व्यवहार लागू करता है। प्रत्येक मिनीबैच एंट्री एक अलग अनुक्रम से एक सेगमेंट है (प्रत्येक अनुक्रम, जो सेगमेंट की एक चर संख्या से बना हो सकता है, की एक अनूठी कुंजी है और यह कुंजी batch_sequences_with_states में पारित की जाती है)। जब state_saving_rnn के साथ उपयोग किया जाता है, तो प्रत्येक सेगमेंट के लिए अंतिम स्थिति को एक विशेष स्टोरेज कंटेनर में सहेजा जाता है जो दिए गए अनुक्रम के अगले खंड को अगले sess.run पर चलाने की अनुमति देता है। अंतिम खंड एक अलग अनुक्रम के लिए एक मिनीबैच स्लॉट मुक्त करें।

संबंधित मुद्दे