Reputation: 3680
I'm a bit confused when it comes to the average pooling layers of Keras. The documentation states the following:
AveragePooling1D: Average pooling for temporal data.
Arguments
pool_size: Integer, size of the average pooling windows. strides: Integer, or None. Factor by which to downscale. E.g. 2 will halve the input. If None, it will default to pool_size. padding: One of "valid" or "same" (case-insensitive). data_format: A string, one of channels_last (default) or channels_first. The ordering of the dimensions in the inputs.
channels_last corresponds to inputs with shape (batch, steps, features) while channels_first corresponds to inputs with shape (batch, features, steps).
Input shape
If data_format='channels_last': 3D tensor with shape: (batch_size, steps, features) If data_format='channels_first': 3D tensor with shape: (batch_size, features, steps)
Output shape
If data_format='channels_last': 3D tensor with shape: (batch_size, downsampled_steps, features) If data_format='channels_first': 3D tensor with shape: (batch_size, features, downsampled_steps)
and
GlobalAveragePooling1D: Global average pooling operation for temporal data.
Arguments
data_format: A string, one of channels_last (default) or channels_first. The ordering of the dimensions in the inputs.
channels_last corresponds to inputs with shape (batch, steps, features) while channels_first corresponds to inputs with shape (batch, features, steps).
Input shape
If data_format='channels_last': 3D tensor with shape: (batch_size, steps, features) If data_format='channels_first': 3D tensor with shape: (batch_size, features, steps)
Output shape
2D tensor with shape: (batch_size, features)
I (think that I) do get the concept of average pooling but I don't really understand why the GlobalAveragePooling1D layer simply drops the steps parameter. Thank you very much for your answers.
Upvotes: 6
Views: 12563
Reputation: 3580
GlobalAveragePooling1D
is same as AveragePooling1D
with pool_size=steps
. So, for each feature dimension, it takes average among all time steps. The output thus have shape (batch_size, 1, features)
(if data_format='channels_last'
). They just flatten the second (or third if data_format='channels_first'
) dimension, that is how you get output shape equal to (batch_size, features)
.
Upvotes: 15