未验证 提交 47629418 编写于 作者: Q Qinghe JING 提交者: GitHub

fix bug in reduce op (#23795)

* fix bug in reduce op test=develop

* fix bug in reduce op test=develop
上级 f0b08123
...@@ -4298,14 +4298,16 @@ def reduce_sum(input, dim=None, keep_dim=False, name=None): ...@@ -4298,14 +4298,16 @@ def reduce_sum(input, dim=None, keep_dim=False, name=None):
dim = [dim] dim = [dim]
if in_dygraph_mode(): 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] dim = dim if dim != None and dim != [] else [0]
return core.ops.reduce_sum(input, 'dim', dim, 'keep_dim', keep_dim, return core.ops.reduce_sum(input, 'dim', dim, 'keep_dim', keep_dim,
'reduce_all', reduce_all) 'reduce_all', reduce_all)
attrs = { attrs = {
'dim': dim if dim != None and dim != [] else [0], 'dim': dim if dim != None and dim != [] else [0],
'keep_dim': keep_dim, '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( check_variable_and_dtype(
input, 'input', ['float32', 'float64', 'int32', 'int64'], 'reduce_sum') input, 'input', ['float32', 'float64', 'int32', 'int64'], 'reduce_sum')
...@@ -4373,14 +4375,16 @@ def reduce_mean(input, dim=None, keep_dim=False, name=None): ...@@ -4373,14 +4375,16 @@ def reduce_mean(input, dim=None, keep_dim=False, name=None):
dim = [dim] dim = [dim]
if in_dygraph_mode(): 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] dim = dim if dim != None and dim != [] else [0]
return core.ops.reduce_mean(input, 'dim', dim, 'keep_dim', keep_dim, return core.ops.reduce_mean(input, 'dim', dim, 'keep_dim', keep_dim,
'reduce_all', reduce_all) 'reduce_all', reduce_all)
attrs = { attrs = {
'dim': dim if dim != None and dim != [] else [0], 'dim': dim if dim != None and dim != [] else [0],
'keep_dim': keep_dim, '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( check_variable_and_dtype(
input, 'input', ['float32', 'float64', 'int32', 'int64'], 'reduce_mean') input, 'input', ['float32', 'float64', 'int32', 'int64'], 'reduce_mean')
...@@ -4450,7 +4454,8 @@ def reduce_max(input, dim=None, keep_dim=False, name=None): ...@@ -4450,7 +4454,8 @@ def reduce_max(input, dim=None, keep_dim=False, name=None):
attrs={ attrs={
'dim': dim if dim != None and dim != [] else [0], 'dim': dim if dim != None and dim != [] else [0],
'keep_dim': keep_dim, '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 return out
...@@ -4511,7 +4516,8 @@ def reduce_min(input, dim=None, keep_dim=False, name=None): ...@@ -4511,7 +4516,8 @@ def reduce_min(input, dim=None, keep_dim=False, name=None):
attrs={ attrs={
'dim': dim if dim != None and dim != [] else [0], 'dim': dim if dim != None and dim != [] else [0],
'keep_dim': keep_dim, '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 return out
...@@ -4573,7 +4579,8 @@ def reduce_prod(input, dim=None, keep_dim=False, name=None): ...@@ -4573,7 +4579,8 @@ def reduce_prod(input, dim=None, keep_dim=False, name=None):
attrs={ attrs={
'dim': dim if dim != None and dim != [] else [0], 'dim': dim if dim != None and dim != [] else [0],
'keep_dim': keep_dim, '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 return out
...@@ -4631,7 +4638,8 @@ def reduce_all(input, dim=None, keep_dim=False, name=None): ...@@ -4631,7 +4638,8 @@ def reduce_all(input, dim=None, keep_dim=False, name=None):
attrs={ attrs={
'dim': dim if dim != None and dim != [] else [0], 'dim': dim if dim != None and dim != [] else [0],
'keep_dim': keep_dim, '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 return out
...@@ -4689,7 +4697,8 @@ def reduce_any(input, dim=None, keep_dim=False, name=None): ...@@ -4689,7 +4697,8 @@ def reduce_any(input, dim=None, keep_dim=False, name=None):
attrs={ attrs={
'dim': dim if dim != None and dim != [] else [0], 'dim': dim if dim != None and dim != [] else [0],
'keep_dim': keep_dim, '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 return out
......
...@@ -56,7 +56,7 @@ class TestVarianceLayer(unittest.TestCase): ...@@ -56,7 +56,7 @@ class TestVarianceLayer(unittest.TestCase):
return np.var(self._input, axis=axis, keepdims=keepdim, ddof=ddof) return np.var(self._input, axis=axis, keepdims=keepdim, ddof=ddof)
def test_equal(self): def test_equal(self):
places = [] places = [fluid.CPUPlace()]
if fluid.core.is_compiled_with_cuda(): if fluid.core.is_compiled_with_cuda():
places.append(fluid.CUDAPlace(0)) places.append(fluid.CUDAPlace(0))
for place in places: for place in places:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册