check_op_params
函数功能
算子定义函数的装饰器,为算子定义函数提供基础的校验功能,对算子的输入、输出、属性及Kernel Name进行基础校验。
函数原型
check_op_params(*type_args, **type_kwargs)
参数说明
| 参数名 | 说明 | 
|---|---|
| type_args | 可变长度的列表,取值范围为•输入输出参数、•属性与•KERNEL_NAME。 | 
| type_kwargs | 保留参数,暂不使用。 | 
- 输入输出参数 
      表1 输入输出参数校验 参数取值 参数含义 REQUIRED_INPUT 表明在算子定义函数中该参数是算子的必须输入。 会做如下常规校验: - 必须为dict类型。
- dict中必须包含如下信息:OpParamInfoKey.SHAPE、OpParamInfoKey.FORMAT、OpParamInfoKey.ORI_SHAPE、OpParamInfoKey.ORI_FORMAT、OpParamInfoKey.DTYPE OpParamInfoKey的参数说明请参见OpParamInfoKey。 
- shape必须是list或者tuple类型,shape中dim必须是int类型,且0<=rank<=8,0<=各Dim<=2**31,0<=Shape的总size<=2**31。
- dtype必须在("int8", "int16", "int32", "int64", "float16", "float32", "float64")中。
- format必须在TensorFormat的定义中。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_INPUT 表明在算子定义函数中,该参数是算子的可选输入。 可以为None,其他的校验同REQUIRED_INPUT。 若校验失败,则抛出校验错误的异常RuntimeError。 DYNAMIC_INPUT 表明在算子定义函数中,该参数是算子的动态输入。 需要为list或者tuple类型,且list/tuple中的每个元素都要满足REQUIRED_INPUT的校验。 若校验失败,则抛出校验错误的异常。 REQUIRED_OUTPUT 表明在算子定义函数中,该参数是算子的必须输出。 校验规则同REQUIRED_INPUT。 OPTION_OUTPUT 表明在算子定义函数中,该参数是算子的可选输出。 校验规则同OPTION_INPUT。 DYNAMIC_OUTPUT 表明在算子定义函数中,该参数是算子的可选输出。 校验规则同DYNAMIC_INPUT。 
- 属性 
      表2 属性校验 参数取值 参数含义 REQUIRED_ATTR_INT 表明在算子定义函数中,该参数是算子的必选属性,属性的类型需要为INT(int64)类型。 若校验失败,则抛出校验错误的异常(RuntimeError)。 REQUIRED_ATTR_FLOAT 表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为FLOAT(float32)类型。 若校验失败,则抛出校验错误的异常(RuntimeError)。 REQUIRED_ATTR_STR 表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为String类型。 若校验失败,则抛出校验错误的异常(RuntimeError)。 REQUIRED_ATTR_BOOL 表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为Bool类型。 若校验失败,则抛出校验错误的异常(RuntimeError)。 REQUIRED_ATTR_TYPE 表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为STRING类型,值必须在["int8", "int16", "int32", "int64", "float16", "float32", "float64"]中。 若校验失败,则抛出校验错误的异常(RuntimeError)。 REQUIRED_ATTR_LIST_INT 表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为INT类型的list或者tuple。 若校验失败,则抛出校验错误的异常(RuntimeError)。 REQUIRED_ATTR_LIST_FLOAT 表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为float类型的list或者tuple。 若校验失败,则抛出校验错误的异常(RuntimeError)。 REQUIRED_ATTR_LIST_BOOL 表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为bool类型的list或者tuple。 若校验失败,则抛出校验错误的异常(RuntimeError)。 REQUIRED_ATTR_LIST_LIST_INT 表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为INT类型的二维list或者tuple。 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_ATTR_INT 表明在算子定义函数中,该参数是算子的可选属性。 - 可以为None。
- 若不为None,则需要为INT类型。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_ATTR_FLOAT 表明在算子定义函数中,该参数是算子的可选属性。 - 可以为None。
- 若不为None,则需要为FLOAT(float32)类型。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_ATTR_STR 表明在算子定义函数中,该参数是算子的可选属性。 - 可以为None。
- 若不为None,则需要为string类型。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_ATTR_BOOL 表明在算子定义函数中,该参数是算子的可选属性。 - 可以为None。
- 若不为None,则需要为bool类型。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_ATTR_TYPE 表明在算子定义函数中,该参数是算子的可选属性。 - 可以为None。
- 若不为None,则需要为STRING类型,值必须在["int8", "int16", "int32", "int64", "float16", "float32", "float64"]中。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_ATTR_LIST_INT 表明在算子定义函数中,该参数是算子的可选属性。 - 可以为None。
- 若不为None,则需要为INT(int64)类型的list或者tuple。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_ATTR_LIST_FLOAT 表明在算子定义函数中,该参数是算子的可选属性。 - 可以为None。
- 若不为None,则需要为float类型的list或者tuple。。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_ATTR_LIST_BOOL 表明在算子定义函数中,该参数是算子的可选属性。 - 可以为None。
- 若不为None,则需要为bool类型的list或者tuple。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 OPTION_ATTR_LIST_LIST_INT 表明在算子定义函数中,该参数是算子的可选属性。 - 可以为None。
- 若不为None,则需要为INT(int64)类型的二维list或者tuple。
 若校验失败,则抛出校验错误的异常(RuntimeError)。 
- KERNEL_NAME表明算子定义函数中,该参数是算子的kernel name,kernel name需要小于等于200个字符,并且只能包含[A-Za-z_][A-Za-z0-9_]这些字符。 若校验失败,则抛出校验错误的异常(RuntimeError)。 
返回值说明
无返回值,校验错误会抛出RuntimeError。
约束说明
无。
调用示例
@check_op_params(REQUIRED_INPUT, REQUIRED_OUTPUT, REQUIRED_ATTR_STR, KERNEL_NAME) def sample_op(x, y, attr_a, kernel_name):
调用装饰器函数check_op_params对算子定义函数sample_op的入参进行校验,如下所示:
- 入参x需要满足“必选输入”的要求,详情请参见输入输出参数。
- 入参y需要满足“必选输出”的要求,详情请参见输入输出参数。
- 入参attr_a需要满足“必需string类型的属性”的要求,详情请参见属性。
- 入参kernel_name需要满足“KERNEL_NAME”的要求,详情请参见KERNEL_NAME。