PReLU

class PReLU(num_parameters=1, init=0.25, **kwargs)[源代码]

对每个元素应用函数:

\[\text{PReLU}(x) = \max(0,x) + a * \min(0,x)\]

或者

\[\begin{split}\text{PReLU}(x) = \begin{cases} x, & \text{ if } x \geq 0 \\ ax, & \text{ otherwise } \end{cases}\end{split}\]

这里的 \(a\) 是一个可学习参数。当以无参数方式调用 PReLU() 时,它会在所有输入通道上使用同一个 \(a\) 参数。若以 PReLU(num_of_channels) 方式调用,每个输入通道都使用不同的 \(a\)

参数
  • num_parameters (int) – 待学习的 \(a\) 参数数目,仅允许两种合法值: 1,或者输入数据通道数。 默认: 1

  • init (float) – \(a\) 初始值。默认:0.25

实际案例

>>> import numpy as np
>>> data = mge.tensor(np.array([-1.2, -3.7, 2.7]).astype(np.float32))
>>> prelu = M.PReLU()
>>> output = prelu(data)
>>> output.numpy()
array([-0.3  , -0.925,  2.7  ], dtype=float32)