PReLU

class paddle.nn. PReLU ( num_parameters=1, init=0.25, weight_attr=None, data_format='NCHW', name=None, device=None, dtype=None ) [源代码]

PReLU 激活层(PReLU Activation Operator)。计算公式如下:

如果使用近似计算:

\[PReLU(x) = max(0, x) + weight * min(0, x)\]

其中,\(x\) 为输入的 Tensor。

参数

  • num_parameters (int,可选) - 可训练 weight 数量,支持 2 种输入:1 - 输入中的所有元素使用同一个 weight 值;输入的通道数 - 在同一个通道中的元素使用同一个 weight 值。默认为 1。

  • init (float,可选) - weight 的初始值。默认为 0.25。

  • weight_attr (ParamAttr,可选) - 指定权重参数属性的对象。默认值为 None,表示使用默认的权重参数属性。具体用法请参见 ParamAttr。

  • data_format (str,可选) – 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是 "NC", "NCL", "NCHW", "NCDHW", "NLC", "NHWC" 或者 "NDHWC"。默认值:"NCHW"。

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

  • device (PlaceLike,可选) - 参数的设备位置。默认值为 None。

  • dtype (str|paddle.dtype|np.dtype,可选) - 参数的数据类型。默认值为 None。

形状

  • input:任意形状的 Tensor,默认数据类型为 float32。

  • output:和 input 具有相同形状的 Tensor。

代码示例

>>> import paddle

>>> data = 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],
...             ],
...         ]
...     ]
... )
>>> m = paddle.nn.PReLU(1, 0.25)
>>> out = m(data)
>>> print(out)
Tensor(shape=[1, 2, 3, 4], dtype=float32, place=Place(cpu), stop_gradient=False,
[[[[-0.50000000,  3.        , -1.        ,  5.        ],
   [ 3.        , -1.        ,  5.        , -1.50000000],
   [-1.75000000, -2.        ,  8.        ,  9.        ]],
  [[ 1.        , -0.50000000, -0.75000000,  4.        ],
   [-1.25000000,  6.        ,  7.        , -2.        ],
   [ 6.        ,  7.        ,  8.        ,  9.        ]]]])