首页 > 其他分享 >tvm relay IR 可视化

tvm relay IR 可视化

时间:2022-10-23 22:44:44浏览次数:90  
标签:random attr relay IR tvm np import

本文地址:
https://www.cnblogs.com/wanger-sjtu/p/16819877.html

发现最近relay 的可视化已经在tvm主线上支持了,这里有一个简单的demo代码记录一下

需要安装 graphviz

  
import os
import numpy as np

from tvm  import relay
from typing import (
    Dict,
    Union,
    Tuple,
    List,
)

import tvm
from tvm import relay
from tvm.contrib import relay_viz
from tvm.contrib.relay_viz.interface import (
    VizEdge,
    VizNode,
    VizParser,
)

from tvm.contrib.relay_viz.terminal import (
    TermGraph,
    TermPlotter,
    TermVizParser,
)

x = relay.var("x", shape=[1, 512])
y = relay.var("y", shape=[1, 512])

tmp = relay.multiply(x, y)
weight1 = relay.var("w1", shape=[512, 2048])
bias1 = relay.var("b1", shape=[2048])
m1 = relay.nn.matmul(tmp, weight1)
m1 = relay.nn.bias_add(m1, bias1)
weight2 = relay.var("w2", shape=[512, 2048])
bias2 = relay.var("b2", shape=[2048])
m2 = relay.nn.matmul(tmp, weight2)
m2 = relay.nn.bias_add(m2, bias2)

res = m1 + m2

w1 = tvm.nd.array(np.random.random([512, 2048]).astype(np.float32))
w2 = tvm.nd.array(np.random.random([512, 2048]).astype(np.float32))
b1 = tvm.nd.array(np.random.random([2048]).astype(np.float32))
b2 = tvm.nd.array(np.random.random([2048]).astype(np.float32))
params = {"w1":w1, "w2":w2, "b1":b1, "b2":b2}

func = relay.Function([x, y, weight1, weight2, bias1, bias2], res)

mod = tvm.IRModule.from_expr(func)
mod = relay.transform.ToMixedPrecision("float16")(mod)
graph_attr = {"color": "red"}
node_attr = {"color": "blue"}
edge_attr = {"color": "black"}
get_node_attr = {"color": "green"}
dot_plotter = relay_viz.DotPlotter(
            graph_attr=graph_attr,
            node_attr=node_attr,
            edge_attr=edge_attr)
  
viz = relay_viz.RelayVisualizer(
    mod,
    relay_param=params,
    plotter=dot_plotter,
    parser=relay_viz.DotVizParser())
viz.render("eval")

可视化的图

标签:random,attr,relay,IR,tvm,np,import
From: https://www.cnblogs.com/wanger-sjtu/p/16819877.html

相关文章

  • directshow(directShow多个usb摄像头方案)
    DirectShow评价是什么?DirectShow评价编辑播放一个文件是一项相对简单的任务,不过对于像是从视频窗口接收特定窗口信息到创建特定filters,开发者会不断地遇到DirectShowAPI的黑......
  • 多测师肖sir____java自动化测试____基础介绍
    一、基础介绍1、为什么要做自动化测试(1)高级技能,发展趋势(2)提高代码的使用率(3)节省回归时间2、怎么去学习自动化测试(1)先学一门编程语言3、web自动化测试?定义:模拟手......
  • dirsearch(dirsearch使用)
    全国保健药品真假查询官方网站进入国家药监局数据查询网址:—点击国产药品—输入药品名称或批准文号—点击查询。结果就出来了。如果查保健品,就选择国产保健食品,其余相......
  • director(director)
    director和generaldirector的区别?你可以跟Manager和GeneralManager做比较。Manager就是普通的经理,GM就是总经理了。同理,Director是董事,或者执行者,GD就是总监,董事长级......
  • 靶机: easy_cloudantivirus
    靶机:easy_cloudantivirus准备下载靶机(Target):https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/靶机推荐使用VirtualBox导入,注意以下两个设置显......
  • dairy-20221023
    preface今天准备开始进行有计划的代码训练,今天开始的是50projects50days计划,这个时间段肯定是不能每天做这个的,有时间就弄一弄吧。<!DOCTYPEhtml><htmllang="en"><h......
  • 2.8 创建文件夹 os.mkdir os.makedirs
    #创建单层文件夹os.mkdir(新文件夹名称)#创建多层文件夹os.makedirs(新文件夹名称)--------------------------------------------------------------------------------......
  • php7.4.32报错“PHP message: PHP Deprecated: Directive 'allow_url_include' is de
    如题,php7.4.32的版本下,在php.ini中打开allow_url_include会报错:NOTICE:PHPmessage:PHPDeprecated:Directive'allow_url_include'isdeprecatedinUnknowno......
  • 生成requirements.txt
    requirements.txt文件requirements.txt文件是项目的依赖包及其对应版本号的信息列表,即记载你这个项目所安装的依赖。作用:用来重新构建项目或者记录项目所需要的运行环境......
  • tvm-多线程代码生成和运行
    本文链接https://www.cnblogs.com/wanger-sjtu/p/16818492.html调用链tvm搜索算子在需要多线程运行的算子,是在codegen阶段时插入TVMBackendParallelLaunch的调用。TVMB......