RReLU

class paddle.nn. RReLU ( lower=0.125, upper=0.3333333333333333, name=None ) [源代码]

RReLU 激活层,应用随机纠正线性单元对神经元激活,参考论文: Empirical Evaluation of Rectified Activations in Convolutional Network

训练阶段对负斜率进行均匀分布随机采样:

\[\begin{split}rrelu(x)= \left\{ \begin{array}{rcl} x, & & if \ x >= 0 \\ a * x, & & otherwise \\ \end{array} \right.\end{split}\]

其中,\(x\) 为输入的 Tensor,\(a\) 是服从(\(lower\)\(upper\) )均匀分布的随机值。

测试阶段负斜率取均匀分布上下边界(\(lower\)\(upper\) )的平均值:

\[\begin{split}rrelu(x)= \left\{ \begin{array}{rcl} x, & & if \ x >= 0 \\ (lower + upper) * 0.5 * x, & & otherwise \\ \end{array} \right.\end{split}\]

其中,\(x\) 为输入的 Tensor,\(lower\)\(upper\) 是随机均匀分布的上下边界。

参数

  • lower (float,可选) - 负值斜率的随机值范围下限,lower 包含在范围中。支持的数据类型:float。默认值为 0.125。

  • upper (float,可选) - 负值斜率的随机值范围上限,upper 包含在范围中。支持的数据类型:float。默认值为 0.3333333333333333。

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

形状

  • x (Tensor) – 任意形状的 Tensor,默认数据类型为 float32。

  • out (Tensor) – 和 x 具有相同形状的 Tensor。

代码示例

>>> import paddle
>>> paddle.seed(2023)

>>> input_tensor = paddle.to_tensor([[[[-2.0,  3.0, -4.0,  5.0],
...                                    [ 3.0, -4.0,  5.0, -6.0],
...                                    [-7.0, -8.0,  8.0,  9.0]],
...                                   [[ 1.0, -2.0, -3.0,  4.0],
...                                    [-5.0,  6.0,  7.0, -8.0],
...                                    [ 6.0,  7.0,  8.0,  9.0]]]], dtype='float32')
...
>>> rrelu_layer = paddle.nn.RReLU(0.1, 0.3)
>>> out = rrelu_layer(input_tensor)
>>> print(out)
Tensor(shape=[1, 2, 3, 4], dtype=float32, place=Place(cpu), stop_gradient=True,
[[[[-0.54633451,  3.        , -0.81611776,  5.        ],
   [ 3.        , -0.60768753,  5.        , -1.68630385],
   [-1.29360127, -1.45026064,  8.        ,  9.        ]],
  [[ 1.        , -0.58808362, -0.74662417,  4.        ],
   [-1.01785135,  6.        ,  7.        , -1.97268605],
   [ 6.        ,  7.        ,  8.        ,  9.        ]]]])