YOLO11 Relax 推理#
import torch
torch.cuda.empty_cache()
from PIL import Image
import numpy as np
from ultralytics import YOLO
input_path = "images/vehicle-jaguar-f-type-car-red-cars-wallpaper.jpg"
im = Image.open(input_path) #.resize((384, 640))
yolo = YOLO("yolo11n.pt")
results = yolo(np.array(im), conf=0.25)
Image.fromarray(results[0].plot()).resize((320, 208))
0: 416x640 1 car, 95.4ms
Speed: 5.8ms preprocess, 95.4ms inference, 264.6ms postprocess per image at shape (1, 3, 416, 640)
预处理:
from PIL import Image
import numpy as np
import torch
from ultralytics.data.augment import LetterBox
imgsz = 640, 640
strides = yolo.model.stride
mean = (0,)
std = (255,)
letterbox = LetterBox(new_shape=imgsz, auto=False, scaleFill=False, scaleup=True, stride=32)
origin_image = np.asanyarray(Image.open(input_path))
letterbox_image = letterbox(image=origin_image)
xs = np.stack([letterbox_image - mean])
print(f"数据内存的连续性:{xs.flags["C_CONTIGUOUS"]}")
xs = xs.transpose((0, 3, 1, 2)) # BHWC to BCHW, (n, 3, h, w)
print(f"数据内存的连续性(transpose):{xs.flags["C_CONTIGUOUS"]}")
xs = np.ascontiguousarray(xs) # contiguous
print(f"数据内存的连续性:{xs.flags["C_CONTIGUOUS"]}")
xs = (xs / std).astype("float32") # 归一化值域范围为 0.0 - 1.0
Image.fromarray(
np.concatenate([letterbox_image, (xs[0]*std).astype("uint8").transpose((1, 2, 0))], axis=1)
).resize((640, 320,))
数据内存的连续性:True
数据内存的连续性(transpose):False
数据内存的连续性:True
后处理:
from ultralytics.utils import ops
from ultralytics.engine.results import Results
def postprocess(preds, img, orig_imgs, names, input_path, conf_thres=0.25, iou_thres=0.45,):
"""Post-processes predictions and returns a list of Results objects."""
preds = ops.non_max_suppression(
preds,
conf_thres=conf_thres,
iou_thres=iou_thres,
# agnostic=self.args.agnostic_nms,
# max_det=self.args.max_det,
# classes=80,
)
results = []
for i, pred in enumerate(preds):
orig_img = orig_imgs[i]
pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
img_path = input_path
results.append(Results(orig_img, path=img_path, names=names, boxes=pred))
return results
ONNX 推理#
import onnxruntime
import onnx
onnx_model = onnx.load('yolo11n.onnx')
# 通过 ONNX 运行模型以获取预期结果
ort_session = onnxruntime.InferenceSession(
onnx_model.SerializeToString(), providers=["CPUExecutionProvider"]
)
inputs = {"images": xs}
ort_output = ort_session.run([], inputs)
测试 YOLO ONNX Relax 前端#
import tvm
from tvm import relax
from tvm.relax.frontend.onnx import from_onnx
tvm_model = from_onnx(onnx_model, keep_params_in_input=False)
# 将算子转换为推理模式
tvm_model = relax.transform.DecomposeOpsForInference()(tvm_model)
tvm_model.show()
# 将任何 Relax 算子合法化为 TensorIR
tvm_model = relax.transform.LegalizeOps()(tvm_model)
# 将模型与参数分离
tvm_model, params = relax.frontend.detach_params(tvm_model)
# 将 Relax 图编译为虚拟机(VM)然后运行
with tvm.transform.PassContext(opt_level=3):
ex = relax.build(tvm_model, target="llvm")
vm = relax.VirtualMachine(ex, tvm.cpu())
Show code cell output
# from tvm.script import ir as I
# from tvm.script import tir as T
# from tvm.script import relax as R
@I.ir_module
class Module:
@T.prim_func(private=True)
def split(A: T.Buffer((T.int64(1), T.int64(32), T.int64(160), T.int64(160)), "float32"), T_split: T.Buffer((T.int64(1), T.int64(16), T.int64(160), T.int64(160)), "float32"), T_split_1: T.Buffer((T.int64(1), T.int64(16), T.int64(160), T.int64(160)), "float32")):
T.func_attr({"tir.noalias": T.bool(True)})
# with T.block("root"):
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(16), T.int64(160), T.int64(160)):
with T.block("T_split"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1, v_ax2, v_ax3])
T.writes(T_split[v_ax0, v_ax1, v_ax2, v_ax3])
T_split[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1, v_ax2, v_ax3]
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(16), T.int64(160), T.int64(160)):
with T.block("T_split_1"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1 + T.int64(16), v_ax2, v_ax3])
T.writes(T_split_1[v_ax0, v_ax1, v_ax2, v_ax3])
T_split_1[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1 + T.int64(16), v_ax2, v_ax3]
@T.prim_func(private=True)
def split1(A: T.Buffer((T.int64(1), T.int64(64), T.int64(80), T.int64(80)), "float32"), T_split: T.Buffer((T.int64(1), T.int64(32), T.int64(80), T.int64(80)), "float32"), T_split_1: T.Buffer((T.int64(1), T.int64(32), T.int64(80), T.int64(80)), "float32")):
T.func_attr({"tir.noalias": T.bool(True)})
# with T.block("root"):
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(32), T.int64(80), T.int64(80)):
with T.block("T_split"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1, v_ax2, v_ax3])
T.writes(T_split[v_ax0, v_ax1, v_ax2, v_ax3])
T_split[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1, v_ax2, v_ax3]
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(32), T.int64(80), T.int64(80)):
with T.block("T_split_1"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1 + T.int64(32), v_ax2, v_ax3])
T.writes(T_split_1[v_ax0, v_ax1, v_ax2, v_ax3])
T_split_1[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1 + T.int64(32), v_ax2, v_ax3]
@T.prim_func(private=True)
def split2(A: T.Buffer((T.int64(1), T.int64(128), T.int64(40), T.int64(40)), "float32"), T_split: T.Buffer((T.int64(1), T.int64(64), T.int64(40), T.int64(40)), "float32"), T_split_1: T.Buffer((T.int64(1), T.int64(64), T.int64(40), T.int64(40)), "float32")):
T.func_attr({"tir.noalias": T.bool(True)})
# with T.block("root"):
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(64), T.int64(40), T.int64(40)):
with T.block("T_split"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1, v_ax2, v_ax3])
T.writes(T_split[v_ax0, v_ax1, v_ax2, v_ax3])
T_split[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1, v_ax2, v_ax3]
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(64), T.int64(40), T.int64(40)):
with T.block("T_split_1"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1 + T.int64(64), v_ax2, v_ax3])
T.writes(T_split_1[v_ax0, v_ax1, v_ax2, v_ax3])
T_split_1[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1 + T.int64(64), v_ax2, v_ax3]
@T.prim_func(private=True)
def split3(A: T.Buffer((T.int64(1), T.int64(256), T.int64(20), T.int64(20)), "float32"), T_split: T.Buffer((T.int64(1), T.int64(128), T.int64(20), T.int64(20)), "float32"), T_split_1: T.Buffer((T.int64(1), T.int64(128), T.int64(20), T.int64(20)), "float32")):
T.func_attr({"tir.noalias": T.bool(True)})
# with T.block("root"):
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(128), T.int64(20), T.int64(20)):
with T.block("T_split"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1, v_ax2, v_ax3])
T.writes(T_split[v_ax0, v_ax1, v_ax2, v_ax3])
T_split[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1, v_ax2, v_ax3]
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(128), T.int64(20), T.int64(20)):
with T.block("T_split_1"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1 + T.int64(128), v_ax2, v_ax3])
T.writes(T_split_1[v_ax0, v_ax1, v_ax2, v_ax3])
T_split_1[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1 + T.int64(128), v_ax2, v_ax3]
@T.prim_func(private=True)
def split4(A: T.Buffer((T.int64(1), T.int64(2), T.int64(128), T.int64(400)), "float32"), T_split: T.Buffer((T.int64(1), T.int64(2), T.int64(32), T.int64(400)), "float32"), T_split_1: T.Buffer((T.int64(1), T.int64(2), T.int64(32), T.int64(400)), "float32"), T_split_2: T.Buffer((T.int64(1), T.int64(2), T.int64(64), T.int64(400)), "float32")):
T.func_attr({"tir.noalias": T.bool(True)})
# with T.block("root"):
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(2), T.int64(32), T.int64(400)):
with T.block("T_split"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1, v_ax2, v_ax3])
T.writes(T_split[v_ax0, v_ax1, v_ax2, v_ax3])
T_split[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1, v_ax2, v_ax3]
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(2), T.int64(32), T.int64(400)):
with T.block("T_split_1"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1, v_ax2 + T.int64(32), v_ax3])
T.writes(T_split_1[v_ax0, v_ax1, v_ax2, v_ax3])
T_split_1[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1, v_ax2 + T.int64(32), v_ax3]
for ax0, ax1, ax2, ax3 in T.grid(T.int64(1), T.int64(2), T.int64(64), T.int64(400)):
with T.block("T_split_2"):
v_ax0, v_ax1, v_ax2, v_ax3 = T.axis.remap("SSSS", [ax0, ax1, ax2, ax3])
T.reads(A[v_ax0, v_ax1, v_ax2 + T.int64(64), v_ax3])
T.writes(T_split_2[v_ax0, v_ax1, v_ax2, v_ax3])
T_split_2[v_ax0, v_ax1, v_ax2, v_ax3] = A[v_ax0, v_ax1, v_ax2 + T.int64(64), v_ax3]
@T.prim_func(private=True)
def split5(A: T.Buffer((T.int64(1), T.int64(144), T.int64(8400)), "float32"), T_split: T.Buffer((T.int64(1), T.int64(64), T.int64(8400)), "float32"), T_split_1: T.Buffer((T.int64(1), T.int64(80), T.int64(8400)), "float32")):
T.func_attr({"tir.noalias": T.bool(True)})
# with T.block("root"):
for ax0, ax1, ax2 in T.grid(T.int64(1), T.int64(64), T.int64(8400)):
with T.block("T_split"):
v_ax0, v_ax1, v_ax2 = T.axis.remap("SSS", [ax0, ax1, ax2])
T.reads(A[v_ax0, v_ax1, v_ax2])
T.writes(T_split[v_ax0, v_ax1, v_ax2])
T_split[v_ax0, v_ax1, v_ax2] = A[v_ax0, v_ax1, v_ax2]
for ax0, ax1, ax2 in T.grid(T.int64(1), T.int64(80), T.int64(8400)):
with T.block("T_split_1"):
v_ax0, v_ax1, v_ax2 = T.axis.remap("SSS", [ax0, ax1, ax2])
T.reads(A[v_ax0, v_ax1 + T.int64(64), v_ax2])
T.writes(T_split_1[v_ax0, v_ax1, v_ax2])
T_split_1[v_ax0, v_ax1, v_ax2] = A[v_ax0, v_ax1 + T.int64(64), v_ax2]
@R.function
def main(images: R.Tensor((1, 3, 640, 640), dtype="float32")) -> R.Tensor((1, 84, 8400), dtype="float32"):
R.func_attr({"num_input": 1})
cls = Module
with R.dataflow():
lv: R.Tensor((1, 16, 320, 320), dtype="float32") = R.nn.conv2d(images, metadata["relax.expr.Constant"][0], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv1: R.Tensor((1, 16, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][1], R.shape([1, 16, 1, 1]))
lv2: R.Tensor((1, 16, 320, 320), dtype="float32") = R.add(lv, lv1)
lv3: R.Tensor((1, 16, 320, 320), dtype="float32") = R.sigmoid(lv2)
lv4: R.Tensor((1, 16, 320, 320), dtype="float32") = R.multiply(lv2, lv3)
lv5: R.Tensor((1, 32, 160, 160), dtype="float32") = R.nn.conv2d(lv4, metadata["relax.expr.Constant"][2], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv6: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][3], R.shape([1, 32, 1, 1]))
lv7: R.Tensor((1, 32, 160, 160), dtype="float32") = R.add(lv5, lv6)
lv8: R.Tensor((1, 32, 160, 160), dtype="float32") = R.sigmoid(lv7)
lv9: R.Tensor((1, 32, 160, 160), dtype="float32") = R.multiply(lv7, lv8)
lv10: R.Tensor((1, 32, 160, 160), dtype="float32") = R.nn.conv2d(lv9, metadata["relax.expr.Constant"][4], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv11: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][5], R.shape([1, 32, 1, 1]))
lv12: R.Tensor((1, 32, 160, 160), dtype="float32") = R.add(lv10, lv11)
lv13: R.Tensor((1, 32, 160, 160), dtype="float32") = R.sigmoid(lv12)
lv14: R.Tensor((1, 32, 160, 160), dtype="float32") = R.multiply(lv12, lv13)
lv15 = R.call_tir(cls.split, (lv14,), out_sinfo=[R.Tensor((1, 16, 160, 160), dtype="float32"), R.Tensor((1, 16, 160, 160), dtype="float32")])
lv16: R.Tensor((1, 16, 160, 160), dtype="float32") = lv15[0]
lv17: R.Tensor((1, 16, 160, 160), dtype="float32") = lv15[1]
lv18: R.Tensor((1, 8, 160, 160), dtype="float32") = R.nn.conv2d(lv17, metadata["relax.expr.Constant"][6], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv19: R.Tensor((1, 8, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][7], R.shape([1, 8, 1, 1]))
lv20: R.Tensor((1, 8, 160, 160), dtype="float32") = R.add(lv18, lv19)
lv21: R.Tensor((1, 8, 160, 160), dtype="float32") = R.sigmoid(lv20)
lv22: R.Tensor((1, 8, 160, 160), dtype="float32") = R.multiply(lv20, lv21)
lv23: R.Tensor((1, 16, 160, 160), dtype="float32") = R.nn.conv2d(lv22, metadata["relax.expr.Constant"][8], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv24: R.Tensor((1, 16, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][9], R.shape([1, 16, 1, 1]))
lv25: R.Tensor((1, 16, 160, 160), dtype="float32") = R.add(lv23, lv24)
lv26: R.Tensor((1, 16, 160, 160), dtype="float32") = R.sigmoid(lv25)
lv27: R.Tensor((1, 16, 160, 160), dtype="float32") = R.multiply(lv25, lv26)
lv28: R.Tensor((1, 16, 160, 160), dtype="float32") = R.add(lv17, lv27)
lv29: R.Tensor((1, 48, 160, 160), dtype="float32") = R.concat((lv16, lv17, lv28), axis=1)
lv30: R.Tensor((1, 64, 160, 160), dtype="float32") = R.nn.conv2d(lv29, metadata["relax.expr.Constant"][10], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv31: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][11], R.shape([1, 64, 1, 1]))
lv32: R.Tensor((1, 64, 160, 160), dtype="float32") = R.add(lv30, lv31)
lv33: R.Tensor((1, 64, 160, 160), dtype="float32") = R.sigmoid(lv32)
lv34: R.Tensor((1, 64, 160, 160), dtype="float32") = R.multiply(lv32, lv33)
lv35: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(lv34, metadata["relax.expr.Constant"][12], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv36: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][13], R.shape([1, 64, 1, 1]))
lv37: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(lv35, lv36)
lv38: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(lv37)
lv39: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(lv37, lv38)
lv40: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(lv39, metadata["relax.expr.Constant"][14], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv41: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][15], R.shape([1, 64, 1, 1]))
lv42: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(lv40, lv41)
lv43: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(lv42)
lv44: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(lv42, lv43)
lv45 = R.call_tir(cls.split1, (lv44,), out_sinfo=[R.Tensor((1, 32, 80, 80), dtype="float32"), R.Tensor((1, 32, 80, 80), dtype="float32")])
lv46: R.Tensor((1, 32, 80, 80), dtype="float32") = lv45[0]
lv47: R.Tensor((1, 32, 80, 80), dtype="float32") = lv45[1]
lv48: R.Tensor((1, 16, 80, 80), dtype="float32") = R.nn.conv2d(lv47, metadata["relax.expr.Constant"][16], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv49: R.Tensor((1, 16, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][17], R.shape([1, 16, 1, 1]))
lv50: R.Tensor((1, 16, 80, 80), dtype="float32") = R.add(lv48, lv49)
lv51: R.Tensor((1, 16, 80, 80), dtype="float32") = R.sigmoid(lv50)
lv52: R.Tensor((1, 16, 80, 80), dtype="float32") = R.multiply(lv50, lv51)
lv53: R.Tensor((1, 32, 80, 80), dtype="float32") = R.nn.conv2d(lv52, metadata["relax.expr.Constant"][18], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv54: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][19], R.shape([1, 32, 1, 1]))
lv55: R.Tensor((1, 32, 80, 80), dtype="float32") = R.add(lv53, lv54)
lv56: R.Tensor((1, 32, 80, 80), dtype="float32") = R.sigmoid(lv55)
lv57: R.Tensor((1, 32, 80, 80), dtype="float32") = R.multiply(lv55, lv56)
lv58: R.Tensor((1, 32, 80, 80), dtype="float32") = R.add(lv47, lv57)
lv59: R.Tensor((1, 96, 80, 80), dtype="float32") = R.concat((lv46, lv47, lv58), axis=1)
lv60: R.Tensor((1, 128, 80, 80), dtype="float32") = R.nn.conv2d(lv59, metadata["relax.expr.Constant"][20], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv61: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][21], R.shape([1, 128, 1, 1]))
lv62: R.Tensor((1, 128, 80, 80), dtype="float32") = R.add(lv60, lv61)
lv63: R.Tensor((1, 128, 80, 80), dtype="float32") = R.sigmoid(lv62)
lv64: R.Tensor((1, 128, 80, 80), dtype="float32") = R.multiply(lv62, lv63)
lv65: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(lv64, metadata["relax.expr.Constant"][22], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv66: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][23], R.shape([1, 128, 1, 1]))
lv67: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(lv65, lv66)
lv68: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(lv67)
lv69: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(lv67, lv68)
lv70: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(lv69, metadata["relax.expr.Constant"][24], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv71: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][25], R.shape([1, 128, 1, 1]))
lv72: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(lv70, lv71)
lv73: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(lv72)
lv74: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(lv72, lv73)
lv75 = R.call_tir(cls.split2, (lv74,), out_sinfo=[R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32")])
lv76: R.Tensor((1, 64, 40, 40), dtype="float32") = lv75[0]
lv77: R.Tensor((1, 64, 40, 40), dtype="float32") = lv75[1]
lv78: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(lv77, metadata["relax.expr.Constant"][26], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv79: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][27], R.shape([1, 32, 1, 1]))
lv80: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(lv77, metadata["relax.expr.Constant"][28], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv81: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][29], R.shape([1, 32, 1, 1]))
lv82: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv78, lv79)
lv83: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv80, lv81)
lv84: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(lv82)
lv85: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(lv83)
lv86: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(lv82, lv84)
lv87: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(lv86, metadata["relax.expr.Constant"][30], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv88: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][31], R.shape([1, 32, 1, 1]))
lv89: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv87, lv88)
lv90: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(lv89)
lv91: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(lv89, lv90)
lv92: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(lv91, metadata["relax.expr.Constant"][32], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv93: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][33], R.shape([1, 32, 1, 1]))
lv94: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv92, lv93)
lv95: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(lv94)
lv96: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(lv94, lv95)
lv97: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv86, lv96)
lv98: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(lv97, metadata["relax.expr.Constant"][34], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv99: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][35], R.shape([1, 32, 1, 1]))
lv100: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv98, lv99)
lv101: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(lv100)
lv102: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(lv100, lv101)
lv103: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(lv102, metadata["relax.expr.Constant"][36], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv104: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][37], R.shape([1, 32, 1, 1]))
lv105: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv103, lv104)
lv106: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(lv105)
lv107: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(lv105, lv106)
lv108: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv97, lv107)
lv109: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(lv83, lv85)
lv110: R.Tensor((1, 64, 40, 40), dtype="float32") = R.concat((lv108, lv109), axis=1)
lv111: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(lv110, metadata["relax.expr.Constant"][38], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv112: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][39], R.shape([1, 64, 1, 1]))
lv113: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(lv111, lv112)
lv114: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(lv113)
lv115: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(lv113, lv114)
lv116: R.Tensor((1, 192, 40, 40), dtype="float32") = R.concat((lv76, lv77, lv115), axis=1)
lv117: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(lv116, metadata["relax.expr.Constant"][40], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv118: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][41], R.shape([1, 128, 1, 1]))
lv119: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(lv117, lv118)
lv120: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(lv119)
lv121: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(lv119, lv120)
lv122: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv121, metadata["relax.expr.Constant"][42], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv123: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][43], R.shape([1, 256, 1, 1]))
lv124: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv122, lv123)
lv125: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv124)
lv126: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv124, lv125)
lv127: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv126, metadata["relax.expr.Constant"][44], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv128: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][45], R.shape([1, 256, 1, 1]))
lv129: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv127, lv128)
lv130: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv129)
lv131: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv129, lv130)
lv132 = R.call_tir(cls.split3, (lv131,), out_sinfo=[R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")])
lv133: R.Tensor((1, 128, 20, 20), dtype="float32") = lv132[0]
lv134: R.Tensor((1, 128, 20, 20), dtype="float32") = lv132[1]
lv135: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv134, metadata["relax.expr.Constant"][46], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv136: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][47], R.shape([1, 64, 1, 1]))
lv137: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv134, metadata["relax.expr.Constant"][48], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv138: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][49], R.shape([1, 64, 1, 1]))
lv139: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv135, lv136)
lv140: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv137, lv138)
lv141: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv139)
lv142: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv140)
lv143: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv139, lv141)
lv144: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv143, metadata["relax.expr.Constant"][50], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv145: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][51], R.shape([1, 64, 1, 1]))
lv146: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv144, lv145)
lv147: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv146)
lv148: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv146, lv147)
lv149: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv148, metadata["relax.expr.Constant"][52], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv150: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][53], R.shape([1, 64, 1, 1]))
lv151: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv149, lv150)
lv152: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv151)
lv153: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv151, lv152)
lv154: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv143, lv153)
lv155: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv154, metadata["relax.expr.Constant"][54], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv156: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][55], R.shape([1, 64, 1, 1]))
lv157: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv155, lv156)
lv158: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv157)
lv159: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv157, lv158)
lv160: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv159, metadata["relax.expr.Constant"][56], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv161: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][57], R.shape([1, 64, 1, 1]))
lv162: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv160, lv161)
lv163: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv162)
lv164: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv162, lv163)
lv165: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv154, lv164)
lv166: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv140, lv142)
lv167: R.Tensor((1, 128, 20, 20), dtype="float32") = R.concat((lv165, lv166), axis=1)
lv168: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(lv167, metadata["relax.expr.Constant"][58], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv169: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][59], R.shape([1, 128, 1, 1]))
lv170: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv168, lv169)
lv171: R.Tensor((1, 128, 20, 20), dtype="float32") = R.sigmoid(lv170)
lv172: R.Tensor((1, 128, 20, 20), dtype="float32") = R.multiply(lv170, lv171)
lv173: R.Tensor((1, 384, 20, 20), dtype="float32") = R.concat((lv133, lv134, lv172), axis=1)
lv174: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv173, metadata["relax.expr.Constant"][60], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv175: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][61], R.shape([1, 256, 1, 1]))
lv176: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv174, lv175)
lv177: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv176)
lv178: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv176, lv177)
lv179: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(lv178, metadata["relax.expr.Constant"][62], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv180: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][63], R.shape([1, 128, 1, 1]))
lv181: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv179, lv180)
lv182: R.Tensor((1, 128, 20, 20), dtype="float32") = R.sigmoid(lv181)
lv183: R.Tensor((1, 128, 20, 20), dtype="float32") = R.multiply(lv181, lv182)
lv184: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.max_pool2d(lv183, pool_size=[5, 5], strides=[1, 1], dilation=[1, 1], padding=[2, 2, 2, 2], ceil_mode=False, count_include_pad=False, layout="NCHW", out_layout="NCHW")
lv185: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.max_pool2d(lv184, pool_size=[5, 5], strides=[1, 1], dilation=[1, 1], padding=[2, 2, 2, 2], ceil_mode=False, count_include_pad=False, layout="NCHW", out_layout="NCHW")
lv186: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.max_pool2d(lv185, pool_size=[5, 5], strides=[1, 1], dilation=[1, 1], padding=[2, 2, 2, 2], ceil_mode=False, count_include_pad=False, layout="NCHW", out_layout="NCHW")
lv187: R.Tensor((1, 512, 20, 20), dtype="float32") = R.concat((lv183, lv184, lv185, lv186), axis=1)
lv188: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv187, metadata["relax.expr.Constant"][64], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv189: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][65], R.shape([1, 256, 1, 1]))
lv190: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv188, lv189)
lv191: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv190)
lv192: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv190, lv191)
lv193: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv192, metadata["relax.expr.Constant"][66], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv194: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][67], R.shape([1, 256, 1, 1]))
lv195: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv193, lv194)
lv196: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv195)
lv197: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv195, lv196)
lv198 = R.call_tir(cls.split3, (lv197,), out_sinfo=[R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")])
lv199: R.Tensor((1, 128, 20, 20), dtype="float32") = lv198[0]
lv200: R.Tensor((1, 128, 20, 20), dtype="float32") = lv198[1]
lv201: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv200, metadata["relax.expr.Constant"][68], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv202: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][69], R.shape([1, 256, 1, 1]))
lv203: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv201, lv202)
lv204: R.Tensor((1, 2, 128, 400), dtype="float32") = R.reshape(lv203, R.shape([1, 2, 128, 400]))
lv205 = R.call_tir(cls.split4, (lv204,), out_sinfo=[R.Tensor((1, 2, 32, 400), dtype="float32"), R.Tensor((1, 2, 32, 400), dtype="float32"), R.Tensor((1, 2, 64, 400), dtype="float32")])
lv206: R.Tensor((1, 2, 32, 400), dtype="float32") = lv205[0]
lv207: R.Tensor((1, 2, 32, 400), dtype="float32") = lv205[1]
lv208: R.Tensor((1, 2, 64, 400), dtype="float32") = lv205[2]
lv209: R.Tensor((1, 2, 400, 32), dtype="float32") = R.permute_dims(lv206, axes=[0, 1, 3, 2])
lv210: R.Tensor((1, 128, 20, 20), dtype="float32") = R.reshape(lv208, R.shape([1, 128, 20, 20]))
lv211: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(lv210, metadata["relax.expr.Constant"][70], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=128, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv212: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][71], R.shape([1, 128, 1, 1]))
lv213: R.Tensor((1, 2, 400, 400), dtype="float32") = R.matmul(lv209, lv207, out_dtype="void")
lv214: R.Tensor((1, 2, 400, 400), dtype="float32") = R.multiply(lv213, R.const(0.1767766922712326, "float32"))
lv215: R.Tensor((1, 2, 400, 400), dtype="float32") = R.nn.softmax(lv214, axis=-1)
lv216: R.Tensor((1, 2, 400, 400), dtype="float32") = R.permute_dims(lv215, axes=[0, 1, 3, 2])
lv217: R.Tensor((1, 2, 64, 400), dtype="float32") = R.matmul(lv208, lv216, out_dtype="void")
lv218: R.Tensor((1, 128, 20, 20), dtype="float32") = R.reshape(lv217, R.shape([1, 128, 20, 20]))
lv219: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv211, lv212)
lv220: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv218, lv219)
lv221: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(lv220, metadata["relax.expr.Constant"][72], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv222: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][73], R.shape([1, 128, 1, 1]))
lv223: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv221, lv222)
lv224: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv200, lv223)
lv225: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv224, metadata["relax.expr.Constant"][74], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv226: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][75], R.shape([1, 256, 1, 1]))
lv227: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv225, lv226)
lv228: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv227)
lv229: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv227, lv228)
lv230: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(lv229, metadata["relax.expr.Constant"][76], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv231: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][77], R.shape([1, 128, 1, 1]))
lv232: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv230, lv231)
lv233: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv224, lv232)
lv234: R.Tensor((1, 256, 20, 20), dtype="float32") = R.concat((lv199, lv233), axis=1)
lv235: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv234, metadata["relax.expr.Constant"][78], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv236: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][79], R.shape([1, 256, 1, 1]))
lv237: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv235, lv236)
lv238: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv237)
lv239: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv237, lv238)
lv240: R.Tensor((1, 256, 40, 40), dtype="float32") = R.image.resize2d(lv239, R.shape([40, 40]), roi=[T.float32(0.0), T.float32(0.0), T.float32(0.0), T.float32(0.0)], layout="NCHW", method="nearest_neighbor", coordinate_transformation_mode="asymmetric", rounding_method="floor", cubic_alpha=-0.75, cubic_exclude=0, extrapolation_value=0.0, out_dtype="void")
lv241: R.Tensor((1, 384, 40, 40), dtype="float32") = R.concat((lv240, lv121), axis=1)
lv242: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(lv241, metadata["relax.expr.Constant"][80], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv243: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][81], R.shape([1, 128, 1, 1]))
lv244: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(lv242, lv243)
lv245: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(lv244)
lv246: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(lv244, lv245)
lv247 = R.call_tir(cls.split2, (lv246,), out_sinfo=[R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32")])
lv248: R.Tensor((1, 64, 40, 40), dtype="float32") = lv247[0]
lv249: R.Tensor((1, 64, 40, 40), dtype="float32") = lv247[1]
lv250: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(lv249, metadata["relax.expr.Constant"][82], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv251: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][83], R.shape([1, 32, 1, 1]))
lv252: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv250, lv251)
lv253: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(lv252)
lv254: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(lv252, lv253)
lv255: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(lv254, metadata["relax.expr.Constant"][84], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv256: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][85], R.shape([1, 64, 1, 1]))
lv257: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(lv255, lv256)
lv258: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(lv257)
lv259: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(lv257, lv258)
lv260: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(lv249, lv259)
lv261: R.Tensor((1, 192, 40, 40), dtype="float32") = R.concat((lv248, lv249, lv260), axis=1)
lv262: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(lv261, metadata["relax.expr.Constant"][86], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv263: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][87], R.shape([1, 128, 1, 1]))
lv264: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(lv262, lv263)
lv265: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(lv264)
lv266: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(lv264, lv265)
lv267: R.Tensor((1, 128, 80, 80), dtype="float32") = R.image.resize2d(lv266, R.shape([80, 80]), roi=[T.float32(0.0), T.float32(0.0), T.float32(0.0), T.float32(0.0)], layout="NCHW", method="nearest_neighbor", coordinate_transformation_mode="asymmetric", rounding_method="floor", cubic_alpha=-0.75, cubic_exclude=0, extrapolation_value=0.0, out_dtype="void")
lv268: R.Tensor((1, 256, 80, 80), dtype="float32") = R.concat((lv267, lv64), axis=1)
lv269: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(lv268, metadata["relax.expr.Constant"][88], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv270: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][89], R.shape([1, 64, 1, 1]))
lv271: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(lv269, lv270)
lv272: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(lv271)
lv273: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(lv271, lv272)
lv274 = R.call_tir(cls.split1, (lv273,), out_sinfo=[R.Tensor((1, 32, 80, 80), dtype="float32"), R.Tensor((1, 32, 80, 80), dtype="float32")])
lv275: R.Tensor((1, 32, 80, 80), dtype="float32") = lv274[0]
lv276: R.Tensor((1, 32, 80, 80), dtype="float32") = lv274[1]
lv277: R.Tensor((1, 16, 80, 80), dtype="float32") = R.nn.conv2d(lv276, metadata["relax.expr.Constant"][90], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv278: R.Tensor((1, 16, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][91], R.shape([1, 16, 1, 1]))
lv279: R.Tensor((1, 16, 80, 80), dtype="float32") = R.add(lv277, lv278)
lv280: R.Tensor((1, 16, 80, 80), dtype="float32") = R.sigmoid(lv279)
lv281: R.Tensor((1, 16, 80, 80), dtype="float32") = R.multiply(lv279, lv280)
lv282: R.Tensor((1, 32, 80, 80), dtype="float32") = R.nn.conv2d(lv281, metadata["relax.expr.Constant"][92], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv283: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][93], R.shape([1, 32, 1, 1]))
lv284: R.Tensor((1, 32, 80, 80), dtype="float32") = R.add(lv282, lv283)
lv285: R.Tensor((1, 32, 80, 80), dtype="float32") = R.sigmoid(lv284)
lv286: R.Tensor((1, 32, 80, 80), dtype="float32") = R.multiply(lv284, lv285)
lv287: R.Tensor((1, 32, 80, 80), dtype="float32") = R.add(lv276, lv286)
lv288: R.Tensor((1, 96, 80, 80), dtype="float32") = R.concat((lv275, lv276, lv287), axis=1)
lv289: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(lv288, metadata["relax.expr.Constant"][94], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv290: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][95], R.shape([1, 64, 1, 1]))
lv291: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(lv289, lv290)
lv292: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(lv291)
lv293: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(lv291, lv292)
lv294: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(lv293, metadata["relax.expr.Constant"][96], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv295: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][97], R.shape([1, 64, 1, 1]))
lv296: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(lv293, metadata["relax.expr.Constant"][98], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv297: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][99], R.shape([1, 64, 1, 1]))
lv298: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(lv293, metadata["relax.expr.Constant"][100], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=64, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv299: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][101], R.shape([1, 64, 1, 1]))
lv300: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(lv294, lv295)
lv301: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(lv296, lv297)
lv302: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(lv298, lv299)
lv303: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(lv300)
lv304: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(lv301)
lv305: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(lv302)
lv306: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(lv300, lv303)
lv307: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(lv301, lv304)
lv308: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(lv307, metadata["relax.expr.Constant"][102], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv309: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][103], R.shape([1, 64, 1, 1]))
lv310: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(lv302, lv305)
lv311: R.Tensor((1, 80, 80, 80), dtype="float32") = R.nn.conv2d(lv310, metadata["relax.expr.Constant"][104], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv312: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][105], R.shape([1, 80, 1, 1]))
lv313: R.Tensor((1, 192, 40, 40), dtype="float32") = R.concat((lv306, lv266), axis=1)
lv314: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(lv313, metadata["relax.expr.Constant"][106], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv315: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][107], R.shape([1, 128, 1, 1]))
lv316: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(lv308, lv309)
lv317: R.Tensor((1, 80, 80, 80), dtype="float32") = R.add(lv311, lv312)
lv318: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(lv314, lv315)
lv319: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(lv316)
lv320: R.Tensor((1, 80, 80, 80), dtype="float32") = R.sigmoid(lv317)
lv321: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(lv318)
lv322: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(lv316, lv319)
lv323: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(lv322, metadata["relax.expr.Constant"][108], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv324: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][109], R.shape([1, 64, 1, 1]))
lv325: R.Tensor((1, 80, 80, 80), dtype="float32") = R.multiply(lv317, lv320)
lv326: R.Tensor((1, 80, 80, 80), dtype="float32") = R.nn.conv2d(lv325, metadata["relax.expr.Constant"][110], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=80, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv327: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][111], R.shape([1, 80, 1, 1]))
lv328: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(lv318, lv321)
lv329 = R.call_tir(cls.split2, (lv328,), out_sinfo=[R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32")])
lv330: R.Tensor((1, 64, 40, 40), dtype="float32") = lv329[0]
lv331: R.Tensor((1, 64, 40, 40), dtype="float32") = lv329[1]
lv332: R.Tensor((1, 80, 80, 80), dtype="float32") = R.add(lv326, lv327)
lv333: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(lv331, metadata["relax.expr.Constant"][112], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv334: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][113], R.shape([1, 32, 1, 1]))
lv335: R.Tensor((1, 80, 80, 80), dtype="float32") = R.sigmoid(lv332)
lv336: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(lv333, lv334)
lv337: R.Tensor((1, 80, 80, 80), dtype="float32") = R.multiply(lv332, lv335)
lv338: R.Tensor((1, 80, 80, 80), dtype="float32") = R.nn.conv2d(lv337, metadata["relax.expr.Constant"][114], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv339: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][115], R.shape([1, 80, 1, 1]))
lv340: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(lv336)
lv341: R.Tensor((1, 80, 80, 80), dtype="float32") = R.add(lv338, lv339)
lv342: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(lv336, lv340)
lv343: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(lv342, metadata["relax.expr.Constant"][116], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv344: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][117], R.shape([1, 64, 1, 1]))
lv345: R.Tensor((1, 80, 80, 80), dtype="float32") = R.sigmoid(lv341)
lv346: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(lv343, lv344)
lv347: R.Tensor((1, 80, 80, 80), dtype="float32") = R.multiply(lv341, lv345)
lv348: R.Tensor((1, 80, 80, 80), dtype="float32") = R.nn.conv2d(lv347, metadata["relax.expr.Constant"][118], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv349: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][119], R.shape([1, 80, 1, 1]))
lv350: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(lv346)
lv351: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(lv323, lv324)
lv352: R.Tensor((1, 80, 80, 80), dtype="float32") = R.add(lv348, lv349)
lv353: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(lv346, lv350)
lv354: R.Tensor((1, 144, 80, 80), dtype="float32") = R.concat((lv351, lv352), axis=1)
lv355: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(lv331, lv353)
lv356: R.Tensor((1, 192, 40, 40), dtype="float32") = R.concat((lv330, lv331, lv355), axis=1)
lv357: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(lv356, metadata["relax.expr.Constant"][120], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv358: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][121], R.shape([1, 128, 1, 1]))
lv359: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(lv357, lv358)
lv360: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(lv359)
lv361: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(lv359, lv360)
lv362: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(lv361, metadata["relax.expr.Constant"][122], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv363: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][123], R.shape([1, 128, 1, 1]))
lv364: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(lv361, metadata["relax.expr.Constant"][124], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv365: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][125], R.shape([1, 64, 1, 1]))
lv366: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(lv361, metadata["relax.expr.Constant"][126], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=128, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv367: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][127], R.shape([1, 128, 1, 1]))
lv368: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv362, lv363)
lv369: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(lv364, lv365)
lv370: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(lv366, lv367)
lv371: R.Tensor((1, 128, 20, 20), dtype="float32") = R.sigmoid(lv368)
lv372: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(lv369)
lv373: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(lv370)
lv374: R.Tensor((1, 128, 20, 20), dtype="float32") = R.multiply(lv368, lv371)
lv375: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(lv369, lv372)
lv376: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(lv375, metadata["relax.expr.Constant"][128], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv377: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][129], R.shape([1, 64, 1, 1]))
lv378: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(lv370, lv373)
lv379: R.Tensor((1, 80, 40, 40), dtype="float32") = R.nn.conv2d(lv378, metadata["relax.expr.Constant"][130], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv380: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][131], R.shape([1, 80, 1, 1]))
lv381: R.Tensor((1, 384, 20, 20), dtype="float32") = R.concat((lv374, lv239), axis=1)
lv382: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv381, metadata["relax.expr.Constant"][132], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv383: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][133], R.shape([1, 256, 1, 1]))
lv384: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(lv376, lv377)
lv385: R.Tensor((1, 80, 40, 40), dtype="float32") = R.add(lv379, lv380)
lv386: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv382, lv383)
lv387: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(lv384)
lv388: R.Tensor((1, 80, 40, 40), dtype="float32") = R.sigmoid(lv385)
lv389: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv386)
lv390: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(lv384, lv387)
lv391: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(lv390, metadata["relax.expr.Constant"][134], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv392: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][135], R.shape([1, 64, 1, 1]))
lv393: R.Tensor((1, 80, 40, 40), dtype="float32") = R.multiply(lv385, lv388)
lv394: R.Tensor((1, 80, 40, 40), dtype="float32") = R.nn.conv2d(lv393, metadata["relax.expr.Constant"][136], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=80, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv395: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][137], R.shape([1, 80, 1, 1]))
lv396: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv386, lv389)
lv397 = R.call_tir(cls.split3, (lv396,), out_sinfo=[R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")])
lv398: R.Tensor((1, 128, 20, 20), dtype="float32") = lv397[0]
lv399: R.Tensor((1, 128, 20, 20), dtype="float32") = lv397[1]
lv400: R.Tensor((1, 80, 40, 40), dtype="float32") = R.add(lv394, lv395)
lv401: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv399, metadata["relax.expr.Constant"][138], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv402: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][139], R.shape([1, 64, 1, 1]))
lv403: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv399, metadata["relax.expr.Constant"][140], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv404: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][141], R.shape([1, 64, 1, 1]))
lv405: R.Tensor((1, 80, 40, 40), dtype="float32") = R.sigmoid(lv400)
lv406: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv401, lv402)
lv407: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv403, lv404)
lv408: R.Tensor((1, 80, 40, 40), dtype="float32") = R.multiply(lv400, lv405)
lv409: R.Tensor((1, 80, 40, 40), dtype="float32") = R.nn.conv2d(lv408, metadata["relax.expr.Constant"][142], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv410: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][143], R.shape([1, 80, 1, 1]))
lv411: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv406)
lv412: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv407)
lv413: R.Tensor((1, 80, 40, 40), dtype="float32") = R.add(lv409, lv410)
lv414: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv406, lv411)
lv415: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv414, metadata["relax.expr.Constant"][144], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv416: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][145], R.shape([1, 64, 1, 1]))
lv417: R.Tensor((1, 80, 40, 40), dtype="float32") = R.sigmoid(lv413)
lv418: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv415, lv416)
lv419: R.Tensor((1, 80, 40, 40), dtype="float32") = R.multiply(lv413, lv417)
lv420: R.Tensor((1, 80, 40, 40), dtype="float32") = R.nn.conv2d(lv419, metadata["relax.expr.Constant"][146], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv421: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][147], R.shape([1, 80, 1, 1]))
lv422: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv418)
lv423: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(lv391, lv392)
lv424: R.Tensor((1, 80, 40, 40), dtype="float32") = R.add(lv420, lv421)
lv425: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv418, lv422)
lv426: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv425, metadata["relax.expr.Constant"][148], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv427: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][149], R.shape([1, 64, 1, 1]))
lv428: R.Tensor((1, 144, 40, 40), dtype="float32") = R.concat((lv423, lv424), axis=1)
lv429: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv426, lv427)
lv430: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv429)
lv431: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv429, lv430)
lv432: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv414, lv431)
lv433: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv432, metadata["relax.expr.Constant"][150], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv434: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][151], R.shape([1, 64, 1, 1]))
lv435: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv433, lv434)
lv436: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv435)
lv437: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv435, lv436)
lv438: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv437, metadata["relax.expr.Constant"][152], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv439: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][153], R.shape([1, 64, 1, 1]))
lv440: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv438, lv439)
lv441: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv440)
lv442: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv440, lv441)
lv443: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv432, lv442)
lv444: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv407, lv412)
lv445: R.Tensor((1, 128, 20, 20), dtype="float32") = R.concat((lv443, lv444), axis=1)
lv446: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(lv445, metadata["relax.expr.Constant"][154], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv447: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][155], R.shape([1, 128, 1, 1]))
lv448: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(lv446, lv447)
lv449: R.Tensor((1, 128, 20, 20), dtype="float32") = R.sigmoid(lv448)
lv450: R.Tensor((1, 128, 20, 20), dtype="float32") = R.multiply(lv448, lv449)
lv451: R.Tensor((1, 384, 20, 20), dtype="float32") = R.concat((lv398, lv399, lv450), axis=1)
lv452: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv451, metadata["relax.expr.Constant"][156], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv453: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][157], R.shape([1, 256, 1, 1]))
lv454: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv452, lv453)
lv455: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv454)
lv456: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv454, lv455)
lv457: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv456, metadata["relax.expr.Constant"][158], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv458: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][159], R.shape([1, 64, 1, 1]))
lv459: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(lv456, metadata["relax.expr.Constant"][160], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=256, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv460: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][161], R.shape([1, 256, 1, 1]))
lv461: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv457, lv458)
lv462: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(lv459, lv460)
lv463: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv461)
lv464: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(lv462)
lv465: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv461, lv463)
lv466: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv465, metadata["relax.expr.Constant"][162], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv467: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][163], R.shape([1, 64, 1, 1]))
lv468: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(lv462, lv464)
lv469: R.Tensor((1, 80, 20, 20), dtype="float32") = R.nn.conv2d(lv468, metadata["relax.expr.Constant"][164], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv470: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][165], R.shape([1, 80, 1, 1]))
lv471: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv466, lv467)
lv472: R.Tensor((1, 80, 20, 20), dtype="float32") = R.add(lv469, lv470)
lv473: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(lv471)
lv474: R.Tensor((1, 80, 20, 20), dtype="float32") = R.sigmoid(lv472)
lv475: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(lv471, lv473)
lv476: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(lv475, metadata["relax.expr.Constant"][166], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv477: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][167], R.shape([1, 64, 1, 1]))
lv478: R.Tensor((1, 80, 20, 20), dtype="float32") = R.multiply(lv472, lv474)
lv479: R.Tensor((1, 80, 20, 20), dtype="float32") = R.nn.conv2d(lv478, metadata["relax.expr.Constant"][168], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=80, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv480: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][169], R.shape([1, 80, 1, 1]))
lv481: R.Tensor((1, 80, 20, 20), dtype="float32") = R.add(lv479, lv480)
lv482: R.Tensor((1, 80, 20, 20), dtype="float32") = R.sigmoid(lv481)
lv483: R.Tensor((1, 80, 20, 20), dtype="float32") = R.multiply(lv481, lv482)
lv484: R.Tensor((1, 80, 20, 20), dtype="float32") = R.nn.conv2d(lv483, metadata["relax.expr.Constant"][170], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv485: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][171], R.shape([1, 80, 1, 1]))
lv486: R.Tensor((1, 80, 20, 20), dtype="float32") = R.add(lv484, lv485)
lv487: R.Tensor((1, 80, 20, 20), dtype="float32") = R.sigmoid(lv486)
lv488: R.Tensor((1, 80, 20, 20), dtype="float32") = R.multiply(lv486, lv487)
lv489: R.Tensor((1, 80, 20, 20), dtype="float32") = R.nn.conv2d(lv488, metadata["relax.expr.Constant"][172], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv490: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][173], R.shape([1, 80, 1, 1]))
lv491: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(lv476, lv477)
lv492: R.Tensor((1, 80, 20, 20), dtype="float32") = R.add(lv489, lv490)
lv493: R.Tensor((1, 144, 20, 20), dtype="float32") = R.concat((lv491, lv492), axis=1)
lv494: R.Tensor((1, 144, 6400), dtype="float32") = R.reshape(lv354, R.shape([1, 144, 6400]))
lv495: R.Tensor((1, 144, 1600), dtype="float32") = R.reshape(lv428, R.shape([1, 144, 1600]))
lv496: R.Tensor((1, 144, 400), dtype="float32") = R.reshape(lv493, R.shape([1, 144, 400]))
lv497: R.Tensor((1, 144, 8400), dtype="float32") = R.concat((lv494, lv495, lv496), axis=2)
lv498 = R.call_tir(cls.split5, (lv497,), out_sinfo=[R.Tensor((1, 64, 8400), dtype="float32"), R.Tensor((1, 80, 8400), dtype="float32")])
lv499: R.Tensor((1, 64, 8400), dtype="float32") = lv498[0]
lv500: R.Tensor((1, 80, 8400), dtype="float32") = lv498[1]
lv501: R.Tensor((1, 4, 16, 8400), dtype="float32") = R.reshape(lv499, R.shape([1, 4, 16, 8400]))
lv502: R.Tensor((1, 16, 4, 8400), dtype="float32") = R.permute_dims(lv501, axes=[0, 2, 1, 3])
lv503: R.Tensor((1, 16, 4, 8400), dtype="float32") = R.nn.softmax(lv502, axis=1)
lv504: R.Tensor((1, 1, 4, 8400), dtype="float32") = R.nn.conv2d(lv503, metadata["relax.expr.Constant"][174], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="void")
lv505: R.Tensor((1, 4, 8400), dtype="float32") = R.reshape(lv504, R.shape([1, 4, 8400]))
lv506: R.Tensor((1, 2, 8400), dtype="float32") = R.strided_slice(lv505, (R.prim_value(1),), (R.prim_value(0),), (R.prim_value(2),), (R.prim_value(1),), assume_inbound=False)
lv507: R.Tensor((1, 2, 8400), dtype="float32") = R.strided_slice(lv505, (R.prim_value(1),), (R.prim_value(2),), (R.prim_value(4),), (R.prim_value(1),), assume_inbound=False)
lv508: R.Tensor((1, 2, 8400), dtype="float32") = R.subtract(metadata["relax.expr.Constant"][175], lv506)
lv509: R.Tensor((1, 2, 8400), dtype="float32") = R.add(metadata["relax.expr.Constant"][176], lv507)
lv510: R.Tensor((1, 2, 8400), dtype="float32") = R.add(lv508, lv509)
lv511: R.Tensor((1, 2, 8400), dtype="float32") = R.divide(lv510, R.const(2.0, "float32"))
lv512: R.Tensor((1, 2, 8400), dtype="float32") = R.subtract(lv509, lv508)
lv513: R.Tensor((1, 4, 8400), dtype="float32") = R.concat((lv511, lv512), axis=1)
lv514: R.Tensor((1, 4, 8400), dtype="float32") = R.multiply(lv513, metadata["relax.expr.Constant"][177])
lv515: R.Tensor((1, 80, 8400), dtype="float32") = R.sigmoid(lv500)
gv: R.Tensor((1, 84, 8400), dtype="float32") = R.concat((lv514, lv515), axis=1)
R.output(gv)
return gv
# Metadata omitted. Use show_meta=True in script() method to show it.
准备输入:
input_list = [
inputs[key.name_hint] for key in tvm_model["main"].params if key.name_hint in inputs
]
if params:
input_list += params["main"]
运行模型并检查输出:
vm.set_input("main", *input_list)
vm.invoke_stateful("main")
tvm_output = vm.get_outputs("main")
# 如果只有一个输出,则将其包装为列表
if len(ort_output) == 1:
# 对于 TVM 不检查输出数量
# 对于序列输出,TVM 的输出是元组(Tuple),
# 而 ONNX 的输出数量是一个,即列表形式。
tvm_output = [tvm_output]
def _check_output(tvm_out: list, ort_out: list, rtol: float = 1e-7, atol: float = 1e-5,):
if isinstance(tvm_out, tuple) and isinstance(ort_out, (tvm.runtime.ShapeTuple, list)):
assert len(tvm_out) == len(ort_out), "Unequal number of outputs"
for tvm_out_i, ort_out_i in zip(tvm_out, ort_out):
_check_output(tvm_out_i, ort_out_i)
elif isinstance(tvm_out, tvm.nd.NDArray) and isinstance(ort_out, np.ndarray):
np.testing.assert_allclose(tvm_out.numpy(), ort_out, rtol=rtol, atol=atol)
elif isinstance(tvm_out, tvm.runtime.ShapeTuple) and isinstance(ort_out, np.ndarray):
shape_out = tvm.nd.array([int(i) for i in tvm_out])
np.testing.assert_allclose(shape_out.numpy(), ort_out, rtol=rtol, atol=atol)
elif isinstance(tvm_out, (int, float, bool)) and isinstance(ort_out, np.ndarray):
np.testing.assert_allclose(np.array(tvm_out), ort_out, rtol=rtol, atol=atol)
else:
raise ValueError(f"Unsupported types: {type(tvm_out)}, {type(ort_out)}")
# Check that number of outputs match.
assert len(tvm_output) == len(ort_output), "Unequal number of outputs"
for tvm_out, ort_out in zip(tvm_output, ort_output):
# TODO Allow configurable tolerance.
if ort_out is not None:
_check_output(tvm_out, ort_out, rtol=1e-4, atol=1e-5)
测试 YOLO TorchScript Relax 前端#
import torch
from torch import fx
import tvm
from tvm.driver.tvmc.frontends import load_model
from tvm.relax.frontend.torch import from_fx
from tvm.contrib.msc.core.frontend import translate
# from tvm.contrib.msc.framework.torch.frontend import translate
from tvm.contrib.msc.framework.tvm import codegen as tvm_codegen
model = load_model("yolo11n.torchscript", "pytorch", shape_dict={"x": (1, 3, 640, 640)})
opt_config = {"opt_level": 3}
graph, weights = translate.from_relay(model.mod, model.params, opt_config=opt_config)
codegen_config = {"explicit_name": False, "from_relay": True}
rt_mod = tvm_codegen.to_relax(graph, weights, codegen_config)
rt_mod.show()
Show code cell output
# from tvm.script import ir as I
# from tvm.script import tir as T
# from tvm.script import relax as R
@I.ir_module
class Module:
@R.function
def main(x: R.Tensor((1, 3, 640, 640), dtype="float32")) -> R.Tensor((1, 84, 8400), dtype="float32"):
with R.dataflow():
gv: R.Tensor((1, 16, 320, 320), dtype="float32") = R.nn.conv2d(x, metadata["relax.expr.Constant"][0], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv1: R.Tensor((1, 16, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][1], R.shape([1, 16, 1, 1]))
gv2: R.Tensor((1, 16, 320, 320), dtype="float32") = R.add(gv, gv1)
gv3: R.Tensor((1, 16, 320, 320), dtype="float32") = R.sigmoid(gv2)
gv4: R.Tensor((1, 16, 320, 320), dtype="float32") = R.multiply(gv2, gv3)
gv5: R.Tensor((1, 32, 160, 160), dtype="float32") = R.nn.conv2d(gv4, metadata["relax.expr.Constant"][2], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv6: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][3], R.shape([1, 32, 1, 1]))
gv7: R.Tensor((1, 32, 160, 160), dtype="float32") = R.add(gv5, gv6)
gv8: R.Tensor((1, 32, 160, 160), dtype="float32") = R.sigmoid(gv7)
gv9: R.Tensor((1, 32, 160, 160), dtype="float32") = R.multiply(gv7, gv8)
gv10: R.Tensor((1, 32, 160, 160), dtype="float32") = R.nn.conv2d(gv9, metadata["relax.expr.Constant"][4], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv11: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][5], R.shape([1, 32, 1, 1]))
gv12: R.Tensor((1, 32, 160, 160), dtype="float32") = R.add(gv10, gv11)
gv13: R.Tensor((1, 32, 160, 160), dtype="float32") = R.sigmoid(gv12)
gv14: R.Tensor((1, 32, 160, 160), dtype="float32") = R.multiply(gv12, gv13)
gv15: R.Tuple(R.Tensor((1, 16, 160, 160), dtype="float32"), R.Tensor((1, 16, 160, 160), dtype="float32")) = R.split(gv14, indices_or_sections=[16], axis=1)
gv16: R.Tensor((1, 16, 160, 160), dtype="float32") = gv15[0]
gv17: R.Tensor((1, 16, 160, 160), dtype="float32") = gv15[1]
gv18: R.Tensor((1, 8, 160, 160), dtype="float32") = R.nn.conv2d(gv17, metadata["relax.expr.Constant"][6], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv19: R.Tensor((1, 8, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][7], R.shape([1, 8, 1, 1]))
gv20: R.Tensor((1, 8, 160, 160), dtype="float32") = R.add(gv18, gv19)
gv21: R.Tensor((1, 8, 160, 160), dtype="float32") = R.sigmoid(gv20)
gv22: R.Tensor((1, 8, 160, 160), dtype="float32") = R.multiply(gv20, gv21)
gv23: R.Tensor((1, 16, 160, 160), dtype="float32") = R.nn.conv2d(gv22, metadata["relax.expr.Constant"][8], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv24: R.Tensor((1, 16, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][9], R.shape([1, 16, 1, 1]))
gv25: R.Tensor((1, 16, 160, 160), dtype="float32") = R.add(gv23, gv24)
gv26: R.Tensor((1, 16, 160, 160), dtype="float32") = R.sigmoid(gv25)
gv27: R.Tensor((1, 16, 160, 160), dtype="float32") = R.multiply(gv25, gv26)
gv28: R.Tensor((1, 16, 160, 160), dtype="float32") = R.add(gv17, gv27)
gv29: R.Tuple(R.Tensor((1, 16, 160, 160), dtype="float32"), R.Tensor((1, 16, 160, 160), dtype="float32"), R.Tensor((1, 16, 160, 160), dtype="float32")) = gv16, gv17, gv28
gv33: R.Tensor((1, 48, 160, 160), dtype="float32") = R.concat((gv16, gv17, gv28), axis=1)
gv34: R.Tensor((1, 64, 160, 160), dtype="float32") = R.nn.conv2d(gv33, metadata["relax.expr.Constant"][10], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv35: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][11], R.shape([1, 64, 1, 1]))
gv36: R.Tensor((1, 64, 160, 160), dtype="float32") = R.add(gv34, gv35)
gv37: R.Tensor((1, 64, 160, 160), dtype="float32") = R.sigmoid(gv36)
gv38: R.Tensor((1, 64, 160, 160), dtype="float32") = R.multiply(gv36, gv37)
gv39: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(gv38, metadata["relax.expr.Constant"][12], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv40: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][13], R.shape([1, 64, 1, 1]))
gv41: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(gv39, gv40)
gv42: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(gv41)
gv43: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(gv41, gv42)
gv44: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(gv43, metadata["relax.expr.Constant"][14], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv45: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][15], R.shape([1, 64, 1, 1]))
gv46: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(gv44, gv45)
gv47: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(gv46)
gv48: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(gv46, gv47)
gv49: R.Tuple(R.Tensor((1, 32, 80, 80), dtype="float32"), R.Tensor((1, 32, 80, 80), dtype="float32")) = R.split(gv48, indices_or_sections=[32], axis=1)
gv50: R.Tensor((1, 32, 80, 80), dtype="float32") = gv49[0]
gv51: R.Tensor((1, 32, 80, 80), dtype="float32") = gv49[1]
gv52: R.Tensor((1, 16, 80, 80), dtype="float32") = R.nn.conv2d(gv51, metadata["relax.expr.Constant"][16], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv53: R.Tensor((1, 16, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][17], R.shape([1, 16, 1, 1]))
gv54: R.Tensor((1, 16, 80, 80), dtype="float32") = R.add(gv52, gv53)
gv55: R.Tensor((1, 16, 80, 80), dtype="float32") = R.sigmoid(gv54)
gv56: R.Tensor((1, 16, 80, 80), dtype="float32") = R.multiply(gv54, gv55)
gv57: R.Tensor((1, 32, 80, 80), dtype="float32") = R.nn.conv2d(gv56, metadata["relax.expr.Constant"][18], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv58: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][19], R.shape([1, 32, 1, 1]))
gv59: R.Tensor((1, 32, 80, 80), dtype="float32") = R.add(gv57, gv58)
gv60: R.Tensor((1, 32, 80, 80), dtype="float32") = R.sigmoid(gv59)
gv61: R.Tensor((1, 32, 80, 80), dtype="float32") = R.multiply(gv59, gv60)
gv62: R.Tensor((1, 32, 80, 80), dtype="float32") = R.add(gv51, gv61)
gv63: R.Tuple(R.Tensor((1, 32, 80, 80), dtype="float32"), R.Tensor((1, 32, 80, 80), dtype="float32"), R.Tensor((1, 32, 80, 80), dtype="float32")) = gv50, gv51, gv62
gv67: R.Tensor((1, 96, 80, 80), dtype="float32") = R.concat((gv50, gv51, gv62), axis=1)
gv68: R.Tensor((1, 128, 80, 80), dtype="float32") = R.nn.conv2d(gv67, metadata["relax.expr.Constant"][20], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv69: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][21], R.shape([1, 128, 1, 1]))
gv70: R.Tensor((1, 128, 80, 80), dtype="float32") = R.add(gv68, gv69)
gv71: R.Tensor((1, 128, 80, 80), dtype="float32") = R.sigmoid(gv70)
gv72: R.Tensor((1, 128, 80, 80), dtype="float32") = R.multiply(gv70, gv71)
gv73: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(gv72, metadata["relax.expr.Constant"][22], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv74: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][23], R.shape([1, 128, 1, 1]))
gv75: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(gv73, gv74)
gv76: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(gv75)
gv77: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(gv75, gv76)
gv78: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(gv77, metadata["relax.expr.Constant"][24], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv79: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][25], R.shape([1, 128, 1, 1]))
gv80: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(gv78, gv79)
gv81: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(gv80)
gv82: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(gv80, gv81)
gv83: R.Tuple(R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32")) = R.split(gv82, indices_or_sections=[64], axis=1)
gv84: R.Tensor((1, 64, 40, 40), dtype="float32") = gv83[0]
gv85: R.Tensor((1, 64, 40, 40), dtype="float32") = gv83[1]
gv86: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(gv85, metadata["relax.expr.Constant"][26], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv87: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][27], R.shape([1, 32, 1, 1]))
gv88: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv86, gv87)
gv89: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(gv88)
gv90: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(gv88, gv89)
gv91: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(gv90, metadata["relax.expr.Constant"][28], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv92: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][29], R.shape([1, 32, 1, 1]))
gv93: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv91, gv92)
gv94: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(gv93)
gv95: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(gv93, gv94)
gv96: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(gv95, metadata["relax.expr.Constant"][30], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv97: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][31], R.shape([1, 32, 1, 1]))
gv98: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv96, gv97)
gv99: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(gv98)
gv100: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(gv98, gv99)
gv101: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv90, gv100)
gv102: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(gv101, metadata["relax.expr.Constant"][32], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv103: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][33], R.shape([1, 32, 1, 1]))
gv104: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv102, gv103)
gv105: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(gv104)
gv106: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(gv104, gv105)
gv107: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(gv106, metadata["relax.expr.Constant"][34], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv108: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][35], R.shape([1, 32, 1, 1]))
gv109: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv107, gv108)
gv110: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(gv109)
gv111: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(gv109, gv110)
gv112: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv101, gv111)
gv113: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(gv85, metadata["relax.expr.Constant"][36], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv114: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][37], R.shape([1, 32, 1, 1]))
gv115: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv113, gv114)
gv116: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(gv115)
gv117: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(gv115, gv116)
gv118: R.Tuple(R.Tensor((1, 32, 40, 40), dtype="float32"), R.Tensor((1, 32, 40, 40), dtype="float32")) = gv112, gv117
gv121: R.Tensor((1, 64, 40, 40), dtype="float32") = R.concat((gv112, gv117), axis=1)
gv122: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(gv121, metadata["relax.expr.Constant"][38], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv123: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][39], R.shape([1, 64, 1, 1]))
gv124: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(gv122, gv123)
gv125: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(gv124)
gv126: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(gv124, gv125)
gv127: R.Tuple(R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32")) = gv84, gv85, gv126
gv131: R.Tensor((1, 192, 40, 40), dtype="float32") = R.concat((gv84, gv85, gv126), axis=1)
gv132: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(gv131, metadata["relax.expr.Constant"][40], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv133: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][41], R.shape([1, 128, 1, 1]))
gv134: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(gv132, gv133)
gv135: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(gv134)
gv136: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(gv134, gv135)
gv137: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv136, metadata["relax.expr.Constant"][42], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv138: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][43], R.shape([1, 256, 1, 1]))
gv139: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv137, gv138)
gv140: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv139)
gv141: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv139, gv140)
gv142: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv141, metadata["relax.expr.Constant"][44], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv143: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][45], R.shape([1, 256, 1, 1]))
gv144: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv142, gv143)
gv145: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv144)
gv146: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv144, gv145)
gv147: R.Tuple(R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")) = R.split(gv146, indices_or_sections=[128], axis=1)
gv148: R.Tensor((1, 128, 20, 20), dtype="float32") = gv147[0]
gv149: R.Tensor((1, 128, 20, 20), dtype="float32") = gv147[1]
gv150: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv149, metadata["relax.expr.Constant"][46], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv151: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][47], R.shape([1, 64, 1, 1]))
gv152: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv150, gv151)
gv153: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv152)
gv154: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv152, gv153)
gv155: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv154, metadata["relax.expr.Constant"][48], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv156: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][49], R.shape([1, 64, 1, 1]))
gv157: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv155, gv156)
gv158: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv157)
gv159: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv157, gv158)
gv160: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv159, metadata["relax.expr.Constant"][50], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv161: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][51], R.shape([1, 64, 1, 1]))
gv162: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv160, gv161)
gv163: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv162)
gv164: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv162, gv163)
gv165: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv154, gv164)
gv166: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv165, metadata["relax.expr.Constant"][52], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv167: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][53], R.shape([1, 64, 1, 1]))
gv168: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv166, gv167)
gv169: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv168)
gv170: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv168, gv169)
gv171: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv170, metadata["relax.expr.Constant"][54], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv172: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][55], R.shape([1, 64, 1, 1]))
gv173: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv171, gv172)
gv174: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv173)
gv175: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv173, gv174)
gv176: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv165, gv175)
gv177: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv149, metadata["relax.expr.Constant"][56], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv178: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][57], R.shape([1, 64, 1, 1]))
gv179: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv177, gv178)
gv180: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv179)
gv181: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv179, gv180)
gv182: R.Tuple(R.Tensor((1, 64, 20, 20), dtype="float32"), R.Tensor((1, 64, 20, 20), dtype="float32")) = gv176, gv181
gv185: R.Tensor((1, 128, 20, 20), dtype="float32") = R.concat((gv176, gv181), axis=1)
gv186: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(gv185, metadata["relax.expr.Constant"][58], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv187: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][59], R.shape([1, 128, 1, 1]))
gv188: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv186, gv187)
gv189: R.Tensor((1, 128, 20, 20), dtype="float32") = R.sigmoid(gv188)
gv190: R.Tensor((1, 128, 20, 20), dtype="float32") = R.multiply(gv188, gv189)
gv191: R.Tuple(R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")) = gv148, gv149, gv190
gv195: R.Tensor((1, 384, 20, 20), dtype="float32") = R.concat((gv148, gv149, gv190), axis=1)
gv196: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv195, metadata["relax.expr.Constant"][60], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv197: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][61], R.shape([1, 256, 1, 1]))
gv198: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv196, gv197)
gv199: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv198)
gv200: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv198, gv199)
gv201: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(gv200, metadata["relax.expr.Constant"][62], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv202: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][63], R.shape([1, 128, 1, 1]))
gv203: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv201, gv202)
gv204: R.Tensor((1, 128, 20, 20), dtype="float32") = R.sigmoid(gv203)
gv205: R.Tensor((1, 128, 20, 20), dtype="float32") = R.multiply(gv203, gv204)
gv206: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.max_pool2d(gv205, pool_size=[5, 5], strides=[1, 1], dilation=[1, 1], padding=[2, 2, 2, 2], ceil_mode=False, count_include_pad=False, layout="NCHW", out_layout="NCHW")
gv207: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.max_pool2d(gv206, pool_size=[5, 5], strides=[1, 1], dilation=[1, 1], padding=[2, 2, 2, 2], ceil_mode=False, count_include_pad=False, layout="NCHW", out_layout="NCHW")
gv208: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.max_pool2d(gv207, pool_size=[5, 5], strides=[1, 1], dilation=[1, 1], padding=[2, 2, 2, 2], ceil_mode=False, count_include_pad=False, layout="NCHW", out_layout="NCHW")
gv209: R.Tuple(R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")) = gv205, gv206, gv207, gv208
gv214: R.Tensor((1, 512, 20, 20), dtype="float32") = R.concat((gv205, gv206, gv207, gv208), axis=1)
gv215: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv214, metadata["relax.expr.Constant"][64], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv216: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][65], R.shape([1, 256, 1, 1]))
gv217: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv215, gv216)
gv218: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv217)
gv219: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv217, gv218)
gv220: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv219, metadata["relax.expr.Constant"][66], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv221: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][67], R.shape([1, 256, 1, 1]))
gv222: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv220, gv221)
gv223: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv222)
gv224: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv222, gv223)
gv225: R.Tuple(R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")) = R.split(gv224, indices_or_sections=[128], axis=1)
gv226: R.Tensor((1, 128, 20, 20), dtype="float32") = gv225[0]
gv227: R.Tensor((1, 128, 20, 20), dtype="float32") = gv225[1]
gv228: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv227, metadata["relax.expr.Constant"][68], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv229: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][69], R.shape([1, 256, 1, 1]))
gv230: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv228, gv229)
gv231: R.Tensor((1, 2, 128, 400), dtype="float32") = R.reshape(gv230, R.shape([1, 2, 128, 400]))
gv232: R.Tuple(R.Tensor((1, 2, 32, 400), dtype="float32"), R.Tensor((1, 2, 32, 400), dtype="float32"), R.Tensor((1, 2, 64, 400), dtype="float32")) = R.split(gv231, indices_or_sections=[32, 64], axis=2)
gv233: R.Tensor((1, 2, 64, 400), dtype="float32") = gv232[2]
gv234: R.Tensor((1, 2, 32, 400), dtype="float32") = gv232[0]
gv235: R.Tensor((1, 2, 400, 32), dtype="float32") = R.permute_dims(gv234, axes=[0, 1, 3, 2])
gv236: R.Tensor((1, 2, 32, 400), dtype="float32") = gv232[1]
gv237: R.Tensor((1, 2, 400, 400), dtype="float32") = R.matmul(gv235, gv236, out_dtype="float32")
gv238: R.Tensor((1, 2, 400, 400), dtype="float32") = R.multiply(gv237, R.const(0.1767766922712326, "float32"))
gv239: R.Tensor((1, 2, 400, 400), dtype="float32") = R.nn.softmax(gv238, axis=-1)
gv240: R.Tensor((1, 2, 400, 400), dtype="float32") = R.permute_dims(gv239, axes=[0, 1, 3, 2])
gv241: R.Tensor((1, 2, 64, 400), dtype="float32") = R.matmul(gv233, gv240, out_dtype="float32")
gv242: R.Tensor((1, 128, 20, 20), dtype="float32") = R.reshape(gv241, R.shape([1, 128, 20, 20]))
gv243: R.Tensor((1, 128, 20, 20), dtype="float32") = R.reshape(gv233, R.shape([1, 128, 20, 20]))
gv244: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(gv243, metadata["relax.expr.Constant"][70], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=128, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv245: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][71], R.shape([1, 128, 1, 1]))
gv246: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv244, gv245)
gv247: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv242, gv246)
gv248: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(gv247, metadata["relax.expr.Constant"][72], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv249: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][73], R.shape([1, 128, 1, 1]))
gv250: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv248, gv249)
gv251: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv227, gv250)
gv252: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv251, metadata["relax.expr.Constant"][74], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv253: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][75], R.shape([1, 256, 1, 1]))
gv254: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv252, gv253)
gv255: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv254)
gv256: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv254, gv255)
gv257: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(gv256, metadata["relax.expr.Constant"][76], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv258: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][77], R.shape([1, 128, 1, 1]))
gv259: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv257, gv258)
gv260: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv251, gv259)
gv261: R.Tuple(R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")) = gv226, gv260
gv264: R.Tensor((1, 256, 20, 20), dtype="float32") = R.concat((gv226, gv260), axis=1)
gv265: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv264, metadata["relax.expr.Constant"][78], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv266: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][79], R.shape([1, 256, 1, 1]))
gv267: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv265, gv266)
gv268: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv267)
gv269: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv267, gv268)
gv270: R.Tensor((1, 256, 40, 40), dtype="float32") = R.image.resize2d(gv269, R.shape([40, 40]), roi=[T.float32(0.0), T.float32(0.0), T.float32(0.0), T.float32(0.0)], layout="NCHW", method="nearest_neighbor", coordinate_transformation_mode="asymmetric", rounding_method="round", cubic_alpha=-0.75, cubic_exclude=0, extrapolation_value=0.0, out_dtype="void")
gv271: R.Tuple(R.Tensor((1, 256, 40, 40), dtype="float32"), R.Tensor((1, 128, 40, 40), dtype="float32")) = gv270, gv136
gv274: R.Tensor((1, 384, 40, 40), dtype="float32") = R.concat((gv270, gv136), axis=1)
gv275: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(gv274, metadata["relax.expr.Constant"][80], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv276: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][81], R.shape([1, 128, 1, 1]))
gv277: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(gv275, gv276)
gv278: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(gv277)
gv279: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(gv277, gv278)
gv280: R.Tuple(R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32")) = R.split(gv279, indices_or_sections=[64], axis=1)
gv281: R.Tensor((1, 64, 40, 40), dtype="float32") = gv280[0]
gv282: R.Tensor((1, 64, 40, 40), dtype="float32") = gv280[1]
gv283: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(gv282, metadata["relax.expr.Constant"][82], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv284: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][83], R.shape([1, 32, 1, 1]))
gv285: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv283, gv284)
gv286: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(gv285)
gv287: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(gv285, gv286)
gv288: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(gv287, metadata["relax.expr.Constant"][84], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv289: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][85], R.shape([1, 64, 1, 1]))
gv290: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(gv288, gv289)
gv291: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(gv290)
gv292: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(gv290, gv291)
gv293: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(gv282, gv292)
gv294: R.Tuple(R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32")) = gv281, gv282, gv293
gv298: R.Tensor((1, 192, 40, 40), dtype="float32") = R.concat((gv281, gv282, gv293), axis=1)
gv299: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(gv298, metadata["relax.expr.Constant"][86], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv300: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][87], R.shape([1, 128, 1, 1]))
gv301: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(gv299, gv300)
gv302: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(gv301)
gv303: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(gv301, gv302)
gv304: R.Tensor((1, 128, 80, 80), dtype="float32") = R.image.resize2d(gv303, R.shape([80, 80]), roi=[T.float32(0.0), T.float32(0.0), T.float32(0.0), T.float32(0.0)], layout="NCHW", method="nearest_neighbor", coordinate_transformation_mode="asymmetric", rounding_method="round", cubic_alpha=-0.75, cubic_exclude=0, extrapolation_value=0.0, out_dtype="void")
gv305: R.Tuple(R.Tensor((1, 128, 80, 80), dtype="float32"), R.Tensor((1, 128, 80, 80), dtype="float32")) = gv304, gv72
gv308: R.Tensor((1, 256, 80, 80), dtype="float32") = R.concat((gv304, gv72), axis=1)
gv309: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(gv308, metadata["relax.expr.Constant"][88], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv310: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][89], R.shape([1, 64, 1, 1]))
gv311: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(gv309, gv310)
gv312: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(gv311)
gv313: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(gv311, gv312)
gv314: R.Tuple(R.Tensor((1, 32, 80, 80), dtype="float32"), R.Tensor((1, 32, 80, 80), dtype="float32")) = R.split(gv313, indices_or_sections=[32], axis=1)
gv315: R.Tensor((1, 32, 80, 80), dtype="float32") = gv314[0]
gv316: R.Tensor((1, 32, 80, 80), dtype="float32") = gv314[1]
gv317: R.Tensor((1, 16, 80, 80), dtype="float32") = R.nn.conv2d(gv316, metadata["relax.expr.Constant"][90], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv318: R.Tensor((1, 16, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][91], R.shape([1, 16, 1, 1]))
gv319: R.Tensor((1, 16, 80, 80), dtype="float32") = R.add(gv317, gv318)
gv320: R.Tensor((1, 16, 80, 80), dtype="float32") = R.sigmoid(gv319)
gv321: R.Tensor((1, 16, 80, 80), dtype="float32") = R.multiply(gv319, gv320)
gv322: R.Tensor((1, 32, 80, 80), dtype="float32") = R.nn.conv2d(gv321, metadata["relax.expr.Constant"][92], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv323: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][93], R.shape([1, 32, 1, 1]))
gv324: R.Tensor((1, 32, 80, 80), dtype="float32") = R.add(gv322, gv323)
gv325: R.Tensor((1, 32, 80, 80), dtype="float32") = R.sigmoid(gv324)
gv326: R.Tensor((1, 32, 80, 80), dtype="float32") = R.multiply(gv324, gv325)
gv327: R.Tensor((1, 32, 80, 80), dtype="float32") = R.add(gv316, gv326)
gv328: R.Tuple(R.Tensor((1, 32, 80, 80), dtype="float32"), R.Tensor((1, 32, 80, 80), dtype="float32"), R.Tensor((1, 32, 80, 80), dtype="float32")) = gv315, gv316, gv327
gv332: R.Tensor((1, 96, 80, 80), dtype="float32") = R.concat((gv315, gv316, gv327), axis=1)
gv333: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(gv332, metadata["relax.expr.Constant"][94], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv334: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][95], R.shape([1, 64, 1, 1]))
gv335: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(gv333, gv334)
gv336: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(gv335)
gv337: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(gv335, gv336)
gv338: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(gv337, metadata["relax.expr.Constant"][96], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv339: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][97], R.shape([1, 64, 1, 1]))
gv340: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(gv338, gv339)
gv341: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(gv340)
gv342: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(gv340, gv341)
gv343: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(gv342, metadata["relax.expr.Constant"][98], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv344: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][99], R.shape([1, 64, 1, 1]))
gv345: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(gv343, gv344)
gv346: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(gv345)
gv347: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(gv345, gv346)
gv348: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(gv347, metadata["relax.expr.Constant"][100], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv349: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][101], R.shape([1, 64, 1, 1]))
gv350: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(gv348, gv349)
gv351: R.Tensor((1, 64, 80, 80), dtype="float32") = R.nn.conv2d(gv337, metadata["relax.expr.Constant"][102], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=64, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv352: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][103], R.shape([1, 64, 1, 1]))
gv353: R.Tensor((1, 64, 80, 80), dtype="float32") = R.add(gv351, gv352)
gv354: R.Tensor((1, 64, 80, 80), dtype="float32") = R.sigmoid(gv353)
gv355: R.Tensor((1, 64, 80, 80), dtype="float32") = R.multiply(gv353, gv354)
gv356: R.Tensor((1, 80, 80, 80), dtype="float32") = R.nn.conv2d(gv355, metadata["relax.expr.Constant"][104], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv357: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][105], R.shape([1, 80, 1, 1]))
gv358: R.Tensor((1, 80, 80, 80), dtype="float32") = R.add(gv356, gv357)
gv359: R.Tensor((1, 80, 80, 80), dtype="float32") = R.sigmoid(gv358)
gv360: R.Tensor((1, 80, 80, 80), dtype="float32") = R.multiply(gv358, gv359)
gv361: R.Tensor((1, 80, 80, 80), dtype="float32") = R.nn.conv2d(gv360, metadata["relax.expr.Constant"][106], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=80, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv362: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][107], R.shape([1, 80, 1, 1]))
gv363: R.Tensor((1, 80, 80, 80), dtype="float32") = R.add(gv361, gv362)
gv364: R.Tensor((1, 80, 80, 80), dtype="float32") = R.sigmoid(gv363)
gv365: R.Tensor((1, 80, 80, 80), dtype="float32") = R.multiply(gv363, gv364)
gv366: R.Tensor((1, 80, 80, 80), dtype="float32") = R.nn.conv2d(gv365, metadata["relax.expr.Constant"][108], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv367: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][109], R.shape([1, 80, 1, 1]))
gv368: R.Tensor((1, 80, 80, 80), dtype="float32") = R.add(gv366, gv367)
gv369: R.Tensor((1, 80, 80, 80), dtype="float32") = R.sigmoid(gv368)
gv370: R.Tensor((1, 80, 80, 80), dtype="float32") = R.multiply(gv368, gv369)
gv371: R.Tensor((1, 80, 80, 80), dtype="float32") = R.nn.conv2d(gv370, metadata["relax.expr.Constant"][110], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv372: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][111], R.shape([1, 80, 1, 1]))
gv373: R.Tensor((1, 80, 80, 80), dtype="float32") = R.add(gv371, gv372)
gv374: R.Tuple(R.Tensor((1, 64, 80, 80), dtype="float32"), R.Tensor((1, 80, 80, 80), dtype="float32")) = gv350, gv373
gv377: R.Tensor((1, 144, 80, 80), dtype="float32") = R.concat((gv350, gv373), axis=1)
gv378: R.Tensor((1, 144, 6400), dtype="float32") = R.reshape(gv377, R.shape([1, 144, 6400]))
gv379: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(gv337, metadata["relax.expr.Constant"][112], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv380: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][113], R.shape([1, 64, 1, 1]))
gv381: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(gv379, gv380)
gv382: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(gv381)
gv383: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(gv381, gv382)
gv384: R.Tuple(R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 128, 40, 40), dtype="float32")) = gv383, gv303
gv387: R.Tensor((1, 192, 40, 40), dtype="float32") = R.concat((gv383, gv303), axis=1)
gv388: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(gv387, metadata["relax.expr.Constant"][114], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv389: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][115], R.shape([1, 128, 1, 1]))
gv390: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(gv388, gv389)
gv391: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(gv390)
gv392: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(gv390, gv391)
gv393: R.Tuple(R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32")) = R.split(gv392, indices_or_sections=[64], axis=1)
gv394: R.Tensor((1, 64, 40, 40), dtype="float32") = gv393[0]
gv395: R.Tensor((1, 64, 40, 40), dtype="float32") = gv393[1]
gv396: R.Tensor((1, 32, 40, 40), dtype="float32") = R.nn.conv2d(gv395, metadata["relax.expr.Constant"][116], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv397: R.Tensor((1, 32, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][117], R.shape([1, 32, 1, 1]))
gv398: R.Tensor((1, 32, 40, 40), dtype="float32") = R.add(gv396, gv397)
gv399: R.Tensor((1, 32, 40, 40), dtype="float32") = R.sigmoid(gv398)
gv400: R.Tensor((1, 32, 40, 40), dtype="float32") = R.multiply(gv398, gv399)
gv401: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(gv400, metadata["relax.expr.Constant"][118], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv402: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][119], R.shape([1, 64, 1, 1]))
gv403: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(gv401, gv402)
gv404: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(gv403)
gv405: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(gv403, gv404)
gv406: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(gv395, gv405)
gv407: R.Tuple(R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 64, 40, 40), dtype="float32")) = gv394, gv395, gv406
gv411: R.Tensor((1, 192, 40, 40), dtype="float32") = R.concat((gv394, gv395, gv406), axis=1)
gv412: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(gv411, metadata["relax.expr.Constant"][120], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv413: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][121], R.shape([1, 128, 1, 1]))
gv414: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(gv412, gv413)
gv415: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(gv414)
gv416: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(gv414, gv415)
gv417: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(gv416, metadata["relax.expr.Constant"][122], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv418: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][123], R.shape([1, 64, 1, 1]))
gv419: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(gv417, gv418)
gv420: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(gv419)
gv421: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(gv419, gv420)
gv422: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(gv421, metadata["relax.expr.Constant"][124], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv423: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][125], R.shape([1, 64, 1, 1]))
gv424: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(gv422, gv423)
gv425: R.Tensor((1, 64, 40, 40), dtype="float32") = R.sigmoid(gv424)
gv426: R.Tensor((1, 64, 40, 40), dtype="float32") = R.multiply(gv424, gv425)
gv427: R.Tensor((1, 64, 40, 40), dtype="float32") = R.nn.conv2d(gv426, metadata["relax.expr.Constant"][126], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv428: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][127], R.shape([1, 64, 1, 1]))
gv429: R.Tensor((1, 64, 40, 40), dtype="float32") = R.add(gv427, gv428)
gv430: R.Tensor((1, 128, 40, 40), dtype="float32") = R.nn.conv2d(gv416, metadata["relax.expr.Constant"][128], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=128, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv431: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][129], R.shape([1, 128, 1, 1]))
gv432: R.Tensor((1, 128, 40, 40), dtype="float32") = R.add(gv430, gv431)
gv433: R.Tensor((1, 128, 40, 40), dtype="float32") = R.sigmoid(gv432)
gv434: R.Tensor((1, 128, 40, 40), dtype="float32") = R.multiply(gv432, gv433)
gv435: R.Tensor((1, 80, 40, 40), dtype="float32") = R.nn.conv2d(gv434, metadata["relax.expr.Constant"][130], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv436: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][131], R.shape([1, 80, 1, 1]))
gv437: R.Tensor((1, 80, 40, 40), dtype="float32") = R.add(gv435, gv436)
gv438: R.Tensor((1, 80, 40, 40), dtype="float32") = R.sigmoid(gv437)
gv439: R.Tensor((1, 80, 40, 40), dtype="float32") = R.multiply(gv437, gv438)
gv440: R.Tensor((1, 80, 40, 40), dtype="float32") = R.nn.conv2d(gv439, metadata["relax.expr.Constant"][132], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=80, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv441: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][133], R.shape([1, 80, 1, 1]))
gv442: R.Tensor((1, 80, 40, 40), dtype="float32") = R.add(gv440, gv441)
gv443: R.Tensor((1, 80, 40, 40), dtype="float32") = R.sigmoid(gv442)
gv444: R.Tensor((1, 80, 40, 40), dtype="float32") = R.multiply(gv442, gv443)
gv445: R.Tensor((1, 80, 40, 40), dtype="float32") = R.nn.conv2d(gv444, metadata["relax.expr.Constant"][134], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv446: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][135], R.shape([1, 80, 1, 1]))
gv447: R.Tensor((1, 80, 40, 40), dtype="float32") = R.add(gv445, gv446)
gv448: R.Tensor((1, 80, 40, 40), dtype="float32") = R.sigmoid(gv447)
gv449: R.Tensor((1, 80, 40, 40), dtype="float32") = R.multiply(gv447, gv448)
gv450: R.Tensor((1, 80, 40, 40), dtype="float32") = R.nn.conv2d(gv449, metadata["relax.expr.Constant"][136], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv451: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][137], R.shape([1, 80, 1, 1]))
gv452: R.Tensor((1, 80, 40, 40), dtype="float32") = R.add(gv450, gv451)
gv453: R.Tuple(R.Tensor((1, 64, 40, 40), dtype="float32"), R.Tensor((1, 80, 40, 40), dtype="float32")) = gv429, gv452
gv456: R.Tensor((1, 144, 40, 40), dtype="float32") = R.concat((gv429, gv452), axis=1)
gv457: R.Tensor((1, 144, 1600), dtype="float32") = R.reshape(gv456, R.shape([1, 144, 1600]))
gv458: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(gv416, metadata["relax.expr.Constant"][138], strides=[2, 2], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv459: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][139], R.shape([1, 128, 1, 1]))
gv460: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv458, gv459)
gv461: R.Tensor((1, 128, 20, 20), dtype="float32") = R.sigmoid(gv460)
gv462: R.Tensor((1, 128, 20, 20), dtype="float32") = R.multiply(gv460, gv461)
gv463: R.Tuple(R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 256, 20, 20), dtype="float32")) = gv462, gv269
gv466: R.Tensor((1, 384, 20, 20), dtype="float32") = R.concat((gv462, gv269), axis=1)
gv467: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv466, metadata["relax.expr.Constant"][140], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv468: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][141], R.shape([1, 256, 1, 1]))
gv469: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv467, gv468)
gv470: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv469)
gv471: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv469, gv470)
gv472: R.Tuple(R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")) = R.split(gv471, indices_or_sections=[128], axis=1)
gv473: R.Tensor((1, 128, 20, 20), dtype="float32") = gv472[0]
gv474: R.Tensor((1, 128, 20, 20), dtype="float32") = gv472[1]
gv475: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv474, metadata["relax.expr.Constant"][142], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv476: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][143], R.shape([1, 64, 1, 1]))
gv477: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv475, gv476)
gv478: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv477)
gv479: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv477, gv478)
gv480: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv479, metadata["relax.expr.Constant"][144], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv481: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][145], R.shape([1, 64, 1, 1]))
gv482: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv480, gv481)
gv483: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv482)
gv484: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv482, gv483)
gv485: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv484, metadata["relax.expr.Constant"][146], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv486: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][147], R.shape([1, 64, 1, 1]))
gv487: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv485, gv486)
gv488: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv487)
gv489: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv487, gv488)
gv490: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv479, gv489)
gv491: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv490, metadata["relax.expr.Constant"][148], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv492: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][149], R.shape([1, 64, 1, 1]))
gv493: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv491, gv492)
gv494: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv493)
gv495: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv493, gv494)
gv496: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv495, metadata["relax.expr.Constant"][150], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv497: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][151], R.shape([1, 64, 1, 1]))
gv498: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv496, gv497)
gv499: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv498)
gv500: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv498, gv499)
gv501: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv490, gv500)
gv502: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv474, metadata["relax.expr.Constant"][152], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv503: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][153], R.shape([1, 64, 1, 1]))
gv504: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv502, gv503)
gv505: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv504)
gv506: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv504, gv505)
gv507: R.Tuple(R.Tensor((1, 64, 20, 20), dtype="float32"), R.Tensor((1, 64, 20, 20), dtype="float32")) = gv501, gv506
gv510: R.Tensor((1, 128, 20, 20), dtype="float32") = R.concat((gv501, gv506), axis=1)
gv511: R.Tensor((1, 128, 20, 20), dtype="float32") = R.nn.conv2d(gv510, metadata["relax.expr.Constant"][154], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv512: R.Tensor((1, 128, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][155], R.shape([1, 128, 1, 1]))
gv513: R.Tensor((1, 128, 20, 20), dtype="float32") = R.add(gv511, gv512)
gv514: R.Tensor((1, 128, 20, 20), dtype="float32") = R.sigmoid(gv513)
gv515: R.Tensor((1, 128, 20, 20), dtype="float32") = R.multiply(gv513, gv514)
gv516: R.Tuple(R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32"), R.Tensor((1, 128, 20, 20), dtype="float32")) = gv473, gv474, gv515
gv520: R.Tensor((1, 384, 20, 20), dtype="float32") = R.concat((gv473, gv474, gv515), axis=1)
gv521: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv520, metadata["relax.expr.Constant"][156], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv522: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][157], R.shape([1, 256, 1, 1]))
gv523: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv521, gv522)
gv524: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv523)
gv525: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv523, gv524)
gv526: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv525, metadata["relax.expr.Constant"][158], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv527: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][159], R.shape([1, 64, 1, 1]))
gv528: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv526, gv527)
gv529: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv528)
gv530: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv528, gv529)
gv531: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv530, metadata["relax.expr.Constant"][160], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv532: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][161], R.shape([1, 64, 1, 1]))
gv533: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv531, gv532)
gv534: R.Tensor((1, 64, 20, 20), dtype="float32") = R.sigmoid(gv533)
gv535: R.Tensor((1, 64, 20, 20), dtype="float32") = R.multiply(gv533, gv534)
gv536: R.Tensor((1, 64, 20, 20), dtype="float32") = R.nn.conv2d(gv535, metadata["relax.expr.Constant"][162], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv537: R.Tensor((1, 64, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][163], R.shape([1, 64, 1, 1]))
gv538: R.Tensor((1, 64, 20, 20), dtype="float32") = R.add(gv536, gv537)
gv539: R.Tensor((1, 256, 20, 20), dtype="float32") = R.nn.conv2d(gv525, metadata["relax.expr.Constant"][164], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=256, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv540: R.Tensor((1, 256, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][165], R.shape([1, 256, 1, 1]))
gv541: R.Tensor((1, 256, 20, 20), dtype="float32") = R.add(gv539, gv540)
gv542: R.Tensor((1, 256, 20, 20), dtype="float32") = R.sigmoid(gv541)
gv543: R.Tensor((1, 256, 20, 20), dtype="float32") = R.multiply(gv541, gv542)
gv544: R.Tensor((1, 80, 20, 20), dtype="float32") = R.nn.conv2d(gv543, metadata["relax.expr.Constant"][166], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv545: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][167], R.shape([1, 80, 1, 1]))
gv546: R.Tensor((1, 80, 20, 20), dtype="float32") = R.add(gv544, gv545)
gv547: R.Tensor((1, 80, 20, 20), dtype="float32") = R.sigmoid(gv546)
gv548: R.Tensor((1, 80, 20, 20), dtype="float32") = R.multiply(gv546, gv547)
gv549: R.Tensor((1, 80, 20, 20), dtype="float32") = R.nn.conv2d(gv548, metadata["relax.expr.Constant"][168], strides=[1, 1], padding=[1, 1, 1, 1], dilation=[1, 1], groups=80, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv550: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][169], R.shape([1, 80, 1, 1]))
gv551: R.Tensor((1, 80, 20, 20), dtype="float32") = R.add(gv549, gv550)
gv552: R.Tensor((1, 80, 20, 20), dtype="float32") = R.sigmoid(gv551)
gv553: R.Tensor((1, 80, 20, 20), dtype="float32") = R.multiply(gv551, gv552)
gv554: R.Tensor((1, 80, 20, 20), dtype="float32") = R.nn.conv2d(gv553, metadata["relax.expr.Constant"][170], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv555: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][171], R.shape([1, 80, 1, 1]))
gv556: R.Tensor((1, 80, 20, 20), dtype="float32") = R.add(gv554, gv555)
gv557: R.Tensor((1, 80, 20, 20), dtype="float32") = R.sigmoid(gv556)
gv558: R.Tensor((1, 80, 20, 20), dtype="float32") = R.multiply(gv556, gv557)
gv559: R.Tensor((1, 80, 20, 20), dtype="float32") = R.nn.conv2d(gv558, metadata["relax.expr.Constant"][172], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv560: R.Tensor((1, 80, 1, 1), dtype="float32") = R.reshape(metadata["relax.expr.Constant"][173], R.shape([1, 80, 1, 1]))
gv561: R.Tensor((1, 80, 20, 20), dtype="float32") = R.add(gv559, gv560)
gv562: R.Tuple(R.Tensor((1, 64, 20, 20), dtype="float32"), R.Tensor((1, 80, 20, 20), dtype="float32")) = gv538, gv561
gv565: R.Tensor((1, 144, 20, 20), dtype="float32") = R.concat((gv538, gv561), axis=1)
gv566: R.Tensor((1, 144, 400), dtype="float32") = R.reshape(gv565, R.shape([1, 144, 400]))
gv567: R.Tuple(R.Tensor((1, 144, 6400), dtype="float32"), R.Tensor((1, 144, 1600), dtype="float32"), R.Tensor((1, 144, 400), dtype="float32")) = gv378, gv457, gv566
gv571: R.Tensor((1, 144, 8400), dtype="float32") = R.concat((gv378, gv457, gv566), axis=2)
gv572: R.Tuple(R.Tensor((1, 64, 8400), dtype="float32"), R.Tensor((1, 80, 8400), dtype="float32")) = R.split(gv571, indices_or_sections=[64], axis=1)
gv573: R.Tensor((1, 64, 8400), dtype="float32") = gv572[0]
gv574: R.Tensor((1, 4, 16, 8400), dtype="float32") = R.reshape(gv573, R.shape([1, 4, 16, 8400]))
gv575: R.Tensor((1, 16, 4, 8400), dtype="float32") = R.permute_dims(gv574, axes=[0, 2, 1, 3])
gv576: R.Tensor((1, 16, 4, 8400), dtype="float32") = R.nn.softmax(gv575, axis=1)
gv577: R.Tensor((1, 1, 4, 8400), dtype="float32") = R.nn.conv2d(gv576, metadata["relax.expr.Constant"][174], strides=[1, 1], padding=[0, 0, 0, 0], dilation=[1, 1], groups=1, data_layout="NCHW", kernel_layout="OIHW", out_layout="NCHW", out_dtype="float32")
gv578: R.Tensor((1, 4, 8400), dtype="float32") = R.reshape(gv577, R.shape([1, 4, 8400]))
gv579: R.Tuple(R.Tensor((1, 2, 8400), dtype="float32"), R.Tensor((1, 2, 8400), dtype="float32")) = R.split(gv578, indices_or_sections=[2], axis=1)
gv580: R.Tensor((1, 2, 8400), dtype="float32") = gv579[0]
gv581: R.Tensor((1, 2, 8400), dtype="float32") = R.subtract(metadata["relax.expr.Constant"][175], gv580)
gv582: R.Tensor((1, 2, 8400), dtype="float32") = gv579[1]
gv583: R.Tensor((1, 2, 8400), dtype="float32") = R.add(metadata["relax.expr.Constant"][175], gv582)
gv584: R.Tensor((1, 2, 8400), dtype="float32") = R.add(gv581, gv583)
gv585: R.Tensor((1, 2, 8400), dtype="float32") = R.divide(gv584, R.const(2.0, "float32"))
gv586: R.Tensor((1, 2, 8400), dtype="float32") = R.subtract(gv583, gv581)
gv587: R.Tuple(R.Tensor((1, 2, 8400), dtype="float32"), R.Tensor((1, 2, 8400), dtype="float32")) = gv585, gv586
gv590: R.Tensor((1, 4, 8400), dtype="float32") = R.concat((gv585, gv586), axis=1)
gv591: R.Tensor((1, 4, 8400), dtype="float32") = R.multiply(gv590, metadata["relax.expr.Constant"][176])
gv592: R.Tensor((1, 80, 8400), dtype="float32") = gv572[1]
gv593: R.Tensor((1, 80, 8400), dtype="float32") = R.sigmoid(gv592)
gv594: R.Tuple(R.Tensor((1, 4, 8400), dtype="float32"), R.Tensor((1, 80, 8400), dtype="float32")) = gv591, gv593
gv597: R.Tensor((1, 84, 8400), dtype="float32") = R.concat((gv591, gv593), axis=1)
R.output(gv597)
return gv597
# Metadata omitted. Use show_meta=True in script() method to show it.
# 将算子转换为推理模式
tvm_model = relax.transform.DecomposeOpsForInference()(rt_mod)
# 将任何 Relax 算子合法化为 TensorIR
tvm_model = relax.transform.LegalizeOps()(tvm_model)
# 将模型与参数分离
tvm_model, params = relax.frontend.detach_params(tvm_model)
# 将 Relax 图编译为虚拟机(VM)然后运行
with tvm.transform.PassContext(opt_level=3):
ex = relax.build(tvm_model, target="llvm")
vm = relax.VirtualMachine(ex, tvm.cpu())
vm.set_input("main", *input_list)
vm.invoke_stateful("main")
tvm_output = vm.get_outputs("main").numpy()
校验结果:
torch_model = torch.jit.load("yolo11n.torchscript")
with torch.no_grad():
pred = torch_model(torch.from_numpy(xs)).numpy()
np.testing.assert_allclose(tvm_output, pred, rtol=1e-4, atol=1e-5)