rrelu¶
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
>>> paddle.seed(1)
>>> 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)
Tensor(shape=[1, 2, 3, 4], dtype=float32, place=Place(cpu), stop_gradient=True,
[[[[-0.20715050, 3. , -1.01193857, 5. ],
[ 3. , -0.94084597, 5. , -0.65544695],
[-1.24268556, -2.34339547, 8. , 9. ]],
[[ 1. , -0.44942653, -0.68969047, 4. ],
[-1.03736508, 6. , 7. , -0.95799232],
[ 6. , 7. , 8. , 9. ]]]])