mindspore.nn.PReLU
- class mindspore.nn.PReLU(channel=1, w=0.25)[源代码]
PReLU激活层(PReLU Activation Operator)。
逐元素应用PReLU function。
公式定义为:
\[PReLU(x_i)= \max(0, x_i) + w * \min(0, x_i),\]其中 \(x_i\) 是输入的Tensor。
这里 \(w\) 是一个可学习的参数,默认初始值0.25。
当带参数调用时每个通道上学习一个 \(w\) 。如果不带参数调用时,则将在所有通道中共享单个参数 \(w\) 。
PReLU函数图:
- 参数:
channel (int) - 可训练参数 \(w\) 的数量。它可以是int,值是1或输入Tensor x 的通道数。默认值:
1
。w (Union[float, list, Tensor]) - 参数的初始值。它可以是float、float组成的list或与输入Tensor x 具有相同数据类型的Tensor。默认值:
0.25
。
- 输入:
x (Tensor) - PReLU的输入Tensor,其shape为 \((N, *)\) ,其中 \(*\) 表示任意的额外维度,数据类型为float16或float32。
- 输出:
Tensor,数据类型和shape与 x 相同。
- 异常:
TypeError - channel 不是int。
TypeError - w 不是float、float组成的list或float Tensor。
TypeError - x 的数据类型既不是float16也不是float32。
ValueError - x 是Ascend上的0-D或1-D Tensor。
ValueError - channel 小于1。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> from mindspore import Tensor, nn >>> import numpy as np >>> x = Tensor(np.array([[[[0.1, 0.6], [0.9, 0.9]]]]), mindspore.float32) >>> prelu = nn.PReLU() >>> output = prelu(x) >>> print(output) [[[[0.1 0.6] [0.9 0.9]]]]