code: def test_pf_prelu_execution(
      g_rng, inshape, base_axis, shared, slope_init, fix_parameters
  ):
      slope_shape = tuple() if shared else (inshape[base_axis],)
      slope_init = process_param_init(slope_init, slope_shape, g_rng)
  
      kw = {}
      insert_if_not_none(kw, "slope_init", slope_init)
      insert_if_not_default(kw, "base_axis", base_axis, 1)
      insert_if_not_default(kw, "shared", shared, True)
      insert_if_not_default(kw, "fix_parameters", fix_parameters, False)
  
      x = nn.Variable.from_numpy_array(g_rng.randn(*inshape))
  
      # Check execution
      y = PF.prelu(x, **kw)
      y.forward()
      y.backward()
  
      # Check values
      # TODO
  
      # Check args
      assert y.parent.info.type_name == "PReLU"
      args = y.parent.info.args
      assert args["base_axis"] == base_axis
  
      # Check created parameters
      assert y.parent.inputs[0] == x
      assert len(y.parent.inputs) == 2
      assert len(nn.get_parameters()) == 1
      slope = nn.get_parameters()["prelu/slope"]
      assert slope.shape == slope_shape
      assert slope.need_grad
      assert y.parent.inputs[1].need_grad == (not fix_parameters)
      if isinstance(slope_init, np.ndarray):
          assert_allclose(slope_init, slope.d)
  
imports: import pytest
  import numpy
  import nnabla
  import nnabla.functions
  import nnabla.parametric_functions
  import nnabla.initializer
  from nnabla.testing import assert_allclose
  from nbla_test_utils import list_context
label_desc: Use image node_id 23 for calling a global function with example usage: test_pf_prelu_execution(g_rng, inshape, base_axis, shared, slope_init, fix_parameters) without return types