टीडी;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())
एक महान व्याख्या दी गई है कि:
इसके अतिरिक्त यहाँ एक उदाहरण है कि आप के साथ खेल सकते हैं। आपका बहुत बहुत धन्यवाद! – KayBay
एक [x, y, z] टेंसर क्या है? मैं टेंसर के लिए नया हूँ। मैं समझता हूं कि यह एक 3 आयामी रैखिक संबंध वस्तु है। और पूल क्या हैं? क्या यह इस मामले में पढ़ने वाले शब्दों की संख्या है? अगर मुझे व्याख्या करने में बहुत लंबा समय लगता है तो मुझे एक लिंक या ट्यूटोरियल पर रीडायरेक्ट करने में संकोच न करें – Marine1