From 476294183c73ca559c8dacef78b41e8f8a8a4326 Mon Sep 17 00:00:00 2001 From: Qinghe JING Date: Wed, 15 Apr 2020 10:14:14 +0800 Subject: [PATCH] fix bug in reduce op (#23795) * fix bug in reduce op test=develop * fix bug in reduce op test=develop --- python/paddle/fluid/layers/nn.py | 27 ++++++++++++------- .../tests/unittests/test_variance_layer.py | 2 +- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/python/paddle/fluid/layers/nn.py b/python/paddle/fluid/layers/nn.py index 054feae2946..ef3ee0a7cd3 100644 --- a/python/paddle/fluid/layers/nn.py +++ b/python/paddle/fluid/layers/nn.py @@ -4298,14 +4298,16 @@ def reduce_sum(input, dim=None, keep_dim=False, name=None): dim = [dim] if in_dygraph_mode(): - reduce_all = True if dim == None or dim == [] else False + reduce_all = True if dim == None or dim == [] or len(dim) == len( + input.shape) else False dim = dim if dim != None and dim != [] else [0] return core.ops.reduce_sum(input, 'dim', dim, 'keep_dim', keep_dim, 'reduce_all', reduce_all) attrs = { 'dim': dim if dim != None and dim != [] else [0], 'keep_dim': keep_dim, - 'reduce_all': True if dim == None or dim == [] else False + 'reduce_all': True + if dim == None or dim == [] or len(dim) == len(input.shape) else False } check_variable_and_dtype( input, 'input', ['float32', 'float64', 'int32', 'int64'], 'reduce_sum') @@ -4373,14 +4375,16 @@ def reduce_mean(input, dim=None, keep_dim=False, name=None): dim = [dim] if in_dygraph_mode(): - reduce_all = True if dim == None or dim == [] else False + reduce_all = True if dim == None or dim == [] or len(dim) == len( + input.shape) else False dim = dim if dim != None and dim != [] else [0] return core.ops.reduce_mean(input, 'dim', dim, 'keep_dim', keep_dim, 'reduce_all', reduce_all) attrs = { 'dim': dim if dim != None and dim != [] else [0], 'keep_dim': keep_dim, - 'reduce_all': True if dim == None or dim == [] else False + 'reduce_all': True + if dim == None or dim == [] or len(dim) == len(input.shape) else False } check_variable_and_dtype( input, 'input', ['float32', 'float64', 'int32', 'int64'], 'reduce_mean') @@ -4450,7 +4454,8 @@ def reduce_max(input, dim=None, keep_dim=False, name=None): attrs={ 'dim': dim if dim != None and dim != [] else [0], 'keep_dim': keep_dim, - 'reduce_all': True if dim == None or dim == [] else False + 'reduce_all': True if dim == None or dim == [] or + len(dim) == len(input.shape) else False }) return out @@ -4511,7 +4516,8 @@ def reduce_min(input, dim=None, keep_dim=False, name=None): attrs={ 'dim': dim if dim != None and dim != [] else [0], 'keep_dim': keep_dim, - 'reduce_all': True if dim == None or dim == [] else False + 'reduce_all': True if dim == None or dim == [] or + len(dim) == len(input.shape) else False }) return out @@ -4573,7 +4579,8 @@ def reduce_prod(input, dim=None, keep_dim=False, name=None): attrs={ 'dim': dim if dim != None and dim != [] else [0], 'keep_dim': keep_dim, - 'reduce_all': True if dim == None or dim == [] else False + 'reduce_all': True if dim == None or dim == [] or + len(dim) == len(input.shape) else False }) return out @@ -4631,7 +4638,8 @@ def reduce_all(input, dim=None, keep_dim=False, name=None): attrs={ 'dim': dim if dim != None and dim != [] else [0], 'keep_dim': keep_dim, - 'reduce_all': True if dim == None or dim == [] else False + 'reduce_all': True if dim == None or dim == [] or + len(dim) == len(input.shape) else False }) return out @@ -4689,7 +4697,8 @@ def reduce_any(input, dim=None, keep_dim=False, name=None): attrs={ 'dim': dim if dim != None and dim != [] else [0], 'keep_dim': keep_dim, - 'reduce_all': True if dim == None or dim == [] else False + 'reduce_all': True if dim == None or dim == [] or + len(dim) == len(input.shape) else False }) return out diff --git a/python/paddle/fluid/tests/unittests/test_variance_layer.py b/python/paddle/fluid/tests/unittests/test_variance_layer.py index a007093fbdb..569f064db85 100644 --- a/python/paddle/fluid/tests/unittests/test_variance_layer.py +++ b/python/paddle/fluid/tests/unittests/test_variance_layer.py @@ -56,7 +56,7 @@ class TestVarianceLayer(unittest.TestCase): return np.var(self._input, axis=axis, keepdims=keepdim, ddof=ddof) def test_equal(self): - places = [] + places = [fluid.CPUPlace()] if fluid.core.is_compiled_with_cuda(): places.append(fluid.CUDAPlace(0)) for place in places: -- GitLab