code: def prelu(g: jit_utils.GraphContext, self, weight):
      self_rank = symbolic_helper._get_tensor_rank(self)
      weight_sizes = symbolic_helper._get_tensor_sizes(weight)
      if self_rank is not None and self_rank > 2:
          weight = g.op(
              "Unsqueeze", weight, axes_i=list(range(1, self_rank - 1))
          )
      elif self_rank == 0 and weight_sizes == [1]:
          # self and weight are both scalar but weight has rank == 1, squeeze weight.
          weight = symbolic_helper._squeeze_helper(g, weight, [0])
      if symbolic_helper._try_get_scalar_type(self):
          old_type, self, weight = _try_cast_integer_to_float(
              g, self, weight
          )
          return _cast_to_type(g, g.op("PRelu", self, weight), old_type)
      else:
          return g.op("PRelu", self, weight)
  
imports: import functools
  import warnings
  import torch
  from torch._C import _onnx
  from torch.onnx import _type_utils, errors, symbolic_helper, symbolic_opset9
  from torch.onnx._internal import jit_utils, registration
label_desc: Use image node_id 11 for calling a global function with example usage: prelu(g, weight) and returns: _cast_to_type, g