未验证 提交 dd4c2d86 编写于 作者: 石晓伟 提交者: GitHub

enhance error messages, test=develop (#27423)

上级 b7371fa5
...@@ -130,7 +130,8 @@ bool PD_PredictorZeroCopyRun(const PD_AnalysisConfig* config, ...@@ -130,7 +130,8 @@ bool PD_PredictorZeroCopyRun(const PD_AnalysisConfig* config,
VLOG(3) << "The inputs' size is " << input_names.size(); VLOG(3) << "The inputs' size is " << input_names.size();
PADDLE_ENFORCE_EQ( PADDLE_ENFORCE_EQ(
input_names.size(), in_size, input_names.size(), in_size,
"The number of input and the number of model's input must match. "); paddle::platform::errors::InvalidArgument(
"The number of input and the number of model's input must match."));
for (int i = 0; i < in_size; ++i) { for (int i = 0; i < in_size; ++i) {
auto input_t = predictor->GetInputTensor(inputs[i].name); auto input_t = predictor->GetInputTensor(inputs[i].name);
std::vector<int> tensor_shape; std::vector<int> tensor_shape;
......
...@@ -24,20 +24,27 @@ void FusionSeqPoolCVMConcatOp::InferShape( ...@@ -24,20 +24,27 @@ void FusionSeqPoolCVMConcatOp::InferShape(
framework::InferShapeContext* ctx) const { framework::InferShapeContext* ctx) const {
PADDLE_ENFORCE_GE( PADDLE_ENFORCE_GE(
ctx->Inputs("X").size(), 1UL, ctx->Inputs("X").size(), 1UL,
"Inputs(X) of FusionSeqPoolCVMConcatOp should not be empty."); paddle::platform::errors::InvalidArgument(
PADDLE_ENFORCE(ctx->HasOutput("Out"), "Inputs(X) of FusionSeqPoolCVMConcatOp should not be empty."));
"Output(Out) of FusionSeqPoolCVMConcatOp should not be null."); PADDLE_ENFORCE(
ctx->HasOutput("Out"),
paddle::platform::errors::InvalidArgument(
"Output(Out) of FusionSeqPoolCVMConcatOp should not be null."));
int axis = ctx->Attrs().Get<int>("axis"); int axis = ctx->Attrs().Get<int>("axis");
PADDLE_ENFORCE_EQ( PADDLE_ENFORCE_EQ(
axis, 1, "FusionSeqPoolCVMConcatOp only supports concat axis=1 yet."); axis, 1,
paddle::platform::errors::InvalidArgument(
"FusionSeqPoolCVMConcatOp only supports concat axis=1 yet."));
bool use_cvm = ctx->Attrs().Get<bool>("use_cvm"); bool use_cvm = ctx->Attrs().Get<bool>("use_cvm");
PADDLE_ENFORCE_EQ( PADDLE_ENFORCE_EQ(
use_cvm, true, use_cvm, true,
"FusionSeqPoolCVMConcatOp only supports use_cvm is true yet."); paddle::platform::errors::InvalidArgument(
"FusionSeqPoolCVMConcatOp only supports use_cvm is true yet."));
auto ins_dims = ctx->GetInputsDim("X"); auto ins_dims = ctx->GetInputsDim("X");
const size_t n = ins_dims.size(); const size_t n = ins_dims.size();
PADDLE_ENFORCE_GT(n, 0UL, "Input tensors count should > 0."); PADDLE_ENFORCE_GT(n, 0UL, paddle::platform::errors::InvalidArgument(
"Input tensors count should > 0."));
if (n == 1) { if (n == 1) {
LOG(WARNING) << "Only have one input, may waste memory"; LOG(WARNING) << "Only have one input, may waste memory";
} }
...@@ -45,7 +52,8 @@ void FusionSeqPoolCVMConcatOp::InferShape( ...@@ -45,7 +52,8 @@ void FusionSeqPoolCVMConcatOp::InferShape(
// The output height should be confirmed in Compute, // The output height should be confirmed in Compute,
// since input lod is not accessible here. // since input lod is not accessible here.
PADDLE_ENFORCE_EQ(ins_dims[0].size(), 2, PADDLE_ENFORCE_EQ(ins_dims[0].size(), 2,
"The dims size of first input should be 2."); paddle::platform::errors::InvalidArgument(
"The dims size of first input should be 2."));
ctx->SetOutputDim("Out", {-1, ins_dims[0][axis] * static_cast<int>(n)}); ctx->SetOutputDim("Out", {-1, ins_dims[0][axis] * static_cast<int>(n)});
} }
...@@ -99,7 +107,8 @@ class FusionSeqPoolCVMConcatKernel : public framework::OpKernel<T> { ...@@ -99,7 +107,8 @@ class FusionSeqPoolCVMConcatKernel : public framework::OpKernel<T> {
int w = ins[0]->numel() / x0_dims[0]; int w = ins[0]->numel() / x0_dims[0];
PADDLE_ENFORCE_EQ(y_dims[1] % w, 0, PADDLE_ENFORCE_EQ(y_dims[1] % w, 0,
"The output of dims[1] should be dividable of w"); paddle::platform::errors::InvalidArgument(
"The output of dims[1] should be dividable of w"));
jit::seq_pool_attr_t attr(w, jit::SeqPoolType::kSum); jit::seq_pool_attr_t attr(w, jit::SeqPoolType::kSum);
if (pooltype == "AVERAGE") { if (pooltype == "AVERAGE") {
attr.type = jit::SeqPoolType::kAvg; attr.type = jit::SeqPoolType::kAvg;
...@@ -117,9 +126,11 @@ class FusionSeqPoolCVMConcatKernel : public framework::OpKernel<T> { ...@@ -117,9 +126,11 @@ class FusionSeqPoolCVMConcatKernel : public framework::OpKernel<T> {
const T* src = ins[i]->data<T>(); const T* src = ins[i]->data<T>();
T* dst = y_data + i * w; T* dst = y_data + i * w;
PADDLE_ENFORCE_EQ(static_cast<int>(ins[i]->numel() / x_dims[0]), w, PADDLE_ENFORCE_EQ(static_cast<int>(ins[i]->numel() / x_dims[0]), w,
"Width of all inputs should be equal."); paddle::platform::errors::InvalidArgument(
"Width of all inputs should be equal."));
PADDLE_ENFORCE_EQ(x_lod.size(), bs + 1, PADDLE_ENFORCE_EQ(x_lod.size(), bs + 1,
"Batchsize of all inputs should be equal."); paddle::platform::errors::InvalidArgument(
"Batchsize of all inputs should be equal."));
for (size_t j = 0; j < bs; ++j) { for (size_t j = 0; j < bs; ++j) {
attr.h = static_cast<int>(x_lod[j + 1] - x_lod[j]); attr.h = static_cast<int>(x_lod[j + 1] - x_lod[j]);
seqpool(src, dst, &attr); seqpool(src, dst, &attr);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册