आरसीएन (LSTM) का उपयोग समय के वैक्टर (थीनो) की भविष्यवाणी के लिए


19

मुझे बहुत ही साधारण समस्या है लेकिन मुझे इसे हल करने के लिए एक सही उपकरण नहीं मिल रहा है।

मेरे पास उसी लंबाई के वैक्टर के कुछ अनुक्रम हैं। अब मैं इन अनुक्रमों के ट्रेन नमूने पर LSTM RNN को प्रशिक्षित करना चाहता हूं और फिर कई प्राइमिंग वैक्टरों के आधार पर लंबाई के वैक्टर के नए अनुक्रम की भविष्यवाणी करना चाहता हूं ।n

मुझे सरल कार्यान्वयन नहीं मिल रहा है जो ऐसा करेगा। मेरी आधार भाषा पायथन है, लेकिन जो कुछ भी दिनों के लिए स्थापित नहीं होता है वह आयोजित करेगा।

मैंने Lasagne का उपयोग करने की कोशिश की , लेकिन RNN का कार्यान्वयन अभी तक तैयार नहीं है और यह अलग-अलग पैकेज nntools में है । वैसे भी, मैंने बाद वाले की कोशिश की, लेकिन मैं यह पता नहीं लगा सकता कि इसे कैसे प्रशिक्षित किया जाए, फिर इसे कुछ टेस्ट वैक्टरों द्वारा प्राइम किया और इसे न्यूऑन (ओं) का अनुमान लगाने दिया। ब्लॉक एक ही समस्या है - LSTM RNN के लिए कोई दस्तावेज उपलब्ध नहीं है, हालांकि ऐसा लगता है कि कुछ वर्ग और कार्य हैं जो काम कर सकते हैं (जैसे blocks.bricks.recurrent)।

थेनो, की तरह में RNN LSTM के कई कार्यान्वयन कर रहे हैं GroundHog, theano-rnn, theano_lstmऔर कुछ कागजात के लिए कोड, लेकिन उन के पास ट्यूटोरियल गैर या कैसे मैं क्या चाहते करने के लिए मार्गदर्शन।

एकमात्र उपयोगी समाधान जो मैंने पाया है वह Pybrain का उपयोग कर रहा था। लेकिन दुर्भाग्य से इसमें थीनो (मुख्य रूप से GPU कम्प्यूटेशन) की सुविधाओं का अभाव है और यह अनाथ है (कोई नई सुविधाएँ और समर्थन नहीं)।

क्या किसी को पता है कि मुझे वह कहाँ मिल सकता है जो मैं माँग रहा हूँ? वैक्टर के दृश्यों की भविष्यवाणी के लिए RNN LSTM के साथ काम करना आसान है?

संपादित करें:

मैंने केरस को इस तरह आज़माया:

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.layers.embeddings import Embedding
from keras.layers.recurrent import LSTM

model = Sequential()
model.add(Embedding(12, 256))
model.regularizers = []
model(LSTM(256, 128, activation='sigmoid', 
               inner_activation='hard_sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(128, 12))
model.add(Activation('sigmoid'))
model.compile(loss='mean_squared_error', optimizer='rmsprop')

लेकिन मुझे यह त्रुटि तब आ रही है जब इसे फिट करने की कोशिश की जा रही है model.fit(X_train, y_train, batch_size=16, nb_epoch=10)

IndexError: index 800 is out of bounds for axis 1 with size 12

जबकि X_trainऔर y_train, जैसे (लंबाई 12 की) सरणियों के सरणियों हैं[[i for i in range(12)] for j in range(1000)]


1
यदि आपके सभी दृश्यों की लंबाई समान है, तो आपको RNN की आवश्यकता क्यों है? एएनएन के माध्यम से ट्रेन स्टैटिक इनपुट वेक्टर आसान और तेज होगा।
itdxer

वैक्टर समय से आते हैं। तो RNN आवश्यक है मुझे लगता है?
कोट्रफा

1
जब आप इनपुट या आउटपुट वेक्टर आकार नहीं जानते हैं, तो RNN कार्यों के लिए एक बहुत बढ़िया है। उदाहरण के लिए आप बिल्ड नेटवर्क चाहते हैं जो अंग्रेजी में वर्णन करेगा कि आप चित्र पर क्या देख सकते हैं, इसलिए आपका इनपुट स्थिर छवि हो सकता है, लेकिन आउटपुट तस्वीर पर जो आप देख सकते हैं, उस पर निर्भर करेगा। एक अन्य उदाहरण जब आप पाठ अनुवाद प्राप्त करना चाहते हैं, तो आपका इनपुट और आउटपुट दोनों अज्ञात हैं।
itdxer

स्पष्टीकरण के लिए धन्यवाद। इसलिए इस कार्य में आरएनएन का उपयोग करने का कोई कारण नहीं है। ठीक है।
कोत्रफा

2
@ itdxer की टिप्पणी भ्रामक है। यहां तक ​​कि अगर आपके डेटा में हर जगह समान लंबाई है, तो RNN का उपयोग करना फायदेमंद हो सकता है। एक आरएनएन डेटा की एक धारणा का परिचय देता है, मुख्य रूप से यह अनुक्रमिक प्रकृति का है। समय अक्ष के साथ उदाहरण अनुवाद RNN द्वारा इनायत से संभाला जाता है, लेकिन फ़ीड फॉरवर्ड विधियों द्वारा नहीं - उन्हें यह महसूस करने के लिए बहुत अधिक प्रशिक्षण डेटा की आवश्यकता होती है और अनुमान लगाने के लिए कई और पैरामीटर हैं। ऐसे और भी कई मामले हैं, जहां एक ANN RNN के बजाय उपयोग किए जाने पर दुर्घटनाग्रस्त हो जाएगा और जल जाएगा।
बेयरज

जवाबों:


10

मुझे आखिरकार एक रास्ता मिल गया और मैंने इसे अपने ब्लॉग पर यहाँ दस्तावेज़ित किया

कई रूपरेखाओं की तुलना की जाती है और फिर केर में एक कार्यान्वयन भी किया जाता है।


5

मैं निम्नलिखित सुझाव दूंगा:

०) थीनो वास्तव में शक्तिशाली है लेकिन हाँ कॉड को कभी-कभी शुरू करने के लिए अलग किया जा सकता है

1) मैं आपको सुझाव दूंगा कि आप ब्रेज़ को देखें: https://github.com/breze-no-salt/breze/blob/master/notebooks/recurrent-networks/RNNs%20for%20foriano%20music.ipynb जो थोड़ा आसान है समझा जा सकता है और एक LSTM मॉड्यूल भी है। इसके अलावा, एक अंतरंग विकल्प हार्वर्ड द्वारा ऑटोग्रैड है, जो संख्यात्मक कार्यों के स्वचालित प्रतीकात्मक भेदभाव करता है https://github.com/HIPS/autograd/blob/master/examples/lstm.py और इसलिए आप आसानी से समझ सकते हैं कि चल रहा है।

2) मैं एक अजगर प्रशंसक हूं लेकिन यह मेरी व्यक्तिगत पसंद है। क्या आपने माना है कि Torch7 का उपयोग तंत्रिका नेटवर्क के लिए सबसे उपयोगकर्ता के अनुकूल ढांचा है और इसका उपयोग Google Deepmind और Facebook AI द्वारा भी किया जाता है? आप RNNs http://karpathy.github.io/2015/05/21/rnn-effectiveness/ के बारे में यह बहुत ही अंतरंग ब्लॉग पोस्ट देख सकते हैं । इसके अतिरिक्त, LSTM कार्यान्वयन पोस्ट के github रेपो में उपलब्ध है, जबकि एक विकल्प rnn पैकेज https://github.com/Element-Research/rnn है


1
मैंने पिछले कुछ हफ्तों से करपाथी के काम का सफलतापूर्वक इस्तेमाल किया है। दुर्भाग्य से, मैं वैक्टरों की भविष्यवाणी करने और पात्रों के अनुक्रम नहीं बनाने के लिए उनके एल्गोरिथ्म को ट्विट करने में सक्षम नहीं हूं। यह इसलिए भी है क्योंकि मैं लूआ से बहुत परिचित नहीं हूं। इसलिए, मैंने टार्च 7 का भी निष्क्रिय रूप से उपयोग किया है, लेकिन मुझे वास्तव में यह बहुत अनुकूल नहीं लगता है। धन्यवाद
kotrfa

SNN

मेरे पास प्रत्येक सेकंड के लिए माप से 12 तत्वों का वेक्टर है। मैं नेट को प्रशिक्षित करना चाहता हूं, फिर इसे 5 वैक्टर (12 की लंबाई) द्वारा प्राइम करते हैं और इसे निम्न वेक्टर की भविष्यवाणी करते हैं। और कुछ नहीं। मैंने Keras के उपयोग से अपने प्रश्न को अपडेट किया है।
कोटरफा

आप इसके लिए एक सरल फ़ीड का भी उपयोग कर सकते हैं, भले ही आपके वैक्टर समय-श्रृंखला से आए हों। बस यह सुनिश्चित करें कि दृश्यों की संख्या स्थिर है।
यानिस असैल

मैंने जो कुछ लेख पढ़े हैं, उनमें से, जैसे करपाथी, मैं समझता हूं कि LSTM अनुक्रमों के लिए सबसे अच्छा विकल्प है, नहीं? क्या सरल फ़ीड फॉरवर्ड एनएन में "मेमोरी फीचर" है?
कोट्रफा

0

मैंने LSTM का परीक्षण किया है जो थीनो के साथ कुछ समय के अनुक्रम की भविष्यवाणी कर रहा है। मैंने पाया कि कुछ चिकनी वक्र के लिए, यह ठीक से भविष्यवाणी की जा सकती है। हालांकि कुछ वक्र वक्र के लिए। भविष्यवाणी करना कठिन है। विस्तृत लेख नीचे दिया गया है: LSTM के साथ भविष्यवाणी समय अनुक्रम

अनुमानित परिणाम निम्नानुसार दिखाए जा सकते हैं:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.