<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def prelu(inp, base_axis=1, shared=True, fix_parameters=False):
 """ 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. Returns: ~nnabla.Variable: N-D array. """

    shape = tuple() if shared else (inp.shape[base_axis],)
    w = get_parameter_or_create("slope", shape,
                                ConstantInitializer(-1), True, not fix_parameters)
    return F.prelu(inp, w, base_axis)