का उपयोग कर AveragePooling2D के बजाय GlobalAveragePooling 2 डी को बदलने के लिए घने परतों के बाद एक FCN वर्गीकरण के लिए

0

सवाल

मैं उपयोग कर सकते हैं एक एक AveragePooling2D परत के साथ pool_size के बराबर आकार की सुविधा नक्शे के बजाय एक GlobalAveragePooling2D परत? इस का उद्देश्य है को प्रतिस्थापित करने के लिए एक घने परत के बाद एक FCN. है GlobalAveragePooling2D एक विशेष मामले के AveragePooling2D??

deep-learning keras tensorflow
2021-11-22 13:35:20
2

सबसे अच्छा जवाब

2

GlobalAveragePooling2D जाएगा downsample एक इनपुट लेने के द्वारा, औसत मूल्य के साथ स्थानिक आयामों और वापस एक -1 डी आउटपुट: डिफ़ॉल्ट रूप से, जब तक कि आप सेट keepdims= True. AveragePooling2D यह भी downsamples एक इनपुट लेता है, लेकिन औसत मूल्य पर एक इनपुट खिड़की से परिभाषित pool_size पैरामीटर. तो, यह वापस आ जाएगी एक 3 डी उत्पादन:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

x = tf.reshape(x, [1, 3, 3, 1]) # Add batch dimension

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
   strides=(1, 1), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()
print(avg_pool_2d(x).shape)
print(avg_global_2d(x).shape)
(1, 2, 2, 1)
(1, 1)

आप शायद होगा समतल करने के लिए अपने उत्पादन में से AveragePooling2D परत करना चाहते हैं तो आप इसे फ़ीड करने के लिए एक Dense परत बाद में:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

x = tf.reshape(x, [1, 3, 3, 1]) # Add batch dimension

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
   strides=(1, 1), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()
print(tf.keras.layers.Flatten()(avg_pool_2d(x)).shape)
print(avg_global_2d(x).shape)
(1, 4)
(1, 1)

अगर है कि मामला नहीं है आप कर सकते हैं बस इसे छोड़ के रूप में यह है.

अद्यतन: GlobalAveragePooling2D और AveragePooling2D कर सकते हैं कभी कभी इसी तरह व्यवहार करते हैं, तो आप को समायोजित strides और pool_size मापदंडों तदनुसार:

import tensorflow as tf
x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.],
                 [7., 8., 9.]])

x = tf.reshape(x, [1, 3, 3, 1]) # Add batch dimension

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(2, 2),
   strides=(3, 3), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()

print(avg_pool_2d(x))
print(avg_global_2d(x))
tf.Tensor([[[[3.]]]], shape=(1, 1, 1, 1), dtype=float32)
tf.Tensor([[5.]], shape=(1, 1), dtype=float32)

या

avg_pool_2d = tf.keras.layers.AveragePooling2D(pool_size=(3, 3),
   strides=(2, 2), padding='valid')
avg_global_2d = tf.keras.layers.GlobalAveragePooling2D()
tf.Tensor([[[[5.]]]], shape=(1, 1, 1, 1), dtype=float32)
tf.Tensor([[5.]], shape=(1, 1), dtype=float32)
2021-11-22 14:51:04

'x = इनपुट(आकार=(128,128,3))' के बाद कई और अधिक FCN परतों मैं करने के लिए मिल : 'एक = Conv2D(200 ,(1,1), गद्दी = 'ही' , सक्रियण='softmax', data_format = 'channels_last')(output_of_the_layer_before)' पिछले convolutional परत तो मैं 'b = लैम्ब्डा(lambda x निचोड़: (एक्स अक्ष=2))(AveragePooling2D(pool_size=(1, 128))(एक)
DSPinterested

यह बिल्कुल ठीक काम करता है के लिए विशिष्ट कार्य मैंने किया है, जो मुझे आश्चर्य है कि का उपयोग कर GlobalaveragePooling2D नहीं हो सकता है केवल एक के लिए उपलब्ध विकल्प की जगह घने परतों के साथ भी GlobalAveragePooling2D आप का विकल्प होता है 'keepdims= सच' या 'keepdims= झूठी' , साझा नहीं कर सकते हैं अपने कोड, मुझे आशा है कि यह समझ में बनाया करने के लिए आप
DSPinterested

हाँ, यह समझ में बनाया करने के लिए । लेकिन क्या वास्तव में अपने अब सवाल है या आप क्या कर रहे हैं समझ नहीं है?
AloneTogether

कैसे का उपयोग करके AveragePooling2D परत की तरह ऊपर वर्णित करने के लिए सुराग लगभग एक ही वर्गीकरण परिणाम के रूप में GlobalAveragePooling2D! आमतौर पर साहित्य में मैं लगभग हमेशा देखा GlobalAveragePooling2D के रूप में के लिए एक स्थानापन्न के घने परतों में FCN लेकिन कभी नहीं देखा AveragePooling2D इस्तेमाल किया जा रहा है के बजाय एक घने परत
DSPinterested

अद्यतन का जवाब नहीं कर सकते लेकिन पुन: पेश कोड में जोड़ा गया टिप्पणी.. कृपया अपने सवाल के साथ प्रासंगिक कोड, परिणाम, और अपने प्रश्न.
AloneTogether

वैश्विक औसत पूलिंग कुछ खास नहीं है. आप उपयोग कर सकते हैं औसत पूलिंग के साथ फ़िल्टर आकार के बराबर इनपुट आकार और वैध गद्दी है, तो यह बिल्कुल वैसा ही है । आप भी कर सकता है जैसे कार्यों का उपयोग tf.reduce_mean. कारण कोई भी नहीं करता है, यह है कि यह सिर्फ आसान तरीका का उपयोग करने के लिए वैश्विक पूलिंग सीधे...
xdurch0

@xdurch0 , समझ में आता है!
DSPinterested
0

जोड़ने के लिए ऊपर के जवाब में, वैश्विक औसत पूलिंग इस्तेमाल किया जा सकता लेने के लिए चर आकार की छवियों के रूप में जानकारी. यदि इनपुट आकार से पहले वैश्विक पूलिंग है (N,H,W,C) तो उत्पादन किया जाएगा (N,1,1,C) के लिए keras जब keepdims=True. इस बनाता है उत्पादन की छवियों के साथ अलग अलग (H,W) उत्पादन इसी तरह के आकार outputs.

संदर्भ:

2021-11-22 13:59:40

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में