docstr: ``x1 = transpose(perm=(0,2,3,1))(x)``
  
  ``y = a * relu(-1 * x1) + relu(x1)``
  
  When ``x`` is rank 4, and ``a`` is of shape (``C,)``, ``(1, C)``, ``(1,1,C)``, or ``(1,1,1,C)``,
  this is equivalent to ``prelu`` with ``alpha = -a.flatten()``, followed by a ``transpose``
  with ``perm (0,2,3,1)``.
docstr_tok: ["``","x1","=","transpose","(","perm=","(","0,2,3,1",")",")","(","x",")","``","``","y","=","a","*","relu","(","-1","*","x1",")","+","relu","(","x1",")","``","When","``","x","``","is","rank","4",",","and","``","a","``","is","of","shape","(","``","C",",",")","``",",","``","(","1",",","C",")","``",",","``","(","1,1",",","C",")","``",",","or","``","(","1,1,1",",","C",")","``",",","this","is","equivalent","to","``","prelu","``","with","``","alpha","=","-a.flatten","(",")","``",",","followed","by","a","``","transpose","``","with","``","perm","(","0,2,3,1",")","``","."]
code: def get_prelu_pattern():
      """
      ``x1 = transpose(perm=(0,2,3,1))(x)``
  
      ``y = a * relu(-1 * x1) + relu(x1)``
  
      When ``x`` is rank 4, and ``a`` is of shape (``C,)``, ``(1, C)``, ``(1,1,C)``, or ``(1,1,1,C)``,
      this is equivalent to ``prelu`` with ``alpha = -a.flatten()``, followed by a ``transpose``
      with ``perm (0,2,3,1)``.
      """
  
      @mb.program(
          input_specs=[
              mb.TensorSpec(
                  shape=(
                      [
                          get_new_symbol(),
                          get_new_symbol(),
                          get_new_symbol(),
                          get_new_symbol(),
                      ]
                  )
              ),
          ]
      )
      def prelu_pattern(x):
          # perm value can be anything, it will be checked in "is_var_constraint_satisifed" method
          x = mb.transpose(x=x, perm=[0, 1, 2, 3], name="transpose")
          return fuse_prelu._prelu_pattern(x)
  
      return prelu_pattern
  
imports: import numpy
  from coremltools.converters.mil.experimental.passes.generic_pass_infrastructure import fuse_all_blocks
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import get_new_symbol
  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, _check_var_scalar_value_in_interval, block_context_manager
  from coremltools.converters.mil.mil.passes.pass_registry import register_pass
label_desc: Use image node_id 3 for calling the FusePreluPattern2 obj's underlying member method code with example usage: obj.get_prelu_pattern() and returns: prelu_pattern, fuse_prelu