diff --git a/python/paddle/fluid/backward.py b/python/paddle/fluid/backward.py index 860e7092f6958c477668695bf28aec03d876aa9f..3eca39c2b180439a3ea1647b616482198352f9d6 100644 --- a/python/paddle/fluid/backward.py +++ b/python/paddle/fluid/backward.py @@ -1247,9 +1247,13 @@ def calc_gradient(targets, inputs, target_gradients=None, no_grad_set=None): target = targets[i] if grad is None: grad_name = _append_grad_suffix_(target.name) - target_shape = paddle.fluid.layers.shape(target) + target_shape = target.name + '_shape' + block.desc.append_op().copy_from( + _create_op_desc_("shape", {'Input': [target.name]}, + {"Out": [target_shape]}, {})) + input_grad_names_set.add(target_shape) op_desc = _create_op_desc_("fill_constant", - {"ShapeTensor": [target_shape.name]}, + {"ShapeTensor": [target_shape]}, {"Out": [grad_name]}, { "shape": target.shape, "value": 1.0,