From edfcfdb3841b8372ab49901419e3cfbf4ea6e508 Mon Sep 17 00:00:00 2001 From: "Guan-Ming (Wesley) Chiu" <105915352+guan404ming@users.noreply.github.com> Date: Mon, 17 Nov 2025 00:19:11 +0800 Subject: [PATCH 1/3] Add decomposed operator support for interpolate --- .../frontend/torch/base_fx_graph_translator.py | 15 +++++++-------- .../relax/test_frontend_from_exported_program.py | 12 +++++++++--- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/python/tvm/relax/frontend/torch/base_fx_graph_translator.py b/python/tvm/relax/frontend/torch/base_fx_graph_translator.py index 83a045ef54bd..4f94f3f3f457 100644 --- a/python/tvm/relax/frontend/torch/base_fx_graph_translator.py +++ b/python/tvm/relax/frontend/torch/base_fx_graph_translator.py @@ -1693,20 +1693,19 @@ def _index_tensor(self, node: fx.Node) -> relax.Var: axis, index_tensor = non_none_indices[0] return self.block_builder.emit(relax.op.take(data, index_tensor, axis=axis)) - # General case: multiple non-None indices require advanced indexing + # General case: replace None with arange, reshaped for broadcasting + max_ndim = max((idx.struct_info.ndim for _, idx in non_none_indices), default=1) processed_indices = [] data_shape = self.shape_of(data) for i, idx in enumerate(indices): if idx is None: - dim_size = data_shape[i] arange_idx = self.block_builder.emit( - relax.op.arange( - start=relax.PrimValue(0), - end=dim_size, - step=relax.PrimValue(1), - dtype="int64", - ) + relax.op.arange(relax.PrimValue(0), data_shape[i], relax.PrimValue(1), "int64") + ) + # Reshape to [dim_size, 1, 1, ...] for broadcasting + arange_idx = self.block_builder.emit( + relax.op.reshape(arange_idx, [data_shape[i]] + [1] * (max_ndim - 1)) ) processed_indices.append(arange_idx) else: diff --git a/tests/python/relax/test_frontend_from_exported_program.py b/tests/python/relax/test_frontend_from_exported_program.py index 1b816432ce1f..47896f79bcd1 100644 --- a/tests/python/relax/test_frontend_from_exported_program.py +++ b/tests/python/relax/test_frontend_from_exported_program.py @@ -4093,9 +4093,15 @@ def main( return gv example_args = (torch.randn(1, 3, 112, 112, dtype=torch.float32),) - verify_model(InterpolateBilinear(), example_args, {}, expected_bilinear) - verify_model(InterpolateNearest(), example_args, {}, expected_nearest) - verify_model(InterpolateBicubic(), example_args, {}, expected_bicubic) + verify_model( + InterpolateBilinear(), example_args, {}, expected_bilinear, run_ep_decomposition=True + ) + verify_model( + InterpolateNearest(), example_args, {}, expected_nearest, run_ep_decomposition=True + ) + verify_model( + InterpolateBicubic(), example_args, {}, expected_bicubic, run_ep_decomposition=False + ) def test_mean(): From 901f2dd68abea4ab9762f58abc1e3460b8b5b835 Mon Sep 17 00:00:00 2001 From: "Guan-Ming (Wesley) Chiu" <105915352+guan404ming@users.noreply.github.com> Date: Tue, 18 Nov 2025 12:22:09 +0800 Subject: [PATCH 2/3] Update implementation and test --- .../torch/base_fx_graph_translator.py | 23 + .../test_frontend_from_exported_program.py | 424 +++++++++++++++++- 2 files changed, 432 insertions(+), 15 deletions(-) diff --git a/python/tvm/relax/frontend/torch/base_fx_graph_translator.py b/python/tvm/relax/frontend/torch/base_fx_graph_translator.py index 4f94f3f3f457..d57b5caf9561 100644 --- a/python/tvm/relax/frontend/torch/base_fx_graph_translator.py +++ b/python/tvm/relax/frontend/torch/base_fx_graph_translator.py @@ -1693,6 +1693,29 @@ def _index_tensor(self, node: fx.Node) -> relax.Var: axis, index_tensor = non_none_indices[0] return self.block_builder.emit(relax.op.take(data, index_tensor, axis=axis)) + # Check if all indices can be squeezed to 1D for sequential take + def is_squeezable(idx): + if idx.struct_info.ndim == 1: + return True + if idx.struct_info.ndim == 2: + shape = idx.struct_info.shape + for d in shape: + if isinstance(d, int) and d == 1: + return True + # Check for tir.IntImm + if hasattr(d, "value") and d.value == 1: + return True + return False + + all_squeezable = all(is_squeezable(idx) for _, idx in non_none_indices) + if all_squeezable: + result = data + for axis, idx in reversed(non_none_indices): + if idx.struct_info.ndim > 1: + idx = self.block_builder.emit(relax.op.squeeze(idx)) + result = self.block_builder.emit(relax.op.take(result, idx, axis=axis)) + return result + # General case: replace None with arange, reshaped for broadcasting max_ndim = max((idx.struct_info.ndim for _, idx in non_none_indices), default=1) processed_indices = [] diff --git a/tests/python/relax/test_frontend_from_exported_program.py b/tests/python/relax/test_frontend_from_exported_program.py index 47896f79bcd1..c7ee0490568c 100644 --- a/tests/python/relax/test_frontend_from_exported_program.py +++ b/tests/python/relax/test_frontend_from_exported_program.py @@ -4073,22 +4073,416 @@ class expected_bicubic: def main( input: R.Tensor((1, 3, 112, 112), dtype="float32") ) -> R.Tuple(R.Tensor((1, 3, 224, 224), dtype="float32")): - # block 0 with R.dataflow(): - lv: R.Tensor((1, 3, 224, 224), dtype="float32") = R.image.resize2d( - input, - R.shape([224, 224]), - roi=[T.float32(0.0), T.float32(0.0), T.float32(0.0), T.float32(0.0)], - layout="NCHW", - method="cubic", - coordinate_transformation_mode="half_pixel", - rounding_method="round", - cubic_alpha=-0.75, - cubic_exclude=0, - extrapolation_value=0.0, - out_dtype="void", + lv: R.Tensor((224,), dtype="int64") = R.arange( + R.prim_value(0), R.prim_value(224), R.prim_value(1), dtype="int64" + ) + lv1: R.Tensor((224,), dtype="float32") = R.astype(lv, dtype="float32") + lv2: R.Tensor((224,), dtype="int64") = R.arange( + R.prim_value(0), R.prim_value(224), R.prim_value(1), dtype="int64" + ) + lv3: R.Tensor((224,), dtype="float32") = R.astype(lv2, dtype="float32") + lv4: R.Tensor((224,), dtype="float32") = R.add(lv3, R.const(0.5, "float32")) + lv5: R.Tensor((224,), dtype="float32") = R.multiply(lv4, R.const(0.5, "float32")) + lv6: R.Tensor((224,), dtype="float32") = R.subtract(lv5, R.const(0.5, "float32")) + lv7: R.Tensor((224,), dtype="float32") = R.add(lv1, R.const(0.5, "float32")) + lv8: R.Tensor((224,), dtype="float32") = R.multiply(lv7, R.const(0.5, "float32")) + lv9: R.Tensor((224,), dtype="float32") = R.subtract(lv8, R.const(0.5, "float32")) + lv10: R.Tensor((224, 1), dtype="float32") = R.expand_dims(lv9, axis=[-1]) + lv11: R.Tensor((224,), dtype="float32") = R.floor(lv6) + lv12: R.Tensor((224, 1), dtype="float32") = R.floor(lv10) + lv13: R.Tensor((224, 1), dtype="float32") = R.subtract(lv10, lv12) + lv14: R.Tensor((224, 1), dtype="float32") = R.clip( + lv13, R.prim_value(T.float64(0.0)), R.prim_value(T.float64(1.0)) + ) + lv15: R.Tensor((224,), dtype="float32") = R.subtract(lv6, lv11) + lv16: R.Tensor((224,), dtype="float32") = R.clip( + lv15, R.prim_value(T.float64(0.0)), R.prim_value(T.float64(1.0)) + ) + lv17: R.Tensor((224,), dtype="int64") = R.astype(lv11, dtype="int64") + lv18: R.Tensor((224, 1), dtype="int64") = R.astype(lv12, dtype="int64") + lv19: R.Tensor((224, 1), dtype="int64") = R.subtract(lv18, R.const(1, "int64")) + lv20: R.Tensor((224, 1), dtype="int64") = R.add(lv18, R.const(1, "int64")) + lv21: R.Tensor((224, 1), dtype="int64") = R.add(lv18, R.const(2, "int64")) + lv22: R.Tensor((224,), dtype="int64") = R.subtract(lv17, R.const(1, "int64")) + lv23: R.Tensor((224,), dtype="int64") = R.add(lv17, R.const(1, "int64")) + lv24: R.Tensor((224,), dtype="int64") = R.add(lv17, R.const(2, "int64")) + lv25: R.Tensor((224,), dtype="float32") = R.subtract(R.const(1.0, "float32"), lv16) + lv26: R.Tensor((448,), dtype="float32") = R.concat((lv16, lv25), axis=0) + lv27: R.Tensor((2, 224), dtype="float32") = R.reshape(lv26, R.shape([2, 224])) + lv28: R.Tensor((224,), dtype="float32") = R.add(lv16, R.const(1.0, "float32")) + lv29: R.Tensor((224,), dtype="float32") = R.subtract(R.const(2.0, "float32"), lv16) + lv30: R.Tensor((448,), dtype="float32") = R.concat((lv28, lv29), axis=0) + lv31: R.Tensor((2, 224), dtype="float32") = R.reshape(lv30, R.shape([2, 224])) + lv32: R.Tensor((2, 224), dtype="float32") = R.multiply( + lv31, R.const(-0.75, "float32") + ) + lv33: R.Tensor((2, 224), dtype="float32") = R.subtract( + lv32, R.const(-3.75, "float32") + ) + lv34: R.Tensor((2, 224), dtype="float32") = R.multiply(lv33, lv31) + lv35: R.Tensor((2, 224), dtype="float32") = R.add(lv34, R.const(-6.0, "float32")) + lv36: R.Tensor((2, 224), dtype="float32") = R.multiply(lv35, lv31) + lv37: R.Tensor((2, 224), dtype="float32") = R.subtract( + lv36, R.const(-3.0, "float32") + ) + lv38: R.Tensor((2, 224), dtype="float32") = R.multiply( + lv27, R.const(1.25, "float32") + ) + lv39: R.Tensor((2, 224), dtype="float32") = R.subtract( + lv38, R.const(2.25, "float32") + ) + lv40: R.Tensor((2, 224), dtype="float32") = R.multiply(lv39, lv27) + lv41: R.Tensor((2, 224), dtype="float32") = R.multiply(lv40, lv27) + lv42: R.Tensor((2, 224), dtype="float32") = R.add(lv41, R.const(1.0, "float32")) + lv43: R.Tensor((1, 224), dtype="float32") = R.strided_slice( + lv37, + (R.prim_value(0),), + (R.prim_value(0),), + (R.prim_value(1),), + (R.prim_value(1),), + assume_inbound=False, ) - gv: R.Tuple(R.Tensor((1, 3, 224, 224), dtype="float32")) = (lv,) + lv44: R.Tensor((1, 224), dtype="float32") = R.strided_slice( + lv37, + (R.prim_value(0),), + (R.prim_value(1),), + (R.prim_value(2),), + (R.prim_value(1),), + assume_inbound=False, + ) + lv45: R.Tensor((224,), dtype="float32") = R.squeeze(lv43, axis=[0]) + lv46: R.Tensor((224,), dtype="float32") = R.squeeze(lv44, axis=[0]) + lv47: R.Tensor((1, 224), dtype="float32") = R.strided_slice( + lv42, + (R.prim_value(0),), + (R.prim_value(0),), + (R.prim_value(1),), + (R.prim_value(1),), + assume_inbound=False, + ) + lv48: R.Tensor((1, 224), dtype="float32") = R.strided_slice( + lv42, + (R.prim_value(0),), + (R.prim_value(1),), + (R.prim_value(2),), + (R.prim_value(1),), + assume_inbound=False, + ) + lv49: R.Tensor((224,), dtype="float32") = R.squeeze(lv47, axis=[0]) + lv50: R.Tensor((224,), dtype="float32") = R.squeeze(lv48, axis=[0]) + lv51: R.Tensor((224, 1), dtype="float32") = R.subtract( + R.const(1.0, "float32"), lv14 + ) + lv52: R.Tensor((448, 1), dtype="float32") = R.concat((lv14, lv51), axis=0) + lv53: R.Tensor((2, 224, 1), dtype="float32") = R.reshape(lv52, R.shape([2, 224, 1])) + lv54: R.Tensor((224, 1), dtype="float32") = R.add(lv14, R.const(1.0, "float32")) + lv55: R.Tensor((224, 1), dtype="float32") = R.subtract( + R.const(2.0, "float32"), lv14 + ) + lv56: R.Tensor((448, 1), dtype="float32") = R.concat((lv54, lv55), axis=0) + lv57: R.Tensor((2, 224, 1), dtype="float32") = R.reshape(lv56, R.shape([2, 224, 1])) + lv58: R.Tensor((2, 224, 1), dtype="float32") = R.multiply( + lv57, R.const(-0.75, "float32") + ) + lv59: R.Tensor((2, 224, 1), dtype="float32") = R.subtract( + lv58, R.const(-3.75, "float32") + ) + lv60: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv59, lv57) + lv61: R.Tensor((2, 224, 1), dtype="float32") = R.add(lv60, R.const(-6.0, "float32")) + lv62: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv61, lv57) + lv63: R.Tensor((2, 224, 1), dtype="float32") = R.subtract( + lv62, R.const(-3.0, "float32") + ) + lv64: R.Tensor((2, 224, 1), dtype="float32") = R.multiply( + lv53, R.const(1.25, "float32") + ) + lv65: R.Tensor((2, 224, 1), dtype="float32") = R.subtract( + lv64, R.const(2.25, "float32") + ) + lv66: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv65, lv53) + lv67: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv66, lv53) + lv68: R.Tensor((2, 224, 1), dtype="float32") = R.add(lv67, R.const(1.0, "float32")) + lv69: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( + lv63, + (R.prim_value(0),), + (R.prim_value(0),), + (R.prim_value(1),), + (R.prim_value(1),), + assume_inbound=False, + ) + lv70: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( + lv63, + (R.prim_value(0),), + (R.prim_value(1),), + (R.prim_value(2),), + (R.prim_value(1),), + assume_inbound=False, + ) + lv71: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv69, axis=[0]) + lv72: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv70, axis=[0]) + lv73: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( + lv68, + (R.prim_value(0),), + (R.prim_value(0),), + (R.prim_value(1),), + (R.prim_value(1),), + assume_inbound=False, + ) + lv74: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( + lv68, + (R.prim_value(0),), + (R.prim_value(1),), + (R.prim_value(2),), + (R.prim_value(1),), + assume_inbound=False, + ) + lv75: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv73, axis=[0]) + lv76: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv74, axis=[0]) + lv77: R.Tensor((224, 1), dtype="int64") = R.clip( + lv19, R.prim_value(0), R.prim_value(111) + ) + lv78: R.Tensor((224,), dtype="int64") = R.clip( + lv22, R.prim_value(0), R.prim_value(111) + ) + lv79: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv78, axis=3, mode="fast" + ) + lv80: R.Tensor((224,), dtype="int64") = R.squeeze(lv77, axis=None) + lv81: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv79, lv80, axis=2, mode="fast" + ) + lv82: R.Tensor((224, 1), dtype="int64") = R.clip( + lv19, R.prim_value(0), R.prim_value(111) + ) + lv83: R.Tensor((224,), dtype="int64") = R.clip( + lv17, R.prim_value(0), R.prim_value(111) + ) + lv84: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv83, axis=3, mode="fast" + ) + lv85: R.Tensor((224,), dtype="int64") = R.squeeze(lv82, axis=None) + lv86: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv84, lv85, axis=2, mode="fast" + ) + lv87: R.Tensor((224, 1), dtype="int64") = R.clip( + lv19, R.prim_value(0), R.prim_value(111) + ) + lv88: R.Tensor((224,), dtype="int64") = R.clip( + lv23, R.prim_value(0), R.prim_value(111) + ) + lv89: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv88, axis=3, mode="fast" + ) + lv90: R.Tensor((224,), dtype="int64") = R.squeeze(lv87, axis=None) + lv91: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv89, lv90, axis=2, mode="fast" + ) + lv92: R.Tensor((224, 1), dtype="int64") = R.clip( + lv19, R.prim_value(0), R.prim_value(111) + ) + lv93: R.Tensor((224,), dtype="int64") = R.clip( + lv24, R.prim_value(0), R.prim_value(111) + ) + lv94: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv93, axis=3, mode="fast" + ) + lv95: R.Tensor((224,), dtype="int64") = R.squeeze(lv92, axis=None) + lv96: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv94, lv95, axis=2, mode="fast" + ) + lv97: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv81, lv45) + lv98: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv86, lv49) + lv99: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv97, lv98) + lv100: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv91, lv50) + lv101: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv99, lv100) + lv102: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv96, lv46) + lv103: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv101, lv102) + lv104: R.Tensor((224, 1), dtype="int64") = R.clip( + lv18, R.prim_value(0), R.prim_value(111) + ) + lv105: R.Tensor((224,), dtype="int64") = R.clip( + lv22, R.prim_value(0), R.prim_value(111) + ) + lv106: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv105, axis=3, mode="fast" + ) + lv107: R.Tensor((224,), dtype="int64") = R.squeeze(lv104, axis=None) + lv108: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv106, lv107, axis=2, mode="fast" + ) + lv109: R.Tensor((224, 1), dtype="int64") = R.clip( + lv18, R.prim_value(0), R.prim_value(111) + ) + lv110: R.Tensor((224,), dtype="int64") = R.clip( + lv17, R.prim_value(0), R.prim_value(111) + ) + lv111: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv110, axis=3, mode="fast" + ) + lv112: R.Tensor((224,), dtype="int64") = R.squeeze(lv109, axis=None) + lv113: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv111, lv112, axis=2, mode="fast" + ) + lv114: R.Tensor((224, 1), dtype="int64") = R.clip( + lv18, R.prim_value(0), R.prim_value(111) + ) + lv115: R.Tensor((224,), dtype="int64") = R.clip( + lv23, R.prim_value(0), R.prim_value(111) + ) + lv116: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv115, axis=3, mode="fast" + ) + lv117: R.Tensor((224,), dtype="int64") = R.squeeze(lv114, axis=None) + lv118: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv116, lv117, axis=2, mode="fast" + ) + lv119: R.Tensor((224, 1), dtype="int64") = R.clip( + lv18, R.prim_value(0), R.prim_value(111) + ) + lv120: R.Tensor((224,), dtype="int64") = R.clip( + lv24, R.prim_value(0), R.prim_value(111) + ) + lv121: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv120, axis=3, mode="fast" + ) + lv122: R.Tensor((224,), dtype="int64") = R.squeeze(lv119, axis=None) + lv123: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv121, lv122, axis=2, mode="fast" + ) + lv124: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv108, lv45) + lv125: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv113, lv49) + lv126: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv124, lv125) + lv127: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv118, lv50) + lv128: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv126, lv127) + lv129: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv123, lv46) + lv130: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv128, lv129) + lv131: R.Tensor((224, 1), dtype="int64") = R.clip( + lv20, R.prim_value(0), R.prim_value(111) + ) + lv132: R.Tensor((224,), dtype="int64") = R.clip( + lv22, R.prim_value(0), R.prim_value(111) + ) + lv133: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv132, axis=3, mode="fast" + ) + lv134: R.Tensor((224,), dtype="int64") = R.squeeze(lv131, axis=None) + lv135: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv133, lv134, axis=2, mode="fast" + ) + lv136: R.Tensor((224, 1), dtype="int64") = R.clip( + lv20, R.prim_value(0), R.prim_value(111) + ) + lv137: R.Tensor((224,), dtype="int64") = R.clip( + lv17, R.prim_value(0), R.prim_value(111) + ) + lv138: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv137, axis=3, mode="fast" + ) + lv139: R.Tensor((224,), dtype="int64") = R.squeeze(lv136, axis=None) + lv140: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv138, lv139, axis=2, mode="fast" + ) + lv141: R.Tensor((224, 1), dtype="int64") = R.clip( + lv20, R.prim_value(0), R.prim_value(111) + ) + lv142: R.Tensor((224,), dtype="int64") = R.clip( + lv23, R.prim_value(0), R.prim_value(111) + ) + lv143: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv142, axis=3, mode="fast" + ) + lv144: R.Tensor((224,), dtype="int64") = R.squeeze(lv141, axis=None) + lv145: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv143, lv144, axis=2, mode="fast" + ) + lv146: R.Tensor((224, 1), dtype="int64") = R.clip( + lv20, R.prim_value(0), R.prim_value(111) + ) + lv147: R.Tensor((224,), dtype="int64") = R.clip( + lv24, R.prim_value(0), R.prim_value(111) + ) + lv148: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv147, axis=3, mode="fast" + ) + lv149: R.Tensor((224,), dtype="int64") = R.squeeze(lv146, axis=None) + lv150: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv148, lv149, axis=2, mode="fast" + ) + lv151: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv135, lv45) + lv152: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv140, lv49) + lv153: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv151, lv152) + lv154: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv145, lv50) + lv155: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv153, lv154) + lv156: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv150, lv46) + lv157: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv155, lv156) + lv158: R.Tensor((224, 1), dtype="int64") = R.clip( + lv21, R.prim_value(0), R.prim_value(111) + ) + lv159: R.Tensor((224,), dtype="int64") = R.clip( + lv22, R.prim_value(0), R.prim_value(111) + ) + lv160: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv159, axis=3, mode="fast" + ) + lv161: R.Tensor((224,), dtype="int64") = R.squeeze(lv158, axis=None) + lv162: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv160, lv161, axis=2, mode="fast" + ) + lv163: R.Tensor((224, 1), dtype="int64") = R.clip( + lv21, R.prim_value(0), R.prim_value(111) + ) + lv164: R.Tensor((224,), dtype="int64") = R.clip( + lv17, R.prim_value(0), R.prim_value(111) + ) + lv165: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv164, axis=3, mode="fast" + ) + lv166: R.Tensor((224,), dtype="int64") = R.squeeze(lv163, axis=None) + lv167: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv165, lv166, axis=2, mode="fast" + ) + lv168: R.Tensor((224, 1), dtype="int64") = R.clip( + lv21, R.prim_value(0), R.prim_value(111) + ) + lv169: R.Tensor((224,), dtype="int64") = R.clip( + lv23, R.prim_value(0), R.prim_value(111) + ) + lv170: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv169, axis=3, mode="fast" + ) + lv171: R.Tensor((224,), dtype="int64") = R.squeeze(lv168, axis=None) + lv172: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv170, lv171, axis=2, mode="fast" + ) + lv173: R.Tensor((224, 1), dtype="int64") = R.clip( + lv21, R.prim_value(0), R.prim_value(111) + ) + lv174: R.Tensor((224,), dtype="int64") = R.clip( + lv24, R.prim_value(0), R.prim_value(111) + ) + lv175: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + input, lv174, axis=3, mode="fast" + ) + lv176: R.Tensor((224,), dtype="int64") = R.squeeze(lv173, axis=None) + lv177: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv175, lv176, axis=2, mode="fast" + ) + lv178: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv162, lv45) + lv179: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv167, lv49) + lv180: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv178, lv179) + lv181: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv172, lv50) + lv182: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv180, lv181) + lv183: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv177, lv46) + lv184: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv182, lv183) + lv185: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv103, lv71) + lv186: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv130, lv75) + lv187: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv185, lv186) + lv188: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv157, lv76) + lv189: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv187, lv188) + lv190: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv184, lv72) + lv191: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv189, lv190) + gv: R.Tuple(R.Tensor((1, 3, 224, 224), dtype="float32")) = (lv191,) R.output(gv) return gv @@ -4100,7 +4494,7 @@ def main( InterpolateNearest(), example_args, {}, expected_nearest, run_ep_decomposition=True ) verify_model( - InterpolateBicubic(), example_args, {}, expected_bicubic, run_ep_decomposition=False + InterpolateBicubic(), example_args, {}, expected_bicubic, run_ep_decomposition=True ) From 9e875320092a0c6ee06e9358cff17f58365b7014 Mon Sep 17 00:00:00 2001 From: "Guan-Ming (Wesley) Chiu" <105915352+guan404ming@users.noreply.github.com> Date: Tue, 18 Nov 2025 14:06:35 +0800 Subject: [PATCH 3/3] Update tests --- .../test_frontend_from_exported_program.py | 552 +++++++++--------- 1 file changed, 280 insertions(+), 272 deletions(-) diff --git a/tests/python/relax/test_frontend_from_exported_program.py b/tests/python/relax/test_frontend_from_exported_program.py index c7ee0490568c..92c5ab026750 100644 --- a/tests/python/relax/test_frontend_from_exported_program.py +++ b/tests/python/relax/test_frontend_from_exported_program.py @@ -4074,415 +4074,423 @@ def main( input: R.Tensor((1, 3, 112, 112), dtype="float32") ) -> R.Tuple(R.Tensor((1, 3, 224, 224), dtype="float32")): with R.dataflow(): - lv: R.Tensor((224,), dtype="int64") = R.arange( - R.prim_value(0), R.prim_value(224), R.prim_value(1), dtype="int64" - ) - lv1: R.Tensor((224,), dtype="float32") = R.astype(lv, dtype="float32") + lv: R.Tensor((1, 3, 112, 112), dtype="float32") = R.astype(input, dtype="float32") + lv1: R.Tensor((1, 3, 112, 112), dtype="float32") = R.astype(lv, dtype="float32") lv2: R.Tensor((224,), dtype="int64") = R.arange( R.prim_value(0), R.prim_value(224), R.prim_value(1), dtype="int64" ) lv3: R.Tensor((224,), dtype="float32") = R.astype(lv2, dtype="float32") - lv4: R.Tensor((224,), dtype="float32") = R.add(lv3, R.const(0.5, "float32")) - lv5: R.Tensor((224,), dtype="float32") = R.multiply(lv4, R.const(0.5, "float32")) - lv6: R.Tensor((224,), dtype="float32") = R.subtract(lv5, R.const(0.5, "float32")) - lv7: R.Tensor((224,), dtype="float32") = R.add(lv1, R.const(0.5, "float32")) - lv8: R.Tensor((224,), dtype="float32") = R.multiply(lv7, R.const(0.5, "float32")) - lv9: R.Tensor((224,), dtype="float32") = R.subtract(lv8, R.const(0.5, "float32")) - lv10: R.Tensor((224, 1), dtype="float32") = R.expand_dims(lv9, axis=[-1]) - lv11: R.Tensor((224,), dtype="float32") = R.floor(lv6) - lv12: R.Tensor((224, 1), dtype="float32") = R.floor(lv10) - lv13: R.Tensor((224, 1), dtype="float32") = R.subtract(lv10, lv12) - lv14: R.Tensor((224, 1), dtype="float32") = R.clip( - lv13, R.prim_value(T.float64(0.0)), R.prim_value(T.float64(1.0)) - ) - lv15: R.Tensor((224,), dtype="float32") = R.subtract(lv6, lv11) - lv16: R.Tensor((224,), dtype="float32") = R.clip( - lv15, R.prim_value(T.float64(0.0)), R.prim_value(T.float64(1.0)) + lv4: R.Tensor((224,), dtype="int64") = R.arange( + R.prim_value(0), R.prim_value(224), R.prim_value(1), dtype="int64" ) - lv17: R.Tensor((224,), dtype="int64") = R.astype(lv11, dtype="int64") - lv18: R.Tensor((224, 1), dtype="int64") = R.astype(lv12, dtype="int64") - lv19: R.Tensor((224, 1), dtype="int64") = R.subtract(lv18, R.const(1, "int64")) - lv20: R.Tensor((224, 1), dtype="int64") = R.add(lv18, R.const(1, "int64")) - lv21: R.Tensor((224, 1), dtype="int64") = R.add(lv18, R.const(2, "int64")) - lv22: R.Tensor((224,), dtype="int64") = R.subtract(lv17, R.const(1, "int64")) - lv23: R.Tensor((224,), dtype="int64") = R.add(lv17, R.const(1, "int64")) - lv24: R.Tensor((224,), dtype="int64") = R.add(lv17, R.const(2, "int64")) - lv25: R.Tensor((224,), dtype="float32") = R.subtract(R.const(1.0, "float32"), lv16) - lv26: R.Tensor((448,), dtype="float32") = R.concat((lv16, lv25), axis=0) - lv27: R.Tensor((2, 224), dtype="float32") = R.reshape(lv26, R.shape([2, 224])) - lv28: R.Tensor((224,), dtype="float32") = R.add(lv16, R.const(1.0, "float32")) - lv29: R.Tensor((224,), dtype="float32") = R.subtract(R.const(2.0, "float32"), lv16) - lv30: R.Tensor((448,), dtype="float32") = R.concat((lv28, lv29), axis=0) - lv31: R.Tensor((2, 224), dtype="float32") = R.reshape(lv30, R.shape([2, 224])) - lv32: R.Tensor((2, 224), dtype="float32") = R.multiply( - lv31, R.const(-0.75, "float32") - ) - lv33: R.Tensor((2, 224), dtype="float32") = R.subtract( - lv32, R.const(-3.75, "float32") - ) - lv34: R.Tensor((2, 224), dtype="float32") = R.multiply(lv33, lv31) - lv35: R.Tensor((2, 224), dtype="float32") = R.add(lv34, R.const(-6.0, "float32")) - lv36: R.Tensor((2, 224), dtype="float32") = R.multiply(lv35, lv31) - lv37: R.Tensor((2, 224), dtype="float32") = R.subtract( - lv36, R.const(-3.0, "float32") - ) - lv38: R.Tensor((2, 224), dtype="float32") = R.multiply( - lv27, R.const(1.25, "float32") + lv5: R.Tensor((224,), dtype="float32") = R.astype(lv4, dtype="float32") + lv6: R.Tensor((224,), dtype="float32") = R.add(lv5, R.const(0.5, "float32")) + lv7: R.Tensor((224,), dtype="float32") = R.multiply(lv6, R.const(0.5, "float32")) + lv8: R.Tensor((224,), dtype="float32") = R.subtract(lv7, R.const(0.5, "float32")) + lv9: R.Tensor((224,), dtype="float32") = R.add(lv3, R.const(0.5, "float32")) + lv10: R.Tensor((224,), dtype="float32") = R.multiply(lv9, R.const(0.5, "float32")) + lv11: R.Tensor((224,), dtype="float32") = R.subtract(lv10, R.const(0.5, "float32")) + lv12: R.Tensor((224, 1), dtype="float32") = R.expand_dims(lv11, axis=[-1]) + lv13: R.Tensor((224,), dtype="float32") = R.floor(lv8) + lv14: R.Tensor((224, 1), dtype="float32") = R.floor(lv12) + lv15: R.Tensor((224, 1), dtype="float32") = R.subtract(lv12, lv14) + lv16: R.Tensor((224, 1), dtype="float32") = R.clip( + lv15, R.prim_value(T.float64(0.0)), R.prim_value(T.float64(1.0)) ) + lv17: R.Tensor((224,), dtype="float32") = R.subtract(lv8, lv13) + lv18: R.Tensor((224,), dtype="float32") = R.clip( + lv17, R.prim_value(T.float64(0.0)), R.prim_value(T.float64(1.0)) + ) + lv19: R.Tensor((224,), dtype="int64") = R.astype(lv13, dtype="int64") + lv20: R.Tensor((224, 1), dtype="int64") = R.astype(lv14, dtype="int64") + lv21: R.Tensor((224, 1), dtype="int64") = R.subtract(lv20, R.const(1, "int64")) + lv22: R.Tensor((224, 1), dtype="int64") = R.add(lv20, R.const(1, "int64")) + lv23: R.Tensor((224, 1), dtype="int64") = R.add(lv20, R.const(2, "int64")) + lv24: R.Tensor((224,), dtype="int64") = R.subtract(lv19, R.const(1, "int64")) + lv25: R.Tensor((224,), dtype="int64") = R.add(lv19, R.const(1, "int64")) + lv26: R.Tensor((224,), dtype="int64") = R.add(lv19, R.const(2, "int64")) + lv27: R.Tensor((224,), dtype="float32") = R.subtract(R.const(1.0, "float32"), lv18) + lv28: R.Tensor((448,), dtype="float32") = R.concat((lv18, lv27), axis=0) + lv29: R.Tensor((2, 224), dtype="float32") = R.reshape(lv28, R.shape([2, 224])) + lv30: R.Tensor((224,), dtype="float32") = R.add(lv18, R.const(1.0, "float32")) + lv31: R.Tensor((224,), dtype="float32") = R.subtract(R.const(2.0, "float32"), lv18) + lv32: R.Tensor((448,), dtype="float32") = R.concat((lv30, lv31), axis=0) + lv33: R.Tensor((2, 224), dtype="float32") = R.reshape(lv32, R.shape([2, 224])) + lv34: R.Tensor((2, 224), dtype="float32") = R.multiply( + lv33, R.const(-0.75, "float32") + ) + lv35: R.Tensor((2, 224), dtype="float32") = R.subtract( + lv34, R.const(-3.75, "float32") + ) + lv36: R.Tensor((2, 224), dtype="float32") = R.multiply(lv35, lv33) + lv37: R.Tensor((2, 224), dtype="float32") = R.add(lv36, R.const(-6.0, "float32")) + lv38: R.Tensor((2, 224), dtype="float32") = R.multiply(lv37, lv33) lv39: R.Tensor((2, 224), dtype="float32") = R.subtract( - lv38, R.const(2.25, "float32") + lv38, R.const(-3.0, "float32") + ) + lv40: R.Tensor((2, 224), dtype="float32") = R.multiply( + lv29, R.const(1.25, "float32") ) - lv40: R.Tensor((2, 224), dtype="float32") = R.multiply(lv39, lv27) - lv41: R.Tensor((2, 224), dtype="float32") = R.multiply(lv40, lv27) - lv42: R.Tensor((2, 224), dtype="float32") = R.add(lv41, R.const(1.0, "float32")) - lv43: R.Tensor((1, 224), dtype="float32") = R.strided_slice( - lv37, + lv41: R.Tensor((2, 224), dtype="float32") = R.subtract( + lv40, R.const(2.25, "float32") + ) + lv42: R.Tensor((2, 224), dtype="float32") = R.multiply(lv41, lv29) + lv43: R.Tensor((2, 224), dtype="float32") = R.multiply(lv42, lv29) + lv44: R.Tensor((2, 224), dtype="float32") = R.add(lv43, R.const(1.0, "float32")) + lv45: R.Tensor((1, 224), dtype="float32") = R.strided_slice( + lv39, (R.prim_value(0),), (R.prim_value(0),), (R.prim_value(1),), (R.prim_value(1),), assume_inbound=False, ) - lv44: R.Tensor((1, 224), dtype="float32") = R.strided_slice( - lv37, + lv46: R.Tensor((1, 224), dtype="float32") = R.strided_slice( + lv39, (R.prim_value(0),), (R.prim_value(1),), (R.prim_value(2),), (R.prim_value(1),), assume_inbound=False, ) - lv45: R.Tensor((224,), dtype="float32") = R.squeeze(lv43, axis=[0]) - lv46: R.Tensor((224,), dtype="float32") = R.squeeze(lv44, axis=[0]) - lv47: R.Tensor((1, 224), dtype="float32") = R.strided_slice( - lv42, + lv47: R.Tensor((224,), dtype="float32") = R.squeeze(lv45, axis=[0]) + lv48: R.Tensor((224,), dtype="float32") = R.squeeze(lv46, axis=[0]) + lv49: R.Tensor((1, 224), dtype="float32") = R.strided_slice( + lv44, (R.prim_value(0),), (R.prim_value(0),), (R.prim_value(1),), (R.prim_value(1),), assume_inbound=False, ) - lv48: R.Tensor((1, 224), dtype="float32") = R.strided_slice( - lv42, + lv50: R.Tensor((1, 224), dtype="float32") = R.strided_slice( + lv44, (R.prim_value(0),), (R.prim_value(1),), (R.prim_value(2),), (R.prim_value(1),), assume_inbound=False, ) - lv49: R.Tensor((224,), dtype="float32") = R.squeeze(lv47, axis=[0]) - lv50: R.Tensor((224,), dtype="float32") = R.squeeze(lv48, axis=[0]) - lv51: R.Tensor((224, 1), dtype="float32") = R.subtract( - R.const(1.0, "float32"), lv14 + lv51: R.Tensor((224,), dtype="float32") = R.squeeze(lv49, axis=[0]) + lv52: R.Tensor((224,), dtype="float32") = R.squeeze(lv50, axis=[0]) + lv53: R.Tensor((224, 1), dtype="float32") = R.subtract( + R.const(1.0, "float32"), lv16 ) - lv52: R.Tensor((448, 1), dtype="float32") = R.concat((lv14, lv51), axis=0) - lv53: R.Tensor((2, 224, 1), dtype="float32") = R.reshape(lv52, R.shape([2, 224, 1])) - lv54: R.Tensor((224, 1), dtype="float32") = R.add(lv14, R.const(1.0, "float32")) - lv55: R.Tensor((224, 1), dtype="float32") = R.subtract( - R.const(2.0, "float32"), lv14 + lv54: R.Tensor((448, 1), dtype="float32") = R.concat((lv16, lv53), axis=0) + lv55: R.Tensor((2, 224, 1), dtype="float32") = R.reshape(lv54, R.shape([2, 224, 1])) + lv56: R.Tensor((224, 1), dtype="float32") = R.add(lv16, R.const(1.0, "float32")) + lv57: R.Tensor((224, 1), dtype="float32") = R.subtract( + R.const(2.0, "float32"), lv16 ) - lv56: R.Tensor((448, 1), dtype="float32") = R.concat((lv54, lv55), axis=0) - lv57: R.Tensor((2, 224, 1), dtype="float32") = R.reshape(lv56, R.shape([2, 224, 1])) - lv58: R.Tensor((2, 224, 1), dtype="float32") = R.multiply( - lv57, R.const(-0.75, "float32") + lv58: R.Tensor((448, 1), dtype="float32") = R.concat((lv56, lv57), axis=0) + lv59: R.Tensor((2, 224, 1), dtype="float32") = R.reshape(lv58, R.shape([2, 224, 1])) + lv60: R.Tensor((2, 224, 1), dtype="float32") = R.multiply( + lv59, R.const(-0.75, "float32") ) - lv59: R.Tensor((2, 224, 1), dtype="float32") = R.subtract( - lv58, R.const(-3.75, "float32") + lv61: R.Tensor((2, 224, 1), dtype="float32") = R.subtract( + lv60, R.const(-3.75, "float32") ) - lv60: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv59, lv57) - lv61: R.Tensor((2, 224, 1), dtype="float32") = R.add(lv60, R.const(-6.0, "float32")) - lv62: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv61, lv57) - lv63: R.Tensor((2, 224, 1), dtype="float32") = R.subtract( - lv62, R.const(-3.0, "float32") + lv62: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv61, lv59) + lv63: R.Tensor((2, 224, 1), dtype="float32") = R.add(lv62, R.const(-6.0, "float32")) + lv64: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv63, lv59) + lv65: R.Tensor((2, 224, 1), dtype="float32") = R.subtract( + lv64, R.const(-3.0, "float32") ) - lv64: R.Tensor((2, 224, 1), dtype="float32") = R.multiply( - lv53, R.const(1.25, "float32") + lv66: R.Tensor((2, 224, 1), dtype="float32") = R.multiply( + lv55, R.const(1.25, "float32") ) - lv65: R.Tensor((2, 224, 1), dtype="float32") = R.subtract( - lv64, R.const(2.25, "float32") + lv67: R.Tensor((2, 224, 1), dtype="float32") = R.subtract( + lv66, R.const(2.25, "float32") ) - lv66: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv65, lv53) - lv67: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv66, lv53) - lv68: R.Tensor((2, 224, 1), dtype="float32") = R.add(lv67, R.const(1.0, "float32")) - lv69: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( - lv63, + lv68: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv67, lv55) + lv69: R.Tensor((2, 224, 1), dtype="float32") = R.multiply(lv68, lv55) + lv70: R.Tensor((2, 224, 1), dtype="float32") = R.add(lv69, R.const(1.0, "float32")) + lv71: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( + lv65, (R.prim_value(0),), (R.prim_value(0),), (R.prim_value(1),), (R.prim_value(1),), assume_inbound=False, ) - lv70: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( - lv63, + lv72: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( + lv65, (R.prim_value(0),), (R.prim_value(1),), (R.prim_value(2),), (R.prim_value(1),), assume_inbound=False, ) - lv71: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv69, axis=[0]) - lv72: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv70, axis=[0]) - lv73: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( - lv68, + lv73: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv71, axis=[0]) + lv74: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv72, axis=[0]) + lv75: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( + lv70, (R.prim_value(0),), (R.prim_value(0),), (R.prim_value(1),), (R.prim_value(1),), assume_inbound=False, ) - lv74: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( - lv68, + lv76: R.Tensor((1, 224, 1), dtype="float32") = R.strided_slice( + lv70, (R.prim_value(0),), (R.prim_value(1),), (R.prim_value(2),), (R.prim_value(1),), assume_inbound=False, ) - lv75: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv73, axis=[0]) - lv76: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv74, axis=[0]) - lv77: R.Tensor((224, 1), dtype="int64") = R.clip( - lv19, R.prim_value(0), R.prim_value(111) + lv77: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv75, axis=[0]) + lv78: R.Tensor((224, 1), dtype="float32") = R.squeeze(lv76, axis=[0]) + lv79: R.Tensor((224, 1), dtype="int64") = R.clip( + lv21, R.prim_value(0), R.prim_value(111) ) - lv78: R.Tensor((224,), dtype="int64") = R.clip( - lv22, R.prim_value(0), R.prim_value(111) + lv80: R.Tensor((224,), dtype="int64") = R.clip( + lv24, R.prim_value(0), R.prim_value(111) ) - lv79: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv78, axis=3, mode="fast" + lv81: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv80, axis=3, mode="fast" ) - lv80: R.Tensor((224,), dtype="int64") = R.squeeze(lv77, axis=None) - lv81: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv79, lv80, axis=2, mode="fast" + lv82: R.Tensor((224,), dtype="int64") = R.squeeze(lv79, axis=None) + lv83: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv81, lv82, axis=2, mode="fast" ) - lv82: R.Tensor((224, 1), dtype="int64") = R.clip( - lv19, R.prim_value(0), R.prim_value(111) + lv84: R.Tensor((224, 1), dtype="int64") = R.clip( + lv21, R.prim_value(0), R.prim_value(111) ) - lv83: R.Tensor((224,), dtype="int64") = R.clip( - lv17, R.prim_value(0), R.prim_value(111) + lv85: R.Tensor((224,), dtype="int64") = R.clip( + lv19, R.prim_value(0), R.prim_value(111) ) - lv84: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv83, axis=3, mode="fast" + lv86: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv85, axis=3, mode="fast" ) - lv85: R.Tensor((224,), dtype="int64") = R.squeeze(lv82, axis=None) - lv86: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv84, lv85, axis=2, mode="fast" + lv87: R.Tensor((224,), dtype="int64") = R.squeeze(lv84, axis=None) + lv88: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv86, lv87, axis=2, mode="fast" ) - lv87: R.Tensor((224, 1), dtype="int64") = R.clip( - lv19, R.prim_value(0), R.prim_value(111) + lv89: R.Tensor((224, 1), dtype="int64") = R.clip( + lv21, R.prim_value(0), R.prim_value(111) ) - lv88: R.Tensor((224,), dtype="int64") = R.clip( - lv23, R.prim_value(0), R.prim_value(111) + lv90: R.Tensor((224,), dtype="int64") = R.clip( + lv25, R.prim_value(0), R.prim_value(111) ) - lv89: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv88, axis=3, mode="fast" + lv91: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv90, axis=3, mode="fast" ) - lv90: R.Tensor((224,), dtype="int64") = R.squeeze(lv87, axis=None) - lv91: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv89, lv90, axis=2, mode="fast" + lv92: R.Tensor((224,), dtype="int64") = R.squeeze(lv89, axis=None) + lv93: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv91, lv92, axis=2, mode="fast" ) - lv92: R.Tensor((224, 1), dtype="int64") = R.clip( - lv19, R.prim_value(0), R.prim_value(111) + lv94: R.Tensor((224, 1), dtype="int64") = R.clip( + lv21, R.prim_value(0), R.prim_value(111) ) - lv93: R.Tensor((224,), dtype="int64") = R.clip( - lv24, R.prim_value(0), R.prim_value(111) + lv95: R.Tensor((224,), dtype="int64") = R.clip( + lv26, R.prim_value(0), R.prim_value(111) ) - lv94: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv93, axis=3, mode="fast" + lv96: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv95, axis=3, mode="fast" ) - lv95: R.Tensor((224,), dtype="int64") = R.squeeze(lv92, axis=None) - lv96: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv94, lv95, axis=2, mode="fast" + lv97: R.Tensor((224,), dtype="int64") = R.squeeze(lv94, axis=None) + lv98: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv96, lv97, axis=2, mode="fast" ) - lv97: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv81, lv45) - lv98: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv86, lv49) - lv99: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv97, lv98) - lv100: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv91, lv50) + lv99: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv83, lv47) + lv100: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv88, lv51) lv101: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv99, lv100) - lv102: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv96, lv46) + lv102: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv93, lv52) lv103: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv101, lv102) - lv104: R.Tensor((224, 1), dtype="int64") = R.clip( - lv18, R.prim_value(0), R.prim_value(111) + lv104: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv98, lv48) + lv105: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv103, lv104) + lv106: R.Tensor((224, 1), dtype="int64") = R.clip( + lv20, R.prim_value(0), R.prim_value(111) ) - lv105: R.Tensor((224,), dtype="int64") = R.clip( - lv22, R.prim_value(0), R.prim_value(111) + lv107: R.Tensor((224,), dtype="int64") = R.clip( + lv24, R.prim_value(0), R.prim_value(111) ) - lv106: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv105, axis=3, mode="fast" + lv108: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv107, axis=3, mode="fast" ) - lv107: R.Tensor((224,), dtype="int64") = R.squeeze(lv104, axis=None) - lv108: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv106, lv107, axis=2, mode="fast" + lv109: R.Tensor((224,), dtype="int64") = R.squeeze(lv106, axis=None) + lv110: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv108, lv109, axis=2, mode="fast" ) - lv109: R.Tensor((224, 1), dtype="int64") = R.clip( - lv18, R.prim_value(0), R.prim_value(111) + lv111: R.Tensor((224, 1), dtype="int64") = R.clip( + lv20, R.prim_value(0), R.prim_value(111) ) - lv110: R.Tensor((224,), dtype="int64") = R.clip( - lv17, R.prim_value(0), R.prim_value(111) + lv112: R.Tensor((224,), dtype="int64") = R.clip( + lv19, R.prim_value(0), R.prim_value(111) ) - lv111: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv110, axis=3, mode="fast" + lv113: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv112, axis=3, mode="fast" ) - lv112: R.Tensor((224,), dtype="int64") = R.squeeze(lv109, axis=None) - lv113: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv111, lv112, axis=2, mode="fast" + lv114: R.Tensor((224,), dtype="int64") = R.squeeze(lv111, axis=None) + lv115: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv113, lv114, axis=2, mode="fast" ) - lv114: R.Tensor((224, 1), dtype="int64") = R.clip( - lv18, R.prim_value(0), R.prim_value(111) + lv116: R.Tensor((224, 1), dtype="int64") = R.clip( + lv20, R.prim_value(0), R.prim_value(111) ) - lv115: R.Tensor((224,), dtype="int64") = R.clip( - lv23, R.prim_value(0), R.prim_value(111) + lv117: R.Tensor((224,), dtype="int64") = R.clip( + lv25, R.prim_value(0), R.prim_value(111) ) - lv116: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv115, axis=3, mode="fast" + lv118: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv117, axis=3, mode="fast" ) - lv117: R.Tensor((224,), dtype="int64") = R.squeeze(lv114, axis=None) - lv118: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv116, lv117, axis=2, mode="fast" + lv119: R.Tensor((224,), dtype="int64") = R.squeeze(lv116, axis=None) + lv120: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv118, lv119, axis=2, mode="fast" ) - lv119: R.Tensor((224, 1), dtype="int64") = R.clip( - lv18, R.prim_value(0), R.prim_value(111) + lv121: R.Tensor((224, 1), dtype="int64") = R.clip( + lv20, R.prim_value(0), R.prim_value(111) ) - lv120: R.Tensor((224,), dtype="int64") = R.clip( - lv24, R.prim_value(0), R.prim_value(111) + lv122: R.Tensor((224,), dtype="int64") = R.clip( + lv26, R.prim_value(0), R.prim_value(111) ) - lv121: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv120, axis=3, mode="fast" + lv123: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv122, axis=3, mode="fast" ) - lv122: R.Tensor((224,), dtype="int64") = R.squeeze(lv119, axis=None) - lv123: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv121, lv122, axis=2, mode="fast" + lv124: R.Tensor((224,), dtype="int64") = R.squeeze(lv121, axis=None) + lv125: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv123, lv124, axis=2, mode="fast" ) - lv124: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv108, lv45) - lv125: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv113, lv49) - lv126: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv124, lv125) - lv127: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv118, lv50) + lv126: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv110, lv47) + lv127: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv115, lv51) lv128: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv126, lv127) - lv129: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv123, lv46) + lv129: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv120, lv52) lv130: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv128, lv129) - lv131: R.Tensor((224, 1), dtype="int64") = R.clip( - lv20, R.prim_value(0), R.prim_value(111) - ) - lv132: R.Tensor((224,), dtype="int64") = R.clip( + lv131: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv125, lv48) + lv132: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv130, lv131) + lv133: R.Tensor((224, 1), dtype="int64") = R.clip( lv22, R.prim_value(0), R.prim_value(111) ) - lv133: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv132, axis=3, mode="fast" + lv134: R.Tensor((224,), dtype="int64") = R.clip( + lv24, R.prim_value(0), R.prim_value(111) ) - lv134: R.Tensor((224,), dtype="int64") = R.squeeze(lv131, axis=None) - lv135: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv133, lv134, axis=2, mode="fast" + lv135: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv134, axis=3, mode="fast" ) - lv136: R.Tensor((224, 1), dtype="int64") = R.clip( - lv20, R.prim_value(0), R.prim_value(111) + lv136: R.Tensor((224,), dtype="int64") = R.squeeze(lv133, axis=None) + lv137: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv135, lv136, axis=2, mode="fast" ) - lv137: R.Tensor((224,), dtype="int64") = R.clip( - lv17, R.prim_value(0), R.prim_value(111) + lv138: R.Tensor((224, 1), dtype="int64") = R.clip( + lv22, R.prim_value(0), R.prim_value(111) ) - lv138: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv137, axis=3, mode="fast" + lv139: R.Tensor((224,), dtype="int64") = R.clip( + lv19, R.prim_value(0), R.prim_value(111) ) - lv139: R.Tensor((224,), dtype="int64") = R.squeeze(lv136, axis=None) - lv140: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv138, lv139, axis=2, mode="fast" + lv140: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv139, axis=3, mode="fast" ) - lv141: R.Tensor((224, 1), dtype="int64") = R.clip( - lv20, R.prim_value(0), R.prim_value(111) + lv141: R.Tensor((224,), dtype="int64") = R.squeeze(lv138, axis=None) + lv142: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv140, lv141, axis=2, mode="fast" ) - lv142: R.Tensor((224,), dtype="int64") = R.clip( - lv23, R.prim_value(0), R.prim_value(111) + lv143: R.Tensor((224, 1), dtype="int64") = R.clip( + lv22, R.prim_value(0), R.prim_value(111) ) - lv143: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv142, axis=3, mode="fast" + lv144: R.Tensor((224,), dtype="int64") = R.clip( + lv25, R.prim_value(0), R.prim_value(111) ) - lv144: R.Tensor((224,), dtype="int64") = R.squeeze(lv141, axis=None) - lv145: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv143, lv144, axis=2, mode="fast" + lv145: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv144, axis=3, mode="fast" ) - lv146: R.Tensor((224, 1), dtype="int64") = R.clip( - lv20, R.prim_value(0), R.prim_value(111) + lv146: R.Tensor((224,), dtype="int64") = R.squeeze(lv143, axis=None) + lv147: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv145, lv146, axis=2, mode="fast" ) - lv147: R.Tensor((224,), dtype="int64") = R.clip( - lv24, R.prim_value(0), R.prim_value(111) + lv148: R.Tensor((224, 1), dtype="int64") = R.clip( + lv22, R.prim_value(0), R.prim_value(111) + ) + lv149: R.Tensor((224,), dtype="int64") = R.clip( + lv26, R.prim_value(0), R.prim_value(111) ) - lv148: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv147, axis=3, mode="fast" + lv150: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv149, axis=3, mode="fast" ) - lv149: R.Tensor((224,), dtype="int64") = R.squeeze(lv146, axis=None) - lv150: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv148, lv149, axis=2, mode="fast" + lv151: R.Tensor((224,), dtype="int64") = R.squeeze(lv148, axis=None) + lv152: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv150, lv151, axis=2, mode="fast" ) - lv151: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv135, lv45) - lv152: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv140, lv49) - lv153: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv151, lv152) - lv154: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv145, lv50) + lv153: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv137, lv47) + lv154: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv142, lv51) lv155: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv153, lv154) - lv156: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv150, lv46) + lv156: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv147, lv52) lv157: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv155, lv156) - lv158: R.Tensor((224, 1), dtype="int64") = R.clip( - lv21, R.prim_value(0), R.prim_value(111) + lv158: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv152, lv48) + lv159: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv157, lv158) + lv160: R.Tensor((224, 1), dtype="int64") = R.clip( + lv23, R.prim_value(0), R.prim_value(111) ) - lv159: R.Tensor((224,), dtype="int64") = R.clip( - lv22, R.prim_value(0), R.prim_value(111) + lv161: R.Tensor((224,), dtype="int64") = R.clip( + lv24, R.prim_value(0), R.prim_value(111) ) - lv160: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv159, axis=3, mode="fast" + lv162: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv161, axis=3, mode="fast" ) - lv161: R.Tensor((224,), dtype="int64") = R.squeeze(lv158, axis=None) - lv162: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv160, lv161, axis=2, mode="fast" + lv163: R.Tensor((224,), dtype="int64") = R.squeeze(lv160, axis=None) + lv164: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv162, lv163, axis=2, mode="fast" ) - lv163: R.Tensor((224, 1), dtype="int64") = R.clip( - lv21, R.prim_value(0), R.prim_value(111) - ) - lv164: R.Tensor((224,), dtype="int64") = R.clip( - lv17, R.prim_value(0), R.prim_value(111) + lv165: R.Tensor((224, 1), dtype="int64") = R.clip( + lv23, R.prim_value(0), R.prim_value(111) ) - lv165: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv164, axis=3, mode="fast" + lv166: R.Tensor((224,), dtype="int64") = R.clip( + lv19, R.prim_value(0), R.prim_value(111) ) - lv166: R.Tensor((224,), dtype="int64") = R.squeeze(lv163, axis=None) - lv167: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv165, lv166, axis=2, mode="fast" + lv167: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv166, axis=3, mode="fast" ) - lv168: R.Tensor((224, 1), dtype="int64") = R.clip( - lv21, R.prim_value(0), R.prim_value(111) + lv168: R.Tensor((224,), dtype="int64") = R.squeeze(lv165, axis=None) + lv169: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv167, lv168, axis=2, mode="fast" ) - lv169: R.Tensor((224,), dtype="int64") = R.clip( + lv170: R.Tensor((224, 1), dtype="int64") = R.clip( lv23, R.prim_value(0), R.prim_value(111) ) - lv170: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv169, axis=3, mode="fast" + lv171: R.Tensor((224,), dtype="int64") = R.clip( + lv25, R.prim_value(0), R.prim_value(111) ) - lv171: R.Tensor((224,), dtype="int64") = R.squeeze(lv168, axis=None) - lv172: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv170, lv171, axis=2, mode="fast" + lv172: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv171, axis=3, mode="fast" ) - lv173: R.Tensor((224, 1), dtype="int64") = R.clip( - lv21, R.prim_value(0), R.prim_value(111) + lv173: R.Tensor((224,), dtype="int64") = R.squeeze(lv170, axis=None) + lv174: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv172, lv173, axis=2, mode="fast" ) - lv174: R.Tensor((224,), dtype="int64") = R.clip( - lv24, R.prim_value(0), R.prim_value(111) + lv175: R.Tensor((224, 1), dtype="int64") = R.clip( + lv23, R.prim_value(0), R.prim_value(111) ) - lv175: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( - input, lv174, axis=3, mode="fast" + lv176: R.Tensor((224,), dtype="int64") = R.clip( + lv26, R.prim_value(0), R.prim_value(111) ) - lv176: R.Tensor((224,), dtype="int64") = R.squeeze(lv173, axis=None) - lv177: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( - lv175, lv176, axis=2, mode="fast" + lv177: R.Tensor((1, 3, 112, 224), dtype="float32") = R.take( + lv1, lv176, axis=3, mode="fast" ) - lv178: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv162, lv45) - lv179: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv167, lv49) - lv180: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv178, lv179) - lv181: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv172, lv50) + lv178: R.Tensor((224,), dtype="int64") = R.squeeze(lv175, axis=None) + lv179: R.Tensor((1, 3, 224, 224), dtype="float32") = R.take( + lv177, lv178, axis=2, mode="fast" + ) + lv180: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv164, lv47) + lv181: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv169, lv51) lv182: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv180, lv181) - lv183: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv177, lv46) + lv183: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv174, lv52) lv184: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv182, lv183) - lv185: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv103, lv71) - lv186: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv130, lv75) - lv187: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv185, lv186) - lv188: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv157, lv76) + lv185: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv179, lv48) + lv186: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv184, lv185) + lv187: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv105, lv73) + lv188: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv132, lv77) lv189: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv187, lv188) - lv190: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv184, lv72) + lv190: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv159, lv78) lv191: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv189, lv190) - gv: R.Tuple(R.Tensor((1, 3, 224, 224), dtype="float32")) = (lv191,) + lv192: R.Tensor((1, 3, 224, 224), dtype="float32") = R.multiply(lv186, lv74) + lv193: R.Tensor((1, 3, 224, 224), dtype="float32") = R.add(lv191, lv192) + lv194: R.Tensor((1, 3, 224, 224), dtype="float32") = R.astype( + lv193, dtype="float32" + ) + lv195: R.Tensor((1, 3, 224, 224), dtype="float32") = R.astype( + lv194, dtype="float32" + ) + gv: R.Tuple(R.Tensor((1, 3, 224, 224), dtype="float32")) = (lv195,) R.output(gv) return gv