<p>Convolutions can work on any image input size (which is big enough). However, if you have a fully connected layer at the end, this layer needs a fixed input size. Hence the complete network needs a fixed image input size.</p>

<p>However, you can remove the fully connected layer and just work with convolutional layers. You can make a convolutional layer at the end which has the same number of filters as you have classes. But you want one value for each class which indicates the probability of that class. Hence you apply a pooling filter over the complete remaining feature map. This pooling is hence "global" as it always is as big as necessary. In contrast, usual pooling layers have a fixed size (e.g. of 2x2 or 3x3).</p>

<p>This is a general concept. You can also find global pooling in other libraries, e.g. <a href="http://lasagne.readthedocs.io/en/latest/modules/layers/pool.html#lasagne.layers.GlobalPoolLayer" rel="noreferrer">Lasagne</a>. If you want a good reference in literature, I recommend reading <a href="https://arxiv.org/pdf/1312.4400v3.pdf" rel="noreferrer">Network In Network</a>.</p>
What does global pooling do?
<p>I recently found the "global_pooling" flag in the Pooling layer in caffe, however was unable to find sth about it in the documentation here (<a href="http://caffe.berkeleyvision.org/tutorial/layers/pooling.html" rel="noreferrer">Layer Catalogue)</a>
nor here (<a href="http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PoolingLayer.html" rel="noreferrer">Pooling doxygen doc</a>) . </p>

<p>Is there an easy forward examply explanation to this in comparison to the normal Pool-Layer behaviour?</p>