Relay 表达式#
TempExprNode
和 TempExpr
#
TempExprNode
类:这个类代表临时表达式的基本类型。临时表达式是在重写过程中有用的特定表达式,例如布局或类型转换。
它有虚析构函数,这意味着它可以被正确地析构,即使通过基类指针删除派生类对象。
它有纯虚函数
Realize()
,这个函数的目的是将表达式转换为普通的(非临时的)表达式。具体实现由子类提供。它还定义了一些静态常量,包括一个字符串类型的键值
_type_key
,以及三个布尔类型的值_type_has_method_sequal_reduce
、_type_has_method_shash_reduce
和_type_child_slots
。这些值可能用于在内部跟踪或处理该类型的对象。最后,
TVM_DECLARE_BASE_OBJECT_INFO
宏用于声明TempExprNode
的一些基本信息,如名称、父类等。
TempExpr
类:使用
TVM_DEFINE_OBJECT_REF_METHODS
宏来定义一些方法引用。这意味着TempExpr
对象可以像RelayExpr
对象一样使用这些方法。这些方法允许我们在RelayExpr
和TempExprNode
之间进行转换。
总的来说,这段代码定义了 TVM 中的两种表达式类型:TempExprNode
和 TempExpr
。TempExpr
是 TempExprNode
的具体实现,可以被用来创建临时表达式。
TempExpr
示例#
import tvm
from tvm import relay
from tvm.relay.testing.temp_op_attr import TempOpAttr
from tvm.relay.op import op as _op