def test_adaptive_max_pool2d(): inp = tensor(np.arange(0, 16, dtype=np.float32).reshape(1, 1, 4, 4)) oshp = (2, 2) grad = Grad().wrt(inp, callback=_save_to(inp)) outp = F.adaptive_max_pool2d( inp, oshp, ) assert make_shape_tuple(outp.shape) == ( inp.shape[0], inp.shape[1], *oshp, ) np.testing.assert_equal(outp.numpy(), np.array([[[[5, 7], [13, 15]]]], dtype=np.float32)) grad(outp, tensor(F.ones_like(outp))) assert make_shape_tuple(inp.grad.shape) == make_shape_tuple(inp.shape) np.testing.assert_equal( inp.grad.numpy(), np.array( [[[ [0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 1.0], ]]], dtype=np.float32, ), )
} test_cases = [ # (mge op, torch op, small inps, large inps, unpack_inps, rep) ( "adaptive_avg_pool2d", lambda x: MF.adaptive_avg_pool2d(x, (7, 7)), lambda x: TF.adaptive_avg_pool2d(x, (7, 7)), [(2, 32, 16, 16)], [(64, 512, 16, 16)], True, 1000, ), ( "adaptive_max_pool2d", lambda x: MF.adaptive_max_pool2d(x, (7, 7)), lambda x: TF.adaptive_max_pool2d(x, (7, 7)), [(2, 32, 16, 16)], [(64, 512, 16, 16)], True, 1000, ), ("argsort", MF.argsort, torch.argsort, [(1000, )], [ (1000, 1000), ], True, 1000), ( "avg_pool2d", lambda x: MF.avg_pool2d(x, 2), lambda x: TF.avg_pool2d(x, 2), [(2, 32, 16, 16)], [(64, 512, 16, 16)],