मैं उपयोग कर सकते हैं एक एक AveragePooling2D परत के साथ pool_size के बराबर आकार की सुविधा नक्शे के बजाय एक GlobalAveragePooling2D परत? इस का उद्देश्य है को प्रतिस्थापित करने के लिए एक घने परत के बाद एक FCN. है GlobalAveragePooling2D एक विशेष मामले के AveragePooling2D??
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)
tf.reduce_mean
. कारण कोई भी नहीं करता है, यह है कि यह सिर्फ आसान तरीका का उपयोग करने के लिए वैश्विक पूलिंग सीधे...