in scripts/modules/deeplab.py [0:0]
def _global_pooling(self, x):
if self.training or self.pooling_size is None:
pool = x.view(x.size(0), x.size(1), -1).mean(dim=-1)
pool = pool.view(x.size(0), x.size(1), 1, 1)
else:
pooling_size = (
min(try_index(self.pooling_size, 0), x.shape[2]),
min(try_index(self.pooling_size, 1), x.shape[3]),
)
padding = (
(pooling_size[1] - 1) // 2,
(pooling_size[1] - 1) // 2
if pooling_size[1] % 2 == 1
else (pooling_size[1] - 1) // 2 + 1,
(pooling_size[0] - 1) // 2,
(pooling_size[0] - 1) // 2
if pooling_size[0] % 2 == 1
else (pooling_size[0] - 1) // 2 + 1,
)
pool = functional.avg_pool2d(x, pooling_size, stride=1)
pool = functional.pad(pool, pad=padding, mode="replicate")
return pool