LSTM इकाइयों बनाम कोशिकाओं को समझना


32

मैं कुछ समय से LSTM का अध्ययन कर रहा हूं। मैं एक उच्च स्तर पर समझता हूं कि सब कुछ कैसे काम करता है। हालाँकि, उन्हें Tensorflow का उपयोग करके लागू करने जा रहा है मैंने देखा है कि BasicLSTMCell को कई इकाइयों (यानी num_units) पैरामीटर की आवश्यकता होती है ।

से इस LSTMs की बहुत विस्तृत विवरण, मैं एकत्र किया है कि एक ही LSTM इकाई निम्नलिखित में से एक है

LSTM इकाई

जो वास्तव में एक GRU इकाई है।

मुझे लगता है कि के पैरामीटर num_unitsका BasicLSTMCellजिक्र है कि हम इनमें से कितने को परत में एक दूसरे को हुक करना चाहते हैं।

यह सवाल छोड़ देता है - इस संदर्भ में एक "सेल" क्या है? क्या एक "सेल" एक सामान्य फीड-फॉरवर्ड न्यूरल नेटवर्क में एक परत के बराबर है?


मैं अभी भी उलझन में हूं, मैं colah.github.io/posts/2015-08-Understanding-LSTMs पढ़ रहा था और मैं इसे अच्छी तरह समझता हूं। उस लेख के संबंध में शब्द सेल कैसे लागू होता है? ऐसा लगता है कि लेख में एक एलएसटीएम सेल एक वेक्टर है जैसा कि टेंसोरफ्लो में है, है ना?
पिनोच्चियो

जवाबों:


17

शब्दावली दुर्भाग्य से असंगत है। num_unitsTensorFlow में छिपे हुए राज्यों की संख्या है, अर्थात आपके द्वारा दिए गए समीकरणों में का आयाम ।ht

इसके अलावा, https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.nn.rn_cell.RNNCell.md से :

इस पैकेज में सेल की परिभाषा साहित्य में प्रयुक्त परिभाषा से भिन्न है। साहित्य में, सेल एक एकल स्केलर आउटपुट के साथ एक ऑब्जेक्ट को संदर्भित करता है। इस पैकेज में परिभाषा ऐसी इकाइयों की एक क्षैतिज सरणी को संदर्भित करती है।

"LSTM परत" शायद अधिक स्पष्ट है, उदाहरण :

def lstm_layer(tparams, state_below, options, prefix='lstm', mask=None):
    nsteps = state_below.shape[0]
    if state_below.ndim == 3:
        n_samples = state_below.shape[1]
    else:
        n_samples = 1

    assert mask is not None
    […]

आह, मैं देख रहा हूं, तो एक "सेल" num_unitइंटरकनेक्टेड एलएसटीएम कोशिकाओं का एक आकार क्षैतिज सरणी है। समझ में आता है। तो फिर यह एक मानक फीड-फॉरवर्ड नेटवर्क में एक छिपी हुई परत के अनुरूप होगा?

* LSTM राज्य इकाइयाँ


1
@ साइकोरेक्स उदाहरण के लिए, यदि तंत्रिका नेटवर्क का इनपुट 10 समय के चरणों के साथ एक समयरेखा है, तो क्षैतिज आयाम में 10 तत्व हैं।
फ्रेंक डर्नोनकोर्ट

1
मैं अभी भी उलझन में हूं, मैं colah.github.io/posts/2015-08-Understanding-LSTMs पढ़ रहा था और मैं इसे अच्छी तरह समझता हूं। उस लेख के संबंध में शब्द सेल कैसे लागू होता है? ऐसा लगता है कि लेख में एक एलएसटीएम सेल एक वेक्टर है जैसा कि टेंसोरफ्लो में है, है ना?
पिनोच्चियो

4

अधिकांश LSTM / RNN चित्र केवल छिपी हुई कोशिकाओं को दिखाते हैं, लेकिन उन कोशिकाओं की इकाइयों को कभी नहीं। इसलिए, भ्रम। प्रत्येक छिपी हुई परत में छिपी हुई कोशिकाएं होती हैं, जितने समय के कदम होते हैं। और आगे, प्रत्येक छिपी हुई कोशिका कई छिपी हुई इकाइयों से बनी होती है, जैसे नीचे दिए गए चित्र में। इसलिए, आरएनएन में एक छिपे हुए परत मैट्रिक्स की आयामीता है (समय कदमों की संख्या, छिपी हुई इकाइयों की संख्या)।

यहां छवि विवरण दर्ज करें


4

हालाँकि यह मुद्दा लगभग वैसा ही है जैसा मैंने इस उत्तर में बताया था , मैं इस मुद्दे को स्पष्ट करना चाहूँगा, जिसने मुझे आज भी seq2seq मॉडल में थोड़ा भ्रमित कर दिया (धन्यवाद @Franck Dernoncourt के उत्तर के लिए), ग्राफ में। इस सरल एनकोडर आरेख में:

यहां छवि विवरण दर्ज करें

hमैं


मेरा मानना है कि num_units = nयह आंकड़ा में
notilas

-1

मेरी राय में, सेल का मतलब नोड होता है जैसे कि छिपी हुई सेल जिसे हिडन नोड भी कहा जाता है, बहुपरत LSTM मॉडल के लिए, सेल की संख्या को time_steps * num_layers द्वारा गणना की जा सकती है, और num_units time_steps के बराबर है


-1

केरस में इकाइयाँ आउटपुट स्पेस का आयाम है, जो नेटवर्क में आ रही देरी (time_step) की लंबाई के बराबर है।

keras.layers.LSTM(units, activation='tanh', ....)

https://keras.io/layers/recurrent/

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