Global Average Pooling Implemented in TensorFlow
At this point, this repository is in development.
I made ResNet with global average pooling instead of traditional fully-connected layer.
But the model will be replaced by simpler model for you to understand GAP easily.
The input tensor to GAP is (4, 4, 128).
In this example, I used 1 x 1 convolution to reduce filter size and then compute average pooling to 4 x 4 size.
Lastly, the output tensor of the average pooling layer is flattened by tf.reduce_mean.
The Network In Network paper is not obvious. So.. please let me know if something is wrong.
gap_filter = resnet.create_variable('filter', shape=(1, 1, 128, 10))
h = tf.nn.conv2d(h, filter=gap_filter, strides=[1, 1, 1, 1], padding='SAME')
h = tf.nn.avg_pool(h, ksize=[1, 4, 4, 256], strides=[1, 1, 1, 1], padding='VALID')
h = tf.reduce_mean(h, axis=[1, 2])