AttrCvt
#
AttrCvt
的类,它是通用的属性转换器。该类用于将给定的属性字典进行转换,并返回新的属性字典。
该类的构造函数接受以下参数:
op_name
:算子名称,可以是字符串或可调用对象。如果是字符串,则返回的算子名称为该字符串;如果是可调用对象,则通过调用op_name(attr)
来获取算子名称。transforms
:一个字典,包含要进行转换的属性名和对应的新属性名、默认值以及转换函数。如果只提供了新属性名,则相当于重命名属性名;如果提供了默认值,则该属性被视为可选;如果提供了转换函数,则使用该函数处理原始属性值。excludes
:一个列表,包含不应出现的被排除属性。如果出现了这些属性,则会引发NotImplementedError
异常。disables
:一个列表,包含在relay
中禁用的属性。会记录警告日志。ignores
:一个列表,包含在relay
中忽略的属性。会记录调试级别的日志。extras
:一个字典,包含一系列要添加到返回的属性字典中的额外属性。custom_check
:一个可调用对象,接受属性作为参数,并返回True/False
。如果返回的不是True
,则会引发RuntimeError
异常。
该类还定义了一些辅助方法,如 __call__
方法用于执行属性转换,_parse_default
方法用于解析默认值,_parse_bool
方法用于解析布尔值,以及 _required_attr
方法用于获取必需的属性。
使用示例:
attr_converter = AttrConverter(op_name, transforms={'a':'b', 'c':('d', 1)})
new_op_name, new_attr = attr_converter(attrs)