diff --git a/paddle/fluid/operators/index_select_op.h b/paddle/fluid/operators/index_select_op.h index 96ec18d9a0d219bfd5fa10f45ca63e8c6fb7bce3..70714b7f3a0644e55c9bac27a88edb0b8a9921a4 100644 --- a/paddle/fluid/operators/index_select_op.h +++ b/paddle/fluid/operators/index_select_op.h @@ -52,6 +52,23 @@ void IndexSelectInner(const framework::ExecutionContext& context, TensorToVector(index, context.device_context(), &index_vec); std::vector out_vec(output->numel()); + for (int i = 0; i < index_size; i++) { + PADDLE_ENFORCE_GE( + index_vec[i], 0, + platform::errors::InvalidArgument( + "Variable value (index) of OP(index_select) " + "expected >= 0 and < %ld, but got %ld. Please check input " + "value.", + input_dim[dim], index_vec[i])); + PADDLE_ENFORCE_LT( + index_vec[i], input_dim[dim], + platform::errors::InvalidArgument( + "Variable value (index) of OP(index_select) " + "expected >= 0 and < %ld, but got %ld. Please check input " + "value.", + input_dim[dim], index_vec[i])); + } + VLOG(3) << "Index_Select_Debug; outer_nums: " << outer_nums << "; slice_size: " << slice_size << "; input_width: " << input_width << "; output_width: " << output_width diff --git a/python/paddle/fluid/tests/unittests/test_roll_op.py b/python/paddle/fluid/tests/unittests/test_roll_op.py index d03b4e273cd28621b8de867706ff2f9f05afd5b3..a6afc64aa18a6b1eba8f89cf0b4e25f3d6c53ae1 100644 --- a/python/paddle/fluid/tests/unittests/test_roll_op.py +++ b/python/paddle/fluid/tests/unittests/test_roll_op.py @@ -49,7 +49,7 @@ class TestRollOp(OpTest): class TestRollOpCase2(TestRollOp): def init_dtype_type(self): self.dtype = np.float32 - self.x_shape = (100, 100, 5) + self.x_shape = (100, 10, 5) self.shifts = [8, -1] self.dims = [-1, -2] @@ -59,7 +59,7 @@ class TestRollAPI(unittest.TestCase): self.data_x = np.array( [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]) - def test_roll_api(self): + def test_roll_op_api(self): self.input_data() # case 1: