class_docstr: Input graph:
  input -----> transpose(axis=[1,0]) -----> transpose(axis=[1,0]) ---> out
  
  Output graph:
  input -----> identity -----> out
class_docstr_tok: ["Input","graph",":","input","--","--","-",">","transpose","(","axis=","[","1,0","]",")","--","--","-",">","transpose","(","axis=","[","1,0","]",")","--","-",">","out","Output","graph",":","input","--","--","-",">","identity","--","--","-",">","out"]
code: def test_split_nd_pattern_0(self):
      @mb.program(input_specs=[mb.TensorSpec(shape=(1, 4, 5, 6))])
      def prog(x):
          x1 = mb.transpose(x=x, perm=[0, 3, 2, 1])
          x1 = mb.relu(x=x1)
          x2, x3 = mb.split(x=x1, axis=1, num_splits=2)
          x4 = mb.transpose(x=x2, perm=[0, 3, 2, 1])
          x5 = mb.transpose(x=x3, perm=[0, 3, 2, 1])
          return x4, x5
  
      prev_prog, prev_block, block = apply_pass_and_basic_check(
          prog, "common::reduce_transposes"
      )
      self.assertEqual(
          get_op_types_in_program(prev_prog),
          ["transpose", "relu", "split", "transpose", "transpose"],
      )
      self.assertEqual(get_op_types_in_program(prog), ["relu", "split"])
  
      assert_model_is_valid(
          prog,
          {"x": (1, 4, 5, 6)},
          expected_output_shapes={
              block.outputs[0].name: (1, 4, 5, 3),
              block.outputs[1].name: (1, 4, 5, 3),
          },
      )
  
      self.assertEqual(block.find_ops(op_type="split")[0].axis.val, 3)
  
imports: import unittest
  import numpy
  import pytest
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import get_new_symbol
  from coremltools.converters.mil.mil.passes.defs.optimize_repeat_ops import TransformAxisUpdateOps
  from coremltools.converters.mil.mil.passes.pass_registry import PASS_REGISTRY
  from coremltools.converters.mil.testing_utils import apply_pass_and_basic_check, assert_model_is_valid, get_op_types_in_program
label_desc: Use image node_id 29 for calling the TransposeOptimizationPass obj's underlying member method code with example usage: obj.test_split_nd_pattern_0() and returns: x4,  x5