Relay 表达式#

TempExprNodeTempExpr#

  1. TempExprNode类:

    • 这个类代表临时表达式的基本类型。临时表达式是在重写过程中有用的特定表达式,例如布局或类型转换。

    • 它有虚析构函数,这意味着它可以被正确地析构,即使通过基类指针删除派生类对象。

    • 它有纯虚函数 Realize(),这个函数的目的是将表达式转换为普通的(非临时的)表达式。具体实现由子类提供。

    • 它还定义了一些静态常量,包括一个字符串类型的键值 _type_key,以及三个布尔类型的值 _type_has_method_sequal_reduce_type_has_method_shash_reduce_type_child_slots。这些值可能用于在内部跟踪或处理该类型的对象。

    • 最后,TVM_DECLARE_BASE_OBJECT_INFO 宏用于声明 TempExprNode 的一些基本信息,如名称、父类等。

  2. TempExpr类:

    • 使用 TVM_DEFINE_OBJECT_REF_METHODS 宏来定义一些方法引用。这意味着 TempExpr 对象可以像 RelayExpr 对象一样使用这些方法。这些方法允许我们在 RelayExprTempExprNode 之间进行转换。

总的来说,这段代码定义了 TVM 中的两种表达式类型:TempExprNodeTempExprTempExprTempExprNode 的具体实现,可以被用来创建临时表达式。

TempExpr 示例#

import tvm
from tvm import relay
from tvm.relay.testing.temp_op_attr import TempOpAttr
from tvm.relay.op import op as _op