class_docstr: Detect the pattern ``input-->squeeze-->expand_dims``, and fuse
  them into an ``identity`` op if ``squeeze`` and ``expand_dims`` cancel out each other.
  Note that, the ``identity`` can be further removed by ``noop_elimination``.
  
  .. code-block::
  
      Given:
          %x[3, 1, 4, 1]
          %1[3, 4] = squeeze(%x, axes=[1, 3])
          %2[3, 1, 4, 1] = expand_dims(%1, axes=[1, 3])
          %3 = op(%2)
  
      Result:
          %x[3, 1, 4, 1]
          %2[3, 1, 4, 1] = identity(%x)
          %3 = op(%2)
class_docstr_tok: ["Detect","the","pattern","``","input","--",">","squeeze","--",">","expand_dims","``",",","and","fuse","them","into","an","``","identity","``","op","if","``","squeeze","``","and","``","expand_dims","``","cancel","out","each","other",".","Note","that",",","the","``","identity","``","can","be","further","removed","by","``","noop_elimination","``",".","..","code-block",":",":","Given",":","%","x","[","3",",","1",",","4",",","1","]","%","1","[","3",",","4","]","=","squeeze","(","%","x",",","axes=","[","1",",","3","]",")","%","2","[","3",",","1",",","4",",","1","]","=","expand_dims","(","%","1",",","axes=","[","1",",","3","]",")","%","3","=","op","(","%","2",")","Result",":","%","x","[","3",",","1",",","4",",","1","]","%","2","[","3",",","1",",","4",",","1","]","=","identity","(","%","x",")","%","3","=","op","(","%","2",")"]
code: def _try_to_transform(op, block):
      expand_dims_op = op.outputs[0].child_ops[0]
      x = op.x
      out_var = expand_dims_op.outputs[0]
      if x.shape != out_var.shape:
          return False
      if op.outputs[0] in block.outputs:
          return False
  
      new_var = mb.identity(x=x, before_op=op)
      if op.enclosing_block.try_replace_uses_of_var_after_op(
          anchor_op=expand_dims_op,
          old_var=out_var,
          new_var=new_var,
      ):
          # Remove all the ops at once
          block.remove_ops([op, expand_dims_op])
          return True
      return False
  
imports: import numpy
  from coremltools.converters.mil._deployment_compatibility import AvailableTarget
  from coremltools.converters.mil.frontend._utils import value_at
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil.block import is_current_opset_version_compatible_with
  from coremltools.converters.mil.mil.passes.graph_pass import AbstractGraphPass
  from coremltools.converters.mil.mil.passes.helper import _check_child_op_type, _check_var_scalar_value, block_context_manager
  from coremltools.converters.mil.mil.passes.pass_registry import register_pass
  from coremltools.converters.mil.mil.types.symbolic import any_symbolic
label_desc: Use image node_id 4 for calling the fuse_squeeze_expand_dims obj's underlying member method code with example usage: obj._try_to_transform(op, block) and returns: False, False, False, True