Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Keras: Difference between AveragePooling1D layer and GlobalAveragePooling1D layer

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.

like image 670
Hagbard Avatar asked Feb 02 '19 13:02

Hagbard


People also ask

What is GlobalAveragePooling1D layer?

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.

What is the difference between average pooling and global average pooling?

Similarly, the global average-pooling will output 1x1x512. In other words, given an input of WxHxD after we apply a global pooling operation, the output will be 1x1xD. Therefore, the main difference between these techniques is the way of squeezing the spatial dimension (32x32 - WxH).

Is global average pooling better than flatten?

Flattening is No brainer and it simply converts a multi-dimensional object to one-dimensional by re-arranging the elements. While GlobalAveragePooling is a methodology used for better representation of your vector. It can be 1D/2D/3D.

What is the use of global average pooling 2D?

The 2D Global average pooling block takes a tensor of size (input width) x (input height) x (input channels) and computes the average value of all values across the entire (input width) x (input height) matrix for each of the (input channels).


1 Answers

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).

like image 78
xashru Avatar answered Sep 17 '22 13:09

xashru