class_docstr: Parametric Rectified Linear Unit.
  
  It follows:
  
  ```
    f(x) = alpha * x for x < 0
    f(x) = x for x >= 0
  ```
  
  where `alpha` is a learned array with the same shape as x.
  
  Input shape:
    Arbitrary. Use the keyword argument `input_shape`
    (tuple of integers, does not include the samples axis)
    when using this layer as the first layer in a model.
  
  Output shape:
    Same shape as the input.
  
  Args:
    alpha_initializer: Initializer function for the weights.
    alpha_regularizer: Regularizer for the weights.
    alpha_constraint: Constraint for the weights.
    shared_axes: The axes along which to share learnable
      parameters for the activation function.
      For example, if the incoming feature maps
      are from a 2D convolution
      with output shape `(batch, height, width, channels)`,
      and you wish to share parameters across space
      so that each filter only has one set of parameters,
      set `shared_axes=[1, 2]`.
class_docstr_tok: ["Parametric","Rectified","Linear","Unit",".","It","follows",":","``","`","f","(","x",")","=","alpha","*","x","for","x","<","0","f","(","x",")","=","x","for","x",">","=","0","``","`","where","`","alpha","`","is","a","learned","array","with","the","same","shape","as","x",".","Input","shape",":","Arbitrary",".","Use","the","keyword","argument","`","input_shape","`","(","tuple","of","integers",",","does","not","include","the","samples","axis",")","when","using","this","layer","as","the","first","layer","in","a","model",".","Output","shape",":","Same","shape","as","the","input",".","Args",":","alpha_initializer",":","Initializer","function","for","the","weights",".","alpha_regularizer",":","Regularizer","for","the","weights",".","alpha_constraint",":","Constraint","for","the","weights",".","shared_axes",":","The","axes","along","which","to","share","learnable","parameters","for","the","activation","function",".","For","example",",","if","the","incoming","feature","maps","are","from","a","2D","convolution","with","output","shape","`","(","batch",",","height",",","width",",","channels",")","`",",","and","you","wish","to","share","parameters","across","space","so","that","each","filter","only","has","one","set","of","parameters",",","set","`","shared_axes=","[","1",",","2","]","`","."]
code: def build(self, input_shape):
      param_shape = list(input_shape[1:])
      if self.shared_axes is not None:
          for i in self.shared_axes:
              param_shape[i - 1] = 1
      self.alpha = self.add_weight(
          shape=param_shape,
          name="alpha",
          initializer=self.alpha_initializer,
          regularizer=self.alpha_regularizer,
          constraint=self.alpha_constraint,
      )
      # Set input spec
      axes = {}
      if self.shared_axes:
          for i in range(1, len(input_shape)):
              if i not in self.shared_axes:
                  axes[i] = input_shape[i]
      self.input_spec = InputSpec(ndim=len(input_shape), axes=axes)
      self.built = True
  
imports: from tensorflow.python.framework import dtypes
  from tensorflow.python.keras import backend
  from tensorflow.python.keras import constraints
  from tensorflow.python.keras import initializers
  from tensorflow.python.keras import regularizers
  from tensorflow.python.keras.engine.base_layer import Layer
  from tensorflow.python.keras.engine.input_spec import InputSpec
  from tensorflow.python.keras.utils import tf_utils
  from tensorflow.python.ops import math_ops
label_desc: Use image node_id 2 for calling the PReLU obj's underlying member method code with example usage: obj.build(input_shape) without return types