PReLU#
- class brainstate.nn.PReLU(num_parameters=1, init=0.25, dtype=None)#
Applies the element-wise function.
\[\text{PReLU}(x) = \max(0,x) + a * \min(0,x)\]or
\[\begin{split}\text{PReLU}(x) = \begin{cases} x, & \text{ if } x \geq 0 \\ ax, & \text{ otherwise } \end{cases}\end{split}\]Here \(a\) is a learnable parameter. When called without arguments, nn.PReLU() uses a single parameter \(a\) across all input channels. If called with nn.PReLU(nChannels), a separate \(a\) is used for each input channel.
- Parameters:
num_parameters (
int) – Number of \(a\) to learn. Although it takes an int as input, there is only two values are legitimate: 1, or the number of channels at input. Default: 1init (
float) – The initial value of \(a\). Default: 0.25dtype (optional) – The data type for the weight parameter.
Shape
-----
Input (-)
Output (-)
- weight#
The learnable weights of shape (
num_parameters).- Type:
Tensor
Notes
Weight decay should not be used when learning \(a\) for good performance.
Channel dim is the 2nd dim of input. When input has dims < 2, then there is no channel dim and the number of channels = 1.
Examples
>>> import brainstate >>> m = brainstate.nn.PReLU() >>> x = brainstate.random.randn(2) >>> output = m(x)