TVM.Relay.Var API功能解析

在TVM的Realy图中,包含全局变量(IR图中以@标识)和局部变量(IR图中以%标识)。

局部变量创建完成后,是可以合入到完整模型的IR图中的。比如想在模型的IR图中改变模型,就可以先创建局部变量,再插入到模型的指定位置,这样新的IR图就生成了。

tvm.relay.Var()函数可以理解为使用python创建一个tvm Relay图节点(局部变量)的一个功能API,完整语法如下:

tvm.relay.Var(name_hint, type_annotation=None)

  • name_hint 指定局部变量的名称
  • type_annotation 用来表明局部变量的TensorType,包含了shape和dtype

不带TensorType创建的局部变量实例如下:

import tvm.relay

x = tvm.relay.Var("x")
print(x)

输出打印:

free_var %x;
%x

带TensorType创建的局部变量实例如下:

其中TensorType中就指定了局部变量的shape和dtype属性。

import tvm.relay

x = tvm.relay.Var("x",tvm.relay.TensorType([10,10],dtype="float32"))
print(x)

输出打印:

free_var %x: Tensor[(10, 10), float32];
%x

tvm.relay.Var还包括如下的等效写法:

x = tvm.relay.Var("x",tvm.relay.TensorType([10,10],dtype=None))
x = tvm.relay.Var("x",tvm.relay.TensorType([10,10]))
x = tvm.relay.var("x",tvm.relay.TensorType([10,10]))
x = tvm.relay.var("x",shape=[10,10],dtype="float32")
x = tvm.relay.var("x",shape=[10,10])
x = tvm.relay.var("x","float32")

其中2、3、4、5四种写法的输出是一样的,dtype不设为空的话,会默认设为float32

x = tvm.relay.Var("x",tvm.relay.TensorType([10,10]))
x = tvm.relay.var("x",tvm.relay.TensorType([10,10]))
x = tvm.relay.var("x",shape=[10,10],dtype="float32")
x = tvm.relay.var("x",shape=[10,10])

第一种写法,dtype设为None的话,局部变量中就不会设置默认type float32:

x = tvm.relay.Var("x",tvm.relay.TensorType([10,10],dtype=None))

输出:
free_var %x: Tensor[(10, 10), ];
%x

 最后一种写法,不给shape的话,局部变量中便不包含shape:

x = tvm.relay.var("x","float32")

输出:
free_var %x: float32;
%x

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值