mobilenetv3#
import set_env
from d2py.utils.file import mkdir
root_dir = ".temp"
mkdir(f"{root_dir}/logs")
from PIL import Image
import numpy as np
import torch
from tvm_book.data.augment import LetterBox
imgsz = 256, 192
strides = 8, 16, 32
mean = (0,)
std = (255,)
input_path = "/media/pc/data/board/arria10/lxw/tasks/images/traffic-light-6945091_960_720.jpg"
letterbox = LetterBox(imgsz, strides=strides, auto=False)
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.astype("float32") / std # 归一化值域范围为 0.0 - 1.0
Image.fromarray(np.concatenate([letterbox_image, (xs[0]*std).astype("uint8").transpose((1, 2, 0))], axis=1))
数据内存的连续性:True
数据内存的连续性(transpose):False
数据内存的连续性:True
import onnx
from tvm import relay
input_name = "images"
onnx_model = onnx.load('/media/pc/data/board/arria10/lxw/tasks/tools/npu_user_demos/models/telecom/Nin1_helmet_small/helmet_small.onnx')
mod, params = relay.frontend.from_onnx(onnx_model, {input_name: xs.shape}, freeze_params=True)
mod.show()
def @main(%images: Tensor[(1, 3, 256, 192), float32] /* ty=Tensor[(1, 3, 256, 192), float32] span=/features/features.0/features.0.0/Conv.images:0:0 */) -> Tensor[(1, 9), float32] {
%0 = nn.conv2d(%images, meta[relay.Constant][0] /* ty=Tensor[(16, 3, 3, 3), float32] span=/features/features.0/features.0.0/Conv.onnx::Conv_460:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.0/Conv:0:0 */;
%1 = nn.bias_add(%0, meta[relay.Constant][1] /* ty=Tensor[(16), float32] span=/features/features.0/features.0.0/Conv.onnx::Conv_461:0:0 */) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.0/Conv:0:0 */;
%2 = multiply(%1, 0.166667f /* ty=float32 span=/features/features.0/features.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/HardSigmoid:0:0 */;
%3 = add(%2, 0.5f /* ty=float32 span=/features/features.0/features.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/HardSigmoid:0:0 */;
%4 = clip(%3, a_min=0f, a_max=1f) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/HardSigmoid:0:0 */;
%5 = multiply(%1, %4) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/Mul:0:0 */;
%6 = nn.conv2d(%5, meta[relay.Constant][2] /* ty=Tensor[(16, 1, 3, 3), float32] span=/features/features.1/block/block.0/block.0.0/Conv.onnx::Conv_463:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], groups=16, channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.0/block.0.0/Conv:0:0 */;
%7 = nn.bias_add(%6, meta[relay.Constant][3] /* ty=Tensor[(16), float32] span=/features/features.1/block/block.0/block.0.0/Conv.onnx::Conv_464:0:0 */) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.0/block.0.0/Conv:0:0 */;
%8 = nn.relu(%7) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.0/block.0.2/Relu:0:0 */;
%9 = nn.global_avg_pool2d(%8) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/GlobalAveragePool:0:0 */;
%10 = nn.conv2d(%9, meta[relay.Constant][4] /* ty=Tensor[(8, 16, 1, 1), float32] span=/features/features.1/block/block.1/fc1/Conv.features.1.block.1.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=8, kernel_size=[1, 1]) /* ty=Tensor[(1, 8, 1, 1), float32] span=/features/features.1/block/block.1/fc1/Conv:0:0 */;
%11 = nn.bias_add(%10, meta[relay.Constant][5] /* ty=Tensor[(8), float32] span=/features/features.1/block/block.1/fc1/Conv.features.1.block.1.fc1.bias:0:0 */) /* ty=Tensor[(1, 8, 1, 1), float32] span=/features/features.1/block/block.1/fc1/Conv:0:0 */;
%12 = nn.relu(%11) /* ty=Tensor[(1, 8, 1, 1), float32] span=/features/features.1/block/block.1/relu/Relu:0:0 */;
%13 = nn.conv2d(%12, meta[relay.Constant][6] /* ty=Tensor[(16, 8, 1, 1), float32] span=/features/features.1/block/block.1/fc2/Conv.features.1.block.1.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=16, kernel_size=[1, 1]) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/fc2/Conv:0:0 */;
%14 = nn.bias_add(%13, meta[relay.Constant][7] /* ty=Tensor[(16), float32] span=/features/features.1/block/block.1/fc2/Conv.features.1.block.1.fc2.bias:0:0 */) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/fc2/Conv:0:0 */;
%15 = multiply(%14, 0.166667f /* ty=float32 span=/features/features.1/block/block.1/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/HardSigmoid:0:0 */;
%16 = add(%15, 0.5f /* ty=float32 span=/features/features.1/block/block.1/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/HardSigmoid:0:0 */;
%17 = clip(%16, a_min=0f, a_max=1f) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/HardSigmoid:0:0 */;
%18 = multiply(%17, %8) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.1/Mul:0:0 */;
%19 = nn.conv2d(%18, meta[relay.Constant][8] /* ty=Tensor[(16, 16, 1, 1), float32] span=/features/features.1/block/block.2/block.2.0/Conv.onnx::Conv_466:0:0 */, padding=[0, 0, 0, 0], channels=16, kernel_size=[1, 1]) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.2/block.2.0/Conv:0:0 */;
%20 = nn.bias_add(%19, meta[relay.Constant][9] /* ty=Tensor[(16), float32] span=/features/features.1/block/block.2/block.2.0/Conv.onnx::Conv_467:0:0 */) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.2/block.2.0/Conv:0:0 */;
%21 = nn.conv2d(%20, meta[relay.Constant][10] /* ty=Tensor[(72, 16, 1, 1), float32] span=/features/features.2/block/block.0/block.0.0/Conv.onnx::Conv_469:0:0 */, padding=[0, 0, 0, 0], channels=72, kernel_size=[1, 1]) /* ty=Tensor[(1, 72, 64, 48), float32] span=/features/features.2/block/block.0/block.0.0/Conv:0:0 */;
%22 = nn.bias_add(%21, meta[relay.Constant][11] /* ty=Tensor[(72), float32] span=/features/features.2/block/block.0/block.0.0/Conv.onnx::Conv_470:0:0 */) /* ty=Tensor[(1, 72, 64, 48), float32] span=/features/features.2/block/block.0/block.0.0/Conv:0:0 */;
%23 = nn.relu(%22) /* ty=Tensor[(1, 72, 64, 48), float32] span=/features/features.2/block/block.0/block.0.2/Relu:0:0 */;
%24 = nn.conv2d(%23, meta[relay.Constant][12] /* ty=Tensor[(72, 1, 3, 3), float32] span=/features/features.2/block/block.1/block.1.0/Conv.onnx::Conv_472:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], groups=72, channels=72, kernel_size=[3, 3]) /* ty=Tensor[(1, 72, 32, 24), float32] span=/features/features.2/block/block.1/block.1.0/Conv:0:0 */;
%25 = nn.bias_add(%24, meta[relay.Constant][13] /* ty=Tensor[(72), float32] span=/features/features.2/block/block.1/block.1.0/Conv.onnx::Conv_473:0:0 */) /* ty=Tensor[(1, 72, 32, 24), float32] span=/features/features.2/block/block.1/block.1.0/Conv:0:0 */;
%26 = nn.relu(%25) /* ty=Tensor[(1, 72, 32, 24), float32] span=/features/features.2/block/block.1/block.1.2/Relu:0:0 */;
%27 = nn.conv2d(%26, meta[relay.Constant][14] /* ty=Tensor[(24, 72, 1, 1), float32] span=/features/features.2/block/block.2/block.2.0/Conv.onnx::Conv_475:0:0 */, padding=[0, 0, 0, 0], channels=24, kernel_size=[1, 1]) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.2/block/block.2/block.2.0/Conv:0:0 */;
%28 = nn.bias_add(%27, meta[relay.Constant][15] /* ty=Tensor[(24), float32] span=/features/features.2/block/block.2/block.2.0/Conv.onnx::Conv_476:0:0 */) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.2/block/block.2/block.2.0/Conv:0:0 */;
%29 = nn.conv2d(%28, meta[relay.Constant][16] /* ty=Tensor[(88, 24, 1, 1), float32] span=/features/features.3/block/block.0/block.0.0/Conv.onnx::Conv_478:0:0 */, padding=[0, 0, 0, 0], channels=88, kernel_size=[1, 1]) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.0/block.0.0/Conv:0:0 */;
%30 = nn.bias_add(%29, meta[relay.Constant][17] /* ty=Tensor[(88), float32] span=/features/features.3/block/block.0/block.0.0/Conv.onnx::Conv_479:0:0 */) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.0/block.0.0/Conv:0:0 */;
%31 = nn.relu(%30) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.0/block.0.2/Relu:0:0 */;
%32 = nn.conv2d(%31, meta[relay.Constant][18] /* ty=Tensor[(88, 1, 3, 3), float32] span=/features/features.3/block/block.1/block.1.0/Conv.onnx::Conv_481:0:0 */, padding=[1, 1, 1, 1], groups=88, channels=88, kernel_size=[3, 3]) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.1/block.1.0/Conv:0:0 */;
%33 = nn.bias_add(%32, meta[relay.Constant][19] /* ty=Tensor[(88), float32] span=/features/features.3/block/block.1/block.1.0/Conv.onnx::Conv_482:0:0 */) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.1/block.1.0/Conv:0:0 */;
%34 = nn.relu(%33) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.1/block.1.2/Relu:0:0 */;
%35 = nn.conv2d(%34, meta[relay.Constant][20] /* ty=Tensor[(24, 88, 1, 1), float32] span=/features/features.3/block/block.2/block.2.0/Conv.onnx::Conv_484:0:0 */, padding=[0, 0, 0, 0], channels=24, kernel_size=[1, 1]) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.3/block/block.2/block.2.0/Conv:0:0 */;
%36 = nn.bias_add(%35, meta[relay.Constant][21] /* ty=Tensor[(24), float32] span=/features/features.3/block/block.2/block.2.0/Conv.onnx::Conv_485:0:0 */) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.3/block/block.2/block.2.0/Conv:0:0 */;
%37 = add(%36, %28) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.3/Add:0:0 */;
%38 = nn.conv2d(%37, meta[relay.Constant][22] /* ty=Tensor[(96, 24, 1, 1), float32] span=/features/features.4/block/block.0/block.0.0/Conv.onnx::Conv_487:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.0/Conv:0:0 */;
%39 = nn.bias_add(%38, meta[relay.Constant][23] /* ty=Tensor[(96), float32] span=/features/features.4/block/block.0/block.0.0/Conv.onnx::Conv_488:0:0 */) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.0/Conv:0:0 */;
%40 = multiply(%39, 0.166667f /* ty=float32 span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */;
%41 = add(%40, 0.5f /* ty=float32 span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */;
%42 = clip(%41, a_min=0f, a_max=1f) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */;
%43 = multiply(%39, %42) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/Mul:0:0 */;
%44 = nn.conv2d(%43, meta[relay.Constant][24] /* ty=Tensor[(96, 1, 5, 5), float32] span=/features/features.4/block/block.1/block.1.0/Conv.onnx::Conv_490:0:0 */, strides=[2, 2], padding=[2, 2, 2, 2], groups=96, channels=96, kernel_size=[5, 5]) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.0/Conv:0:0 */;
%45 = nn.bias_add(%44, meta[relay.Constant][25] /* ty=Tensor[(96), float32] span=/features/features.4/block/block.1/block.1.0/Conv.onnx::Conv_491:0:0 */) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.0/Conv:0:0 */;
%46 = multiply(%45, 0.166667f /* ty=float32 span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */;
%47 = add(%46, 0.5f /* ty=float32 span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */;
%48 = clip(%47, a_min=0f, a_max=1f) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */;
%49 = multiply(%45, %48) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/Mul:0:0 */;
%50 = nn.global_avg_pool2d(%49) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/GlobalAveragePool:0:0 */;
%51 = nn.conv2d(%50, meta[relay.Constant][26] /* ty=Tensor[(24, 96, 1, 1), float32] span=/features/features.4/block/block.2/fc1/Conv.features.4.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=24, kernel_size=[1, 1]) /* ty=Tensor[(1, 24, 1, 1), float32] span=/features/features.4/block/block.2/fc1/Conv:0:0 */;
%52 = nn.bias_add(%51, meta[relay.Constant][27] /* ty=Tensor[(24), float32] span=/features/features.4/block/block.2/fc1/Conv.features.4.block.2.fc1.bias:0:0 */) /* ty=Tensor[(1, 24, 1, 1), float32] span=/features/features.4/block/block.2/fc1/Conv:0:0 */;
%53 = nn.relu(%52) /* ty=Tensor[(1, 24, 1, 1), float32] span=/features/features.4/block/block.2/relu/Relu:0:0 */;
%54 = nn.conv2d(%53, meta[relay.Constant][28] /* ty=Tensor[(96, 24, 1, 1), float32] span=/features/features.4/block/block.2/fc2/Conv.features.4.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/fc2/Conv:0:0 */;
%55 = nn.bias_add(%54, meta[relay.Constant][29] /* ty=Tensor[(96), float32] span=/features/features.4/block/block.2/fc2/Conv.features.4.block.2.fc2.bias:0:0 */) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/fc2/Conv:0:0 */;
%56 = multiply(%55, 0.166667f /* ty=float32 span=/features/features.4/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/HardSigmoid:0:0 */;
%57 = add(%56, 0.5f /* ty=float32 span=/features/features.4/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/HardSigmoid:0:0 */;
%58 = clip(%57, a_min=0f, a_max=1f) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/HardSigmoid:0:0 */;
%59 = multiply(%58, %49) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.2/Mul:0:0 */;
%60 = nn.conv2d(%59, meta[relay.Constant][30] /* ty=Tensor[(40, 96, 1, 1), float32] span=/features/features.4/block/block.3/block.3.0/Conv.onnx::Conv_493:0:0 */, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.4/block/block.3/block.3.0/Conv:0:0 */;
%61 = nn.bias_add(%60, meta[relay.Constant][31] /* ty=Tensor[(40), float32] span=/features/features.4/block/block.3/block.3.0/Conv.onnx::Conv_494:0:0 */) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.4/block/block.3/block.3.0/Conv:0:0 */;
%62 = nn.conv2d(%61, meta[relay.Constant][32] /* ty=Tensor[(240, 40, 1, 1), float32] span=/features/features.5/block/block.0/block.0.0/Conv.onnx::Conv_496:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.0/Conv:0:0 */;
%63 = nn.bias_add(%62, meta[relay.Constant][33] /* ty=Tensor[(240), float32] span=/features/features.5/block/block.0/block.0.0/Conv.onnx::Conv_497:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.0/Conv:0:0 */;
%64 = multiply(%63, 0.166667f /* ty=float32 span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */;
%65 = add(%64, 0.5f /* ty=float32 span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */;
%66 = clip(%65, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */;
%67 = multiply(%63, %66) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/Mul:0:0 */;
%68 = nn.conv2d(%67, meta[relay.Constant][34] /* ty=Tensor[(240, 1, 5, 5), float32] span=/features/features.5/block/block.1/block.1.0/Conv.onnx::Conv_499:0:0 */, padding=[2, 2, 2, 2], groups=240, channels=240, kernel_size=[5, 5]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.0/Conv:0:0 */;
%69 = nn.bias_add(%68, meta[relay.Constant][35] /* ty=Tensor[(240), float32] span=/features/features.5/block/block.1/block.1.0/Conv.onnx::Conv_500:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.0/Conv:0:0 */;
%70 = multiply(%69, 0.166667f /* ty=float32 span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */;
%71 = add(%70, 0.5f /* ty=float32 span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */;
%72 = clip(%71, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */;
%73 = multiply(%69, %72) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/Mul:0:0 */;
%74 = nn.global_avg_pool2d(%73) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/GlobalAveragePool:0:0 */;
%75 = nn.conv2d(%74, meta[relay.Constant][36] /* ty=Tensor[(64, 240, 1, 1), float32] span=/features/features.5/block/block.2/fc1/Conv.features.5.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.5/block/block.2/fc1/Conv:0:0 */;
%76 = nn.bias_add(%75, meta[relay.Constant][37] /* ty=Tensor[(64), float32] span=/features/features.5/block/block.2/fc1/Conv.features.5.block.2.fc1.bias:0:0 */) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.5/block/block.2/fc1/Conv:0:0 */;
%77 = nn.relu(%76) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.5/block/block.2/relu/Relu:0:0 */;
%78 = nn.conv2d(%77, meta[relay.Constant][38] /* ty=Tensor[(240, 64, 1, 1), float32] span=/features/features.5/block/block.2/fc2/Conv.features.5.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/fc2/Conv:0:0 */;
%79 = nn.bias_add(%78, meta[relay.Constant][39] /* ty=Tensor[(240), float32] span=/features/features.5/block/block.2/fc2/Conv.features.5.block.2.fc2.bias:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/fc2/Conv:0:0 */;
%80 = multiply(%79, 0.166667f /* ty=float32 span=/features/features.5/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/HardSigmoid:0:0 */;
%81 = add(%80, 0.5f /* ty=float32 span=/features/features.5/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/HardSigmoid:0:0 */;
%82 = clip(%81, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/HardSigmoid:0:0 */;
%83 = multiply(%82, %73) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.2/Mul:0:0 */;
%84 = nn.conv2d(%83, meta[relay.Constant][40] /* ty=Tensor[(40, 240, 1, 1), float32] span=/features/features.5/block/block.3/block.3.0/Conv.onnx::Conv_502:0:0 */, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.5/block/block.3/block.3.0/Conv:0:0 */;
%85 = nn.bias_add(%84, meta[relay.Constant][41] /* ty=Tensor[(40), float32] span=/features/features.5/block/block.3/block.3.0/Conv.onnx::Conv_503:0:0 */) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.5/block/block.3/block.3.0/Conv:0:0 */;
%86 = add(%85, %61) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.5/Add:0:0 */;
%87 = nn.conv2d(%86, meta[relay.Constant][42] /* ty=Tensor[(240, 40, 1, 1), float32] span=/features/features.6/block/block.0/block.0.0/Conv.onnx::Conv_505:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.0/Conv:0:0 */;
%88 = nn.bias_add(%87, meta[relay.Constant][43] /* ty=Tensor[(240), float32] span=/features/features.6/block/block.0/block.0.0/Conv.onnx::Conv_506:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.0/Conv:0:0 */;
%89 = multiply(%88, 0.166667f /* ty=float32 span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */;
%90 = add(%89, 0.5f /* ty=float32 span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */;
%91 = clip(%90, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */;
%92 = multiply(%88, %91) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/Mul:0:0 */;
%93 = nn.conv2d(%92, meta[relay.Constant][44] /* ty=Tensor[(240, 1, 5, 5), float32] span=/features/features.6/block/block.1/block.1.0/Conv.onnx::Conv_508:0:0 */, padding=[2, 2, 2, 2], groups=240, channels=240, kernel_size=[5, 5]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.0/Conv:0:0 */;
%94 = nn.bias_add(%93, meta[relay.Constant][45] /* ty=Tensor[(240), float32] span=/features/features.6/block/block.1/block.1.0/Conv.onnx::Conv_509:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.0/Conv:0:0 */;
%95 = multiply(%94, 0.166667f /* ty=float32 span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */;
%96 = add(%95, 0.5f /* ty=float32 span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */;
%97 = clip(%96, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */;
%98 = multiply(%94, %97) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/Mul:0:0 */;
%99 = nn.global_avg_pool2d(%98) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/GlobalAveragePool:0:0 */;
%100 = nn.conv2d(%99, meta[relay.Constant][46] /* ty=Tensor[(64, 240, 1, 1), float32] span=/features/features.6/block/block.2/fc1/Conv.features.6.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.6/block/block.2/fc1/Conv:0:0 */;
%101 = nn.bias_add(%100, meta[relay.Constant][47] /* ty=Tensor[(64), float32] span=/features/features.6/block/block.2/fc1/Conv.features.6.block.2.fc1.bias:0:0 */) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.6/block/block.2/fc1/Conv:0:0 */;
%102 = nn.relu(%101) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.6/block/block.2/relu/Relu:0:0 */;
%103 = nn.conv2d(%102, meta[relay.Constant][48] /* ty=Tensor[(240, 64, 1, 1), float32] span=/features/features.6/block/block.2/fc2/Conv.features.6.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/fc2/Conv:0:0 */;
%104 = nn.bias_add(%103, meta[relay.Constant][49] /* ty=Tensor[(240), float32] span=/features/features.6/block/block.2/fc2/Conv.features.6.block.2.fc2.bias:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/fc2/Conv:0:0 */;
%105 = multiply(%104, 0.166667f /* ty=float32 span=/features/features.6/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/HardSigmoid:0:0 */;
%106 = add(%105, 0.5f /* ty=float32 span=/features/features.6/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/HardSigmoid:0:0 */;
%107 = clip(%106, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/HardSigmoid:0:0 */;
%108 = multiply(%107, %98) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.2/Mul:0:0 */;
%109 = nn.conv2d(%108, meta[relay.Constant][50] /* ty=Tensor[(40, 240, 1, 1), float32] span=/features/features.6/block/block.3/block.3.0/Conv.onnx::Conv_511:0:0 */, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.6/block/block.3/block.3.0/Conv:0:0 */;
%110 = nn.bias_add(%109, meta[relay.Constant][51] /* ty=Tensor[(40), float32] span=/features/features.6/block/block.3/block.3.0/Conv.onnx::Conv_512:0:0 */) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.6/block/block.3/block.3.0/Conv:0:0 */;
%111 = add(%110, %86) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.6/Add:0:0 */;
%112 = nn.conv2d(%111, meta[relay.Constant][52] /* ty=Tensor[(120, 40, 1, 1), float32] span=/features/features.7/block/block.0/block.0.0/Conv.onnx::Conv_514:0:0 */, padding=[0, 0, 0, 0], channels=120, kernel_size=[1, 1]) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.0/Conv:0:0 */;
%113 = nn.bias_add(%112, meta[relay.Constant][53] /* ty=Tensor[(120), float32] span=/features/features.7/block/block.0/block.0.0/Conv.onnx::Conv_515:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.0/Conv:0:0 */;
%114 = multiply(%113, 0.166667f /* ty=float32 span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */;
%115 = add(%114, 0.5f /* ty=float32 span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */;
%116 = clip(%115, a_min=0f, a_max=1f) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */;
%117 = multiply(%113, %116) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/Mul:0:0 */;
%118 = nn.conv2d(%117, meta[relay.Constant][54] /* ty=Tensor[(120, 1, 5, 5), float32] span=/features/features.7/block/block.1/block.1.0/Conv.onnx::Conv_517:0:0 */, padding=[2, 2, 2, 2], groups=120, channels=120, kernel_size=[5, 5]) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.0/Conv:0:0 */;
%119 = nn.bias_add(%118, meta[relay.Constant][55] /* ty=Tensor[(120), float32] span=/features/features.7/block/block.1/block.1.0/Conv.onnx::Conv_518:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.0/Conv:0:0 */;
%120 = multiply(%119, 0.166667f /* ty=float32 span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */;
%121 = add(%120, 0.5f /* ty=float32 span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */;
%122 = clip(%121, a_min=0f, a_max=1f) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */;
%123 = multiply(%119, %122) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/Mul:0:0 */;
%124 = nn.global_avg_pool2d(%123) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/GlobalAveragePool:0:0 */;
%125 = nn.conv2d(%124, meta[relay.Constant][56] /* ty=Tensor[(32, 120, 1, 1), float32] span=/features/features.7/block/block.2/fc1/Conv.features.7.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=32, kernel_size=[1, 1]) /* ty=Tensor[(1, 32, 1, 1), float32] span=/features/features.7/block/block.2/fc1/Conv:0:0 */;
%126 = nn.bias_add(%125, meta[relay.Constant][57] /* ty=Tensor[(32), float32] span=/features/features.7/block/block.2/fc1/Conv.features.7.block.2.fc1.bias:0:0 */) /* ty=Tensor[(1, 32, 1, 1), float32] span=/features/features.7/block/block.2/fc1/Conv:0:0 */;
%127 = nn.relu(%126) /* ty=Tensor[(1, 32, 1, 1), float32] span=/features/features.7/block/block.2/relu/Relu:0:0 */;
%128 = nn.conv2d(%127, meta[relay.Constant][58] /* ty=Tensor[(120, 32, 1, 1), float32] span=/features/features.7/block/block.2/fc2/Conv.features.7.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=120, kernel_size=[1, 1]) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/fc2/Conv:0:0 */;
%129 = nn.bias_add(%128, meta[relay.Constant][59] /* ty=Tensor[(120), float32] span=/features/features.7/block/block.2/fc2/Conv.features.7.block.2.fc2.bias:0:0 */) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/fc2/Conv:0:0 */;
%130 = multiply(%129, 0.166667f /* ty=float32 span=/features/features.7/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/HardSigmoid:0:0 */;
%131 = add(%130, 0.5f /* ty=float32 span=/features/features.7/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/HardSigmoid:0:0 */;
%132 = clip(%131, a_min=0f, a_max=1f) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/HardSigmoid:0:0 */;
%133 = multiply(%132, %123) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.2/Mul:0:0 */;
%134 = nn.conv2d(%133, meta[relay.Constant][60] /* ty=Tensor[(48, 120, 1, 1), float32] span=/features/features.7/block/block.3/block.3.0/Conv.onnx::Conv_520:0:0 */, padding=[0, 0, 0, 0], channels=48, kernel_size=[1, 1]) /* ty=Tensor[(1, 48, 16, 12), float32] span=/features/features.7/block/block.3/block.3.0/Conv:0:0 */;
%135 = nn.bias_add(%134, meta[relay.Constant][61] /* ty=Tensor[(48), float32] span=/features/features.7/block/block.3/block.3.0/Conv.onnx::Conv_521:0:0 */) /* ty=Tensor[(1, 48, 16, 12), float32] span=/features/features.7/block/block.3/block.3.0/Conv:0:0 */;
%136 = nn.conv2d(%135, meta[relay.Constant][62] /* ty=Tensor[(144, 48, 1, 1), float32] span=/features/features.8/block/block.0/block.0.0/Conv.onnx::Conv_523:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.0/Conv:0:0 */;
%137 = nn.bias_add(%136, meta[relay.Constant][63] /* ty=Tensor[(144), float32] span=/features/features.8/block/block.0/block.0.0/Conv.onnx::Conv_524:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.0/Conv:0:0 */;
%138 = multiply(%137, 0.166667f /* ty=float32 span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */;
%139 = add(%138, 0.5f /* ty=float32 span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */;
%140 = clip(%139, a_min=0f, a_max=1f) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */;
%141 = multiply(%137, %140) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/Mul:0:0 */;
%142 = nn.conv2d(%141, meta[relay.Constant][64] /* ty=Tensor[(144, 1, 5, 5), float32] span=/features/features.8/block/block.1/block.1.0/Conv.onnx::Conv_526:0:0 */, padding=[2, 2, 2, 2], groups=144, channels=144, kernel_size=[5, 5]) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.0/Conv:0:0 */;
%143 = nn.bias_add(%142, meta[relay.Constant][65] /* ty=Tensor[(144), float32] span=/features/features.8/block/block.1/block.1.0/Conv.onnx::Conv_527:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.0/Conv:0:0 */;
%144 = multiply(%143, 0.166667f /* ty=float32 span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */;
%145 = add(%144, 0.5f /* ty=float32 span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */;
%146 = clip(%145, a_min=0f, a_max=1f) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */;
%147 = multiply(%143, %146) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/Mul:0:0 */;
%148 = nn.global_avg_pool2d(%147) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/GlobalAveragePool:0:0 */;
%149 = nn.conv2d(%148, meta[relay.Constant][66] /* ty=Tensor[(40, 144, 1, 1), float32] span=/features/features.8/block/block.2/fc1/Conv.features.8.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 1, 1), float32] span=/features/features.8/block/block.2/fc1/Conv:0:0 */;
%150 = nn.bias_add(%149, meta[relay.Constant][67] /* ty=Tensor[(40), float32] span=/features/features.8/block/block.2/fc1/Conv.features.8.block.2.fc1.bias:0:0 */) /* ty=Tensor[(1, 40, 1, 1), float32] span=/features/features.8/block/block.2/fc1/Conv:0:0 */;
%151 = nn.relu(%150) /* ty=Tensor[(1, 40, 1, 1), float32] span=/features/features.8/block/block.2/relu/Relu:0:0 */;
%152 = nn.conv2d(%151, meta[relay.Constant][68] /* ty=Tensor[(144, 40, 1, 1), float32] span=/features/features.8/block/block.2/fc2/Conv.features.8.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/fc2/Conv:0:0 */;
%153 = nn.bias_add(%152, meta[relay.Constant][69] /* ty=Tensor[(144), float32] span=/features/features.8/block/block.2/fc2/Conv.features.8.block.2.fc2.bias:0:0 */) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/fc2/Conv:0:0 */;
%154 = multiply(%153, 0.166667f /* ty=float32 span=/features/features.8/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/HardSigmoid:0:0 */;
%155 = add(%154, 0.5f /* ty=float32 span=/features/features.8/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/HardSigmoid:0:0 */;
%156 = clip(%155, a_min=0f, a_max=1f) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/HardSigmoid:0:0 */;
%157 = multiply(%156, %147) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.2/Mul:0:0 */;
%158 = nn.conv2d(%157, meta[relay.Constant][70] /* ty=Tensor[(48, 144, 1, 1), float32] span=/features/features.8/block/block.3/block.3.0/Conv.onnx::Conv_529:0:0 */, padding=[0, 0, 0, 0], channels=48, kernel_size=[1, 1]) /* ty=Tensor[(1, 48, 16, 12), float32] span=/features/features.8/block/block.3/block.3.0/Conv:0:0 */;
%159 = nn.bias_add(%158, meta[relay.Constant][71] /* ty=Tensor[(48), float32] span=/features/features.8/block/block.3/block.3.0/Conv.onnx::Conv_530:0:0 */) /* ty=Tensor[(1, 48, 16, 12), float32] span=/features/features.8/block/block.3/block.3.0/Conv:0:0 */;
%160 = add(%159, %135) /* ty=Tensor[(1, 48, 16, 12), float32] span=/features/features.8/Add:0:0 */;
%161 = nn.conv2d(%160, meta[relay.Constant][72] /* ty=Tensor[(288, 48, 1, 1), float32] span=/features/features.9/block/block.0/block.0.0/Conv.onnx::Conv_532:0:0 */, padding=[0, 0, 0, 0], channels=288, kernel_size=[1, 1]) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.0/Conv:0:0 */;
%162 = nn.bias_add(%161, meta[relay.Constant][73] /* ty=Tensor[(288), float32] span=/features/features.9/block/block.0/block.0.0/Conv.onnx::Conv_533:0:0 */) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.0/Conv:0:0 */;
%163 = multiply(%162, 0.166667f /* ty=float32 span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */;
%164 = add(%163, 0.5f /* ty=float32 span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */;
%165 = clip(%164, a_min=0f, a_max=1f) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */;
%166 = multiply(%162, %165) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/Mul:0:0 */;
%167 = nn.conv2d(%166, meta[relay.Constant][74] /* ty=Tensor[(288, 1, 5, 5), float32] span=/features/features.9/block/block.1/block.1.0/Conv.onnx::Conv_535:0:0 */, strides=[2, 2], padding=[2, 2, 2, 2], groups=288, channels=288, kernel_size=[5, 5]) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.0/Conv:0:0 */;
%168 = nn.bias_add(%167, meta[relay.Constant][75] /* ty=Tensor[(288), float32] span=/features/features.9/block/block.1/block.1.0/Conv.onnx::Conv_536:0:0 */) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.0/Conv:0:0 */;
%169 = multiply(%168, 0.166667f /* ty=float32 span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */;
%170 = add(%169, 0.5f /* ty=float32 span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */;
%171 = clip(%170, a_min=0f, a_max=1f) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */;
%172 = multiply(%168, %171) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/Mul:0:0 */;
%173 = nn.global_avg_pool2d(%172) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/GlobalAveragePool:0:0 */;
%174 = nn.conv2d(%173, meta[relay.Constant][76] /* ty=Tensor[(72, 288, 1, 1), float32] span=/features/features.9/block/block.2/fc1/Conv.features.9.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=72, kernel_size=[1, 1]) /* ty=Tensor[(1, 72, 1, 1), float32] span=/features/features.9/block/block.2/fc1/Conv:0:0 */;
%175 = nn.bias_add(%174, meta[relay.Constant][77] /* ty=Tensor[(72), float32] span=/features/features.9/block/block.2/fc1/Conv.features.9.block.2.fc1.bias:0:0 */) /* ty=Tensor[(1, 72, 1, 1), float32] span=/features/features.9/block/block.2/fc1/Conv:0:0 */;
%176 = nn.relu(%175) /* ty=Tensor[(1, 72, 1, 1), float32] span=/features/features.9/block/block.2/relu/Relu:0:0 */;
%177 = nn.conv2d(%176, meta[relay.Constant][78] /* ty=Tensor[(288, 72, 1, 1), float32] span=/features/features.9/block/block.2/fc2/Conv.features.9.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=288, kernel_size=[1, 1]) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/fc2/Conv:0:0 */;
%178 = nn.bias_add(%177, meta[relay.Constant][79] /* ty=Tensor[(288), float32] span=/features/features.9/block/block.2/fc2/Conv.features.9.block.2.fc2.bias:0:0 */) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/fc2/Conv:0:0 */;
%179 = multiply(%178, 0.166667f /* ty=float32 span=/features/features.9/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/HardSigmoid:0:0 */;
%180 = add(%179, 0.5f /* ty=float32 span=/features/features.9/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/HardSigmoid:0:0 */;
%181 = clip(%180, a_min=0f, a_max=1f) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/HardSigmoid:0:0 */;
%182 = multiply(%181, %172) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.2/Mul:0:0 */;
%183 = nn.conv2d(%182, meta[relay.Constant][80] /* ty=Tensor[(96, 288, 1, 1), float32] span=/features/features.9/block/block.3/block.3.0/Conv.onnx::Conv_538:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.9/block/block.3/block.3.0/Conv:0:0 */;
%184 = nn.bias_add(%183, meta[relay.Constant][81] /* ty=Tensor[(96), float32] span=/features/features.9/block/block.3/block.3.0/Conv.onnx::Conv_539:0:0 */) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.9/block/block.3/block.3.0/Conv:0:0 */;
%185 = nn.conv2d(%184, meta[relay.Constant][82] /* ty=Tensor[(576, 96, 1, 1), float32] span=/features/features.10/block/block.0/block.0.0/Conv.onnx::Conv_541:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.0/Conv:0:0 */;
%186 = nn.bias_add(%185, meta[relay.Constant][83] /* ty=Tensor[(576), float32] span=/features/features.10/block/block.0/block.0.0/Conv.onnx::Conv_542:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.0/Conv:0:0 */;
%187 = multiply(%186, 0.166667f /* ty=float32 span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */;
%188 = add(%187, 0.5f /* ty=float32 span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */;
%189 = clip(%188, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */;
%190 = multiply(%186, %189) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/Mul:0:0 */;
%191 = nn.conv2d(%190, meta[relay.Constant][84] /* ty=Tensor[(576, 1, 5, 5), float32] span=/features/features.10/block/block.1/block.1.0/Conv.onnx::Conv_544:0:0 */, padding=[2, 2, 2, 2], groups=576, channels=576, kernel_size=[5, 5]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.0/Conv:0:0 */;
%192 = nn.bias_add(%191, meta[relay.Constant][85] /* ty=Tensor[(576), float32] span=/features/features.10/block/block.1/block.1.0/Conv.onnx::Conv_545:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.0/Conv:0:0 */;
%193 = multiply(%192, 0.166667f /* ty=float32 span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */;
%194 = add(%193, 0.5f /* ty=float32 span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */;
%195 = clip(%194, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */;
%196 = multiply(%192, %195) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/Mul:0:0 */;
%197 = nn.global_avg_pool2d(%196) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/GlobalAveragePool:0:0 */;
%198 = nn.conv2d(%197, meta[relay.Constant][86] /* ty=Tensor[(144, 576, 1, 1), float32] span=/features/features.10/block/block.2/fc1/Conv.features.10.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.10/block/block.2/fc1/Conv:0:0 */;
%199 = nn.bias_add(%198, meta[relay.Constant][87] /* ty=Tensor[(144), float32] span=/features/features.10/block/block.2/fc1/Conv.features.10.block.2.fc1.bias:0:0 */) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.10/block/block.2/fc1/Conv:0:0 */;
%200 = nn.relu(%199) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.10/block/block.2/relu/Relu:0:0 */;
%201 = nn.conv2d(%200, meta[relay.Constant][88] /* ty=Tensor[(576, 144, 1, 1), float32] span=/features/features.10/block/block.2/fc2/Conv.features.10.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/fc2/Conv:0:0 */;
%202 = nn.bias_add(%201, meta[relay.Constant][89] /* ty=Tensor[(576), float32] span=/features/features.10/block/block.2/fc2/Conv.features.10.block.2.fc2.bias:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/fc2/Conv:0:0 */;
%203 = multiply(%202, 0.166667f /* ty=float32 span=/features/features.10/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/HardSigmoid:0:0 */;
%204 = add(%203, 0.5f /* ty=float32 span=/features/features.10/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/HardSigmoid:0:0 */;
%205 = clip(%204, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/HardSigmoid:0:0 */;
%206 = multiply(%205, %196) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.2/Mul:0:0 */;
%207 = nn.conv2d(%206, meta[relay.Constant][90] /* ty=Tensor[(96, 576, 1, 1), float32] span=/features/features.10/block/block.3/block.3.0/Conv.onnx::Conv_547:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.10/block/block.3/block.3.0/Conv:0:0 */;
%208 = nn.bias_add(%207, meta[relay.Constant][91] /* ty=Tensor[(96), float32] span=/features/features.10/block/block.3/block.3.0/Conv.onnx::Conv_548:0:0 */) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.10/block/block.3/block.3.0/Conv:0:0 */;
%209 = add(%208, %184) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.10/Add:0:0 */;
%210 = nn.conv2d(%209, meta[relay.Constant][92] /* ty=Tensor[(576, 96, 1, 1), float32] span=/features/features.11/block/block.0/block.0.0/Conv.onnx::Conv_550:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.0/Conv:0:0 */;
%211 = nn.bias_add(%210, meta[relay.Constant][93] /* ty=Tensor[(576), float32] span=/features/features.11/block/block.0/block.0.0/Conv.onnx::Conv_551:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.0/Conv:0:0 */;
%212 = multiply(%211, 0.166667f /* ty=float32 span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */;
%213 = add(%212, 0.5f /* ty=float32 span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */;
%214 = clip(%213, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */;
%215 = multiply(%211, %214) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/Mul:0:0 */;
%216 = nn.conv2d(%215, meta[relay.Constant][94] /* ty=Tensor[(576, 1, 5, 5), float32] span=/features/features.11/block/block.1/block.1.0/Conv.onnx::Conv_553:0:0 */, padding=[2, 2, 2, 2], groups=576, channels=576, kernel_size=[5, 5]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.0/Conv:0:0 */;
%217 = nn.bias_add(%216, meta[relay.Constant][95] /* ty=Tensor[(576), float32] span=/features/features.11/block/block.1/block.1.0/Conv.onnx::Conv_554:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.0/Conv:0:0 */;
%218 = multiply(%217, 0.166667f /* ty=float32 span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */;
%219 = add(%218, 0.5f /* ty=float32 span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */;
%220 = clip(%219, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */;
%221 = multiply(%217, %220) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/Mul:0:0 */;
%222 = nn.global_avg_pool2d(%221) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/GlobalAveragePool:0:0 */;
%223 = nn.conv2d(%222, meta[relay.Constant][96] /* ty=Tensor[(144, 576, 1, 1), float32] span=/features/features.11/block/block.2/fc1/Conv.features.11.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.11/block/block.2/fc1/Conv:0:0 */;
%224 = nn.bias_add(%223, meta[relay.Constant][97] /* ty=Tensor[(144), float32] span=/features/features.11/block/block.2/fc1/Conv.features.11.block.2.fc1.bias:0:0 */) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.11/block/block.2/fc1/Conv:0:0 */;
%225 = nn.relu(%224) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.11/block/block.2/relu/Relu:0:0 */;
%226 = nn.conv2d(%225, meta[relay.Constant][98] /* ty=Tensor[(576, 144, 1, 1), float32] span=/features/features.11/block/block.2/fc2/Conv.features.11.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/fc2/Conv:0:0 */;
%227 = nn.bias_add(%226, meta[relay.Constant][99] /* ty=Tensor[(576), float32] span=/features/features.11/block/block.2/fc2/Conv.features.11.block.2.fc2.bias:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/fc2/Conv:0:0 */;
%228 = multiply(%227, 0.166667f /* ty=float32 span=/features/features.11/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/HardSigmoid:0:0 */;
%229 = add(%228, 0.5f /* ty=float32 span=/features/features.11/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/HardSigmoid:0:0 */;
%230 = clip(%229, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/HardSigmoid:0:0 */;
%231 = multiply(%230, %221) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.2/Mul:0:0 */;
%232 = nn.conv2d(%231, meta[relay.Constant][100] /* ty=Tensor[(96, 576, 1, 1), float32] span=/features/features.11/block/block.3/block.3.0/Conv.onnx::Conv_556:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.11/block/block.3/block.3.0/Conv:0:0 */;
%233 = nn.bias_add(%232, meta[relay.Constant][101] /* ty=Tensor[(96), float32] span=/features/features.11/block/block.3/block.3.0/Conv.onnx::Conv_557:0:0 */) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.11/block/block.3/block.3.0/Conv:0:0 */;
%234 = add(%233, %209) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.11/Add:0:0 */;
%235 = nn.conv2d(%234, meta[relay.Constant][102] /* ty=Tensor[(576, 96, 1, 1), float32] span=/features/features.12/features.12.0/Conv.onnx::Conv_559:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.0/Conv:0:0 */;
%236 = nn.bias_add(%235, meta[relay.Constant][103] /* ty=Tensor[(576), float32] span=/features/features.12/features.12.0/Conv.onnx::Conv_560:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.0/Conv:0:0 */;
%237 = multiply(%236, 0.166667f /* ty=float32 span=/features/features.12/features.12.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/HardSigmoid:0:0 */;
%238 = add(%237, 0.5f /* ty=float32 span=/features/features.12/features.12.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/HardSigmoid:0:0 */;
%239 = clip(%238, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/HardSigmoid:0:0 */;
%240 = multiply(%236, %239) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/Mul:0:0 */;
%241 = nn.conv2d(%240, meta[relay.Constant][104] /* ty=Tensor[(1024, 576, 1, 1), float32] span=/conv/conv.0/Conv.onnx::Conv_562:0:0 */, padding=[0, 0, 0, 0], channels=1024, kernel_size=[1, 1]) /* ty=Tensor[(1, 1024, 8, 6), float32] span=/conv/conv.0/Conv:0:0 */;
%242 = nn.bias_add(%241, meta[relay.Constant][105] /* ty=Tensor[(1024), float32] span=/conv/conv.0/Conv.onnx::Conv_563:0:0 */) /* ty=Tensor[(1, 1024, 8, 6), float32] span=/conv/conv.0/Conv:0:0 */;
%243 = clip(%242, a_min=0f, a_max=6f) /* ty=Tensor[(1, 1024, 8, 6), float32] span=/conv/conv.2/Clip:0:0 */;
%244 = reshape(%243, newshape=[1, 1024, -1]) /* ty=Tensor[(1, 1024, 48), float32] span=/pool_layer/Reshape:0:0 */;
%245 = mean(%244, axis=[-1]) /* ty=Tensor[(1, 1024), float32] span=/pool_layer/ReduceMean:0:0 */;
%246 = reshape(%245, newshape=[1, 1024, 1, 1]) /* ty=Tensor[(1, 1024, 1, 1), float32] span=/pool_layer/Reshape_1:0:0 */;
%247 = nn.batch_norm(%246, meta[relay.Constant][106] /* ty=Tensor[(1024), float32] span=/bottleneck/bottleneck.0/BatchNormalization.bottleneck.0.weight:0:0 */, meta[relay.Constant][107] /* ty=Tensor[(1024), float32] span=/bottleneck/bottleneck.0/BatchNormalization.bottleneck.0.bias:0:0 */, meta[relay.Constant][108] /* ty=Tensor[(1024), float32] span=/bottleneck/bottleneck.0/BatchNormalization.bottleneck.0.running_mean:0:0 */, meta[relay.Constant][109] /* ty=Tensor[(1024), float32] span=/bottleneck/bottleneck.0/BatchNormalization.bottleneck.0.running_var:0:0 */) /* ty=(Tensor[(1, 1024, 1, 1), float32], Tensor[(1024), float32], Tensor[(1024), float32]) span=/bottleneck/bottleneck.0/BatchNormalization:0:0 */;
%248 = %247.0 /* ty=Tensor[(1, 1024, 1, 1), float32] span=/bottleneck/bottleneck.0/BatchNormalization:0:0 */;
%249 = reshape(%248, newshape=[1, -1]) /* ty=Tensor[(1, 1024), float32] span=/Reshape:0:0 */;
%250 = nn.dense(%249, meta[relay.Constant][110] /* ty=Tensor[(9, 1024), float32] span=/MatMul:0:0 */, units=None, out_dtype="float32") /* ty=Tensor[(1, 9), float32] span=/MatMul:0:0 */;
%251 = nn.batch_norm(%250, meta[relay.Constant][111] /* ty=Tensor[(9), float32] span=/bnneck/BatchNormalization.bnneck.weight:0:0 */, meta[relay.Constant][112] /* ty=Tensor[(9), float32] span=/bnneck/BatchNormalization.bnneck.bias:0:0 */, meta[relay.Constant][113] /* ty=Tensor[(9), float32] span=/bnneck/BatchNormalization.bnneck.running_mean:0:0 */, meta[relay.Constant][114] /* ty=Tensor[(9), float32] span=/bnneck/BatchNormalization.bnneck.running_var:0:0 */) /* ty=(Tensor[(1, 9), float32], Tensor[(9), float32], Tensor[(9), float32]) span=/bnneck/BatchNormalization:0:0 */;
%251.0 /* ty=Tensor[(1, 9), float32] span=/bnneck/BatchNormalization:0:0 */
}
from copy import deepcopy
import tvm
from tvm import relay
from tvm.relay.quantize.quantize import _bind_params
optimize = tvm.transform.Sequential(
[
relay.transform.SimplifyInference(),
relay.transform.FoldConstant(),
# relay.transform.FoldScaleAxis(),
relay.transform.CanonicalizeOps(),
relay.transform.FoldConstant(),
]
)
run_mod = deepcopy(mod)
run_mod["main"] = _bind_params(run_mod["main"], params)
with tvm.transform.PassContext(opt_level=3):
run_mod2 = relay.quantize.prerequisite_optimize(deepcopy(mod), params)
run_mod = optimize(run_mod)
print(run_mod["main"])
fn (%images: Tensor[(1, 3, 256, 192), float32] /* ty=Tensor[(1, 3, 256, 192), float32] span=/features/features.0/features.0.0/Conv.images:0:0 */) -> Tensor[(1, 9), float32] {
%0 = nn.conv2d(%images, meta[relay.Constant][0] /* ty=Tensor[(16, 3, 3, 3), float32] span=/features/features.0/features.0.0/Conv.onnx::Conv_460:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.0/Conv:0:0 */;
%1 = add(%0, meta[relay.Constant][1] /* ty=Tensor[(16, 1, 1), float32] */) /* ty=Tensor[(1, 16, 128, 96), float32] */;
%2 = multiply(%1, 0.166667f /* ty=float32 span=/features/features.0/features.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/HardSigmoid:0:0 */;
%3 = add(%2, 0.5f /* ty=float32 span=/features/features.0/features.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/HardSigmoid:0:0 */;
%4 = clip(%3, a_min=0f, a_max=1f) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/HardSigmoid:0:0 */;
%5 = multiply(%1, %4) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/Mul:0:0 */;
%6 = nn.conv2d(%5, meta[relay.Constant][2] /* ty=Tensor[(16, 1, 3, 3), float32] span=/features/features.1/block/block.0/block.0.0/Conv.onnx::Conv_463:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], groups=16, channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.0/block.0.0/Conv:0:0 */;
%7 = add(%6, meta[relay.Constant][3] /* ty=Tensor[(16, 1, 1), float32] */) /* ty=Tensor[(1, 16, 64, 48), float32] */;
%8 = nn.relu(%7) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.0/block.0.2/Relu:0:0 */;
%9 = nn.global_avg_pool2d(%8) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/GlobalAveragePool:0:0 */;
%10 = nn.conv2d(%9, meta[relay.Constant][4] /* ty=Tensor[(8, 16, 1, 1), float32] span=/features/features.1/block/block.1/fc1/Conv.features.1.block.1.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=8, kernel_size=[1, 1]) /* ty=Tensor[(1, 8, 1, 1), float32] span=/features/features.1/block/block.1/fc1/Conv:0:0 */;
%11 = add(%10, meta[relay.Constant][5] /* ty=Tensor[(8, 1, 1), float32] */) /* ty=Tensor[(1, 8, 1, 1), float32] */;
%12 = nn.relu(%11) /* ty=Tensor[(1, 8, 1, 1), float32] span=/features/features.1/block/block.1/relu/Relu:0:0 */;
%13 = nn.conv2d(%12, meta[relay.Constant][6] /* ty=Tensor[(16, 8, 1, 1), float32] span=/features/features.1/block/block.1/fc2/Conv.features.1.block.1.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=16, kernel_size=[1, 1]) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/fc2/Conv:0:0 */;
%14 = add(%13, meta[relay.Constant][7] /* ty=Tensor[(16, 1, 1), float32] */) /* ty=Tensor[(1, 16, 1, 1), float32] */;
%15 = multiply(%14, 0.166667f /* ty=float32 span=/features/features.1/block/block.1/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/HardSigmoid:0:0 */;
%16 = add(%15, 0.5f /* ty=float32 span=/features/features.1/block/block.1/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/HardSigmoid:0:0 */;
%17 = clip(%16, a_min=0f, a_max=1f) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/HardSigmoid:0:0 */;
%18 = multiply(%17, %8) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.1/Mul:0:0 */;
%19 = nn.conv2d(%18, meta[relay.Constant][8] /* ty=Tensor[(16, 16, 1, 1), float32] span=/features/features.1/block/block.2/block.2.0/Conv.onnx::Conv_466:0:0 */, padding=[0, 0, 0, 0], channels=16, kernel_size=[1, 1]) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.2/block.2.0/Conv:0:0 */;
%20 = add(%19, meta[relay.Constant][9] /* ty=Tensor[(16, 1, 1), float32] */) /* ty=Tensor[(1, 16, 64, 48), float32] */;
%21 = nn.conv2d(%20, meta[relay.Constant][10] /* ty=Tensor[(72, 16, 1, 1), float32] span=/features/features.2/block/block.0/block.0.0/Conv.onnx::Conv_469:0:0 */, padding=[0, 0, 0, 0], channels=72, kernel_size=[1, 1]) /* ty=Tensor[(1, 72, 64, 48), float32] span=/features/features.2/block/block.0/block.0.0/Conv:0:0 */;
%22 = add(%21, meta[relay.Constant][11] /* ty=Tensor[(72, 1, 1), float32] */) /* ty=Tensor[(1, 72, 64, 48), float32] */;
%23 = nn.relu(%22) /* ty=Tensor[(1, 72, 64, 48), float32] span=/features/features.2/block/block.0/block.0.2/Relu:0:0 */;
%24 = nn.conv2d(%23, meta[relay.Constant][12] /* ty=Tensor[(72, 1, 3, 3), float32] span=/features/features.2/block/block.1/block.1.0/Conv.onnx::Conv_472:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], groups=72, channels=72, kernel_size=[3, 3]) /* ty=Tensor[(1, 72, 32, 24), float32] span=/features/features.2/block/block.1/block.1.0/Conv:0:0 */;
%25 = add(%24, meta[relay.Constant][13] /* ty=Tensor[(72, 1, 1), float32] */) /* ty=Tensor[(1, 72, 32, 24), float32] */;
%26 = nn.relu(%25) /* ty=Tensor[(1, 72, 32, 24), float32] span=/features/features.2/block/block.1/block.1.2/Relu:0:0 */;
%27 = nn.conv2d(%26, meta[relay.Constant][14] /* ty=Tensor[(24, 72, 1, 1), float32] span=/features/features.2/block/block.2/block.2.0/Conv.onnx::Conv_475:0:0 */, padding=[0, 0, 0, 0], channels=24, kernel_size=[1, 1]) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.2/block/block.2/block.2.0/Conv:0:0 */;
%28 = add(%27, meta[relay.Constant][15] /* ty=Tensor[(24, 1, 1), float32] */) /* ty=Tensor[(1, 24, 32, 24), float32] */;
%29 = nn.conv2d(%28, meta[relay.Constant][16] /* ty=Tensor[(88, 24, 1, 1), float32] span=/features/features.3/block/block.0/block.0.0/Conv.onnx::Conv_478:0:0 */, padding=[0, 0, 0, 0], channels=88, kernel_size=[1, 1]) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.0/block.0.0/Conv:0:0 */;
%30 = add(%29, meta[relay.Constant][17] /* ty=Tensor[(88, 1, 1), float32] */) /* ty=Tensor[(1, 88, 32, 24), float32] */;
%31 = nn.relu(%30) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.0/block.0.2/Relu:0:0 */;
%32 = nn.conv2d(%31, meta[relay.Constant][18] /* ty=Tensor[(88, 1, 3, 3), float32] span=/features/features.3/block/block.1/block.1.0/Conv.onnx::Conv_481:0:0 */, padding=[1, 1, 1, 1], groups=88, channels=88, kernel_size=[3, 3]) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.1/block.1.0/Conv:0:0 */;
%33 = add(%32, meta[relay.Constant][19] /* ty=Tensor[(88, 1, 1), float32] */) /* ty=Tensor[(1, 88, 32, 24), float32] */;
%34 = nn.relu(%33) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.1/block.1.2/Relu:0:0 */;
%35 = nn.conv2d(%34, meta[relay.Constant][20] /* ty=Tensor[(24, 88, 1, 1), float32] span=/features/features.3/block/block.2/block.2.0/Conv.onnx::Conv_484:0:0 */, padding=[0, 0, 0, 0], channels=24, kernel_size=[1, 1]) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.3/block/block.2/block.2.0/Conv:0:0 */;
%36 = add(%35, meta[relay.Constant][21] /* ty=Tensor[(24, 1, 1), float32] */) /* ty=Tensor[(1, 24, 32, 24), float32] */;
%37 = add(%36, %28) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.3/Add:0:0 */;
%38 = nn.conv2d(%37, meta[relay.Constant][22] /* ty=Tensor[(96, 24, 1, 1), float32] span=/features/features.4/block/block.0/block.0.0/Conv.onnx::Conv_487:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.0/Conv:0:0 */;
%39 = add(%38, meta[relay.Constant][23] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 32, 24), float32] */;
%40 = multiply(%39, 0.166667f /* ty=float32 span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */;
%41 = add(%40, 0.5f /* ty=float32 span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */;
%42 = clip(%41, a_min=0f, a_max=1f) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */;
%43 = multiply(%39, %42) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/Mul:0:0 */;
%44 = nn.conv2d(%43, meta[relay.Constant][24] /* ty=Tensor[(96, 1, 5, 5), float32] span=/features/features.4/block/block.1/block.1.0/Conv.onnx::Conv_490:0:0 */, strides=[2, 2], padding=[2, 2, 2, 2], groups=96, channels=96, kernel_size=[5, 5]) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.0/Conv:0:0 */;
%45 = add(%44, meta[relay.Constant][25] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 16, 12), float32] */;
%46 = multiply(%45, 0.166667f /* ty=float32 span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */;
%47 = add(%46, 0.5f /* ty=float32 span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */;
%48 = clip(%47, a_min=0f, a_max=1f) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */;
%49 = multiply(%45, %48) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/Mul:0:0 */;
%50 = nn.global_avg_pool2d(%49) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/GlobalAveragePool:0:0 */;
%51 = nn.conv2d(%50, meta[relay.Constant][26] /* ty=Tensor[(24, 96, 1, 1), float32] span=/features/features.4/block/block.2/fc1/Conv.features.4.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=24, kernel_size=[1, 1]) /* ty=Tensor[(1, 24, 1, 1), float32] span=/features/features.4/block/block.2/fc1/Conv:0:0 */;
%52 = add(%51, meta[relay.Constant][27] /* ty=Tensor[(24, 1, 1), float32] */) /* ty=Tensor[(1, 24, 1, 1), float32] */;
%53 = nn.relu(%52) /* ty=Tensor[(1, 24, 1, 1), float32] span=/features/features.4/block/block.2/relu/Relu:0:0 */;
%54 = nn.conv2d(%53, meta[relay.Constant][28] /* ty=Tensor[(96, 24, 1, 1), float32] span=/features/features.4/block/block.2/fc2/Conv.features.4.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/fc2/Conv:0:0 */;
%55 = add(%54, meta[relay.Constant][29] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 1, 1), float32] */;
%56 = multiply(%55, 0.166667f /* ty=float32 span=/features/features.4/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/HardSigmoid:0:0 */;
%57 = add(%56, 0.5f /* ty=float32 span=/features/features.4/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/HardSigmoid:0:0 */;
%58 = clip(%57, a_min=0f, a_max=1f) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/HardSigmoid:0:0 */;
%59 = multiply(%58, %49) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.2/Mul:0:0 */;
%60 = nn.conv2d(%59, meta[relay.Constant][30] /* ty=Tensor[(40, 96, 1, 1), float32] span=/features/features.4/block/block.3/block.3.0/Conv.onnx::Conv_493:0:0 */, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.4/block/block.3/block.3.0/Conv:0:0 */;
%61 = add(%60, meta[relay.Constant][31] /* ty=Tensor[(40, 1, 1), float32] */) /* ty=Tensor[(1, 40, 16, 12), float32] */;
%62 = nn.conv2d(%61, meta[relay.Constant][32] /* ty=Tensor[(240, 40, 1, 1), float32] span=/features/features.5/block/block.0/block.0.0/Conv.onnx::Conv_496:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.0/Conv:0:0 */;
%63 = add(%62, meta[relay.Constant][33] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 16, 12), float32] */;
%64 = multiply(%63, 0.166667f /* ty=float32 span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */;
%65 = add(%64, 0.5f /* ty=float32 span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */;
%66 = clip(%65, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */;
%67 = multiply(%63, %66) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/Mul:0:0 */;
%68 = nn.conv2d(%67, meta[relay.Constant][34] /* ty=Tensor[(240, 1, 5, 5), float32] span=/features/features.5/block/block.1/block.1.0/Conv.onnx::Conv_499:0:0 */, padding=[2, 2, 2, 2], groups=240, channels=240, kernel_size=[5, 5]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.0/Conv:0:0 */;
%69 = add(%68, meta[relay.Constant][35] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 16, 12), float32] */;
%70 = multiply(%69, 0.166667f /* ty=float32 span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */;
%71 = add(%70, 0.5f /* ty=float32 span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */;
%72 = clip(%71, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */;
%73 = multiply(%69, %72) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/Mul:0:0 */;
%74 = nn.global_avg_pool2d(%73) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/GlobalAveragePool:0:0 */;
%75 = nn.conv2d(%74, meta[relay.Constant][36] /* ty=Tensor[(64, 240, 1, 1), float32] span=/features/features.5/block/block.2/fc1/Conv.features.5.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.5/block/block.2/fc1/Conv:0:0 */;
%76 = add(%75, meta[relay.Constant][37] /* ty=Tensor[(64, 1, 1), float32] */) /* ty=Tensor[(1, 64, 1, 1), float32] */;
%77 = nn.relu(%76) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.5/block/block.2/relu/Relu:0:0 */;
%78 = nn.conv2d(%77, meta[relay.Constant][38] /* ty=Tensor[(240, 64, 1, 1), float32] span=/features/features.5/block/block.2/fc2/Conv.features.5.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/fc2/Conv:0:0 */;
%79 = add(%78, meta[relay.Constant][39] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 1, 1), float32] */;
%80 = multiply(%79, 0.166667f /* ty=float32 span=/features/features.5/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/HardSigmoid:0:0 */;
%81 = add(%80, 0.5f /* ty=float32 span=/features/features.5/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/HardSigmoid:0:0 */;
%82 = clip(%81, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/HardSigmoid:0:0 */;
%83 = multiply(%82, %73) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.2/Mul:0:0 */;
%84 = nn.conv2d(%83, meta[relay.Constant][40] /* ty=Tensor[(40, 240, 1, 1), float32] span=/features/features.5/block/block.3/block.3.0/Conv.onnx::Conv_502:0:0 */, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.5/block/block.3/block.3.0/Conv:0:0 */;
%85 = add(%84, meta[relay.Constant][41] /* ty=Tensor[(40, 1, 1), float32] */) /* ty=Tensor[(1, 40, 16, 12), float32] */;
%86 = add(%85, %61) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.5/Add:0:0 */;
%87 = nn.conv2d(%86, meta[relay.Constant][42] /* ty=Tensor[(240, 40, 1, 1), float32] span=/features/features.6/block/block.0/block.0.0/Conv.onnx::Conv_505:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.0/Conv:0:0 */;
%88 = add(%87, meta[relay.Constant][43] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 16, 12), float32] */;
%89 = multiply(%88, 0.166667f /* ty=float32 span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */;
%90 = add(%89, 0.5f /* ty=float32 span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */;
%91 = clip(%90, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */;
%92 = multiply(%88, %91) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/Mul:0:0 */;
%93 = nn.conv2d(%92, meta[relay.Constant][44] /* ty=Tensor[(240, 1, 5, 5), float32] span=/features/features.6/block/block.1/block.1.0/Conv.onnx::Conv_508:0:0 */, padding=[2, 2, 2, 2], groups=240, channels=240, kernel_size=[5, 5]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.0/Conv:0:0 */;
%94 = add(%93, meta[relay.Constant][45] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 16, 12), float32] */;
%95 = multiply(%94, 0.166667f /* ty=float32 span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */;
%96 = add(%95, 0.5f /* ty=float32 span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */;
%97 = clip(%96, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */;
%98 = multiply(%94, %97) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/Mul:0:0 */;
%99 = nn.global_avg_pool2d(%98) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/GlobalAveragePool:0:0 */;
%100 = nn.conv2d(%99, meta[relay.Constant][46] /* ty=Tensor[(64, 240, 1, 1), float32] span=/features/features.6/block/block.2/fc1/Conv.features.6.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.6/block/block.2/fc1/Conv:0:0 */;
%101 = add(%100, meta[relay.Constant][47] /* ty=Tensor[(64, 1, 1), float32] */) /* ty=Tensor[(1, 64, 1, 1), float32] */;
%102 = nn.relu(%101) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.6/block/block.2/relu/Relu:0:0 */;
%103 = nn.conv2d(%102, meta[relay.Constant][48] /* ty=Tensor[(240, 64, 1, 1), float32] span=/features/features.6/block/block.2/fc2/Conv.features.6.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/fc2/Conv:0:0 */;
%104 = add(%103, meta[relay.Constant][49] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 1, 1), float32] */;
%105 = multiply(%104, 0.166667f /* ty=float32 span=/features/features.6/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/HardSigmoid:0:0 */;
%106 = add(%105, 0.5f /* ty=float32 span=/features/features.6/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/HardSigmoid:0:0 */;
%107 = clip(%106, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/HardSigmoid:0:0 */;
%108 = multiply(%107, %98) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.2/Mul:0:0 */;
%109 = nn.conv2d(%108, meta[relay.Constant][50] /* ty=Tensor[(40, 240, 1, 1), float32] span=/features/features.6/block/block.3/block.3.0/Conv.onnx::Conv_511:0:0 */, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.6/block/block.3/block.3.0/Conv:0:0 */;
%110 = add(%109, meta[relay.Constant][51] /* ty=Tensor[(40, 1, 1), float32] */) /* ty=Tensor[(1, 40, 16, 12), float32] */;
%111 = add(%110, %86) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.6/Add:0:0 */;
%112 = nn.conv2d(%111, meta[relay.Constant][52] /* ty=Tensor[(120, 40, 1, 1), float32] span=/features/features.7/block/block.0/block.0.0/Conv.onnx::Conv_514:0:0 */, padding=[0, 0, 0, 0], channels=120, kernel_size=[1, 1]) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.0/Conv:0:0 */;
%113 = add(%112, meta[relay.Constant][53] /* ty=Tensor[(120, 1, 1), float32] */) /* ty=Tensor[(1, 120, 16, 12), float32] */;
%114 = multiply(%113, 0.166667f /* ty=float32 span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */;
%115 = add(%114, 0.5f /* ty=float32 span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */;
%116 = clip(%115, a_min=0f, a_max=1f) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */;
%117 = multiply(%113, %116) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/Mul:0:0 */;
%118 = nn.conv2d(%117, meta[relay.Constant][54] /* ty=Tensor[(120, 1, 5, 5), float32] span=/features/features.7/block/block.1/block.1.0/Conv.onnx::Conv_517:0:0 */, padding=[2, 2, 2, 2], groups=120, channels=120, kernel_size=[5, 5]) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.0/Conv:0:0 */;
%119 = add(%118, meta[relay.Constant][55] /* ty=Tensor[(120, 1, 1), float32] */) /* ty=Tensor[(1, 120, 16, 12), float32] */;
%120 = multiply(%119, 0.166667f /* ty=float32 span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */;
%121 = add(%120, 0.5f /* ty=float32 span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */;
%122 = clip(%121, a_min=0f, a_max=1f) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */;
%123 = multiply(%119, %122) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/Mul:0:0 */;
%124 = nn.global_avg_pool2d(%123) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/GlobalAveragePool:0:0 */;
%125 = nn.conv2d(%124, meta[relay.Constant][56] /* ty=Tensor[(32, 120, 1, 1), float32] span=/features/features.7/block/block.2/fc1/Conv.features.7.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=32, kernel_size=[1, 1]) /* ty=Tensor[(1, 32, 1, 1), float32] span=/features/features.7/block/block.2/fc1/Conv:0:0 */;
%126 = add(%125, meta[relay.Constant][57] /* ty=Tensor[(32, 1, 1), float32] */) /* ty=Tensor[(1, 32, 1, 1), float32] */;
%127 = nn.relu(%126) /* ty=Tensor[(1, 32, 1, 1), float32] span=/features/features.7/block/block.2/relu/Relu:0:0 */;
%128 = nn.conv2d(%127, meta[relay.Constant][58] /* ty=Tensor[(120, 32, 1, 1), float32] span=/features/features.7/block/block.2/fc2/Conv.features.7.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=120, kernel_size=[1, 1]) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/fc2/Conv:0:0 */;
%129 = add(%128, meta[relay.Constant][59] /* ty=Tensor[(120, 1, 1), float32] */) /* ty=Tensor[(1, 120, 1, 1), float32] */;
%130 = multiply(%129, 0.166667f /* ty=float32 span=/features/features.7/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/HardSigmoid:0:0 */;
%131 = add(%130, 0.5f /* ty=float32 span=/features/features.7/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/HardSigmoid:0:0 */;
%132 = clip(%131, a_min=0f, a_max=1f) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/HardSigmoid:0:0 */;
%133 = multiply(%132, %123) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.2/Mul:0:0 */;
%134 = nn.conv2d(%133, meta[relay.Constant][60] /* ty=Tensor[(48, 120, 1, 1), float32] span=/features/features.7/block/block.3/block.3.0/Conv.onnx::Conv_520:0:0 */, padding=[0, 0, 0, 0], channels=48, kernel_size=[1, 1]) /* ty=Tensor[(1, 48, 16, 12), float32] span=/features/features.7/block/block.3/block.3.0/Conv:0:0 */;
%135 = add(%134, meta[relay.Constant][61] /* ty=Tensor[(48, 1, 1), float32] */) /* ty=Tensor[(1, 48, 16, 12), float32] */;
%136 = nn.conv2d(%135, meta[relay.Constant][62] /* ty=Tensor[(144, 48, 1, 1), float32] span=/features/features.8/block/block.0/block.0.0/Conv.onnx::Conv_523:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.0/Conv:0:0 */;
%137 = add(%136, meta[relay.Constant][63] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 16, 12), float32] */;
%138 = multiply(%137, 0.166667f /* ty=float32 span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */;
%139 = add(%138, 0.5f /* ty=float32 span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */;
%140 = clip(%139, a_min=0f, a_max=1f) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */;
%141 = multiply(%137, %140) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/Mul:0:0 */;
%142 = nn.conv2d(%141, meta[relay.Constant][64] /* ty=Tensor[(144, 1, 5, 5), float32] span=/features/features.8/block/block.1/block.1.0/Conv.onnx::Conv_526:0:0 */, padding=[2, 2, 2, 2], groups=144, channels=144, kernel_size=[5, 5]) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.0/Conv:0:0 */;
%143 = add(%142, meta[relay.Constant][65] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 16, 12), float32] */;
%144 = multiply(%143, 0.166667f /* ty=float32 span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */;
%145 = add(%144, 0.5f /* ty=float32 span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */;
%146 = clip(%145, a_min=0f, a_max=1f) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */;
%147 = multiply(%143, %146) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/Mul:0:0 */;
%148 = nn.global_avg_pool2d(%147) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/GlobalAveragePool:0:0 */;
%149 = nn.conv2d(%148, meta[relay.Constant][66] /* ty=Tensor[(40, 144, 1, 1), float32] span=/features/features.8/block/block.2/fc1/Conv.features.8.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 1, 1), float32] span=/features/features.8/block/block.2/fc1/Conv:0:0 */;
%150 = add(%149, meta[relay.Constant][67] /* ty=Tensor[(40, 1, 1), float32] */) /* ty=Tensor[(1, 40, 1, 1), float32] */;
%151 = nn.relu(%150) /* ty=Tensor[(1, 40, 1, 1), float32] span=/features/features.8/block/block.2/relu/Relu:0:0 */;
%152 = nn.conv2d(%151, meta[relay.Constant][68] /* ty=Tensor[(144, 40, 1, 1), float32] span=/features/features.8/block/block.2/fc2/Conv.features.8.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/fc2/Conv:0:0 */;
%153 = add(%152, meta[relay.Constant][69] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 1, 1), float32] */;
%154 = multiply(%153, 0.166667f /* ty=float32 span=/features/features.8/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/HardSigmoid:0:0 */;
%155 = add(%154, 0.5f /* ty=float32 span=/features/features.8/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/HardSigmoid:0:0 */;
%156 = clip(%155, a_min=0f, a_max=1f) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/HardSigmoid:0:0 */;
%157 = multiply(%156, %147) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.2/Mul:0:0 */;
%158 = nn.conv2d(%157, meta[relay.Constant][70] /* ty=Tensor[(48, 144, 1, 1), float32] span=/features/features.8/block/block.3/block.3.0/Conv.onnx::Conv_529:0:0 */, padding=[0, 0, 0, 0], channels=48, kernel_size=[1, 1]) /* ty=Tensor[(1, 48, 16, 12), float32] span=/features/features.8/block/block.3/block.3.0/Conv:0:0 */;
%159 = add(%158, meta[relay.Constant][71] /* ty=Tensor[(48, 1, 1), float32] */) /* ty=Tensor[(1, 48, 16, 12), float32] */;
%160 = add(%159, %135) /* ty=Tensor[(1, 48, 16, 12), float32] span=/features/features.8/Add:0:0 */;
%161 = nn.conv2d(%160, meta[relay.Constant][72] /* ty=Tensor[(288, 48, 1, 1), float32] span=/features/features.9/block/block.0/block.0.0/Conv.onnx::Conv_532:0:0 */, padding=[0, 0, 0, 0], channels=288, kernel_size=[1, 1]) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.0/Conv:0:0 */;
%162 = add(%161, meta[relay.Constant][73] /* ty=Tensor[(288, 1, 1), float32] */) /* ty=Tensor[(1, 288, 16, 12), float32] */;
%163 = multiply(%162, 0.166667f /* ty=float32 span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */;
%164 = add(%163, 0.5f /* ty=float32 span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */;
%165 = clip(%164, a_min=0f, a_max=1f) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */;
%166 = multiply(%162, %165) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/Mul:0:0 */;
%167 = nn.conv2d(%166, meta[relay.Constant][74] /* ty=Tensor[(288, 1, 5, 5), float32] span=/features/features.9/block/block.1/block.1.0/Conv.onnx::Conv_535:0:0 */, strides=[2, 2], padding=[2, 2, 2, 2], groups=288, channels=288, kernel_size=[5, 5]) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.0/Conv:0:0 */;
%168 = add(%167, meta[relay.Constant][75] /* ty=Tensor[(288, 1, 1), float32] */) /* ty=Tensor[(1, 288, 8, 6), float32] */;
%169 = multiply(%168, 0.166667f /* ty=float32 span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */;
%170 = add(%169, 0.5f /* ty=float32 span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */;
%171 = clip(%170, a_min=0f, a_max=1f) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */;
%172 = multiply(%168, %171) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/Mul:0:0 */;
%173 = nn.global_avg_pool2d(%172) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/GlobalAveragePool:0:0 */;
%174 = nn.conv2d(%173, meta[relay.Constant][76] /* ty=Tensor[(72, 288, 1, 1), float32] span=/features/features.9/block/block.2/fc1/Conv.features.9.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=72, kernel_size=[1, 1]) /* ty=Tensor[(1, 72, 1, 1), float32] span=/features/features.9/block/block.2/fc1/Conv:0:0 */;
%175 = add(%174, meta[relay.Constant][77] /* ty=Tensor[(72, 1, 1), float32] */) /* ty=Tensor[(1, 72, 1, 1), float32] */;
%176 = nn.relu(%175) /* ty=Tensor[(1, 72, 1, 1), float32] span=/features/features.9/block/block.2/relu/Relu:0:0 */;
%177 = nn.conv2d(%176, meta[relay.Constant][78] /* ty=Tensor[(288, 72, 1, 1), float32] span=/features/features.9/block/block.2/fc2/Conv.features.9.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=288, kernel_size=[1, 1]) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/fc2/Conv:0:0 */;
%178 = add(%177, meta[relay.Constant][79] /* ty=Tensor[(288, 1, 1), float32] */) /* ty=Tensor[(1, 288, 1, 1), float32] */;
%179 = multiply(%178, 0.166667f /* ty=float32 span=/features/features.9/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/HardSigmoid:0:0 */;
%180 = add(%179, 0.5f /* ty=float32 span=/features/features.9/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/HardSigmoid:0:0 */;
%181 = clip(%180, a_min=0f, a_max=1f) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/HardSigmoid:0:0 */;
%182 = multiply(%181, %172) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.2/Mul:0:0 */;
%183 = nn.conv2d(%182, meta[relay.Constant][80] /* ty=Tensor[(96, 288, 1, 1), float32] span=/features/features.9/block/block.3/block.3.0/Conv.onnx::Conv_538:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.9/block/block.3/block.3.0/Conv:0:0 */;
%184 = add(%183, meta[relay.Constant][81] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 8, 6), float32] */;
%185 = nn.conv2d(%184, meta[relay.Constant][82] /* ty=Tensor[(576, 96, 1, 1), float32] span=/features/features.10/block/block.0/block.0.0/Conv.onnx::Conv_541:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.0/Conv:0:0 */;
%186 = add(%185, meta[relay.Constant][83] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%187 = multiply(%186, 0.166667f /* ty=float32 span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */;
%188 = add(%187, 0.5f /* ty=float32 span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */;
%189 = clip(%188, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */;
%190 = multiply(%186, %189) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/Mul:0:0 */;
%191 = nn.conv2d(%190, meta[relay.Constant][84] /* ty=Tensor[(576, 1, 5, 5), float32] span=/features/features.10/block/block.1/block.1.0/Conv.onnx::Conv_544:0:0 */, padding=[2, 2, 2, 2], groups=576, channels=576, kernel_size=[5, 5]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.0/Conv:0:0 */;
%192 = add(%191, meta[relay.Constant][85] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%193 = multiply(%192, 0.166667f /* ty=float32 span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */;
%194 = add(%193, 0.5f /* ty=float32 span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */;
%195 = clip(%194, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */;
%196 = multiply(%192, %195) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/Mul:0:0 */;
%197 = nn.global_avg_pool2d(%196) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/GlobalAveragePool:0:0 */;
%198 = nn.conv2d(%197, meta[relay.Constant][86] /* ty=Tensor[(144, 576, 1, 1), float32] span=/features/features.10/block/block.2/fc1/Conv.features.10.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.10/block/block.2/fc1/Conv:0:0 */;
%199 = add(%198, meta[relay.Constant][87] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 1, 1), float32] */;
%200 = nn.relu(%199) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.10/block/block.2/relu/Relu:0:0 */;
%201 = nn.conv2d(%200, meta[relay.Constant][88] /* ty=Tensor[(576, 144, 1, 1), float32] span=/features/features.10/block/block.2/fc2/Conv.features.10.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/fc2/Conv:0:0 */;
%202 = add(%201, meta[relay.Constant][89] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 1, 1), float32] */;
%203 = multiply(%202, 0.166667f /* ty=float32 span=/features/features.10/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/HardSigmoid:0:0 */;
%204 = add(%203, 0.5f /* ty=float32 span=/features/features.10/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/HardSigmoid:0:0 */;
%205 = clip(%204, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/HardSigmoid:0:0 */;
%206 = multiply(%205, %196) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.2/Mul:0:0 */;
%207 = nn.conv2d(%206, meta[relay.Constant][90] /* ty=Tensor[(96, 576, 1, 1), float32] span=/features/features.10/block/block.3/block.3.0/Conv.onnx::Conv_547:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.10/block/block.3/block.3.0/Conv:0:0 */;
%208 = add(%207, meta[relay.Constant][91] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 8, 6), float32] */;
%209 = add(%208, %184) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.10/Add:0:0 */;
%210 = nn.conv2d(%209, meta[relay.Constant][92] /* ty=Tensor[(576, 96, 1, 1), float32] span=/features/features.11/block/block.0/block.0.0/Conv.onnx::Conv_550:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.0/Conv:0:0 */;
%211 = add(%210, meta[relay.Constant][93] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%212 = multiply(%211, 0.166667f /* ty=float32 span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */;
%213 = add(%212, 0.5f /* ty=float32 span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */;
%214 = clip(%213, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */;
%215 = multiply(%211, %214) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/Mul:0:0 */;
%216 = nn.conv2d(%215, meta[relay.Constant][94] /* ty=Tensor[(576, 1, 5, 5), float32] span=/features/features.11/block/block.1/block.1.0/Conv.onnx::Conv_553:0:0 */, padding=[2, 2, 2, 2], groups=576, channels=576, kernel_size=[5, 5]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.0/Conv:0:0 */;
%217 = add(%216, meta[relay.Constant][95] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%218 = multiply(%217, 0.166667f /* ty=float32 span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */;
%219 = add(%218, 0.5f /* ty=float32 span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */;
%220 = clip(%219, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */;
%221 = multiply(%217, %220) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/Mul:0:0 */;
%222 = nn.global_avg_pool2d(%221) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/GlobalAveragePool:0:0 */;
%223 = nn.conv2d(%222, meta[relay.Constant][96] /* ty=Tensor[(144, 576, 1, 1), float32] span=/features/features.11/block/block.2/fc1/Conv.features.11.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.11/block/block.2/fc1/Conv:0:0 */;
%224 = add(%223, meta[relay.Constant][97] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 1, 1), float32] */;
%225 = nn.relu(%224) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.11/block/block.2/relu/Relu:0:0 */;
%226 = nn.conv2d(%225, meta[relay.Constant][98] /* ty=Tensor[(576, 144, 1, 1), float32] span=/features/features.11/block/block.2/fc2/Conv.features.11.block.2.fc2.weight:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/fc2/Conv:0:0 */;
%227 = add(%226, meta[relay.Constant][99] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 1, 1), float32] */;
%228 = multiply(%227, 0.166667f /* ty=float32 span=/features/features.11/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/HardSigmoid:0:0 */;
%229 = add(%228, 0.5f /* ty=float32 span=/features/features.11/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/HardSigmoid:0:0 */;
%230 = clip(%229, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/HardSigmoid:0:0 */;
%231 = multiply(%230, %221) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.2/Mul:0:0 */;
%232 = nn.conv2d(%231, meta[relay.Constant][100] /* ty=Tensor[(96, 576, 1, 1), float32] span=/features/features.11/block/block.3/block.3.0/Conv.onnx::Conv_556:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.11/block/block.3/block.3.0/Conv:0:0 */;
%233 = add(%232, meta[relay.Constant][101] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 8, 6), float32] */;
%234 = add(%233, %209) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.11/Add:0:0 */;
%235 = nn.conv2d(%234, meta[relay.Constant][102] /* ty=Tensor[(576, 96, 1, 1), float32] span=/features/features.12/features.12.0/Conv.onnx::Conv_559:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.0/Conv:0:0 */;
%236 = add(%235, meta[relay.Constant][103] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%237 = multiply(%236, 0.166667f /* ty=float32 span=/features/features.12/features.12.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/HardSigmoid:0:0 */;
%238 = add(%237, 0.5f /* ty=float32 span=/features/features.12/features.12.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/HardSigmoid:0:0 */;
%239 = clip(%238, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/HardSigmoid:0:0 */;
%240 = multiply(%236, %239) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/Mul:0:0 */;
%241 = nn.conv2d(%240, meta[relay.Constant][104] /* ty=Tensor[(1024, 576, 1, 1), float32] span=/conv/conv.0/Conv.onnx::Conv_562:0:0 */, padding=[0, 0, 0, 0], channels=1024, kernel_size=[1, 1]) /* ty=Tensor[(1, 1024, 8, 6), float32] span=/conv/conv.0/Conv:0:0 */;
%242 = add(%241, meta[relay.Constant][105] /* ty=Tensor[(1024, 1, 1), float32] */) /* ty=Tensor[(1, 1024, 8, 6), float32] */;
%243 = clip(%242, a_min=0f, a_max=6f) /* ty=Tensor[(1, 1024, 8, 6), float32] span=/conv/conv.2/Clip:0:0 */;
%244 = reshape(%243, newshape=[1, 1024, -1]) /* ty=Tensor[(1, 1024, 48), float32] span=/pool_layer/Reshape:0:0 */;
%245 = mean(%244, axis=[-1]) /* ty=Tensor[(1, 1024), float32] span=/pool_layer/ReduceMean:0:0 */;
%246 = reshape(%245, newshape=[1, 1024, 1, 1]) /* ty=Tensor[(1, 1024, 1, 1), float32] span=/pool_layer/Reshape_1:0:0 */;
%247 = multiply(%246, meta[relay.Constant][106] /* ty=Tensor[(1024, 1, 1), float32] */) /* ty=Tensor[(1, 1024, 1, 1), float32] */;
%248 = add(%247, meta[relay.Constant][107] /* ty=Tensor[(1024, 1, 1), float32] */) /* ty=Tensor[(1, 1024, 1, 1), float32] */;
%249 = reshape(%248, newshape=[1, -1]) /* ty=Tensor[(1, 1024), float32] span=/Reshape:0:0 */;
%250 = nn.dense(%249, meta[relay.Constant][108] /* ty=Tensor[(9, 1024), float32] span=/MatMul:0:0 */, units=None, out_dtype="float32") /* ty=Tensor[(1, 9), float32] span=/MatMul:0:0 */;
%251 = multiply(%250, meta[relay.Constant][109] /* ty=Tensor[(9), float32] */) /* ty=Tensor[(1, 9), float32] */;
add(%251, meta[relay.Constant][110] /* ty=Tensor[(9), float32] */) /* ty=Tensor[(1, 9), float32] */
} /* ty=fn (Tensor[(1, 3, 256, 192), float32]) -> Tensor[(1, 9), float32] */
print(run_mod2["main"])
fn (%images: Tensor[(1, 3, 256, 192), float32] /* ty=Tensor[(1, 3, 256, 192), float32] span=/features/features.0/features.0.0/Conv.images:0:0 */) -> Tensor[(1, 9), float32] {
%0 = nn.conv2d(%images, meta[relay.Constant][0] /* ty=Tensor[(16, 3, 3, 3), float32] span=/features/features.0/features.0.0/Conv.onnx::Conv_460:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.0/Conv:0:0 */;
%1 = add(%0, meta[relay.Constant][1] /* ty=Tensor[(16, 1, 1), float32] */) /* ty=Tensor[(1, 16, 128, 96), float32] */;
%2 = multiply(%1, 0.166667f /* ty=float32 span=/features/features.0/features.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/HardSigmoid:0:0 */;
%3 = add(%2, 0.5f /* ty=float32 span=/features/features.0/features.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/HardSigmoid:0:0 */;
%4 = clip(%3, a_min=0f, a_max=1f) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/HardSigmoid:0:0 */;
%5 = multiply(%1, %4) /* ty=Tensor[(1, 16, 128, 96), float32] span=/features/features.0/features.0.2/Mul:0:0 */;
%6 = nn.conv2d(%5, meta[relay.Constant][2] /* ty=Tensor[(16, 1, 3, 3), float32] span=/features/features.1/block/block.0/block.0.0/Conv.onnx::Conv_463:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], groups=16, channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.0/block.0.0/Conv:0:0 */;
%7 = add(%6, meta[relay.Constant][3] /* ty=Tensor[(16, 1, 1), float32] */) /* ty=Tensor[(1, 16, 64, 48), float32] */;
%8 = nn.relu(%7) /* ty=Tensor[(1, 16, 64, 48), float32] span=/features/features.1/block/block.0/block.0.2/Relu:0:0 */;
%9 = nn.global_avg_pool2d(%8) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/GlobalAveragePool:0:0 */;
%10 = nn.conv2d(%9, meta[relay.Constant][5] /* ty=Tensor[(8, 16, 1, 1), float32] span=/features/features.1/block/block.1/fc1/Conv.features.1.block.1.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=8, kernel_size=[1, 1]) /* ty=Tensor[(1, 8, 1, 1), float32] span=/features/features.1/block/block.1/fc1/Conv:0:0 */;
%11 = add(%10, meta[relay.Constant][6] /* ty=Tensor[(8, 1, 1), float32] */) /* ty=Tensor[(1, 8, 1, 1), float32] */;
%12 = nn.relu(%11) /* ty=Tensor[(1, 8, 1, 1), float32] span=/features/features.1/block/block.1/relu/Relu:0:0 */;
%13 = nn.conv2d(%12, meta[relay.Constant][7] /* ty=Tensor[(16, 8, 1, 1), float32] */, padding=[0, 0, 0, 0], channels=16, kernel_size=[1, 1]) /* ty=Tensor[(1, 16, 1, 1), float32] */;
%14 = add(%13, meta[relay.Constant][8] /* ty=Tensor[(16, 1, 1), float32] */) /* ty=Tensor[(1, 16, 1, 1), float32] */;
%15 = add(%14, 0.5f /* ty=float32 span=/features/features.1/block/block.1/HardSigmoid:0:0 */) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/HardSigmoid:0:0 */;
%16 = clip(%15, a_min=0f, a_max=1f) /* ty=Tensor[(1, 16, 1, 1), float32] span=/features/features.1/block/block.1/HardSigmoid:0:0 */;
%17 = squeeze(%16, axis=[0, 2, 3]) /* ty=Tensor[(16), float32] */;
%18 = expand_dims(%17, axis=1, num_newaxis=2) /* ty=Tensor[(16, 1, 1), float32] */;
%19 = multiply(meta[relay.Constant][4] /* ty=Tensor[(16, 16, 1, 1), float32] span=/features/features.1/block/block.2/block.2.0/Conv.onnx::Conv_466:0:0 */, %18) /* ty=Tensor[(16, 16, 1, 1), float32] */;
%20 = nn.conv2d(%8, %19, padding=[0, 0, 0, 0], channels=16, kernel_size=[1, 1]) /* ty=Tensor[(1, 16, 64, 48), float32] */;
%21 = add(%20, meta[relay.Constant][9] /* ty=Tensor[(16, 1, 1), float32] */) /* ty=Tensor[(1, 16, 64, 48), float32] */;
%22 = nn.conv2d(%21, meta[relay.Constant][10] /* ty=Tensor[(72, 16, 1, 1), float32] span=/features/features.2/block/block.0/block.0.0/Conv.onnx::Conv_469:0:0 */, padding=[0, 0, 0, 0], channels=72, kernel_size=[1, 1]) /* ty=Tensor[(1, 72, 64, 48), float32] span=/features/features.2/block/block.0/block.0.0/Conv:0:0 */;
%23 = add(%22, meta[relay.Constant][11] /* ty=Tensor[(72, 1, 1), float32] */) /* ty=Tensor[(1, 72, 64, 48), float32] */;
%24 = nn.relu(%23) /* ty=Tensor[(1, 72, 64, 48), float32] span=/features/features.2/block/block.0/block.0.2/Relu:0:0 */;
%25 = nn.conv2d(%24, meta[relay.Constant][12] /* ty=Tensor[(72, 1, 3, 3), float32] span=/features/features.2/block/block.1/block.1.0/Conv.onnx::Conv_472:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], groups=72, channels=72, kernel_size=[3, 3]) /* ty=Tensor[(1, 72, 32, 24), float32] span=/features/features.2/block/block.1/block.1.0/Conv:0:0 */;
%26 = add(%25, meta[relay.Constant][13] /* ty=Tensor[(72, 1, 1), float32] */) /* ty=Tensor[(1, 72, 32, 24), float32] */;
%27 = nn.relu(%26) /* ty=Tensor[(1, 72, 32, 24), float32] span=/features/features.2/block/block.1/block.1.2/Relu:0:0 */;
%28 = nn.conv2d(%27, meta[relay.Constant][14] /* ty=Tensor[(24, 72, 1, 1), float32] span=/features/features.2/block/block.2/block.2.0/Conv.onnx::Conv_475:0:0 */, padding=[0, 0, 0, 0], channels=24, kernel_size=[1, 1]) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.2/block/block.2/block.2.0/Conv:0:0 */;
%29 = add(%28, meta[relay.Constant][15] /* ty=Tensor[(24, 1, 1), float32] */) /* ty=Tensor[(1, 24, 32, 24), float32] */;
%30 = nn.conv2d(%29, meta[relay.Constant][16] /* ty=Tensor[(88, 24, 1, 1), float32] span=/features/features.3/block/block.0/block.0.0/Conv.onnx::Conv_478:0:0 */, padding=[0, 0, 0, 0], channels=88, kernel_size=[1, 1]) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.0/block.0.0/Conv:0:0 */;
%31 = add(%30, meta[relay.Constant][17] /* ty=Tensor[(88, 1, 1), float32] */) /* ty=Tensor[(1, 88, 32, 24), float32] */;
%32 = nn.relu(%31) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.0/block.0.2/Relu:0:0 */;
%33 = nn.conv2d(%32, meta[relay.Constant][18] /* ty=Tensor[(88, 1, 3, 3), float32] span=/features/features.3/block/block.1/block.1.0/Conv.onnx::Conv_481:0:0 */, padding=[1, 1, 1, 1], groups=88, channels=88, kernel_size=[3, 3]) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.1/block.1.0/Conv:0:0 */;
%34 = add(%33, meta[relay.Constant][19] /* ty=Tensor[(88, 1, 1), float32] */) /* ty=Tensor[(1, 88, 32, 24), float32] */;
%35 = nn.relu(%34) /* ty=Tensor[(1, 88, 32, 24), float32] span=/features/features.3/block/block.1/block.1.2/Relu:0:0 */;
%36 = nn.conv2d(%35, meta[relay.Constant][20] /* ty=Tensor[(24, 88, 1, 1), float32] span=/features/features.3/block/block.2/block.2.0/Conv.onnx::Conv_484:0:0 */, padding=[0, 0, 0, 0], channels=24, kernel_size=[1, 1]) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.3/block/block.2/block.2.0/Conv:0:0 */;
%37 = add(%36, meta[relay.Constant][21] /* ty=Tensor[(24, 1, 1), float32] */) /* ty=Tensor[(1, 24, 32, 24), float32] */;
%38 = add(%37, %29) /* ty=Tensor[(1, 24, 32, 24), float32] span=/features/features.3/Add:0:0 */;
%39 = nn.conv2d(%38, meta[relay.Constant][22] /* ty=Tensor[(96, 24, 1, 1), float32] span=/features/features.4/block/block.0/block.0.0/Conv.onnx::Conv_487:0:0 */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.0/Conv:0:0 */;
%40 = add(%39, meta[relay.Constant][23] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 32, 24), float32] */;
%41 = multiply(%40, 0.166667f /* ty=float32 span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */;
%42 = add(%41, 0.5f /* ty=float32 span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */;
%43 = clip(%42, a_min=0f, a_max=1f) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/HardSigmoid:0:0 */;
%44 = multiply(%40, %43) /* ty=Tensor[(1, 96, 32, 24), float32] span=/features/features.4/block/block.0/block.0.2/Mul:0:0 */;
%45 = nn.conv2d(%44, meta[relay.Constant][24] /* ty=Tensor[(96, 1, 5, 5), float32] span=/features/features.4/block/block.1/block.1.0/Conv.onnx::Conv_490:0:0 */, strides=[2, 2], padding=[2, 2, 2, 2], groups=96, channels=96, kernel_size=[5, 5]) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.0/Conv:0:0 */;
%46 = add(%45, meta[relay.Constant][25] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 16, 12), float32] */;
%47 = multiply(%46, 0.166667f /* ty=float32 span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */;
%48 = add(%47, 0.5f /* ty=float32 span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */;
%49 = clip(%48, a_min=0f, a_max=1f) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/HardSigmoid:0:0 */;
%50 = multiply(%46, %49) /* ty=Tensor[(1, 96, 16, 12), float32] span=/features/features.4/block/block.1/block.1.2/Mul:0:0 */;
%51 = nn.global_avg_pool2d(%50) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/GlobalAveragePool:0:0 */;
%52 = nn.conv2d(%51, meta[relay.Constant][27] /* ty=Tensor[(24, 96, 1, 1), float32] span=/features/features.4/block/block.2/fc1/Conv.features.4.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=24, kernel_size=[1, 1]) /* ty=Tensor[(1, 24, 1, 1), float32] span=/features/features.4/block/block.2/fc1/Conv:0:0 */;
%53 = add(%52, meta[relay.Constant][28] /* ty=Tensor[(24, 1, 1), float32] */) /* ty=Tensor[(1, 24, 1, 1), float32] */;
%54 = nn.relu(%53) /* ty=Tensor[(1, 24, 1, 1), float32] span=/features/features.4/block/block.2/relu/Relu:0:0 */;
%55 = nn.conv2d(%54, meta[relay.Constant][29] /* ty=Tensor[(96, 24, 1, 1), float32] */, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 1, 1), float32] */;
%56 = add(%55, meta[relay.Constant][30] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 1, 1), float32] */;
%57 = add(%56, 0.5f /* ty=float32 span=/features/features.4/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/HardSigmoid:0:0 */;
%58 = clip(%57, a_min=0f, a_max=1f) /* ty=Tensor[(1, 96, 1, 1), float32] span=/features/features.4/block/block.2/HardSigmoid:0:0 */;
%59 = squeeze(%58, axis=[0, 2, 3]) /* ty=Tensor[(96), float32] */;
%60 = expand_dims(%59, axis=1, num_newaxis=2) /* ty=Tensor[(96, 1, 1), float32] */;
%61 = multiply(meta[relay.Constant][26] /* ty=Tensor[(40, 96, 1, 1), float32] span=/features/features.4/block/block.3/block.3.0/Conv.onnx::Conv_493:0:0 */, %60) /* ty=Tensor[(40, 96, 1, 1), float32] */;
%62 = nn.conv2d(%50, %61, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 16, 12), float32] */;
%63 = add(%62, meta[relay.Constant][31] /* ty=Tensor[(40, 1, 1), float32] */) /* ty=Tensor[(1, 40, 16, 12), float32] */;
%64 = nn.conv2d(%63, meta[relay.Constant][32] /* ty=Tensor[(240, 40, 1, 1), float32] span=/features/features.5/block/block.0/block.0.0/Conv.onnx::Conv_496:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.0/Conv:0:0 */;
%65 = add(%64, meta[relay.Constant][33] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 16, 12), float32] */;
%66 = multiply(%65, 0.166667f /* ty=float32 span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */;
%67 = add(%66, 0.5f /* ty=float32 span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */;
%68 = clip(%67, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/HardSigmoid:0:0 */;
%69 = multiply(%65, %68) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.0/block.0.2/Mul:0:0 */;
%70 = nn.conv2d(%69, meta[relay.Constant][34] /* ty=Tensor[(240, 1, 5, 5), float32] span=/features/features.5/block/block.1/block.1.0/Conv.onnx::Conv_499:0:0 */, padding=[2, 2, 2, 2], groups=240, channels=240, kernel_size=[5, 5]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.0/Conv:0:0 */;
%71 = add(%70, meta[relay.Constant][35] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 16, 12), float32] */;
%72 = multiply(%71, 0.166667f /* ty=float32 span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */;
%73 = add(%72, 0.5f /* ty=float32 span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */;
%74 = clip(%73, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/HardSigmoid:0:0 */;
%75 = multiply(%71, %74) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.5/block/block.1/block.1.2/Mul:0:0 */;
%76 = nn.global_avg_pool2d(%75) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/GlobalAveragePool:0:0 */;
%77 = nn.conv2d(%76, meta[relay.Constant][37] /* ty=Tensor[(64, 240, 1, 1), float32] span=/features/features.5/block/block.2/fc1/Conv.features.5.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.5/block/block.2/fc1/Conv:0:0 */;
%78 = add(%77, meta[relay.Constant][38] /* ty=Tensor[(64, 1, 1), float32] */) /* ty=Tensor[(1, 64, 1, 1), float32] */;
%79 = nn.relu(%78) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.5/block/block.2/relu/Relu:0:0 */;
%80 = nn.conv2d(%79, meta[relay.Constant][39] /* ty=Tensor[(240, 64, 1, 1), float32] */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 1, 1), float32] */;
%81 = add(%80, meta[relay.Constant][40] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 1, 1), float32] */;
%82 = add(%81, 0.5f /* ty=float32 span=/features/features.5/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/HardSigmoid:0:0 */;
%83 = clip(%82, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.5/block/block.2/HardSigmoid:0:0 */;
%84 = squeeze(%83, axis=[0, 2, 3]) /* ty=Tensor[(240), float32] */;
%85 = expand_dims(%84, axis=1, num_newaxis=2) /* ty=Tensor[(240, 1, 1), float32] */;
%86 = multiply(meta[relay.Constant][36] /* ty=Tensor[(40, 240, 1, 1), float32] span=/features/features.5/block/block.3/block.3.0/Conv.onnx::Conv_502:0:0 */, %85) /* ty=Tensor[(40, 240, 1, 1), float32] */;
%87 = nn.conv2d(%75, %86, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 16, 12), float32] */;
%88 = add(%87, meta[relay.Constant][41] /* ty=Tensor[(40, 1, 1), float32] */) /* ty=Tensor[(1, 40, 16, 12), float32] */;
%89 = add(%88, %63) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.5/Add:0:0 */;
%90 = nn.conv2d(%89, meta[relay.Constant][42] /* ty=Tensor[(240, 40, 1, 1), float32] span=/features/features.6/block/block.0/block.0.0/Conv.onnx::Conv_505:0:0 */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.0/Conv:0:0 */;
%91 = add(%90, meta[relay.Constant][43] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 16, 12), float32] */;
%92 = multiply(%91, 0.166667f /* ty=float32 span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */;
%93 = add(%92, 0.5f /* ty=float32 span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */;
%94 = clip(%93, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/HardSigmoid:0:0 */;
%95 = multiply(%91, %94) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.0/block.0.2/Mul:0:0 */;
%96 = nn.conv2d(%95, meta[relay.Constant][44] /* ty=Tensor[(240, 1, 5, 5), float32] span=/features/features.6/block/block.1/block.1.0/Conv.onnx::Conv_508:0:0 */, padding=[2, 2, 2, 2], groups=240, channels=240, kernel_size=[5, 5]) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.0/Conv:0:0 */;
%97 = add(%96, meta[relay.Constant][45] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 16, 12), float32] */;
%98 = multiply(%97, 0.166667f /* ty=float32 span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */;
%99 = add(%98, 0.5f /* ty=float32 span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */;
%100 = clip(%99, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/HardSigmoid:0:0 */;
%101 = multiply(%97, %100) /* ty=Tensor[(1, 240, 16, 12), float32] span=/features/features.6/block/block.1/block.1.2/Mul:0:0 */;
%102 = nn.global_avg_pool2d(%101) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/GlobalAveragePool:0:0 */;
%103 = nn.conv2d(%102, meta[relay.Constant][47] /* ty=Tensor[(64, 240, 1, 1), float32] span=/features/features.6/block/block.2/fc1/Conv.features.6.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.6/block/block.2/fc1/Conv:0:0 */;
%104 = add(%103, meta[relay.Constant][48] /* ty=Tensor[(64, 1, 1), float32] */) /* ty=Tensor[(1, 64, 1, 1), float32] */;
%105 = nn.relu(%104) /* ty=Tensor[(1, 64, 1, 1), float32] span=/features/features.6/block/block.2/relu/Relu:0:0 */;
%106 = nn.conv2d(%105, meta[relay.Constant][49] /* ty=Tensor[(240, 64, 1, 1), float32] */, padding=[0, 0, 0, 0], channels=240, kernel_size=[1, 1]) /* ty=Tensor[(1, 240, 1, 1), float32] */;
%107 = add(%106, meta[relay.Constant][50] /* ty=Tensor[(240, 1, 1), float32] */) /* ty=Tensor[(1, 240, 1, 1), float32] */;
%108 = add(%107, 0.5f /* ty=float32 span=/features/features.6/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/HardSigmoid:0:0 */;
%109 = clip(%108, a_min=0f, a_max=1f) /* ty=Tensor[(1, 240, 1, 1), float32] span=/features/features.6/block/block.2/HardSigmoid:0:0 */;
%110 = squeeze(%109, axis=[0, 2, 3]) /* ty=Tensor[(240), float32] */;
%111 = expand_dims(%110, axis=1, num_newaxis=2) /* ty=Tensor[(240, 1, 1), float32] */;
%112 = multiply(meta[relay.Constant][46] /* ty=Tensor[(40, 240, 1, 1), float32] span=/features/features.6/block/block.3/block.3.0/Conv.onnx::Conv_511:0:0 */, %111) /* ty=Tensor[(40, 240, 1, 1), float32] */;
%113 = nn.conv2d(%101, %112, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 16, 12), float32] */;
%114 = add(%113, meta[relay.Constant][51] /* ty=Tensor[(40, 1, 1), float32] */) /* ty=Tensor[(1, 40, 16, 12), float32] */;
%115 = add(%114, %89) /* ty=Tensor[(1, 40, 16, 12), float32] span=/features/features.6/Add:0:0 */;
%116 = nn.conv2d(%115, meta[relay.Constant][52] /* ty=Tensor[(120, 40, 1, 1), float32] span=/features/features.7/block/block.0/block.0.0/Conv.onnx::Conv_514:0:0 */, padding=[0, 0, 0, 0], channels=120, kernel_size=[1, 1]) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.0/Conv:0:0 */;
%117 = add(%116, meta[relay.Constant][53] /* ty=Tensor[(120, 1, 1), float32] */) /* ty=Tensor[(1, 120, 16, 12), float32] */;
%118 = multiply(%117, 0.166667f /* ty=float32 span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */;
%119 = add(%118, 0.5f /* ty=float32 span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */;
%120 = clip(%119, a_min=0f, a_max=1f) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/HardSigmoid:0:0 */;
%121 = multiply(%117, %120) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.0/block.0.2/Mul:0:0 */;
%122 = nn.conv2d(%121, meta[relay.Constant][54] /* ty=Tensor[(120, 1, 5, 5), float32] span=/features/features.7/block/block.1/block.1.0/Conv.onnx::Conv_517:0:0 */, padding=[2, 2, 2, 2], groups=120, channels=120, kernel_size=[5, 5]) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.0/Conv:0:0 */;
%123 = add(%122, meta[relay.Constant][55] /* ty=Tensor[(120, 1, 1), float32] */) /* ty=Tensor[(1, 120, 16, 12), float32] */;
%124 = multiply(%123, 0.166667f /* ty=float32 span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */;
%125 = add(%124, 0.5f /* ty=float32 span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */;
%126 = clip(%125, a_min=0f, a_max=1f) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/HardSigmoid:0:0 */;
%127 = multiply(%123, %126) /* ty=Tensor[(1, 120, 16, 12), float32] span=/features/features.7/block/block.1/block.1.2/Mul:0:0 */;
%128 = nn.global_avg_pool2d(%127) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/GlobalAveragePool:0:0 */;
%129 = nn.conv2d(%128, meta[relay.Constant][57] /* ty=Tensor[(32, 120, 1, 1), float32] span=/features/features.7/block/block.2/fc1/Conv.features.7.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=32, kernel_size=[1, 1]) /* ty=Tensor[(1, 32, 1, 1), float32] span=/features/features.7/block/block.2/fc1/Conv:0:0 */;
%130 = add(%129, meta[relay.Constant][58] /* ty=Tensor[(32, 1, 1), float32] */) /* ty=Tensor[(1, 32, 1, 1), float32] */;
%131 = nn.relu(%130) /* ty=Tensor[(1, 32, 1, 1), float32] span=/features/features.7/block/block.2/relu/Relu:0:0 */;
%132 = nn.conv2d(%131, meta[relay.Constant][59] /* ty=Tensor[(120, 32, 1, 1), float32] */, padding=[0, 0, 0, 0], channels=120, kernel_size=[1, 1]) /* ty=Tensor[(1, 120, 1, 1), float32] */;
%133 = add(%132, meta[relay.Constant][60] /* ty=Tensor[(120, 1, 1), float32] */) /* ty=Tensor[(1, 120, 1, 1), float32] */;
%134 = add(%133, 0.5f /* ty=float32 span=/features/features.7/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/HardSigmoid:0:0 */;
%135 = clip(%134, a_min=0f, a_max=1f) /* ty=Tensor[(1, 120, 1, 1), float32] span=/features/features.7/block/block.2/HardSigmoid:0:0 */;
%136 = squeeze(%135, axis=[0, 2, 3]) /* ty=Tensor[(120), float32] */;
%137 = expand_dims(%136, axis=1, num_newaxis=2) /* ty=Tensor[(120, 1, 1), float32] */;
%138 = multiply(meta[relay.Constant][56] /* ty=Tensor[(48, 120, 1, 1), float32] span=/features/features.7/block/block.3/block.3.0/Conv.onnx::Conv_520:0:0 */, %137) /* ty=Tensor[(48, 120, 1, 1), float32] */;
%139 = nn.conv2d(%127, %138, padding=[0, 0, 0, 0], channels=48, kernel_size=[1, 1]) /* ty=Tensor[(1, 48, 16, 12), float32] */;
%140 = add(%139, meta[relay.Constant][61] /* ty=Tensor[(48, 1, 1), float32] */) /* ty=Tensor[(1, 48, 16, 12), float32] */;
%141 = nn.conv2d(%140, meta[relay.Constant][62] /* ty=Tensor[(144, 48, 1, 1), float32] span=/features/features.8/block/block.0/block.0.0/Conv.onnx::Conv_523:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.0/Conv:0:0 */;
%142 = add(%141, meta[relay.Constant][63] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 16, 12), float32] */;
%143 = multiply(%142, 0.166667f /* ty=float32 span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */;
%144 = add(%143, 0.5f /* ty=float32 span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */;
%145 = clip(%144, a_min=0f, a_max=1f) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/HardSigmoid:0:0 */;
%146 = multiply(%142, %145) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.0/block.0.2/Mul:0:0 */;
%147 = nn.conv2d(%146, meta[relay.Constant][64] /* ty=Tensor[(144, 1, 5, 5), float32] span=/features/features.8/block/block.1/block.1.0/Conv.onnx::Conv_526:0:0 */, padding=[2, 2, 2, 2], groups=144, channels=144, kernel_size=[5, 5]) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.0/Conv:0:0 */;
%148 = add(%147, meta[relay.Constant][65] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 16, 12), float32] */;
%149 = multiply(%148, 0.166667f /* ty=float32 span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */;
%150 = add(%149, 0.5f /* ty=float32 span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */;
%151 = clip(%150, a_min=0f, a_max=1f) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/HardSigmoid:0:0 */;
%152 = multiply(%148, %151) /* ty=Tensor[(1, 144, 16, 12), float32] span=/features/features.8/block/block.1/block.1.2/Mul:0:0 */;
%153 = nn.global_avg_pool2d(%152) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/GlobalAveragePool:0:0 */;
%154 = nn.conv2d(%153, meta[relay.Constant][67] /* ty=Tensor[(40, 144, 1, 1), float32] span=/features/features.8/block/block.2/fc1/Conv.features.8.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=40, kernel_size=[1, 1]) /* ty=Tensor[(1, 40, 1, 1), float32] span=/features/features.8/block/block.2/fc1/Conv:0:0 */;
%155 = add(%154, meta[relay.Constant][68] /* ty=Tensor[(40, 1, 1), float32] */) /* ty=Tensor[(1, 40, 1, 1), float32] */;
%156 = nn.relu(%155) /* ty=Tensor[(1, 40, 1, 1), float32] span=/features/features.8/block/block.2/relu/Relu:0:0 */;
%157 = nn.conv2d(%156, meta[relay.Constant][69] /* ty=Tensor[(144, 40, 1, 1), float32] */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 1, 1), float32] */;
%158 = add(%157, meta[relay.Constant][70] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 1, 1), float32] */;
%159 = add(%158, 0.5f /* ty=float32 span=/features/features.8/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/HardSigmoid:0:0 */;
%160 = clip(%159, a_min=0f, a_max=1f) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.8/block/block.2/HardSigmoid:0:0 */;
%161 = squeeze(%160, axis=[0, 2, 3]) /* ty=Tensor[(144), float32] */;
%162 = expand_dims(%161, axis=1, num_newaxis=2) /* ty=Tensor[(144, 1, 1), float32] */;
%163 = multiply(meta[relay.Constant][66] /* ty=Tensor[(48, 144, 1, 1), float32] span=/features/features.8/block/block.3/block.3.0/Conv.onnx::Conv_529:0:0 */, %162) /* ty=Tensor[(48, 144, 1, 1), float32] */;
%164 = nn.conv2d(%152, %163, padding=[0, 0, 0, 0], channels=48, kernel_size=[1, 1]) /* ty=Tensor[(1, 48, 16, 12), float32] */;
%165 = add(%164, meta[relay.Constant][71] /* ty=Tensor[(48, 1, 1), float32] */) /* ty=Tensor[(1, 48, 16, 12), float32] */;
%166 = add(%165, %140) /* ty=Tensor[(1, 48, 16, 12), float32] span=/features/features.8/Add:0:0 */;
%167 = nn.conv2d(%166, meta[relay.Constant][72] /* ty=Tensor[(288, 48, 1, 1), float32] span=/features/features.9/block/block.0/block.0.0/Conv.onnx::Conv_532:0:0 */, padding=[0, 0, 0, 0], channels=288, kernel_size=[1, 1]) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.0/Conv:0:0 */;
%168 = add(%167, meta[relay.Constant][73] /* ty=Tensor[(288, 1, 1), float32] */) /* ty=Tensor[(1, 288, 16, 12), float32] */;
%169 = multiply(%168, 0.166667f /* ty=float32 span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */;
%170 = add(%169, 0.5f /* ty=float32 span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */;
%171 = clip(%170, a_min=0f, a_max=1f) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/HardSigmoid:0:0 */;
%172 = multiply(%168, %171) /* ty=Tensor[(1, 288, 16, 12), float32] span=/features/features.9/block/block.0/block.0.2/Mul:0:0 */;
%173 = nn.conv2d(%172, meta[relay.Constant][74] /* ty=Tensor[(288, 1, 5, 5), float32] span=/features/features.9/block/block.1/block.1.0/Conv.onnx::Conv_535:0:0 */, strides=[2, 2], padding=[2, 2, 2, 2], groups=288, channels=288, kernel_size=[5, 5]) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.0/Conv:0:0 */;
%174 = add(%173, meta[relay.Constant][75] /* ty=Tensor[(288, 1, 1), float32] */) /* ty=Tensor[(1, 288, 8, 6), float32] */;
%175 = multiply(%174, 0.166667f /* ty=float32 span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */;
%176 = add(%175, 0.5f /* ty=float32 span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */;
%177 = clip(%176, a_min=0f, a_max=1f) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/HardSigmoid:0:0 */;
%178 = multiply(%174, %177) /* ty=Tensor[(1, 288, 8, 6), float32] span=/features/features.9/block/block.1/block.1.2/Mul:0:0 */;
%179 = nn.global_avg_pool2d(%178) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/GlobalAveragePool:0:0 */;
%180 = nn.conv2d(%179, meta[relay.Constant][77] /* ty=Tensor[(72, 288, 1, 1), float32] span=/features/features.9/block/block.2/fc1/Conv.features.9.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=72, kernel_size=[1, 1]) /* ty=Tensor[(1, 72, 1, 1), float32] span=/features/features.9/block/block.2/fc1/Conv:0:0 */;
%181 = add(%180, meta[relay.Constant][78] /* ty=Tensor[(72, 1, 1), float32] */) /* ty=Tensor[(1, 72, 1, 1), float32] */;
%182 = nn.relu(%181) /* ty=Tensor[(1, 72, 1, 1), float32] span=/features/features.9/block/block.2/relu/Relu:0:0 */;
%183 = nn.conv2d(%182, meta[relay.Constant][79] /* ty=Tensor[(288, 72, 1, 1), float32] */, padding=[0, 0, 0, 0], channels=288, kernel_size=[1, 1]) /* ty=Tensor[(1, 288, 1, 1), float32] */;
%184 = add(%183, meta[relay.Constant][80] /* ty=Tensor[(288, 1, 1), float32] */) /* ty=Tensor[(1, 288, 1, 1), float32] */;
%185 = add(%184, 0.5f /* ty=float32 span=/features/features.9/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/HardSigmoid:0:0 */;
%186 = clip(%185, a_min=0f, a_max=1f) /* ty=Tensor[(1, 288, 1, 1), float32] span=/features/features.9/block/block.2/HardSigmoid:0:0 */;
%187 = squeeze(%186, axis=[0, 2, 3]) /* ty=Tensor[(288), float32] */;
%188 = expand_dims(%187, axis=1, num_newaxis=2) /* ty=Tensor[(288, 1, 1), float32] */;
%189 = multiply(meta[relay.Constant][76] /* ty=Tensor[(96, 288, 1, 1), float32] span=/features/features.9/block/block.3/block.3.0/Conv.onnx::Conv_538:0:0 */, %188) /* ty=Tensor[(96, 288, 1, 1), float32] */;
%190 = nn.conv2d(%178, %189, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 8, 6), float32] */;
%191 = add(%190, meta[relay.Constant][81] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 8, 6), float32] */;
%192 = nn.conv2d(%191, meta[relay.Constant][82] /* ty=Tensor[(576, 96, 1, 1), float32] span=/features/features.10/block/block.0/block.0.0/Conv.onnx::Conv_541:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.0/Conv:0:0 */;
%193 = add(%192, meta[relay.Constant][83] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%194 = multiply(%193, 0.166667f /* ty=float32 span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */;
%195 = add(%194, 0.5f /* ty=float32 span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */;
%196 = clip(%195, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/HardSigmoid:0:0 */;
%197 = multiply(%193, %196) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.0/block.0.2/Mul:0:0 */;
%198 = nn.conv2d(%197, meta[relay.Constant][84] /* ty=Tensor[(576, 1, 5, 5), float32] span=/features/features.10/block/block.1/block.1.0/Conv.onnx::Conv_544:0:0 */, padding=[2, 2, 2, 2], groups=576, channels=576, kernel_size=[5, 5]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.0/Conv:0:0 */;
%199 = add(%198, meta[relay.Constant][85] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%200 = multiply(%199, 0.166667f /* ty=float32 span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */;
%201 = add(%200, 0.5f /* ty=float32 span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */;
%202 = clip(%201, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/HardSigmoid:0:0 */;
%203 = multiply(%199, %202) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.10/block/block.1/block.1.2/Mul:0:0 */;
%204 = nn.global_avg_pool2d(%203) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/GlobalAveragePool:0:0 */;
%205 = nn.conv2d(%204, meta[relay.Constant][87] /* ty=Tensor[(144, 576, 1, 1), float32] span=/features/features.10/block/block.2/fc1/Conv.features.10.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.10/block/block.2/fc1/Conv:0:0 */;
%206 = add(%205, meta[relay.Constant][88] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 1, 1), float32] */;
%207 = nn.relu(%206) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.10/block/block.2/relu/Relu:0:0 */;
%208 = nn.conv2d(%207, meta[relay.Constant][89] /* ty=Tensor[(576, 144, 1, 1), float32] */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 1, 1), float32] */;
%209 = add(%208, meta[relay.Constant][90] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 1, 1), float32] */;
%210 = add(%209, 0.5f /* ty=float32 span=/features/features.10/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/HardSigmoid:0:0 */;
%211 = clip(%210, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.10/block/block.2/HardSigmoid:0:0 */;
%212 = squeeze(%211, axis=[0, 2, 3]) /* ty=Tensor[(576), float32] */;
%213 = expand_dims(%212, axis=1, num_newaxis=2) /* ty=Tensor[(576, 1, 1), float32] */;
%214 = multiply(meta[relay.Constant][86] /* ty=Tensor[(96, 576, 1, 1), float32] span=/features/features.10/block/block.3/block.3.0/Conv.onnx::Conv_547:0:0 */, %213) /* ty=Tensor[(96, 576, 1, 1), float32] */;
%215 = nn.conv2d(%203, %214, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 8, 6), float32] */;
%216 = add(%215, meta[relay.Constant][91] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 8, 6), float32] */;
%217 = add(%216, %191) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.10/Add:0:0 */;
%218 = nn.conv2d(%217, meta[relay.Constant][92] /* ty=Tensor[(576, 96, 1, 1), float32] span=/features/features.11/block/block.0/block.0.0/Conv.onnx::Conv_550:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.0/Conv:0:0 */;
%219 = add(%218, meta[relay.Constant][93] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%220 = multiply(%219, 0.166667f /* ty=float32 span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */;
%221 = add(%220, 0.5f /* ty=float32 span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */;
%222 = clip(%221, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/HardSigmoid:0:0 */;
%223 = multiply(%219, %222) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.0/block.0.2/Mul:0:0 */;
%224 = nn.conv2d(%223, meta[relay.Constant][94] /* ty=Tensor[(576, 1, 5, 5), float32] span=/features/features.11/block/block.1/block.1.0/Conv.onnx::Conv_553:0:0 */, padding=[2, 2, 2, 2], groups=576, channels=576, kernel_size=[5, 5]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.0/Conv:0:0 */;
%225 = add(%224, meta[relay.Constant][95] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%226 = multiply(%225, 0.166667f /* ty=float32 span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */;
%227 = add(%226, 0.5f /* ty=float32 span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */;
%228 = clip(%227, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/HardSigmoid:0:0 */;
%229 = multiply(%225, %228) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.11/block/block.1/block.1.2/Mul:0:0 */;
%230 = nn.global_avg_pool2d(%229) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/GlobalAveragePool:0:0 */;
%231 = nn.conv2d(%230, meta[relay.Constant][97] /* ty=Tensor[(144, 576, 1, 1), float32] span=/features/features.11/block/block.2/fc1/Conv.features.11.block.2.fc1.weight:0:0 */, padding=[0, 0, 0, 0], channels=144, kernel_size=[1, 1]) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.11/block/block.2/fc1/Conv:0:0 */;
%232 = add(%231, meta[relay.Constant][98] /* ty=Tensor[(144, 1, 1), float32] */) /* ty=Tensor[(1, 144, 1, 1), float32] */;
%233 = nn.relu(%232) /* ty=Tensor[(1, 144, 1, 1), float32] span=/features/features.11/block/block.2/relu/Relu:0:0 */;
%234 = nn.conv2d(%233, meta[relay.Constant][99] /* ty=Tensor[(576, 144, 1, 1), float32] */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 1, 1), float32] */;
%235 = add(%234, meta[relay.Constant][100] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 1, 1), float32] */;
%236 = add(%235, 0.5f /* ty=float32 span=/features/features.11/block/block.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/HardSigmoid:0:0 */;
%237 = clip(%236, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 1, 1), float32] span=/features/features.11/block/block.2/HardSigmoid:0:0 */;
%238 = squeeze(%237, axis=[0, 2, 3]) /* ty=Tensor[(576), float32] */;
%239 = expand_dims(%238, axis=1, num_newaxis=2) /* ty=Tensor[(576, 1, 1), float32] */;
%240 = multiply(meta[relay.Constant][96] /* ty=Tensor[(96, 576, 1, 1), float32] span=/features/features.11/block/block.3/block.3.0/Conv.onnx::Conv_556:0:0 */, %239) /* ty=Tensor[(96, 576, 1, 1), float32] */;
%241 = nn.conv2d(%229, %240, padding=[0, 0, 0, 0], channels=96, kernel_size=[1, 1]) /* ty=Tensor[(1, 96, 8, 6), float32] */;
%242 = add(%241, meta[relay.Constant][101] /* ty=Tensor[(96, 1, 1), float32] */) /* ty=Tensor[(1, 96, 8, 6), float32] */;
%243 = add(%242, %217) /* ty=Tensor[(1, 96, 8, 6), float32] span=/features/features.11/Add:0:0 */;
%244 = nn.conv2d(%243, meta[relay.Constant][102] /* ty=Tensor[(576, 96, 1, 1), float32] span=/features/features.12/features.12.0/Conv.onnx::Conv_559:0:0 */, padding=[0, 0, 0, 0], channels=576, kernel_size=[1, 1]) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.0/Conv:0:0 */;
%245 = add(%244, meta[relay.Constant][103] /* ty=Tensor[(576, 1, 1), float32] */) /* ty=Tensor[(1, 576, 8, 6), float32] */;
%246 = multiply(%245, 0.166667f /* ty=float32 span=/features/features.12/features.12.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/HardSigmoid:0:0 */;
%247 = add(%246, 0.5f /* ty=float32 span=/features/features.12/features.12.2/HardSigmoid:0:0 */) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/HardSigmoid:0:0 */;
%248 = clip(%247, a_min=0f, a_max=1f) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/HardSigmoid:0:0 */;
%249 = multiply(%245, %248) /* ty=Tensor[(1, 576, 8, 6), float32] span=/features/features.12/features.12.2/Mul:0:0 */;
%250 = nn.conv2d(%249, meta[relay.Constant][104] /* ty=Tensor[(1024, 576, 1, 1), float32] span=/conv/conv.0/Conv.onnx::Conv_562:0:0 */, padding=[0, 0, 0, 0], channels=1024, kernel_size=[1, 1]) /* ty=Tensor[(1, 1024, 8, 6), float32] span=/conv/conv.0/Conv:0:0 */;
%251 = add(%250, meta[relay.Constant][105] /* ty=Tensor[(1024, 1, 1), float32] */) /* ty=Tensor[(1, 1024, 8, 6), float32] */;
%252 = clip(%251, a_min=0f, a_max=6f) /* ty=Tensor[(1, 1024, 8, 6), float32] span=/conv/conv.2/Clip:0:0 */;
%253 = reshape(%252, newshape=[1, 1024, -1]) /* ty=Tensor[(1, 1024, 48), float32] span=/pool_layer/Reshape:0:0 */;
%254 = mean(%253, axis=[-1]) /* ty=Tensor[(1, 1024), float32] span=/pool_layer/ReduceMean:0:0 */;
%255 = reshape(%254, newshape=[1, 1024, 1, 1]) /* ty=Tensor[(1, 1024, 1, 1), float32] span=/pool_layer/Reshape_1:0:0 */;
%256 = multiply(%255, meta[relay.Constant][106] /* ty=Tensor[(1024, 1, 1), float32] */) /* ty=Tensor[(1, 1024, 1, 1), float32] */;
%257 = add(%256, meta[relay.Constant][107] /* ty=Tensor[(1024, 1, 1), float32] */) /* ty=Tensor[(1, 1024, 1, 1), float32] */;
%258 = reshape(%257, newshape=[1, -1]) /* ty=Tensor[(1, 1024), float32] span=/Reshape:0:0 */;
%259 = nn.dense(%258, meta[relay.Constant][108] /* ty=Tensor[(9, 1024), float32] */, units=None, out_dtype="float32") /* ty=Tensor[(1, 9), float32] */;
add(%259, meta[relay.Constant][109] /* ty=Tensor[(9), float32] */) /* ty=Tensor[(1, 9), float32] */
} /* ty=fn (Tensor[(1, 3, 256, 192), float32]) -> Tensor[(1, 9), float32] */
import sys
sys.path.extend(["/media/pc/data/board/arria10/lxw/tasks/tools/npu_user_demos/models/telecom_pt/Nin1_helmet_small"])
import mobilenetv3
from tvm.contrib.msc.core.frontend import translate
torch.cuda.empty_cache()
# 模型配置
bn_norm = "BN"
class_num = 9
# 预处理参数
width = 192 # 输入宽度
height = 256 # 输入高度
std = [58.395, 57.120, 57.375] # 方差
mean = [123.675, 116.280, 103.530] # 均值
bn_norm = "BN"
class_num = 9
inverted_residual_setting, last_channel = mobilenetv3._mobilenet_v3_conf("Small", {})
model = mobilenetv3.MobileNetV3(bn_norm, inverted_residual_setting, last_channel, class_num)
model_path = "/media/pc/data/board/arria10/lxw/tasks/tools/npu_user_demos/models/telecom_pt/Nin1_helmet_small/helmet_small.pth"
state_dict = torch.load(model_path,map_location=torch.device('cpu'))
model.load_state_dict({k.replace('backbone.','').replace('heads.',''):v for k,v in state_dict['model'].items()}, strict=True)
model.to(torch.device("cpu"))
model = model.eval()
from torch import fx
from tvm.relax.frontend.torch import from_fx
input_info = [(xs.shape, "float32")]
model_path = "/media/pc/data/board/arria10/lxw/tasks/tools/npu_user_demos/models/telecom_pt/Nin1_helmet_small/helmet_small.torchscript"
torch_model = torch.jit.load(model_path, map_location=torch.device('cpu'))
scripted_model = torch.jit.script(torch_model).cpu()
input_name = "x"
relay_mod, params = relay.frontend.from_pytorch(scripted_model, [(input_name, xs.shape)])
from copy import deepcopy
from tvm.relay.analysis import extract_intermdeiate_expr
from tvm_book.compiler.utils import merge_compiler
run_mod = deepcopy(relay_mod)
# run_mod = extract_intermdeiate_expr(run_mod, 110)
with tvm.transform.PassContext(opt_level=3):
# run_mod = relay.quantize.prerequisite_optimize(run_mod, params)
run_mod = merge_compiler(run_mod, compiler_name="vta_special")
print(relay_mod["main"])
graph, weights = translate.from_relay(relay_mod, params, opt_config={"opt_level": 3})
tvm.IRModule.from_expr(run_mod["vta_special.multiply_add_122"])
from tvm.contrib.msc.framework.torch import codegen
model = codegen.to_torch(graph, weights)
from pathlib import Path
from tqdm import tqdm
ENV = {
"model_type": "onnx",
"input_name": "images",
"channel": 3,
"height": 256,
"width": 192,
"mode": "RGB", # 输入图片格式
"mean": (0,),
"std": (255,)
}
def letterbox_image(im: Image, dst_width: int, dst_height: int):
'''使用填充保持纵横比缩放图像
Args:
im: 原始 Image
dst_width: 目标宽度
dst_height: 目标高度
'''
iw, ih = im.size # 原始尺寸
scale = min(dst_width/iw, dst_height/ih)
nw = int(iw*scale)
nh = int(ih*scale)
im = im.resize((nw, nh), Image.BICUBIC)
new_image = Image.new('RGB', (dst_width, dst_height), (114, 114, 114))
new_image.paste(im, ((dst_width-nw)//2, (dst_height-nh)//2))
return new_image
def preprocessing(path: str|None, **ENV: dict):
if not path:
im = np.random.randint(0, 256, size=(32, 32, 3), dtype="uint8")
im = Image.fromarray(im) # 转为 Image 实例
else:
im = Image.open(path)
# im = im.resize((ENV["width"], ENV["height"]), Image.BICUBIC)
im = letterbox_image(im, ENV["width"], ENV["height"])
if ENV["mode"] == "L": # 将灰度图转换为 HWC 布局
img = im.convert("L")
img = np.expand_dims(img, axis=-1) # 转为 HWC
elif ENV["mode"] == "RGB":
img = np.array(im.convert("RGB")) # 转为 HWC 布局
elif ENV["mode"] == "BGR":
img = np.array(im.convert("RGB")) # 转为 HWC 布局
img = img[..., ::-1] # RGB 转 BGR
else:
raise TypeError(f'暂未支持数据布局 {ENV["mode"]}')
image_np = np.expand_dims(img, 0) # 转换为 NHWC (uint8 数据)
# 预处理后的数据
data_inp = ((image_np - ENV["mean"]) / ENV["std"]).astype(np.float32)
data_inp = data_inp.transpose(0, 3, 1, 2)
return np.ascontiguousarray(image_np), np.ascontiguousarray(data_inp)
def calibrateset(calibrate_num=2, data_dir="/media/pc/data/lxw/home/data/coco/train2017"):
"""用于量化的校准数据集"""
for k, path in tqdm(enumerate(Path(data_dir).iterdir()), desc="Calibrate", unit="batch"):
if k >= calibrate_num:
break
yield {ENV["input_name"]: preprocessing(path, **ENV)[1]}
input_name = "images"
onnx_model = onnx.load('/media/pc/data/board/arria10/lxw/tasks/tools/npu_user_demos/models/telecom/Nin1_helmet_small/helmet_small.onnx')
mod, params = relay.frontend.from_onnx(onnx_model, {input_name: xs.shape}, freeze_params=True)
with tvm.transform.PassContext(opt_level=3, disabled_pass={"AlterOpLayout"}):
with relay.quantize.qconfig(
calibrate_mode="percentile", weight_scale="max",
skip_dense_layer=False,
skip_conv_layers=None):
qmod = relay.quantize.quantize(deepcopy(run_mod), params, dataset=calibrateset())
print(qmod)