diff --git a/paddle/fluid/operators/array_operator.h b/paddle/fluid/operators/array_operator.h index 4309f0a5497456065e5c43bc8f7b265fa711f699..1beff472ecaf75e531e9ca8874d45b9379ce39d7 100644 --- a/paddle/fluid/operators/array_operator.h +++ b/paddle/fluid/operators/array_operator.h @@ -31,9 +31,14 @@ class ArrayOp : public framework::OperatorBase { size_t GetOffset(const framework::Scope &scope, const platform::Place &place) const { auto *i = scope.FindVar(Input("I")); - PADDLE_ENFORCE(i != nullptr, "I must be set"); + PADDLE_ENFORCE_NOT_NULL( + i, platform::errors::NotFound("Input(I) is not found.")); auto &i_tensor = i->Get(); - PADDLE_ENFORCE_EQ(i_tensor.numel(), 1); + PADDLE_ENFORCE_EQ(i_tensor.numel(), 1, + platform::errors::InvalidArgument( + "Input(I) must have numel 1. " + "But received %d, and it's shape is [%s].", + i_tensor.numel(), i_tensor.dims())); // get device context from pool platform::DeviceContextPool &pool = platform::DeviceContextPool::Instance(); diff --git a/paddle/fluid/operators/controlflow/tensor_array_read_write_op.cc b/paddle/fluid/operators/controlflow/tensor_array_read_write_op.cc index fe9dacb532314e234f26d656f476e75f1603a021..10443f45643dab4b20f5343eba0e140a0c038209 100644 --- a/paddle/fluid/operators/controlflow/tensor_array_read_write_op.cc +++ b/paddle/fluid/operators/controlflow/tensor_array_read_write_op.cc @@ -83,8 +83,7 @@ class WriteToArrayInferShape : public framework::InferShapeBase { void operator()(framework::InferShapeContext *context) const override { PADDLE_ENFORCE_EQ( context->HasInput("I"), true, - platform::errors::InvalidArgument( - "Read/Write array operation must set the subscript index.")); + platform::errors::NotFound("Input(I) of WriteToArrayOp is not found.")); // TODO(wangchaochaohu) control flow Op do not support runtime infer shape // Later we add [ontext->GetInputDim("I")) == 1] check when it's supported @@ -93,11 +92,9 @@ class WriteToArrayInferShape : public framework::InferShapeBase { return; } - PADDLE_ENFORCE_EQ( - context->HasOutput("Out"), true, - platform::errors::InvalidArgument( - "Read/Write array operation must set the output Tensor " - "to get the result.")); + PADDLE_ENFORCE_EQ(context->HasOutput("Out"), true, + platform::errors::NotFound( + "Output(Out) of WriteToArrayOp is not found.")); context->SetOutputDim("Out", context->GetInputDim("X")); // When compile time, we need to: @@ -139,15 +136,14 @@ class ReadFromArrayOp : public ArrayOp { void RunImpl(const framework::Scope &scope, const platform::Place &place) const override { auto *x = scope.FindVar(Input("X")); - PADDLE_ENFORCE_NOT_NULL( - x, - platform::errors::InvalidArgument( - "X(Input Variable) must be set when we call read array operation")); + PADDLE_ENFORCE_NOT_NULL(x, + platform::errors::NotFound( + "Input(X) of ReadFromArrayOp is not found.")); auto &x_array = x->Get(); auto *out = scope.FindVar(Output("Out")); - PADDLE_ENFORCE_NOT_NULL(out, platform::errors::InvalidArgument( - "Out(Output Varibale) must be set when we " - "call read array operation")); + PADDLE_ENFORCE_NOT_NULL( + out, platform::errors::NotFound( + "Output(Out) of ReadFromArrayOp is not found.")); size_t offset = GetOffset(scope, place); if (offset < x_array.size()) { auto *out_tensor = out->GetMutable();