Well advanced indexing is not my thing, but it works well indeed (might even be more efficient that the conv  :
# Pool approach without advanced indexing
pool = nn.AvgPool2d((1, 2), (1, 2))
output_2 = pool(x)

output_2 = output_2.view(batch_size, channels, h//2, 2, w//2)
output_2.select(3, 1).mul_(-1)
output_2 = output_2.sum(3)[0]