2017-05-02 13 views
11

मैक्सपूलिंग 1 डी और ग्लोबलमैक्सपूलिंग 1 डी दोनों को अस्थायी डेटा के लिए अधिकतम पूलिंग ऑपरेशन के रूप में वर्णित किया गया है।केरास मैक्सपूलिंग 1 डी और ग्लोबलमैक्सपूलिंग 1 डी फ़ंक्शंस के बीच क्या अंतर है?

keras.layers.pooling.MaxPooling1D(pool_size=2, strides=None, padding='valid')

मैं समझता हूँ कि GlobalMaxPooling1D कोई इनपुट पैरामीटर लेता है। keras.layers.pooling.GlobalMaxPooling1D()

मैं सिर्फ यह समझना चाहूंगा कि उनमें से दो कैसे काम करते हैं?

उत्तर

21

टीडी;GlobalPooling1D अस्थायी आंकड़ों के लिए चरणों आयाम के आधार पर अधिकतम वेक्टर लेता एलआर। तो आकार के साथ एक टेंसर [10, 4, 10] वैश्विक पूलिंग के बाद आकार [10, 10] के साथ एक टेंसर बन जाता है। MaxPooling1D चरणों में अधिकतम भी लेता है लेकिन प्रत्येक चरण के लिए pool_size पर बाध्य है। तो एक [10, 4, 10] pooling_size=2 और stride=1 साथ टेन्सर एक [10, 3, 10] टेन्सर के बाद ग्राफिक सहायता से MaxPooling(pooling_size=2, stride=1)

लांग जवाब

चलें कहते हैं कि हम 3 के साथ एक सरल वाक्य है शब्द और हमारे पास शब्दों के लिए कुछ वेक्टर एन्कोडिंग है (जैसे word2vec एम्बेडिंग)। बेशक आप आमतौर पर अधिकतम पूल नहीं लेते हैं और टेंसर एम्बेड करते हैं लेकिन यह एक उदाहरण के लिए करना चाहिए। इसके अलावा चैनलों में ग्लोबल पूलिंग काम करता है लेकिन मैं इसे इस चित्रण से बाहर छोड़ दूंगा। अंत में, चीजें पैडिंग के साथ थोड़ा और जटिल हो जाती हैं लेकिन हमें इसकी आवश्यकता नहीं है।

मान लीजिए हम maxPooling1D(pool_size=2, strides=1). फिर

the [[.7, -0.2, .1] | pool size is two     
boy [.8, -.3, .2] | so look at two words at a time | stride=1 will 
will [.2, -.1, .4]  and take the max over those  | move the pool down 
live [.4 -.4, .8]] 2 vectors. Here we looking   1 word. Now we look 
          'the' and 'boy'.    'boy' and 'will' and 
                  take the max. 

तो है कि एक का परिणाम देगा है [1, 3, 3] के साथ टेन्सर प्रत्येक timestep एक 2D पूल से अधिक अधिकतम किया जा रहा है। और चूंकि हमारे पास 3 पूल थे, हमने प्रभावी रूप से 4 से 3.

हालांकि, अगर हम GlobalPooling1D का उपयोग करते हैं तो हम केवल उस वाक्य (टेन्सर) का अधिकतम वेक्टर लेंगे जो शायद शब्द का वेक्टर प्रतिनिधित्व है ' जीना'।

दरअसल, यहां कैसे GlobalMaxPooling1D keras

class GlobalMaxPooling1D(_GlobalPooling1D): 
    """Global max pooling operation for temporal data. 
    # Input shape 
     3D tensor with shape: `(batch_size, steps, features)`. 
    # Output shape 
     2D tensor with shape: 
     `(batch_size, channels)` 
    """ 

    def call(self, inputs): 
     return K.max(inputs, axis=1) 

उम्मीद है कि मदद करता है कि में परिभाषित किया गया है, मुझे कुछ भी स्पष्ट करने के लिए के लिए कहें।

import numpy as np 
from keras.models import Sequential 
from keras.layers import Dense, LSTM, MaxGlobalMaxPooling1D 

D = np.random.rand(10, 6, 10) 

model = Sequential() 
model.add(LSTM(16, input_shape=(6, 10), return_sequences=True)) 
model.add(MaxPooling1D(pool_size=2, strides=1)) 
model.add(LSTM(10)) 
model.add(Dense(1)) 
model.compile(loss='binary_crossentropy', optimizer='sgd') 

# print the summary to see how the dimension change after the layers are 
# applied 

print(model.summary()) 

# try a model with MaxGlobalPooling1D now 

model = Sequential() 
model.add(LSTM(16, input_shape=(6, 10), return_sequences=True)) 
model.add(GlobalMaxPooling1D()) 
model.add(Dense(1)) 
model.compile(loss='binary_crossentropy', optimizer='sgd') 

print(model.summary()) 
+0

एक महान व्याख्या दी गई है कि:

इसके अतिरिक्त यहाँ एक उदाहरण है कि आप के साथ खेल सकते हैं। आपका बहुत बहुत धन्यवाद! – KayBay

+0

एक [x, y, z] टेंसर क्या है? मैं टेंसर के लिए नया हूँ। मैं समझता हूं कि यह एक 3 आयामी रैखिक संबंध वस्तु है। और पूल क्या हैं? क्या यह इस मामले में पढ़ने वाले शब्दों की संख्या है? अगर मुझे व्याख्या करने में बहुत लंबा समय लगता है तो मुझे एक लिंक या ट्यूटोरियल पर रीडायरेक्ट करने में संकोच न करें – Marine1

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