rrelu

paddle.nn.functional. rrelu ( x, lower=1. / 8., upper=1. / 3., training=True, 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\) 是随机均匀分布的上下边界。

参数

  • x (Tensor) - 输入的 Tensor,数据类型为:float16、float32、float64。

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

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

  • training (bool,可选) - 标记是否为训练阶段。默认:True。

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

返回

Tensor,数据类型和形状同 x 一致。

代码示例

import paddle
import paddle.nn.functional as F

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')

out = F.rrelu(input_tensor, 0.1, 0.3)
print(out)
#[[[[-0.20000899  3.         -0.8810822   5.        ]
#   [ 3.         -0.55175185  5.         -1.0776101 ]
#   [-1.0680687  -1.9896201   8.          9.        ]]
#  [[ 1.         -0.5238267  -0.65515125  4.        ]
#   [-1.3766339   6.          7.         -2.3465784 ]
#   [ 6.          7.          8.          9.        ]]]]