From 3c612b922e3da58e10940f804478f4140beeced9 Mon Sep 17 00:00:00 2001 From: Weilong Wu Date: Fri, 2 Sep 2022 14:18:09 +0800 Subject: [PATCH] [Eager] fix max_pool3d_with_index interface under different mode (#45647) * [Eager] fix max_pool3d_with_index interface under different mode * fix mistake * Add tests under legacy and supplement comments --- .../fluid/tests/unittests/test_adaptive_max_pool3d.py | 7 ++++++- python/paddle/nn/functional/pooling.py | 11 ++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/python/paddle/fluid/tests/unittests/test_adaptive_max_pool3d.py b/python/paddle/fluid/tests/unittests/test_adaptive_max_pool3d.py index 0f4a89c4761..5657624f2f4 100755 --- a/python/paddle/fluid/tests/unittests/test_adaptive_max_pool3d.py +++ b/python/paddle/fluid/tests/unittests/test_adaptive_max_pool3d.py @@ -164,7 +164,7 @@ class TestAdaptiveMaxPool3DAPI(unittest.TestCase): assert np.allclose(res_5, self.res_5_np) - def test_dynamic_graph(self): + def func_dynamic_graph(self): for use_cuda in ([False, True] if core.is_compiled_with_cuda() else [False]): place = paddle.CUDAPlace(0) if use_cuda else paddle.CPUPlace() @@ -195,6 +195,11 @@ class TestAdaptiveMaxPool3DAPI(unittest.TestCase): assert np.allclose(out_5.numpy(), self.res_5_np) + def test_dynamic_graph(self): + with paddle.fluid.framework._test_eager_guard(): + self.func_dynamic_graph() + self.func_dynamic_graph() + class TestAdaptiveMaxPool3DClassAPI(unittest.TestCase): diff --git a/python/paddle/nn/functional/pooling.py b/python/paddle/nn/functional/pooling.py index 18f0bc33ae4..4c847a4233b 100755 --- a/python/paddle/nn/functional/pooling.py +++ b/python/paddle/nn/functional/pooling.py @@ -1860,9 +1860,14 @@ def adaptive_max_pool3d(x, output_size, return_mask=False, name=None): output_size[2] = in_w if in_dynamic_mode(): - pool_out = _legacy_C_ops.max_pool3d_with_index(x, 'pooling_type', 'max', - 'ksize', output_size, - 'adaptive', True) + if in_dygraph_mode(): + # By default, strides is [1,1,1] and paddings is [0, 0, 0] + pool_out = _C_ops.max_pool3d_with_index(x, output_size, [1, 1, 1], + [0, 0, 0], False, True) + elif _in_legacy_dygraph(): + pool_out = _legacy_C_ops.max_pool3d_with_index( + x, 'pooling_type', 'max', 'ksize', output_size, 'adaptive', + True) return pool_out if return_mask else pool_out[0] l_type = 'max_pool3d_with_index' -- GitLab