code: def prelu(
      inp,
      base_axis=1,
      shared=True,
      fix_parameters=False,
      slope_init=None,
  ):
      """
      Parametrized Rectified Linear Unit function defined as
  
      .. math::
          y_i = \max(0, x_i) + w_i \min(0, x_i)
  
      where negative slope :math:`w` is learned and can vary across channels (an
      axis specified with base_axis). Weights are initialized with :math:`-1`.
  
      Args:
          x(~nnabla.Variable): N-D array as input
          base_axis(int): Dimensions up to base_axis is treated as sample dimension.
          shared(bool): Use shared weight value or not
          fix_parameters (bool): When set to `True`, the negative slope values
              will not be updated.
          slope_init (:obj:`nnabla.initializer.BaseInitializer` or :obj:`numpy.ndarray`):
              Initializer of negative slopes. By default, they are initialized with `0.25`.
      Returns:
          ~nnabla.Variable: N-D array.
  
      """
      shape = tuple() if shared else (inp.shape[base_axis],)
      if slope_init is None:
          slope_init = ConstantInitializer(0.25)
      w = get_parameter_or_create(
          "slope", shape, slope_init, True, not fix_parameters
      )
      return F.prelu(inp, w, base_axis)
  
imports: from six import exec_
  import numpy
  import nnabla
  import nnabla.functions
  from nnabla.parameter import get_parameter_or_create, get_parameter
  from nnabla.initializer import calc_uniform_lim_glorot, ConstantInitializer, NormalInitializer, UniformInitializer, WeightNormalizationScaleInitializer
label_desc: Use image node_id 28 for calling a global function with example usage: prelu(inp, base_axis, shared, fix_parameters, slope_init) and returns: F