From 7c9ce097f12afb24fa19d73fc275589fb304431a Mon Sep 17 00:00:00 2001 From: Tao Luo Date: Fri, 7 Feb 2020 14:16:39 +0800 Subject: [PATCH] refine reshape_op shape error message (#22480) test=develop --- paddle/fluid/operators/reshape_op.cc | 78 +++++++++++++++------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/paddle/fluid/operators/reshape_op.cc b/paddle/fluid/operators/reshape_op.cc index df2f1ec749..7516909f45 100644 --- a/paddle/fluid/operators/reshape_op.cc +++ b/paddle/fluid/operators/reshape_op.cc @@ -29,10 +29,11 @@ inline std::vector get_new_shape( auto tensor = list_new_shape_tensor[i]; PADDLE_ENFORCE_EQ( tensor->dims(), framework::make_ddim({1}), - "ShapeError: If the element type of 'shape' in ReshapeOp is Tensor, " - "the element's shape must be [1]. But received the element's shape " - "is [%s]", - tensor->dims()); + platform::errors::InvalidArgument( + "If the element type of 'shape' in ReshapeOp is Tensor, " + "the element's shape must be [1]. But received the element's shape " + "is [%s]", + tensor->dims())); if (platform::is_gpu_place(tensor->place())) { framework::Tensor temp; TensorCopySync(*tensor, platform::CPUPlace(), &temp); @@ -64,10 +65,11 @@ class ReshapeOp : public framework::OperatorWithKernel { auto ShapeTensor = ctx->Inputs("ShapeTensor"); PADDLE_ENFORCE_GT( ShapeTensor.size(), 0, - "ShapeError: When `shape` in ReshapeOp is a list or tuple " - "which contains Tensor, the shape's size can't be zero. " - "But received shape's size is %d.", - ShapeTensor.size()); + platform::errors::InvalidArgument( + "When `shape` in ReshapeOp is a list or tuple " + "which contains Tensor, the shape's size can't be zero. " + "But received shape's size is %d.", + ShapeTensor.size())); auto infer_shape = ctx->Attrs().Get>("shape"); const int64_t copy_dim_val = 0; auto in_dims = ctx->GetInputDim("X"); @@ -75,10 +77,11 @@ class ReshapeOp : public framework::OperatorWithKernel { if (infer_shape[i] == copy_dim_val) { PADDLE_ENFORCE_LT( static_cast(i), in_dims.size(), - "ShapeError: The index of 0 in `shape` must be less than " - "the input tensor X's dimensions. But received shape[%d] " - "= 0, X's dimensions = %d, X's shape = [%s].", - i, in_dims.size(), in_dims); + platform::errors::InvalidArgument( + "The index of 0 in `shape` must be less than " + "the input tensor X's dimensions. But received shape[%d] " + "= 0, X's dimensions = %d, X's shape = [%s].", + i, in_dims.size(), in_dims)); infer_shape[i] = in_dims[i]; } } @@ -108,10 +111,10 @@ class ReshapeOp : public framework::OperatorWithKernel { return; } - PADDLE_ENFORCE_EQ( - !shape.empty(), true, - "ShapeError: The parameter 'shape' in ReshapeOp must be set. " - "But received 'shape' is empty."); + PADDLE_ENFORCE_EQ(!shape.empty(), true, + platform::errors::InvalidArgument( + "The parameter 'shape' in ReshapeOp must be set. " + "But received 'shape' is empty.")); auto x_dims = ctx->GetInputDim("X"); auto out_dims = ValidateShape(shape, x_dims); ctx->SetOutputDim("Out", out_dims); @@ -140,25 +143,28 @@ class ReshapeOp : public framework::OperatorWithKernel { if (shape[i] == unk_dim_val) { PADDLE_ENFORCE_EQ( unk_dim_idx, -1, - "ShapeError: Only one dimension value of 'shape' in ReshapeOp can " - "be -1. But received shape = [%s], shape[%d] is also -1.", - framework::make_ddim(shape), i); + platform::errors::InvalidArgument( + "Only one dimension value of 'shape' in ReshapeOp can " + "be -1. But received shape = [%s], shape[%d] is also -1.", + framework::make_ddim(shape), i)); unk_dim_idx = i; } else if (shape[i] == copy_dim_val) { PADDLE_ENFORCE_LT( static_cast(i), in_dims.size(), - "ShapeError: The index of 0 in `shape` must be less than " - "the input tensor X's dimensions. " - "But received shape = [%s], shape[%d] = 0, X's shape = [%s], " - "X's dimensions = %d.", - framework::make_ddim(shape), i, in_dims, in_dims.size()); + platform::errors::InvalidArgument( + "The index of 0 in `shape` must be less than " + "the input tensor X's dimensions. " + "But received shape = [%s], shape[%d] = 0, X's shape = [%s], " + "X's dimensions = %d.", + framework::make_ddim(shape), i, in_dims, in_dims.size())); } else { PADDLE_ENFORCE_GT( shape[i], 0, - "ShapeError: Each dimension value of 'shape' in ReshapeOp must not " - "be negtive except one unknown dimension. " - "But received shape = [%s], shape[%d] = %d.", - framework::make_ddim(shape), i, shape[i]); + platform::errors::InvalidArgument( + "Each dimension value of 'shape' in ReshapeOp must not " + "be negtive except one unknown dimension. " + "But received shape = [%s], shape[%d] = %d.", + framework::make_ddim(shape), i, shape[i])); } capacity *= (shape[i] ? shape[i] : in_dims[i]); @@ -180,8 +186,7 @@ class ReshapeOp : public framework::OperatorWithKernel { "The input tensor X'size must be divisible by known " "capacity of 'shape'. " "But received X's shape = [%s], X's size = %d, " - "'shape' is [%s], known " - "capacity of 'shape' is %d.", + "'shape' is [%s], known capacity of 'shape' is %d.", in_dims, in_size, framework::make_ddim(shape), capacity)); } else { output_shape[unk_dim_idx] = -1; @@ -190,12 +195,13 @@ class ReshapeOp : public framework::OperatorWithKernel { if (all_positive) { PADDLE_ENFORCE_EQ( capacity, in_size, - "ShapeError: The 'shape' in ReshapeOp is invalid. " - "The input tensor X'size must be equal to the capacity of 'shape'. " - "But received X's shape = [%s], X's size = %d, 'shape' is [%s], " - "the " - "capacity of 'shape' is %d.", - in_dims, in_size, framework::make_ddim(shape), capacity); + platform::errors::InvalidArgument( + "The 'shape' in ReshapeOp is invalid. " + "The input tensor X'size must be equal to the capacity of " + "'shape'. " + "But received X's shape = [%s], X's size = %d, 'shape' is " + "[%s], the capacity of 'shape' is %d.", + in_dims, in_size, framework::make_ddim(shape), capacity)); } } return framework::make_ddim(output_shape); -- GitLab